日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

从源码开始编译一个带有WEB服务器功能的小型LINUX(下)

發布時間:2024/1/17 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从源码开始编译一个带有WEB服务器功能的小型LINUX(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?上接:從源碼開始編譯一個帶有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內核源碼外,均可在附件中獲得,內核源碼可以網上獲得~

轉載于:https://blog.51cto.com/eguys/482424

總結

以上是生活随笔為你收集整理的从源码开始编译一个带有WEB服务器功能的小型LINUX(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。