製作 Root Filesystem 映像檔(Image File)

From Jollen's Wiki

Jump to: navigation, search

截至目前為止,我們的檔案系統已經擁有基本的系統指令與工具。接下來,我們即可將建置完成的 root filesystem 製作成 ext2 格式的映像檔。

以下提供二種 ext2fs image file 的製作方式:

  • 土方法
  • 使用 genext2fs 工具

先說明傳統的土方法。首先,先利用dd指令做出一個空白的檔案,大小為 4M(bytes):

# dd if=/dev/zero of=ext2fs bs=1k count=4096 

我們將檔案命名為 ext2fs,接著再將 ext2fs 製作成 ext2 格式的檔案系統:

# mkfs.ext2 ext2fs
mke2fs 1.32(09-Nov-2002)
ext2fs is not a block special device.
Proceed anyway?(y,n)y 

選擇y後出現以下畫面:

Filesystem label=
OS type: Linux
Block size=1024(log=0)
Fragment size=1024(log=0)
128 inodes, 1024 blocks
51 blocks(4.98%)reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
128 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override. 

到這裡我們已經做好一個檔案格式為 ext2 的空白映像檔,再來只要將先前做好的 root filesystem 全部複製到 ext2fs 映像檔「裡面」即可。

先將 ext2fs 附掛至任一空目錄,例如 mnt/:

# mkdir mnt/
# mount -t ext2 -o loop ext2fs mnt/ (指定檔案系統為 ext2) 

複製檔案系統時,我們不使用 cp 指令,而是利用 tar 來完成:

# cd install/
# tar cz * > ../install.tar.gz (將檔案系統做成tarball,同時也備份 root filesystem。)
# cd ..
# cd mnt/
# tar zxvf ../install.tar.gz (再將tarball解至映像檔) 

接著將映像檔 umount 並壓縮即可:

# cd ..
# umount mnt/
# gzip -9c ext2fs > pub/ext2fs.gz 

最後得到的 ext2fs.gz 即是完成品。請注意,若不使用 tar 來說,也應該使用 cpio 來複製檔案,避免使用 cp 指令。

使用 genext2fs

genext2fs 是一個 ext2 filesystem image file 的製作工具,可以讓我們很方便地將 root filesystem 製作成 image 檔。請由 genext2fs 的官方網站下載原始碼套件:

http://genext2fs.sourceforge.net/ 

編譯後可以取得 genext2fs 檔案,以下是將 install/ 目錄製作成 ext2fs image 檔的指令:

# genext2fs -b 8192 -i 1024 -d install/ ext2fs 

執行後,會得到檔名為 ext2fs 的 image 檔,大小為 8 MB(透過 ‘-b’ 參數指定 image file 大小);接著同樣再用 gzip 將 ext2fs 檔壓縮即可。

Resources


下一步:在 Target 端做測試

Views
個人工具
導航
工具