當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

【LFS 系列】從零開始 DIY Linux 系統(tǒng):(六)構(gòu)建 LFS 系統(tǒng) - 準(zhǔn)備虛擬內(nèi)核文件系統(tǒng)
2021-10-08 17:43:07

在本章里,我們會進(jìn)入構(gòu)建環(huán)境然后開始認(rèn)真地構(gòu)建 LFS 系統(tǒng)了。

就是說,我們會 chroot 進(jìn)入之前準(zhǔn)備好的臨時(shí)迷你 Linux 系統(tǒng),做一些最后的準(zhǔn)備工作,然后就開始安裝軟件包。

內(nèi)核會掛載幾個(gè)文件系統(tǒng)用于自己和用戶空間程序交換信息。這些文件系統(tǒng)是虛擬的,并不占用實(shí)際磁盤空間,它們的內(nèi)容會放在內(nèi)存里。

開始先創(chuàng)建將用來掛載文件系統(tǒng)的目錄:

mkdir -pv $LFS/{dev,proc,sys,run}

創(chuàng)建初始設(shè)備節(jié)點(diǎn)

在內(nèi)核引導(dǎo)系統(tǒng)的時(shí)候,它依賴于幾個(gè)設(shè)備節(jié)點(diǎn),特別是 console 和 null 兩個(gè)設(shè)備。這些設(shè)備節(jié)點(diǎn)需要創(chuàng)建在硬盤上,這樣在 udevd 啟動之前它們也仍然有效,特別是在 Linux 使用init=/bin/bash 參數(shù)啟動的時(shí)候。

運(yùn)行下面的命令創(chuàng)建這幾個(gè)設(shè)備節(jié)點(diǎn):

mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3

掛載和激活 /dev

通常激活 /dev 目錄下設(shè)備的方式是在 /dev目錄掛載一個(gè)虛擬文件系統(tǒng)(比如 tmpfs),然后允許在檢測到設(shè)備或打開設(shè)備時(shí)在這個(gè)虛擬文件系統(tǒng)里動態(tài)創(chuàng)建設(shè)備節(jié)點(diǎn)。

這個(gè)通常是在啟動過程中由 Udev 完成。由于我們的新系統(tǒng)還沒有 Udev 而且也沒有被引導(dǎo)啟動,有必要手動掛載和激活 /dev 目錄。

這可以通過綁定掛載宿主機(jī)系統(tǒng)的 /dev 目錄實(shí)現(xiàn)。綁定掛載是一種特殊的掛載模式,它允許在另外的位置創(chuàng)建某個(gè)目錄或掛載點(diǎn)的鏡像。

運(yùn)行下面的命令來實(shí)現(xiàn):

mount -v --bind /dev $LFS/dev

掛載虛擬文件系統(tǒng)

現(xiàn)在掛載剩下的虛擬內(nèi)核文件系統(tǒng):

mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

在某些宿主機(jī)系統(tǒng)里,/dev/shm 是一個(gè)指向 /run/shm 的軟鏈接。這個(gè) /run 下的 tmpfs 文件系統(tǒng)已經(jīng)在之前掛載了,所以在這里只需要創(chuàng)建一個(gè)目錄。

if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
fi



本次分享到此結(jié)束啦~

如果覺得文章對你有幫助,點(diǎn)贊、收藏、關(guān)注、評論,一鍵四連支持,你的支持就是我創(chuàng)作最大的動力。

?? 技術(shù)交流可以 關(guān)注公眾號:Lucifer三思而后行 ??

本文摘自 :https://blog.51cto.com/l

開通會員,享受整站包年服務(wù)立即開通 >