您在對RooTer的評論中提到:A)您已經使用 gparted
減小了初始分區的大小,但是 dd
仍然複製了整個卡,並且B)想要在圖像中包括兩個分區。
問題“ A”很容易解釋:您仍在復制整個卡,因為這就是 / dev / mmcblk0
的含義。各個分區當然是 / dev / mmcblk0p1
和 / dev / mmcblk0p2
。這是問題“ B”中的複雜問題,但是由於 / dev / mmcblk0 code開頭的分區表,您不能簡單地 dd
每個分區並將兩個文件連接在一起>索引每個分區的開始和長度。否則,該映像將無法使用。
但是,您可以從 fdisk -l 獲取每個分區的長度,並使用該長度來確定 dd的某些參數。
。例如:
> fdisk -l / dev / mmcblk0Disk / dev / mmcblk0:16.1 GB,16138633216字節4磁頭,16個扇區/磁道,492512個柱面,總共31520768個扇區單位= 1 * 512扇區= 512字節扇區大小(邏輯/物理):512字節/ 512字節I / O大小(最小/最佳):512字節/ 512字節磁盤標識符:0x00017b69設備啟動起始塊ID系統/ dev / mmcblk0p1 8192 122879 57344 c W95 FAT32(LBA )/ dev / mmcblk0p2 122880 26746879 13312000 83 Linux
“開始”和“結束”單位是扇區,請注意已給出了512字節的扇區大小。對於 / dev / mmcblk0p2
,26746879(最後一個扇區)-122880(第一個扇區)= 26623999/2(每KB 2個扇區)/ 1024(KB每MB)/ 1024(MB每GB) )= 12.69,這使我使用gparted將分區增長到12 GB,所以這看起來是正確的(確實,我應該使用1000而不是1024作為存儲的除數,這可以達到13.31 GB,但是我懷疑gparted和其他一些工具也使用1024)。
因此,您要檢查的第一件事是第二個分區實際上是您將其設置為較小的大小。接下來,只需將這些數字與 dd
一起使用即可;對我來說應該是:
dd if = / dev / mmcblk0 of = rpi.img bs = 512 count = 26746880
我有一個避免出現對 dd
的誤解。有一種簡單的方法可以檢查它是否有效:
> fdisk -l rpi.imgDisk rpi.img:102 MB,102400000字節255個磁頭,63個扇區/磁道,12個柱面,總計200000個扇區1 * 512 = 512字節的扇區扇區大小(邏輯/物理):512字節/ 512字節I / O大小(最小/最佳):512字節/ 512字節磁盤標識符:0x00017b69設備啟動起始塊ID系統rpi.img1 8192 122879 57344 c W95 FAT32(LBA)rpi.img2 122880 26746879 13312000 83 Linux
請注意,此處存在一些差異:“開始”和“結束”扇區與原始分區表匹配,但是統計數據的總大小僅為102 MB!這是因為我實際上使用了 count = 200000
作為 dd
的參數,因為我真的不想打擾12 GB的副本(注意“總計200000個扇區”) 。底部表格沒有反映出這一點的原因是因為fdisk從SD卡開頭的映像開頭逐字複製的分區數據中獲取其信息,正如我在第二段中提到的,至關重要保持。如果我(正確地)複製了其餘的內容,那麼這些數字將是正確的,並且圖像將是可行的。
嘗試一下。 :)