使用 genext2fs 的 '-D'(device file table)來建立 root filesystem

jollen 發表於 December 19, 2006 6:50 PM

本文只適合「Embedded Linux / x86: 基礎能力與系統管理」的學員、對 root filesystem 建立有基本概念的朋友,或是「Embedded Linux 嵌入式系統實作演練, 2e」的讀者。

本日記介紹更方便的 nano-X 專案建立方式,以下做法使用的 shell script 並「不是」Jollen 原創,而是 Jollen 的恩師「Joe」貼心提供給學員使用的。目前 Joe 老師在大學主持嵌入式 Linux 實驗室,上過 Joe 老師課的同學仍然可以寫 email 跟他請教問題。

步驟

1. 利用 gennanox 來產生主要的目錄(骨幹):

# sh ./gennanox
generating fstab
generating group
generating passwd
generating inittab
generating rc.d/rc.init
generating rc.d/rc.sysinit
generating /bin/microwin

2. 得到 nanox/ 目錄:

# ls -l nanox/
總計 8
drwxr-xr-x 4 root root 4096 12月 19 18:55 i386.so
drwxr-xr-x 2 root root 4096 12月 19 18:55 src
# ls -l nanox/i386.so/
總計 8
drwxr-xr-x 12 root root 4096 12月 19 18:55 install
drwxr-xr-x 2 root root 4096 12月 19 18:55 pub

nanox/install/ 存放我們的 root filesystem。

3. 把 package source tarball 都放到 nanox/src/,build 好的 binary 放到 nanox/i386.so/install/

4. root filesystem 的 dev/ 不用再手動建立檔案。有一種更方便的方法是寫一個 device txt 檔,透過 genext2fs 來做,把下面的內容存成 dev.txt

# name    type mode uid gid major minor start inc count
/dev      d    755  0    0    -    -    -    -    -
/dev/console c 666  0    0    5    1    0    0    -
/dev/fb   c    666  0    0   29    0    0    1    1
/dev/mouse c   666  0    0   10    1    0    0    -
/dev/ram  b    666  0    0    1    0    0    1    4
/dev/tty  c    666  0    0    5    0    0    0    -
/dev/tty  c    666  0    0    4    0    0    1    2
/dev/gpmdata p 666  0    0    -    -    -    -    -
/dev/null c    666  0    0    1    3    0    0    -
/dev/zero c    666  0    0    1    5    0    0    -
/dev/hda  b    666  0    0    3    0    0    0    -
/dev/hda  b    666  0    0    3    1    1    1    9
/dev/hdc  b    666  0    0   22    0    0    0    -
/dev/hdc  b    666  0    0   22    1    1    1    9
# usb mouse #/dev/input/mice c 666 0 0 13 63 0 0 - #/dev/mouse c 666 0 0 13 63 0 0 - /dev/input d 755 0 0 - - - - - /dev/input/mouse c 666 0 0 13 32 0 1 2 /dev/input/event c 666 0 0 13 64 0 1 4

5. 打包 RFS 時,透過 genext2fs 的 '-D' 參數來建立 device file。指令如下:

# cd nanox/i386.so/
# genext2fs -D dev2.txt -d install/ -b 2048 pub/ext2fs
# gzip -9 pub/ext2fs
#

把 RFS(install/)打包成 image file 時,genext2fs 會根據 dev.txt 的設定來建立 device file。打包好的 image file 要放到 nanox/i386.so/pub/ 目錄下,以便能系統性的管理整個 project。

以上的 dev.txt 同樣由 Joe 老師提供,他也把 USB mouse 的 device file 設定好了。gennanox 可以說是「用來產生 nano-X project 基本骨架(framework)」的 script。

Thanks Joe!

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw