上接:從源碼開始編譯一個帶有WEB伺服器功能的小型LINUX(上)
七、為新構建的ToyLinux啟用虛擬控制台
這個可以通過宿主機來實現,也可以直接啟動剛構建成功的小Linux進行配置.我們這裡採用通過宿主機的方式(重新啟動宿主機):
# cd /mnt/sysroot
將 etc/inittab
文件改為如下內容:::sysinit:/etc/init.d/rcS
tty1::askfirst:/bin/sh *************// askfirst 登陸前敲回車先
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
tty5::askfirst:/bin/sh
tty6::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
好了,接下來就可以測試驗正六個虛擬控制台的使用了.
八、儘管上述第七步已經實現了虛擬控制台,但其仍是直接進入系統,且系統沒有用戶帳號等安全設施,這將不利於系統的安全性.因此,接下來的這步實現為系統添加用戶帳號(這裡仍然基於宿主機實現).
1、為目標主機建立passwd帳號文件
# cd /mnt/sysroot
# vim etc/passwd
添加如下內容:
root:x:0:0::/root:/bin/sh
接下來為root用戶建立“家”目錄:
# mkdir root
2、為目標主機建立group帳號文件
# vim etc/group
添加如下內容:
root:x:0:
3、為目標主機建立shadow影子口令文件,這裡採用直接複製宿主機的shadow文件中關於root口令行的行來實現
# grep "^root" /etc/shadow > etc/shadow
註:等目標主機啟動時,root用戶的口令也是宿主機的root用戶的口令.
4、將 etc/inittab文件改為如下內容:
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 38400 tty1
::respawn:/sbin/getty 38400 tty2
::respawn:/sbin/getty 38400 tty3
::respawn:/sbin/getty 38400 tty4
::respawn:/sbin/getty 38400 tty5
::respawn:/sbin/getty 38400 tty6
::shutdown:/bin/umount -a -r
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
好了,接下來就可以重新啟動目標主機進行驗正了.
九、在系統登錄時提供banner信息
這個可以通過宿主機來實現,也可以直接在目標主機上進行配置.這裡採用直接在目標主機上配置的方式:
# vi /etc/issue
添加如下內容:
Welcome to ToyLinux(http://marion.cublog.cn)...
Kernel r
註:這裡的內容可以根據你的需要進行修改.
十、在系統啟動時為系統提供主機名稱:
這個可以通過宿主機來實現,也可以直接在目標主機上進行配置.這裡採用直接在目標主機上配置的方式:
1、創建保存主機名稱的配置文件
# mkdir /etc/sysconfig
# vi /etc/sysconfig/network
添加如下內容:
HOSTNAME=yourhostname.example.com
2、編輯系統初始化腳本,實現開機過程中設定主機名稱
# vi /etc/init.d/rcS
在文件尾部添加如下行:
HOSTNAME=
[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network
[ -z ${HOSTNAME} ] && HOSTNAME="localhost"
[ -x /bin/hostname ] && /bin/hostname ${HOSTNAME}
unset HOSTNAME
十一、移植宿主機的bash至目標主機,以實現在目標主機上使用bash
1、在宿主機上查看bash所依賴的庫文件件,並將這些庫文件複製到目標系統:
# cd /mnt/sysroot
# ldd /bin/bash (其顯示可能類似如下所示:)
linux-gate.so.1 => (0x003c0000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x00aa6000)
libdl.so.2 => /lib/libdl.so.2 (0x00604000)
libc.so.6 => /lib/libc.so.6 (0x008c8000)
/lib/ld-linux.so.2 (0x00bf8000)
2、此時,我們需要把除了第一行顯示的以外的餘下的所有庫文件複製到目標主機的lib
目錄中:# cp /lib/libtermcap.so.2 lib/
# cp /lib/libdl.so.2 lib/
# cp /lib/libc.so.6 lib/
# cp /lib/ld-linux.so.2 lib/
3、而後再把bash程序複製到目標主機的bin目錄中即可:
# cp /bin/bash bin/
十二、設置root用戶的默認shell為/bin/bash,並為其定義常用環境變數(本過程在目標主機上直接實現)
1、新建/etc/shells文件,標明當前系統所用可用shell類型:
# vi /etc/shells
添加如下內容:
/bin/sh
/bin/bash
2、編輯/etc/passwd,設置root用戶的默認shell為/bin/bash
3、編輯/root/.bash_profile,定義PATH, PS1等環境變數
# vim /root/.bash_profile
添加如下內容:
PS1='[u@h W]$'
HISTSIZE=100
PATH=$PATH:/$HOME/bin
export PS1 HISTSIZE PATH
十三、定義名稱解析方式
完成上述第十二步以後,用戶的shell提示符中的用戶名很可能顯示為:”I have no name!“,這個主要是沒有配置名稱解析服務造成的.本步驟則來嘗試解決此問題,並嘗試實現為主機名稱解析定義其解析方式.
提示:本步驟需要在宿主機上實現
1、為名稱解析服務複製必要的庫文件:
# cd /mnt/sysroot
# cp /lib/libnss_files* lib/
# cp /lib/libnss_dns* lib/
2、為目標主機建立名稱解析文件nsswitch.conf
# vim etc/nsswitch.conf
添加如下內容:
passwd: files
group: files
shadow: files
hosts: files dns
3、為主機名稱解析建立etc/hosts文件,可根據需要添加其內容
# vim etc/hosts
添加如下內容(如果本機有IP地址,也可以在此配置):
127.0.0.1 localhost
十四、為目標主機提供一個web伺服器
嵌入式系統上可用的輕量級web伺服器有如Boa, thttpd, lighttpd, shttpd等.我們這裡選用thttpd,且只提供簡單的web服務.
1、在宿主機上編譯thttpd
# tar zxvf thttpd-2.25b.tar.gz
# cd thttpd-2.25b
# ./configure
# make
2、複製編譯好的thttpd至目標主機
# mkdir -pv /mnt/sysroot/usr/local/sbin
# cp -p thttpd /mnt/sysroot/usr/local/sbin/
3、複製thttpd依賴的庫文件至目標主機
# ldd thttpd
linux-gate.so.1 => (0x00e75000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x04f3a000)
libc.so.6 => /lib/libc.so.6 (0x00931000)
/lib/ld-linux.so.2 (0x0090e000)
請確保以上所依賴的庫文件均複製到了/mnt/sysroot/lib目錄中.
4、為目標主機上運行
thttpd進程建立一個有效用戶帳號(此用戶不需要“家”目錄)
# echo "www:x:1000:1000:www::/bin/bash" >> /mnt/sysroot/etc/passwd
# echo "www:x:1000:" >> /mnt/sysroot/etc/group
5、接下來啟動目標主機系統,登錄后創建網站目錄,並創建一個測試頁面
# mkdir /var/www/html
# echo '<h1>A test page.</h1>' > /var/www/html/index.html
而後啟動thttpd進程:
# /usr/local/sbin/thttpd -u www -dd /var/www/html -l /var/log/thttpd.log &
接下來就可以進行測試訪問了.請確保此時目標主機有合適的IP地址.
文中所用到的文件,除linux內核源碼外,均可在附件中獲得,內核源碼可以網上獲得~
本文出自 「E-guys」 博客,請務必保留此出處http://eguys.blog.51cto.com/2517622/482424
[火星人 ] 從源碼開始編譯一個帶有WEB伺服器功能的小型LINUX(下)已經有479次圍觀