本文只適合「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