首先下載 Busybox 1.15.3 及 CodeSourcery Sourcery G++ Lite Edition 2009q3。
將 Busybox 1.15.3 解開,並修改 Makefile 裡的 CROSS_COMPILE 如下:
CROSS_COMPILE ?= arm-none-linux-gnueabi-
然後編譯 Busybox:
$ make defconfig
$ make
$ make install
到這裡已經備妥 Busybox 了。
接著使用 dd 指令建立一個 64MB 大小的檔案(rootfs-1.15.3-2009q3.bin),並格式化為 ext2 格式。
$ dd if=/dev/zero of=rootfs-1.15.3-2009q3.bin bs=1024 count=65536
$ sudo mkfs.ext2 rootfs-1.15.3-2009q3.bin
建立 file system 除了需要 Busybox 外,還需要再編寫像是 etc/inittab 及 etc/profile 等設定檔,這些檔案可以在 Busybox 的原始碼裡的 examples 和 examples/bootfloppy 目錄裡找到範例,此外也可以利用 BeagleBoard 的範例,例如從 http://code.google.com/p/beagleboard/downloads/list 下載 rd-ext2-8M.bin 及 ramdisk_revc_v3.gz 來取得範例。
$ sudo mount -o loop rootfs-1.15.3-2009q3.bin /tmp/rootfs
$ sudo mount -o loop rd-ext2-8M.bin /tmp/orig
將 rootfs-1.15.3-2009q3.bin 掛載在 /tmp/rootfs,並將當參考範例的 rd-ext2-8M.bin 掛載在 /tmp/orig,然後將編譯後的 Busybox 複製到 /tmp/rootfs,並從 cross compiler 複製需要的 libc。
$ (cd ./busybox-1.15.3/_install/ && sudo tar cf - .) | \
(cd /tmp/rootfs/ && sudo tar xvf -)
$ (cd /opt/CodeSourcery/arm-2009q3/arm-none-linux-gnueabi/libc/lib/ \
&& sudo tar cf - .) | (cd /tmp/rootfs/lib/ && sudo tar xvf -)
再取用 rd-ext2-8M.bin 的 etc 目錄。
$ (cd /tmp/orig/etc/ && sudo tar cf - .) | \
(cd /tmp/rootfs/etc/ && sudo tar xvf -)
最後再建立 console 及 null 兩個裝置節點,基本上 file system 就建立完成了。
sudo mknod -m 600 console c 5 1
sudo mknod -m 666 null c 1 3
OK~~~以下是這個 file system 在 BeagleBoard 執行起來後的訊息摘錄:
VFS: Mounted root (ext2 filesystem) on device 1:0.
Freeing init memory: 120K
beagleboard.org (v0.90) : System initialization...
Kernel release : Linux 2.6.32-rc8-06879-g4355c41
Kernel version : #1 Sun Nov 29 12:20:43 CST 2009
Mounting /proc : [SUCCESS]
Mounting /sys : [SUCCESS]
Mounting /dev : [SUCCESS]
Mounting /dev/pts : [SUCCESS]
Enabling hot-plug : [SUCCESS]
Populating /dev : [SUCCESS]
Mounting other filesystems : [SUCCESS]
Starting syslogd : [SUCCESS]
Starting telnetd : [SUCCESS]
/etc/init.d/rcS: line 100: can't create /sys/power/fb_timeout_value: nonexistent directory
Jan 1 00:00:04 beagleboard syslog.info syslogd started: BusyBox v1.15.3
System initialization complete.
Please press Enter to activate this console.
延伸閱讀: