打造自己的專屬linux(三):添加網路模組,登入介面,開關機

來源:互聯網
上載者:User

上個星期,馬哥講了如何給小linux添加裝置模組,並實現登入介面,層級1,開關機等等。通過不斷的倒騰這個小Linux來更加深入的理解linux系統。

準備工作:1.您應當知道核心模組的概念,可以去我的文章瞭解下

啟動流程 http://blog.csdn.net/deansrk/article/details/6659421

核心模組 http://blog.csdn.net/deansrk/article/details/6666629

2.您應該瞭解linux的啟動流程與啟動層級的概念

##更新:一些核心模組相關命令介紹:

modinfo pcnet32
查看模組中對應的詳細資料和“依賴資訊”,“路徑”等
如果以後自己給小linux加模組,需要將依賴的模組也移植過去

/etc/modprobe.conf
系統開機時載入的所有模組,向模組中傳遞參數資訊,如何想開機的時候給模組傳遞資訊,可以編輯它
alias   別名
options  傳遞參數   (一般不需要手寫)

modprobe -r     //卸載某個模組          只需要指定模組名字
                             //不加r   ,載入某個移除模組
modprobe -r floppy   //移除磁碟片
ls /lib/modules/`uname -r`                // modproce在這裡找模組

insmod              插入模組
insmod /PATH/TO/MODULE_FILE 它必須指定模組全路徑

lsmod             顯示所有模組

rmmod           移除模組,不需要指定路徑

depmod       用於自動產生所有模組的依賴關係檔案和映射關係檔案
                                                        modules.dep           map.dep

總之,如果想要深入理解Linux,那麼理論基礎必不可少,這樣在動手做的時候才知道自己每一步在做什麼

#####給小Linux添加網路功能

1.尋找pcnet32裝置對應的.ko檔案 
[root@server56 ~]# modinfo pcnet32
filename:       /lib/modules/2.6.18-164.el5/kernel/drivers/net/pcnet32.ko
2.切換到小linux系統lib目錄 
cd /mnt/sysroot/lib
3.建立模組存放目錄 
mkdr modules
4. 將mii.ko pcnet32.ko拷貝到這個目錄,以我的路徑為例,
#pcnet32是vm虛擬機器的網卡驅動
cp /lib/modules/2.6.18-164.el5/kernel/drivers/net/pcnet32.ko ./modules
5. 修改rc.sysinit,增加
    [ -e /lib/modules/mii.ko ] && /sbin/insmod /lib/modules/mii.ko                                     #用於啟動時載入這個模組
    [ -e /lib/modules/pcnet32.ko ] && /sbin/insmod /lib/modlues/pcnet32.ko
    echo "Load the ethernet card drivers ok"
   
    echo "Set the address fo lo..."
    /sbin/ifconfig lo 127.0.0.1/8
    
    echo "Set the adress for eth0"
    /sbin/ifconfig eth0 192.168.0.145/24   
    
好啦,這樣小Linxu就具有網路功能了,你可以切到小linux裡試試    

#############實現關機
實現關機簡單,只需要兩步:
1.編輯 /mnt/sysroot/etc/inittab添加下面這一行
l0:0:wait:/etc/rc.d/rc.shutdown
2.建立指令碼檔案/mnt/sysroot/etc/rc.d/rc.shutdown添加下面的內容
sync
sleep1
umount  /dev/sda1                    #如果有mtab檔案可以直接用umount -a來關閉,/etc/mtab檔案時用於記錄當前系統所有可以掛載的裝置 
umount  /dev/sda2
swapoff -a

exec /sbin/halt -p

ln -s bash sh                                 #給bash 增加一個sh連結,啟動的時候如果不指定/bin/bash,則去找sh另外,關機時退出bash,也需要去找shell

#########實現層級 1  

1.在小linux裡/etc/inittab裡增加           

l1:1:wait:/sbin/init -t1 S                      

2.在啟動時,grub介面裡e編輯核心引導增加1 來啟動層級1           

#########實現登入介面
條件:
1. 啟動至少一個終端
2. 列印登入提示給使用者
3. /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
4. Login-->名稱服務開端/etc/nsswitch-->庫檔案
5. 取消rc.sysinit裡的/bin/bash 
6. 移植mingetty

這裡要解釋下linux裡帳號密碼對應關係
1.linux裡定義帳號密碼轉化的工具:
名稱服務開關(name service):定義終端靠誰來尋找對應使用者的帳號和密碼
名稱解析: 當系統需要轉換帳號和密碼資訊時所調用的庫檔案
2.name service相關檔案
/usr/lib/libnss開頭的檔案:這些檔案的作用就是name service的轉換 
libness_db.so               去資料庫中找
               dns                  去DNS伺服器找
               files                 去/etc/passwd找
               winbinds         去winbinds伺服器找

在拷貝庫檔案的時候,當拷貝連結時拷貝的是連結指向的檔案,但是檔案名稱是連結的命令,
所以,如果拷貝的連結對應的還是連結,那拷貝的就不是我們想要的檔案,而是連結
cp命令擴充:
如果/lib/libm.so.1-->/lib/libm.so.2.3.1
cp -d          (如果是連結,保持串連,如果是檔案,複製檔案)

列印終端步驟:
0.移植mingetty
1. 複製libnss檔案到小linux裡
[root@server69 LX]# cp -d /usr/lib/libnss3.so /mnt/sysroot/usr/lib/
[root@server69 LX]# cp -d /usr/lib/libnssckbi.so /mnt/sysroot/usr/lib/
[root@server69 LX]# cp -d /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/
[root@server69 LX]# cp -d /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/
[root@server69 LX]# cp -d /usr/lib/libnss_compat.so /mnt/sysroot/usr/lib/
[root@server69 LX]# cp -d /lib/libnss_files* /mnt/sysroot/lib/
[root@server69 LX]# cp -d /lib/libnss_compat* /mnt/sysroot/lib/

2. 修改inittab增加列印終端  
[root@server69 sysroot]# vim etc/inittab
#tty
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2

3.   去除rc.sysinit中的/bin/bash這一行
4.   添加login 
      1):http://u.115.com/file/dnhd3x9p
      2)給它執行許可權
      3)拷貝它的庫檔案
      [root@server69 bin]# ldd /bin/login
linux-gate.so.1 =>  (0x00858000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x06cca000)
libpam.so.0 => /lib/libpam.so.0 (0x00dc2000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x002a2000)
libaudit.so.0 => /lib/libaudit.so.0 (0x00da5000)
libc.so.6 => /lib/libc.so.6 (0x002a7000)
libdl.so.2 => /lib/libdl.so.2 (0x003ef000)
/lib/ld-linux.so.2 (0x00284000)

[root@server69 bin]# cp -d /lib/libcrypt.so.1 ../lib
[root@server69 bin]# cp -d /lib/libcrypt-2.5.so ../lib
[root@server69 bin]# cp /lib/libm.so.6 ../lib

5.拷貝passwd shadow gshadow group到小linxu  /etc裡
[root@server69 etc]# head -1 /etc/passwd > passwd
[root@server69 etc]# head -1 /etc/shadow > shadow
[root@server69 etc]# head -1 /etc/group > group 
[root@server69 etc]# head -1 /etc/gshadow > gshadow

6.拷貝nsswitch.conf到小linux的/etc裡
[root@server69 etc]# cp /etc/nsswitch.conf .

下篇預告:打造自己的linux(四):百變神器-----BusyBox!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.