其實,我也是建議先從x86 base Linux 開始瞭解起會好很多,好處是
1. PC硬體零組件取得容易(除非真的要開發ARM driver or porting AP 再考慮買特定的實驗板)
2. 可以藉此瞭解Linux開機流程(想做embedded system必定要瞭解)
3. 練習rebuild kernel for hardware
4. 可以執行emulation
5. DRAM空間大很多,可以免除很多不方便
6. 新手可以練習從HD移轉system到另一個HD/Flash Disk ,然後測試移轉過去的系統開機
非常贊同! 我覺得新手可以做看看這種練習~
用 VMWare 或是 VirtualBox 之類的環境也可以練習歐~
1. 自己在 Linux 建立一個資料夾, ex: rootfs
2. 在 rootfs 資料夾下建立 Linux 開機所需的基本 root filesystem
(可參閱 Linux From Scratch: LFS 文件)
3. 編譯 linux kernel, 拿掉不需要的東西, 精簡化
4. 利用各種能將 rootfs 封裝成 image 的 tools 進行封裝, ex: genromfs
(
http://freshmeat.net/projects/genromfs/)
5. 修改 grub 的選單
6. 開機測試!
----
Tip: 假如你不想處理 busybox 的話,
有個我以前用過的驗證方式, 因為 Linux kernel 開機時,
會去執行 /bin/init (事實上他有很多選擇啦, 不詳述...)
所以你只要用 C 寫一個無窮迴圈
ex: 每隔 3 sec 一直印 "Hello Linux ~ I'm NOT init"
然後編譯成執行檔之後, 故意把他取名叫做 init, 然後放在 rootfs/bin 下面.
開機之後, 假如你成功 mounted rootfs, 就會執行你的 init (當然是假的 init 辣)
就會一直印
"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"
試試看^^ 很好玩喔~