軟盤上的Linux系統(tǒng)方案
將內(nèi)核與文件系統(tǒng)進行整合,如果不用Grub引導還有兩種選擇,不過根文件系統(tǒng)就不能象上面那樣打包再壓縮, 也不再使用initrd。把所有根文件系統(tǒng)文件放到一個目錄中(比如上面的rootfs/local),然后執(zhí)行
dd if=/dev/zero of=/dev/ram0 bs=1k count=4096
mke2fs /dev/ram0
mount -t ext2 /dev/ram0 ramdisk/
cp -R local/* ramdisk/
umount ramdisk
dd if=/dev/ram0 bs=1k | gzip -v9 > rootfs.gz
1.將內(nèi)核與文件系統(tǒng)放置在一張軟盤上
確定內(nèi)核的大小和的大小之合沒有超出軟盤的限制。記住內(nèi)核的大小,然后將內(nèi)核寫到軟盤上:
#dd if=bzImage of=/dev/fd0 bs=1k
353+1 records in
353+1 records out
之后,設置根設備為軟盤本身,并且設置根以讀寫方式裝載
#rdev /dev/fd0 /dev/fd0
#rdev -R /dev/fd0 0
上面這個例子表示dd寫了353個完整記錄和一個部分記錄到軟盤上,因此內(nèi)核占用了軟盤的前354個記錄塊。記住這個數(shù)字,然后設置內(nèi)核的Ramdisk Word。Ramdisk Word可以通過rdev命令設置,它的內(nèi)容為:
如果15位設置的話,內(nèi)核在加載文件系統(tǒng)之前會進行提示,這在下面將內(nèi)核與文件系統(tǒng)盤分開的情況時是必要的。
對于上面的情況,需要在0-10位指出ramdisk的偏移,并將14位置1,所以得出的ramdisk word十進制表示為:355 + 2^14 = 355 + 16384 = 16739
#rdev -r /dev/fd0 16739
之后
#dd if=rootfs.gz of=/dev/fd0 bs=1k seek=354
這樣一張同時包含內(nèi)核和文件系統(tǒng)的軟盤就成功了。
2.內(nèi)核與文件系統(tǒng)分別占用一張軟盤
與上面一樣
#dd if=bzImage of=/dev/fd0 bs=1k
#rdev /dev/fd0 /dev/fd0
#rdev -R /dev/fd0 0
不同的是ramdisk word為 0 + 2^14 + 2^15 = 49152
#rdev -r /dev/fd0 49152
然后換零一張軟盤
#dd if=rootfs.gz of=/dev/fd0 bs=1k
內(nèi)核、根文件系統(tǒng)、引導程序之間的整合方法有很多,他們各有各自的特點,有待讀者自己思考。
八.前景
按照本文方法所構造的Linux系統(tǒng)雖然還不完善,但通過逐步的改進,將能做出一個有價值的系統(tǒng)來。真正的Linux嵌入式系統(tǒng)根據(jù)不同的應用方向通常還包括圖形用戶界面或者是網(wǎng)絡瀏覽器等應用程序。值得慶幸的是很多OpenSource的項目提供了所需要的組件,結(jié)合這些優(yōu)秀的開源項目,就可以形成一套真正的嵌入式Linux操作系統(tǒng)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論