定製微型Linux系統(續)

定製微型Linux系統前篇:http://hjqjk.blog.51cto.com/5970897/1544888


四、提供遠程連接功能

    Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各種平臺。     Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器。

    dropbear: 更小環境下,提供簡單ssh遠程連接服務

 

1、在宿主機上編譯dropbear並移植dropbear, dropbearkey, dbclient, scp到目標機上

 

1)下載、解壓dropbear-2013.58.tar.bz2

# tar xf dropbear-2013.58.tar.bz2


2)編譯安裝dropbear-2013.58.tar.bz2

# cd dropbear-2013.58
# ./configure
# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

 

# less INSTALL  #查看安裝文檔,文檔中有詳細的安裝步驟

wKioL1P8etqQVGyXAAHv6mRuGyQ757.jpg

 

# ./configure --help  #編譯選項信息幫助
./configure 不加任何選項,默認安裝在/usr/local目錄下


wKioL1P8e33Alr-AAAERjFbkx2U772.jpg

注意:千萬不要修改以下pam認證的目錄,使用宿主機系統默認的pam認證

wKioL1P8e5yh7wZbAAAp6NZev_U571.jpg

 

(3)移植dropbear, dropbearkey, dbclient, scp命令到目標機上

使用bincp.sh腳本複製命令,把dropbear移植到目標機上

[root@localhost ~]# ./bincp.sh
Plz enter a command: dropbear
Plz enter a command: dbclient              
Plz enter a command: dropbearkey
Plz enter a command: /usr/local/bin/scp
Plz enter a command: quit


2、詳細配置

爲目標機上的dropbear提供兩個密鑰文件

# mkdir /mnt/sysroot/etc/dropbear
# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key
# dropbearkey -t rsa -s 1024 -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key



dropbear要認證用戶而認證用戶要用到名稱解析(nsswitch),這就意味着要把nsswitch的庫libnss複製過去,然後給nsswitch提供配置文件。(這一步在以上已經做了,在此就不囉嗦了)

 

 

dropbear啓動時在/var/run/下會生成一個pid文件,而這個目錄在/mnt/sysroot中還沒創建

# cd /mnt/sysroot
# mkdir var/run


 

dropbear在遠程連接時會去檢查你默認啓動的shell是否爲安全shell,不是安全shell則不允許登錄。安全shell/etc/shells文件中指定。

[root@localhost sysroot]# vim etc/shells
/bin/sh
/bin/ash
/bin/hush
/bin/msh
/bin/bash
/sbin/nologin


 

到此,還是不能遠程登錄。當你遠程登錄系統時,所登錄的終端是僞終端,僞終端是依賴於/dev/pts目錄來實現的,而目標機上沒有該目錄,因此要在目標機上創建/dev/pts目錄。

但是不能直接

# mkdir /mnt/sysroot/dev/pts

,因爲當系統啓動時,內核會掛載devpts

文件系統到/dev目錄下,在/dev目錄下的原有數據會被隱藏。

編輯 /mnt/sysroot/etc/fstab文件,加上以下一行:

devpts      /dev/pts    devpts  defaults    0 0

 


重新編輯/mnt/sysroot/etc/rc.d/rc.sysinit系統初始化腳本文件

