คุณพูดถึงความคิดเห็นต่อ RooTer ว่า A) คุณได้ลดขนาดพาร์ติชั่นเริ่มต้นด้วยgparted
แต่dd
ยังคงคัดลอกการ์ดทั้งหมดและ B) ที่คุณต้องการรวมพาร์ติชันทั้งสองไว้ในภาพ
ปัญหา "A" นั้นง่ายต่อการอธิบาย: คุณยังคงคัดลอกการ์ดทั้งหมดเพราะนั่นคือสิ่งที่/dev/mmcblk0
อ้างถึง แต่ละพาร์ทิชันของหลักสูตรและ/dev/mmcblk0p1
/dev/mmcblk0p2
นี่คือความยุ่งยากในการออก "B" แต่คุณไม่สามารถdd
แยกแต่ละพาร์ติชั่นและต่อไฟล์สองไฟล์เข้าด้วยกันได้เนื่องจากตารางพาร์ติชั่นที่จุดเริ่มต้น/dev/mmcblk0
ซึ่งดัชนีเริ่มต้นและความยาวของแต่ละพาร์ติชัน หากไม่มีภาพจะไม่สามารถใช้งานได้
แต่คุณจะได้รับความยาวของแต่ละพาร์ทิชันจากและใช้ในการกำหนดค่าพารามิเตอร์บางอย่างสำหรับfdisk -l
dd
ตัวอย่างเช่น:
> fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 16.1 GB, 16138633216 bytes
4 heads, 16 sectors/track, 492512 cylinders, total 31520768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 26746879 13312000 83 Linux
หน่วย "เริ่มต้น" และ "สิ้นสุด" เป็นเซ็กเตอร์และสังเกตเห็นว่ามีการกำหนดขนาดเซกเตอร์ 512 ไบต์ สำหรับ/dev/mmcblk0p2
26746879 (ภาคสุดท้าย) - 122880 (ภาคแรก) = 26623999/2 (สำหรับ 2 ส่วนต่อ kB) / 1024 (kB ต่อ MB) / 1024 (MB ต่อ GB) = 12.69 ซึ่งฉันขยายพาร์ติชันโดยใช้ gparted ถึง 12 GB ดังนั้นสิ่งนี้ดูถูกต้อง (จริง ๆ แล้วฉันควรใช้ 1,000 และไม่ 1024 เป็นตัวหารที่มีหน่วยความจำซึ่งใช้งานได้ถึง 13.31 GB แต่ฉันสงสัยว่า gparted และเครื่องมืออื่น ๆ ใช้ 1024)
ดังนั้นสิ่งแรกที่คุณต้องการตรวจสอบคือพาร์ติชั่นที่สองของคุณมีขนาดเล็กกว่าที่คุณตั้งไว้ ถัดไปเพียงใช้ตัวเลขเหล่านั้นด้วยdd
; สำหรับฉันมันจะเป็น:
dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880
ฉันมีส่วนเสริมที่นั่นเพื่อหลีกเลี่ยงการปิดโดยความเข้าใจผิด ๆ ของวิธีการdd
ทำงาน มีวิธีง่าย ๆ ในการตรวจสอบว่าการทำงาน:
> fdisk -l rpi.img
Disk rpi.img: 102 MB, 102400000 bytes
255 heads, 63 sectors/track, 12 cylinders, total 200000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
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 ซึ่งตามที่ฉันกล่าวถึงในวรรคสองมีความสำคัญ บำรุงรักษา. ถ้าฉันคัดลอกส่วนที่เหลือ (อย่างถูกต้อง) ตัวเลขจะเป็น copacetic และรูปภาพจะทำงานได้
ลองดูสิ :)