手動製作mini linux詳細步驟—之二

8.2.3、編譯mini linux網卡驅動模塊

對於網卡驅動,我們是通過在內核中設置爲模塊形式來動態加載,所以需要再次針對單個內核模塊進行編譯,編譯單個內核模塊使用如下命令:

# cd /usr/src/linux

# make M=drivers/net/ethernet/intel/e1000/ e1000.ko

具體操作步驟:

[root@bbs ~]# cd /usr/src/linux         ;進入linux內核頂層目錄

[root@bbs linux]# find . -name e1000    ;查找e1000目錄在內核源碼哪個目錄下

./drivers/net/ethernet/intel/e1000

[root@bbs linux]# make M=drivers/net/ethernet/intel/e1000 e1000.ko ;編譯e1000.ko

[root@bbs linux]# cp drivers/net/ethernet/intel/e1000/e1000.ko /mnt/sysroot/lib/modules/3.10.107/kernel/drivers/net/e1000

注意:mini linux中的路徑:/lib/modules/3.10.107/kernel/drivers/net/e1000爲目錄生成腳本根據mini linux的內核版本自動創建的,必須要與內核版本一致。

至此,已經將網卡驅動模塊加入到mini linux中了,下一步就是開機進入mini linux系統,執行模塊加載命令:modprobe e1000:

/ #  ls /lib/modules/$(uname -r) ;查看模塊相依性文件是否存在

kernel    modules.dep      modules.dep.bb

/ #  depmod -a        ;生成模塊相依性文件

/ #  modprobe e1000   ;加載網卡驅動

/ #  lsmod            ;查看系統上已加載的所有驅動模塊

/ #  modinfo e1000     ;查看網卡驅動信息

filename:             e1000



設置網卡驅動開機自動掛載:

/ #  vi /etc/sysconfig/modules/e1000.modules

#!/bin/sh

echo “Loading network card drivers e1000…”

modprobe e1000

/ #   chmod +x /etc/sysconfig/modules/e1000.modules

設置mini linux 的網卡IP地址:

/ #  ifconfig -a



/ #  ifconfig eth0 192.168.0.119 up

/ #  ifconfig lo 127.0.0.1 up

/ #  ifconfig

/ # ping -c2 192.168.0.1




8.2.4、創建mini linux密碼文件和用戶登錄終端

一些基本概念

控制檯:

在Linux系統中,計算機顯示器通常被稱爲控制檯(Console)。有一些設備特殊文件與之相關聯:tty0、tty1、tty2等。當你在控制檯上登錄時,使用的是tty1。使用Ctrl+Alt+[F2-F6]組合鍵時,我們就可以切換到tty2、tty3等上面去。

getty:

busybox爲我們提供了getty和login程序,getty用於偵聽終端,其調用login程序提示讓用戶登錄,在centos6上的終端登錄程序是mingetty和login,centos7上爲agetty和login。如下,我們可以在/etc/inittab中寫明終端:

::sysinit:/etc/rc.d/rc.sysinit

tty1::respawn:/bin/sh       ;虛擬終端,ctrl+alt+F1可打開此終端

tty2::askfirst:/bin/sh        ;虛擬終端,ctrl+alt+F2可打開此終端

tty3::respawn:/bin/sh

tty4::respawn:/bin/sh

爲了能夠登錄mini linux系統,我們還需要在mini linux上提供/etc/{passwd,group,shadow}3個文件,login 登錄程序正是通過查詢/etc/passwd文件來確認是否允許登錄的。

 

進入mini linux,創建密碼文件:

/ #  touch /etc/passwd /etc/group /etc/shadow /etc/issue

/ #  chmod 000 /etc/shadow

/ #   echo -e -n "Welcome to Mini Linux\nkernel \\\r\n" > /etc/issue

爲mini linux創建root組和root用戶:

/ #  addgroup -g 0 root     ;爲mini linux創建root組

/ #  adduser -h /root -s /bin/bash -u 0 -G root root   ;爲mini linux 創建root 帳號

 

注意:這裏我們修改root的默認shell爲bash,所以需要確保之前有通過bincp腳本拷貝bash到mini linux。

修改mini linux上的/etc/inittab:

::sysinit:/etc/rc.d/rc.sysinit

::respawn:/sbin/getty 38400 tty1       ;虛擬登錄終端,ctrl+alt+F1可打開此終端

::respawn:/sbin/getty 38400 tty2       ;虛擬登錄終端,ctrl+alt+F2可打開此終端

::respawn:/sbin/getty 38400 tty3

::respawn:/sbin/getty 38400 tty4

ca::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

重啓mini linux即可進入登錄界面:



至此,在mini linux控制檯就實現了賬號登錄功能。

8.2.5、下載安裝 dropbear

Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各種平臺,Dropbear是開源軟件。

官網地址:

https://matt.ucc.asn.au/dropbear/dropbear.html

最新版下載地址:

https://matt.ucc.asn.au/dropbear/dropbear-2017.75.tar.bz2

官網下載下來的是源碼包,需要編譯安裝:

打開宿主機centos,並掛載/dev/sdb2至/mnt/sysroot目錄:

[root@bbs ~]# tar xf dropbear-2017.75.tar.bz2

[root@bbs ~]# cd dropbear-2017.75

dropbear默認安裝在/usr/local目錄下,另外需要注意,我們的mini linux系統上並沒有安裝pam模塊,所以在編譯dropbear時不要添加--enable-pam選項。

[root@bbs dropbear-2017.75]# ./configure

執行上面步驟後,dropbear在最後有輸出提示信息:

configure: Now edit options.h tochoose features.

options裏面有對dropbear配置文件的定義:


下一步執行make:

[root@bbs dropbear-2017.75]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

最後執行make install,使dropbear安裝在宿主機上,以便後面我們通過bincp腳本拷貝需要的程序到mini linux的根文件系統:/mnt/sysroot。

[root@bbs dropbear-2017.75]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

[root@bbs bin]# sh bincp.sh

[root@bbs ~]# sh bincp.sh 

Please enter a binary executable program[q for quit]:dropbear

Please enter a binary executable program[q for quit]:dropbearkey

Please enter a binary executable program[q for quit]:dbclient

Please enter a binary executable program[q for quit]:scp

使用bincp腳本將dropbear,dropbearkey,dbclient三個程序拷貝至mini linux根文件系統上。

[root@bbs ~]# tree /mnt/sysroot/usr/local/

/mnt/sysroot/usr/local/

├── bin

│   ├── dbclient

│   └── dropbearkey

└── sbin

└── dropbear

 

8.2.6、配置 dropbear

[root@bbs ~]# cd /mnt/sysroot/

[root@bbs sysroot]# ls dev/

pts                         ;確保dev目錄下已有pts目錄

再次編輯mini linux根文件系統上的/etc/fstab文件,添加devpts僞文件系統:

[root@bbs sysroot]# vi etc/fstab

proc              /proc     proc       defaults        0 0

sysfs              /sys        sysfs       defaults        0 0

devpts          /dev/pts      devpts   mode=620   0 0

/dev/sda1     /boot     ext4       defaults        00

/dev/sda2     /             ext4       defaults        00

創建dropbear目錄:

[root@bbs sysroot]# mkdir etc/dropbear

生成dropbear密鑰:

[root@bbs sysroot]# cd etc/dropbear

[root@bbs sysroot]# dropbearkey -h      ;獲取dropbearkey幫助信息



[root@bbs dropbear]# dropbearkey -t rsa -s 2048 -f dropbear_rsa_host_key

[root@bbs dropbear]# dropbearkey -t dss -f dropbear_dss_host_key

[root@bbs dropbear]# ls -l

total 8

-rw------- 1 root root 457 Sep  1 11:04 dropbear_dss_host_key

-rw------- 1 root root 805 Sep  1 11:03 dropbear_rsa_host_key

 

在mini linux系統上創建安全shells:

[root@bbs sysroot]# vi etc/shells

/bin/sh

/bin/ash

/bin/bash

/bin/hush

/sbin/nologin

 

安裝、配置nsswitch.conf配置文件:

[root@bbssysroot]#vi etc/nsswitch.conf

passwd: files

group: files

shadow: files

hosts: files dns

 

拷貝nsswitch.conf所需的庫文件:

[root@bbssysroot]#cp -d /lib64/libnss_files* lib64/

[root@bbssysroot]#cp -d /usr/lib64/libnss3.so usr/lib64

[root@bbssysroot]#cp -d /usr/lib64/libnssutil3.so usr/lib64

[root@bbssysroot]#cp -d /usr/lib64/libnss_files* usr/lib64/

[root@bbssysroot]#cp -d /lib64/libnss_dns* lib64/  ;支持域名解析庫

[root@bbssysroot]#cp -d /lib64/libresolv* lib64/    ;支持域名解析庫

[root@bbssysroot]#vi etc/profile

[ $UID -eq 0 ] && export PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

export PS1="[\u@\h \W]\\\$ "

至此,dropbear相關配置已經完成,下面即可啓動mini linux系統了,在mini linux系統上可前臺啓動dropbear,查看輸出的log信息:

[root@mini ~]# dropbear -E -F

更爲詳細的dropbear用法如下:

[root@mini ~]# dropbear -h

Dropbear server v2017.75https://matt.ucc.asn.au/dropbear/dropbear.html

Usage: dropbear [options]

-b bannerfile       Displaythe contents of bannerfile before user login

              (default:none)

-r keyfile Specify hostkeys (repeatable)

              defaults:

              dss/etc/dropbear/dropbear_dss_host_key

              rsa/etc/dropbear/dropbear_rsa_host_key

              ecdsa/etc/dropbear/dropbear_ecdsa_host_key

