一、如何對已有的根文件系統進行修改
假設已有一個名爲ramdisk.gz的文件系統壓縮文件,可以通過以下步驟實現對該文件系統的修改:
1. 將文件系統的壓縮文件解壓成映像文件;
進入ramdisk.gz所在目錄:
#cd …
解壓ramdisk.gz:
#gunzip ramdisk.gz
2. 掛載解壓後的映像文件來實現修改;
創建掛載目錄:
#sudo mkdir /mnt/loop
將ramdisk.gz掛載:
#sudo mount –o loop ramdisk /mnt/loop
進入掛載目錄:(這時可以根據需要增加、刪減或是修改文件系統的內容)
#cd /mnt/loop
修改開發板啓動文件(DevKit8500D):
#sudo gedit /mnt/loop/etc/init.d/rc
3. 卸裝鏡像文件;
進入ramdisk.gz所在目錄:
#cd …
卸載目錄
#sudo umount /mnt/loop
4. 將修改後的文件系統製作成壓縮文件;
#gzip –v9 ramdisk
二、如何建立新的根文件系統
(方法一)
1. 建立loop設備的臨時掛載點;
#mkdir /mnt/loop
2. 建立一個大小爲15M的臨時文件;
#dd if=/dev/zero of=/tmp/loop_tmpbs=1k count=15360
臨時文件的大小可根據自己的需要對參數count進行調整即可;
3. 將設備文件與臨時文件聯繫起來;
#losetup /dev/loop0 /tmp/loop_tmp
如果出現“ioctl:LOOP_SET_FD:設備或資源忙”,說明/dev/loop0設備還和一文件聯繫,可用losetup /dev/loop0查看地,並可用-d 刪除;
4. 將/dev/loop0格式化爲ext2文件系統;
#mke2fs –m 0 /dev/loop0
5. 把虛擬盤掛在節點/mnt/loop上;
#mount –t ext2 /dev/loop0/mnt/loop;
6. 用cp –af命令將所需要的文件拷貝到虛擬盤上;
7. 通過cd命令切換到除/mnt/loop目錄以外的其他目錄,然後卸載文件系統;
#cd /xx (xx表示除/mnt/loop以外的其他目錄)
#umount /mnt/loop
得到的/tmp/loop_tmp就是文件系統映象
8. 壓縮映象文件生成文件系統;
#gzip –v9 /tmp/loop_tmp>/tftpboot/ramdisk.gz
或#gzip –v9 /tmp/loop_tmp
(方法二)
1. 建立loop設備的臨時掛載點;
#mkdir /mnt/loop
2. 建立一個大小爲15M的臨時文件;
#dd if=/dev/zero of=/tmp/loop_tmpbs=1k count=15360
3. 將loop_tmp格式化爲ext2文件系統;
mke2fs –F –v –m 0 /tmp/loop_tmp
4. 掛載格式化後的臨時文件;
#munt –o loop /tmp/loop_tmp/mnt/loop
5. 用cp –af命令將所需要的文件拷貝到臨時文件中從而生成映像文件;
6. 卸載生成的映象文件;
#umount /mnt/loop
7. 壓縮映象文件生成文件系統;
#gzip –v9 /tmp/loop_tmp
--------------------------分割線---------------------------------
此方法可以修改系統啓動設置,設置啓動項。
測試軟硬件平臺:
宿主機:Ubuntu 12.04LTS
目標版:Devkit8500D,Linux2.6.32