#!/bin/sh
#
echo -e "Welcome to \033[43mCustomed\033[0m Linux"
echo "Remounting root filesystem"
mount -n -o remount,rw /dev/sda2 /
echo "Creating dev file"
mdev -s   # mdev-s 應該在mount -a 之前
echo "Mounting all filesystem"
mkdir /dev/pts
mount -a
[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" == '(none)' ] && hostname localhost || hostname $HOSTNAME
ifconfig eth0 192.168.1.155   #給目標機提供IP地址
ifconfig lo 127.0.0.1


 

 

dropbear的相關命令設定環境變量,編輯/mnt/sysroot/etc/profile,添加以下一行

export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"


 

下面測試一下能否遠程連接目標機

開啓目標機系統,開啓dropbear服務,使用管理員賬號登錄

wKiom1P8e8rDF6bIAAAWnXJYs08195.jpg


wKiom1P8e-fgzKenAAI5QsFkGdM377.jpg


wKioL1P8fQ6Qt3tkAAIQkGVJgp8252.jpg

到現在,已經能順利地使用遠程連接正常登錄訪問目標機了。

 

3、讓dropbear開機自動啓動

問題:那如何讓dropbear在這個小型Linux系統中開機自動啓動?

答:

(1)在/mnt/sysroot/etc/init.d目錄下提供dropbear的服務腳本

#!/bin/bash
#
dbprog="/usr/local/sbin/dropbear"
dbkeygen="/usr/local/bin/dropbearkey"
dsskey="/etc/dropbear/dropbear_dss_host_key"
rsakey="/etc/dropbear/dropbear_rsa_host_key"
rsasize=1024
dbport=22
gendsskey() {
    if [ ! -f $dsskey ] ;then
        [ -d /etc/dropbear ] || mkdir /etc/dropbear
        echo "Generating dss key file."
        $dbkeygen -t dss -f $dsskey
    fi
}
genrsakey() {
    if [ ! -f $rsakey ] ;then
        [ -d /etc/dropbear ] || mkdir /etc/dropbear
        echo "Generating rsa key file."
        $dbkeygen -t rsa -s rsasize -f $rsakey
    fi
}
start() {
    gendsskey
    genrsakey
    if pidof $dbprog &> /dev/null;then
        echo "$dbprog is already running..."
        return 1
    else
        echo "Starting dropbear"
        $dbprog -p $dbport
        retval=$?
    fi
    if [ $retval -eq 0 ];then
        echo "OK."
        return 0
    else
        echo "Failure ..."
        return 1
    fi
}
stop() {
    if pidof $dbprog &> /dev/null ;then
        echo "stopping dropbear"
        killall $dbprog
        retval=$?
    else
        echo "$dbprog is not running..."
        return 1
fi
  if [ $retval -eq 0 ];then
        echo "OK."
        return 0
    else
        echo "Failure ..."
        return 1
    fi
}
status() {
    if pidof $dbprog &> /dev/null ;then
        echo "$dbprog is running..."
    else
        echo "$dbprog is stopped..."
    fi
}
restart() {
    stop
    sleep 2
    start
}
usage() {
    echo "Usage: `basename $0` {start|stop|restart|status}"
}
case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
status)
    status
    ;;
*)
    usage
    ;;
esac


 

2)設定開機自動執行dropbear腳本

# cd /mnt/sysroot/etc
# mkdir rc.start
# mkdir rc.stop
# cd rc.start/
# ln -sv ../init.d/dropbear 01dropbear   #這裏要使用相對路徑


 

重新編輯/mnt/sysroot/etc/rc.d/rc.sysinit腳本,在最後添加以下內容:

for i in /etc/rc.start/* ;do
    $i start
done


測試:

wKioL1P8fiywXywBAAEWsxCZLoE909.jpg

五、提供nginx功能

1、在宿主機上測試nginx能否正常使用

下載並解壓nginx-1.4.7.tar.gz 

# tar xf nginx-1.4.7.tar.gz

 

解決依賴關係

# yum -y install pcre-devel


編譯nginx

# useradd nginx  #注意:nginx是以普通用戶nginx身份運行的,所以要先創建普通用戶nginx
# cd nginx-1.4.7
# ./configure --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --without-pcre --without-http_rewrite_module


選項解釋:

--conf-path=/etc/nginx/nginx.cnf   指定主配置文件的路徑
--user=nginx   指定以nginx用戶的身份運行
--group=nginx  指定以nginx組的身份運行


 

 

啓動nginx

# service httpd stop  #注意:如果httpd服務已開啓,先停止httpd服務
# cd /usr/local/sbin
# ./nginx
# ss -tnl | grep 80   # 查看80端口是否處於監聽狀態


wKioL1P8flCQKgACAAHumKD_YY0741.jpg

2、移植nginx到目標機上

複製nginx的配置文件到目標機上

# cp -r /etc/nginx/ /mnt/sysroot/etc/


 

複製nginx安裝目錄下的所有文件到目標機上

# cp -r /usr/local/nginx/ /mnt/sysroot/usr/local/


 

爲目標機移植nginx程序的依賴庫,使用bincp.sh腳本

[root@localhost ~]# ./bincp.sh
Plz enter a command: /usr/local/nginx/sbin/nginx
Plz enter a command: quit


 

 

爲目標機上的nginx提供普通用戶nginx

# grep "^nginx" /etc/passwd >> /mnt/sysroot/etc/passwd
# grep "^nginx" /etc/shadow >> /mnt/sysroot/etc/shadow 
# grep "^nginx" /etc/group >> /mnt/sysroot/etc/group
# sync


 

3、在目標機上測試

wKiom1P8fU7hlQuPAAJbx2lCvtE905.jpg

wKioL1P8fnSyijVXAAIL1LAc5n4460.jpg

 

到此,一個私人定製的微型Linux系統已經構建完成了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章