-R           Createhostkeys as required

-F           Don'tfork into background

-E           Logto stderr rather than syslog

-m          Don'tdisplay the motd on login

-w          Disallowroot logins

-s           Disablepassword logins

-g           Disablepassword logins for root

-B           Allowblank password logins

-j            Disablelocal port forwarding

-k           Disableremote port forwarding

-a           Allowconnections to forwarded ports from any host

-p [address:]port

              Listenon specified tcp port (and optionally address),

              upto 10 can be specified

              (defaultport is 22 if none specified)

-P PidFile      Createpid file PidFile

              (default/var/run/dropbear.pid)

-i            Startfor inetd

-W <receive_window_buffer> (default 24576,larger may be faster, max 1MB)

-K <keepalive> (0 is never, default 0, in seconds)

-I <idle_timeout>  (0 is never, default 0, in seconds)

-V    Version

 

要想讓mini linux開機啓動dropbear,可以加入/etc/rc.d/rc.sysinit

if /usr/local/sbin/dropbear ; then

   echo -e "Dropbearstarted \033[32m[ OK ]\033[0m"

else

   echo -e "Dropbearstarted \[033[31m[ failed ]\033[0m"

fi

8.2.7、爲mini linux提供域名解析支持

最後,爲了將mini linux支持域名解析,我們需要繼續在mini linux系統上做如下工作:

1、創建/etc/resolv.conf

該文件是DNS域名解析的配置文件,它的配置很簡單,每行以一個關鍵字開頭,後接配置參數。resolv.conf的關鍵字主要有四個:

nameserver  #定義DNS服務器的IP地址
domain     #定義本地域名
search      #定義域名的搜索列表
sortlist      #對返回的域名進行排序

resolv.conf文件中,nameserver關鍵字必須存在,它用於指定DNS服務器,其它關鍵字可選。

2、  創建/etc/hosts

hosts是一個沒有擴展名的系統文件,其作用就是將主機名映射到對應的ip地址。當用戶執行一條ping命令時(如ping www.baidu.com),系統會首先自動從hosts文件中尋找www.baidu.com對應的ip地址,一旦找到,系統會立即對相應的ip執行ping命令,否則系統將域名提交DNS域名解析服務器進行ip地址的解析。

#cat /etc/hosts
127.0.0.1  localhost:localdomain  localhost

192.168.0.119 your.host.name

3、創建/etc/host.conf

當系統中同時存在DNS域名解析與/etc/hosts主機表時,host.conf用於確定主機名解析順序。它每行含一個配置關鍵字,其後跟着合適的配置信息。系統識別的關鍵字有:order、trim、multi、nospoof和reorder。

#cat /etc/host.conf
order hosts,bind  #名稱解析順序
multi on  #允許主機擁有多個IP地址
nospoof on  #禁止IP地址欺騙

4、拷貝必要的庫文件並設置默認路由

[root@bbssysroot]#cp -d /lib64/libnss_dns* lib64/  ;支持域名解析庫

[root@bbssysroot]#cp -d /lib64/libresolv* lib64/    ;支持域名解析庫

[root@bbssysroot]# routeadd default gw 192.168.0.1  ;添加默認路由

[root@mini~]# ping-c2 www.baidu.com

PING www.baidu.com (183.232.231.172): 56 data bytes

64 bytes from 183.232.231.172: seq=0 ttl=53time=26.925 ms

64 bytes from 183.232.231.172: seq=1 ttl=53time=19.069 ms

8.2.8、配置udhcpc以自動獲取ip

busybox是支持客戶端和服務器端dhcp的,程序分別爲udhcpc和udhcpd,需要在編譯時選定相關模塊,另外在編譯內核時需選定對DHCP的支持:

編譯內核時,添加Linux內核對DHCP的支持:

[*] Networking support --->     ;網絡支持

     Networking options  --->

      <*> Packet socket

      [*]   IP:DHCP support      ;添加對dhcp的支持

[*]   IP: BOOTP support

[*]   Network packet filtering framework(Netfilter)  --->

編譯busybox時添加busybox對udhcpc支持

NetworkingUtilities  --->

[*]udhcp client (udhcpc)

[*]udhcp server (udhcpd)

 

進入busybox源碼頂層目錄,將examples/udhcp下的simple.script文件拷貝至mini linux系統的/usr/share/udhcpc下,並重命名爲default.script,注意要有可執行權限:chmod +x usr/share/udhcpc/default.script,關於這點可通過udhcpc -h獲取幫助信息。



最後在mini linux系統上執行如下命令:

[root@mini ~]# udhcpc -t 5 -n -i eth0

注:-t選項指明udhcpc的send discover最大發送次數,-n選項表示達到最大send discover次數仍未獲得租約則立即退出。

 

至此一個較爲完善的mini linux系統已經成功製作完畢!



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