溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么定制Linux外圍文件系統(tǒng)

發(fā)布時(shí)間:2021-11-02 09:14:46 來(lái)源:億速云 閱讀:172 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹怎么定制Linux外圍文件系統(tǒng),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

思路

  1. 利用原有系統(tǒng)復(fù)制必備部件到新存儲(chǔ)器

  2. 利用 initrd.img 機(jī)制在 RAM Disk 中測(cè)試

  3. 搭配原文件內(nèi)核和模塊啟動(dòng)

Step1:獲得shell版本的initrd.img

首先,我們可以寫一個(gè)腳本 init ,使得內(nèi)核用該文件系統(tǒng)啟動(dòng)后能夠直接獲得一個(gè) Bash 。

怎么定制Linux外圍文件系統(tǒng)

創(chuàng)建腳本 init

其中: /bin 目錄下是常用命令, init 是自己寫的腳本, /lib64 目錄下是應(yīng)用程序所依賴的動(dòng)態(tài)庫(kù)。

怎么定制Linux外圍文件系統(tǒng)

init 內(nèi)容

現(xiàn)在我們需要使用命令行,創(chuàng)建 bin 和 sbin 目錄,向其中添加 bash 、 ls 、 rm 、 cp 、 mv 、 echo 、 cat 、 less 等基礎(chǔ)命令。由于這些命令需要依賴 /lib64 等目錄下的一些動(dòng)態(tài)鏈接的共享庫(kù),所以需要將依賴的庫(kù)拷貝到小系統(tǒng)對(duì)應(yīng)的目錄下,用 ldd 命令查詢應(yīng)用程序及其依賴的動(dòng)態(tài)庫(kù)。完成之后,執(zhí)行:

find . | cpio -H newc -o | gzip > /boot/initrd.img

將根文件系統(tǒng)打包成 initrd.img 放到 /boot 目錄下。啟動(dòng)時(shí)系統(tǒng)會(huì)自動(dòng)執(zhí)行 initrd.img 中的 init 。

費(fèi)了這么大勁生成 initrd.img ,如何測(cè)試新建的 initrd.img 呢,需要在 grub 啟動(dòng)配置文件當(dāng)中增加一個(gè)入口用于測(cè)試。

title CentOS 6 Mini
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64
initrd /initrd.img

這樣重啟之后就會(huì)出現(xiàn)啟動(dòng)選項(xiàng)了。

Step2:完成掛載原系統(tǒng)能力

為了能掛載原系統(tǒng),必須在 initrd.img 中加載原系統(tǒng)運(yùn)行所必須的驅(qū)動(dòng)模塊,比如 ext4 文件系統(tǒng)的驅(qū)動(dòng)、 scsi 設(shè)備的相關(guān)驅(qū)動(dòng)等, /sbin/modinfo 配合 /sbin/insmod ,驅(qū)動(dòng)放到 /module

怎么定制Linux外圍文件系統(tǒng)

Step3:完成擁有管理設(shè)備能力(udev)

