dd if=/dev/zero of=myfs.img bs=1M count=4K以上是簡單示範如何創造出一個image檔,然後格式化它,再掛載它。
mkfs.ext3 myfs.img
mount -o loop myfs.img /mnt
再利用來規劃file system,進而把檔案放在裡頭。
但真的就上述指令敲一敲,就能做出來了嗎?
就我所知,其實學問還滿大的!
這種檔案格式,在虚擬化時機,會常常用到。
至少先會造出一個image檔來玩玩……
之後再慢慢研究吧~
Start by creating the basic file, as above, that you will use as a disk partition. I've been working with 8gb VM's lately - so I usually set the block size for dd to 1mb and the count to 8k blocks to get an empty 8gb file:
dd if=/dev/zero of=mydisk.img bs=1M count=8K
出處:
http://www.azertech.net/component/option,com_easyfaq/task,view/id,12/Itemid,26/
+-----------------------------------------------------------------------------------------------------------------+
下面這篇,算是中文的版本吧!
其中有點到P2V的做法哦~
建立 root filesystem image 空間的三種方式
root filesystem 就是我們在登入 linux 後,所看到的檔案系統, 我們平時使用的工具,就放在其中。如果我們光只是啟動了 Linux ,卻沒有 root filesystem , 那什麼事都無法做。 就好像電腦中安裝了 Win95/98 ,卻不小心把 C:\Windows 給刪除了一樣。
1.選擇一個設備空間
(a) ramdisk
建立 ramdisk 空間的方式,是用 dd 指令,填入指定大小的內容後, 就會在 ram 中保留該大小的空間;而這個 ram 空間,就連接到 dd 指 令中,所指定的設備名稱,如 /dev/ram0 。
$ dd if=/dev/zero of=/dev/ram0 bs=1k count=4096
上面這指令的意義是,從輸入設備 /dev/zero 中,以 bs 指定的大小(1k), 讀取資料,輸出到設備 /dev/ram0 中,重覆輸出入 count 指定的次 數(4096次)。這表示 /dev/ram0 所連接的 ram 空間,會有 4096K 的空間可用。
/dev/zero 是一個特殊的設備,從這個設備中,讀取的內容,全部都是 0 。
格式化這塊 ram 空間
$ mkfs.ext2 /dev/ram0 4096
最後 mount 此空間 (我 mount 在 /mnt/ramdisk 目錄上),準備複製檔案:
$ mount -t ext2 /dev/ram0 /mnt/ramdisk
(b) loopback device: loopback image 檔
有些人是用舊機器跑 linux , ram 可能只有 16~32mb ,用 ramdisk 就不太方便,這時仍可以利用 loopback 設備。 作法是將一個檔案,當作 loopback 設備 mount 起來。
$ dd if=/dev/zero of=/tmp/rootfs-file bs=1k count=4096
上面的指令,會在 /tmp 建立一個叫 rootfs-file 的檔案,大小 是 4096KB 。 意義跟上面 ramdisk 一樣,只是一個把空間建立在 ram 中,另一個 建立在 disk 中。
格式化:
$ mkfs.ext2 /tmp/rootfs-file 4096
把這個檔案 mount 上去:
$ mount -o loop -t ext2 /tmp/rootfs-file /mnt/ramdisk
(c) 硬碟
這個方法不太建議使用... 在硬碟上分一個 partition ,格式化後 mount 上去,做為 root filesystem 的空間。
除非硬碟上剛好有一個 partition 沒在用,否則不需要這麼做。
總結來說,有三個步驟:
建立一個儲存空間
$ dd if=/dev/zero of=DEVICE bs=1k count=???
格式化此空間
$ mkfs.ext2 DEVICE
mount 此空間
$ mount -t ext2 DEVICE /mnt/ramdisk
$ dd if=/dev/zero of=DEVICE bs=1k count=???
格式化此空間
$ mkfs.ext2 DEVICE
mount 此空間
$ mount -t ext2 DEVICE /mnt/ramdisk
2.選擇要放入 root filesystem 的檔案
選擇要放入 root filesystem 的檔案,這個部份就看你自已的了,有些是必要的, 有些是選擇性的,自已憑經驗看著辦。
在複製的檔案時,最好用 cp -dpR 來複製,這樣才可以完 整地將檔案屬性複製過去(特別是那些設備檔及符號連結檔)。
這些檔案複製好後,我們就完成 root filesystem 的內容了。
3.建立 root filesystem 的 image
接下來,我們要將這整個 root filesystem 的內容,變成一 個 image (檔案),並且加以壓縮。
最好先 umount :
$ umount /mnt/rootfs
接著將該空間的內容給 dump 出來,變成一個 image 檔, 並壓縮,我用一個動作完成:
$ dd if=DEVICE bs=1k count=??? | gzip -9 > /tmp/rootfs.gz
DEVICE 是你選擇的設備,在本文中,如 /dev/ram0, /tmp/rootfs-file ; ??? 的大小,是你建立這空間時所指定的,本文中,都是用 4096 。
之所以要再重新建立空間,是為了清除空間中的舊有資料, 全部設為 0 ,這樣在製作 image 時,就可以壓得比較小。
出處:
http://inse2005.spaces.live.com/blog/cns!F384BBC6107C1D3F!170.entry?wa=wsignin1.0&sa=957250796
沒有留言:
張貼留言