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