利用管理、監(jiān)控主機(jī)設(shè)備的服務(wù)程序udevd來(lái)自動(dòng)加載所需的驅(qū)動(dòng)模塊,比我們自己實(shí)現(xiàn)更加可靠。 udevd 的規(guī)則文件在 /lib/udev/ 目錄下,配置文件在 /etc/udev/ 目錄下,同時(shí)還需要 /etc/nsswitch.conf 配置的名稱服務(wù)交換,其依賴的庫(kù)為 /lib 目錄下以 libnss 開頭的文件,將上述文件拷貝到我們的目錄下,然后使用 /sbin/start\_udev 命令可以啟動(dòng) udevd 服務(wù)。( udevd 需要調(diào)用一些其他的系統(tǒng)命令,如 /sbin/modprobe ,可用 strace 進(jìn)行跟蹤獲?。?/p>

怎么定制Linux外圍文件系統(tǒng)

小系統(tǒng)的目錄文件

其中: /dev 目錄下是系統(tǒng)存放可用設(shè)備的目錄, /log 是使用 strace 命令生成的 log 記錄文件。

Step4:完成擁有l(wèi)ogin登錄能力

由于 login 的機(jī)制比較復(fù)雜,涉及進(jìn)程管理機(jī)制和進(jìn)程組、控制臺(tái)等許多方面,因此我們采用 *M2 *,將 /sbin/init 命令拷到小系統(tǒng)目錄下, init 腳本改為

#!/bin/bashexec /sbin/init

將控制權(quán)交給 /sbin/init 之后,系統(tǒng)啟動(dòng)時(shí)就必須等到它完成一系列調(diào)用之后,進(jìn)入 login界面,用戶才能重新獲得控制權(quán)。

/sbin/init 的過(guò)程大致分為三塊:***塊是udevd加載驅(qū)動(dòng)模塊、文件系統(tǒng)檢查和根切換,相關(guān)配置在 /etc/rc.sysinit 中;第二塊是啟動(dòng)各項(xiàng)服務(wù),相關(guān)配置在 /etc/rc.d/ 目錄下;第三塊是登錄部分,需要調(diào)用 /sbin/mingetty 和 /bin/login 等命令。將上述所涉及的命令及文件拷貝到小系統(tǒng)對(duì)應(yīng)的目錄下,并對(duì)配置進(jìn)行修改。

由于小系統(tǒng)啟動(dòng)之后 initrd.img 作為臨時(shí)根文件系統(tǒng)直接在內(nèi)存中運(yùn)行,而我們小系統(tǒng)不需要進(jìn)行根切換,故將 /etc/rc.sysinit 中 remount\_needed() 函數(shù)體注釋掉,這樣就不會(huì)根切換了。

由于系統(tǒng)采用了全新的 Upstart 啟動(dòng)方式( /sbin/init 程序已經(jīng)改由 upstart 軟件包提供),將與 Upstart 啟動(dòng)相關(guān)的配置文件拷貝至小系統(tǒng)目錄下:

/etc/inittab 配置默認(rèn)運(yùn)行級(jí)別/etc/init/rcS.conf 加載rc.sysinit腳本,完成系統(tǒng)初始化任務(wù)/etc/init/rc.conf 兼容腳本,負(fù)責(zé)各運(yùn)行級(jí)別的調(diào)用處理/etc/init/rcS-sulogin.conf 為單用戶模式啟動(dòng)/sbin/sushell環(huán)境/etc/init/control-alt-delete.conf 控制終端下的Ctrl+Alt+Del熱鍵操作/etc/init/start-ttys.conf 配置tty終端的開啟數(shù)量、設(shè)備文件/etc/sysconfig/init 控制tty終端的開啟數(shù)量、終端顏色方案/etc/init/tty.conf 控制tty終端的開啟

將 bootmini/etc/inittab 的運(yùn)行優(yōu)先級(jí)改為2,那么系統(tǒng)啟動(dòng)時(shí) /sbin/init 將執(zhí)行 bootmini/etc/rc.d/rc2.d/ 目錄下以 S 開頭的文件,將一些不需要開啟的服務(wù)文件名改為 K 開頭。

在 bootmini/etc/rc.d/rc.local 文件中可以加入用戶需要系統(tǒng)開機(jī)啟動(dòng)后自動(dòng)執(zhí)行的操作。

login 程序基于認(rèn)證體系 PAM , 配置文件在 /etc/pam.d/ 目錄下,相關(guān)庫(kù)文件有 /lib64/security/ 及其依賴的庫(kù)文件; login 還涉及用戶組管理 /bin/chgrp 、 /bin/chown 、 /bin/chmod 等,保存用戶名的文件 /etc/passwd 、 /etc/group ,用戶密碼文件為 /etc/shadow 。其他一些涉及的文件可通過(guò) strace 來(lái)幫助分析。

可在真機(jī)上運(yùn)行的完整版小系統(tǒng)

部分目錄文件:

怎么定制Linux外圍文件系統(tǒng)

/etc

怎么定制Linux外圍文件系統(tǒng)

/bin

怎么定制Linux外圍文件系統(tǒng)

/sbin

怎么定制Linux外圍文件系統(tǒng)

/usr/bin

怎么定制Linux外圍文件系統(tǒng)

/usr/sbin

至此,文件系統(tǒng)算是可以跑了。

以上是“怎么定制Linux外圍文件系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI