2010年6月22日 星期二

利用image檔來規劃 file system

make a 4gb ext3 file system in a file called myfs.img and mount it in /mnt:
dd if=/dev/zero of=myfs.img bs=1M count=4K
mkfs.ext3 myfs.img
mount -o loop myfs.img /mnt
以上是簡單示範如何創造出一個image檔,然後格式化它,再掛載它。
再利用來規劃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

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

沒有留言:

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!