1,952 瀏覽數

Linux – squashed file systems

Ubuntu Desktop 版本的光碟基本上也是一片 LiveCD,我們還可以透過 PXE 的方式來開啟這一片 LiveCD,詳細方式請參考網頁說明 http://benjr.tw/1138
如果想要自行修改 ubuntu LiveCD 的內容也很簡單,直接修改他的 root 檔案,Ubuntu 的 LiveCD root 檔案存放在光碟目錄下 /casper/filesystem.squashfs, 而 ubuntu 的 root 系統採用了 Squash file system 的方式打包,所以這邊以 ubuntu 為範例來對 Squash file system 做個介紹.
"Squash file system" 的官方網站說明文件位於 http://www.tldp.org/HOWTO/SquashFS-HOWTO/
首先我們來看看 ubuntu 的 root 檔案,的確是 Squash file system 的格式.

[root@pxe casper]# file filesystem.squashfs
filesystem.squashfs: Squashfs filesystem, little endian, version 4.0, 1289372852 bytes, 137319 inodes, blocksize: 41 bytes, created: Sun Dec 28 03:29:04 2008

透過 -o loop 和 -t squashfs 的方式一樣可以掛載 squashed file systems http://www.tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html

不過很可惜的是 Squash file system 在 RHEL5 下不支援,我們可以透過 patch 核心的方式或是直接使用 RHEL6 以支援這種檔案格式的 mount.

[root@pxe casper]# mount -t squashfs -o loop filesystem.squashfs /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

不過很可惜的是 mount 之後看到該 squash file system 可剩餘空間為 "0" ,所以還需再想想其他方是將我需要的檔案放進去.

其實我想太多直接把檔案複製出來接下來再做一次的 Squash file system 打包即可.

[root@pxe ~]# mkdir livecd
[root@pxe ~]# cp -ap /mnt/* livecd

我們可以依據自己的需求修改 root 的目錄與檔案等資料,修改之後再用 # mksquashfs source1 source2 … destination [options] 重新打包即可.

[root@pxe ~]# mksquashfs livecd/ filesystem.squashfs

參數請參考官方網頁說明 http://tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html

發表迴響