閱讀189 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Linux From Scratch》第三部分:構建LFS係統 第六章:安裝基本的係統軟件- 6.2. 準備虛擬內核文件係統

         內核會掛載幾個文件係統用於自己和用戶空間程序交換信息。這些文件係統是虛擬的,並不占用實際磁盤空間,它們的內容會放在內存裏。

開始先創建將用來掛載文件係統的目錄:

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

6.2.1. 創建初始設備節點

在內核引導係統的時候,它依賴於幾個設備節點,特別是 consolenull 兩個設備。這些設備節點需要創建在硬盤上,這樣在 udevd 啟動之前它們也仍然有效,特別是在 Linux 使用init=/bin/bash 參數啟動的時候。運行下麵的命令創建這幾個設備節點:

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

6.2.2. 掛載和激活 /dev

通常激活 /dev 目錄下設備的方式是在 /dev目錄掛載一個虛擬文件係統(比如 tmpfs),然後允許在檢測到設備或打開設備時在這個虛擬文件係統裏動態創建設備節點。這個通常是在啟動過程中由 Udev 完成。由於我們的新係統還沒有 Udev 而且也沒有被引導啟動,有必要手動掛載和激活 /dev 目錄。這可以通過綁定掛載宿主機係統的 /dev 目錄實現。綁定掛載是一種特殊的掛載模式,它允許在另外的位置創建某個目錄或掛載點的鏡像。運行下麵的命令來實現:

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

6.2.3. 掛載虛擬文件係統

現在掛載剩下的虛擬內核文件係統:

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

devpts 掛載選項的含義:

gid=5

這個選項會讓 devpts 創建的所有設備節點屬主的組 ID 都是 5。這是我們待會將要指定給 tty 組的 ID。現在我們先用 ID 代替組名,因為宿主機係統可能會為它的 tty 組分配了不同的 ID。

mode=0620

這個選項會讓 devpts 創建的所有設備節點的屬性是 0620(屬主用戶可讀寫,組成員可寫)。和上一個選項同時使用,可以保證 devpts 所創建的設備節點能滿足 grantpt() 函數的要求,這意味著不需要 Glibc 的 pt_chown 幫助程序(默認沒有安裝)了。

在某些宿主機係統裏,/dev/shm 是一個指向 /run/shm 的軟鏈接。這個 /run 下的 tmpfs 文件係統已經在之前掛載了,所以在這裏隻需要創建一個目錄。

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



創建者:Gerard Beekmans
編輯者:Matthew Burgess 和 Armin K.
翻譯團隊:LCTT
譯者/校對:zpl1025,wxy

最後更新:2017-11-07 17:03:54

  上一篇:go  《Linux From Scratch》第三部分:構建LFS係統 第六章:安裝基本的係統軟件- 6.3. 軟件包管理
  下一篇:go  《Linux From Scratch》第三部分:構建LFS係統 第六章:安裝基本的係統軟件- 6.1. 簡介