在移植Linux內(nèi)核早期時(shí),如果flash等存儲(chǔ)設(shè)備的驅(qū)動(dòng)還沒(méi)寫(xiě)好,可以將文件系統(tǒng)放到內(nèi)存中運(yùn)行。
此時(shí)可以使用ramfs
和ramdisk
,即將內(nèi)存的一部分用作文件系統(tǒng)。
ramfs
ramfs
就是將文件系統(tǒng)和內(nèi)核一起編譯,編譯出來(lái)的鏡像就包括 內(nèi)核本身和文件系統(tǒng) 。
內(nèi)核打開(kāi)ramfs
:
在Initramfs source file(s)
選項(xiàng)中,填入文件系統(tǒng)的路徑即可。
最后,uboot
的bootargs
中需要將init=/sbin/init
修改為rdinit=/sbin/init
,主要就是init
和rdinit
的區(qū)別。
ramdisk
ramdisk
也是將內(nèi)存的一部分用作文件系統(tǒng),只不過(guò)不用像上面一樣要重新編譯內(nèi)核。
ramdisk制作
ramdisk
制作可以使用genext2fs
工具或者mke2fs
等工具制作。
方法一:genext2fs
genext2fs
安裝:
sudo apt-get install genext2fs
ramdisk
制作腳本:
genext2fs -b 16384 -d /home/book/rootfs ramdisk.image
gzip –v9 ramdisk.image
mkimage -A arm -O linux -T ramdisk -C gzip -n 'xx ramdisk filesystem' -d ramdisk.image.gz uramdisk.image.gz
- 先使用
genext2fs
把/home/book/rootfs
制作成一個(gè)名為ramdisk.image
的ramdisk
- 然后使用
gizp
壓縮ramdisk.image
,得到ramdisk.image.gz
- 最后用
mkimage
工具生成uramdisk.image.gz
給uboot
使用
方法二:mke2fs
ramdisk
制作腳本:
dd if=/dev/zero of=ramdisk.image bs=1k count=15360
mke2fs –F –v –m 0 ramdisk.image
mount –o loop ramdisk.image /mnt/loop
cp -a rootfs/* /mnt/loop
umount /mnt/loop
gzip –v9 ramdisk.image
mkimage -A arm -O linux -T ramdisk -C gzip -n 'xx ramdisk filesystem' -d ramdisk.image.gz uramdisk.image.gz
過(guò)程類(lèi)似,只不過(guò)是先制作一個(gè)空的鏡像,然后拷貝文件系統(tǒng)的內(nèi)容。
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208716 -
文件
+關(guān)注
關(guān)注
1文章
561瀏覽量
24671 -
系統(tǒng)
+關(guān)注
關(guān)注
1文章
1006瀏覽量
21292
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論