2011/09/07

快速產生特定大小的檔案 using dd fast create specified size file

dd 可以做很多事,這一點我想不必多說,它不止可以「複製」硬碟/隨身碟,還可以做轉換,網路上有人把它稱為瑞士刀。如果只會 dd if=/dev/zero of=my-dd-file bs=1M count=10 這樣的語法的話,那就遜掉了。以現代做嵌入式應用來說,dd 是個不可不學的指令,若你想要 remaster 自己的系統,似乎也離不開 dd.

這邊要提醒一個用法,可以「一瞬間」就產生特定大小。像我要產生一個 16G 大小的 image file,  以我手邊的隨身碟來看,原始大小是 16173498368, 我用的命令是 dd if=/dev/zero of=16G.dd bs=262144 count=1 seek=61696


其中 bs 是 block size, 這個大家都知道,因為一般的隨身碟或硬碟的 block size 都是 512, dd 的預設也是這麼大。上述 bs 也可以設計成 512, 這個是一次讀寫的量,因為記憶體都夠大,寫大一點照理會加速讀寫,所以我就設計成 512*512=262144,而 seek=61696 是計算來的,它等於 16173498368/512/512

這個命令的執行速度是
$ dd if=/dev/zero of=16G-2.dd bs=262144 count=1 seek=61696
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.00109749 s, 239 MB/s

0 意見: