Bạn đề cập trong một nhận xét cho RooTer rằng A) bạn đã giảm kích thước phân vùng ban đầu gparted
, nhưng dd
vẫn sao chép toàn bộ thẻ và B) mà bạn muốn bao gồm cả hai phân vùng trong hình ảnh.
Vấn đề "A" rất dễ giải thích: bạn vẫn đang sao chép toàn bộ thẻ vì đó là những gì /dev/mmcblk0
đề cập đến. Các phân vùng riêng là tất nhiên /dev/mmcblk0p1
và /dev/mmcblk0p2
. Đây là sự phức tạp trong vấn đề "B", nhưng bạn không thể đơn giản dd
từng phân vùng và ghép hai tệp lại với nhau, vì bảng phân vùng ở đầu /dev/mmcblk0
chỉ mục bắt đầu và độ dài của mỗi phân vùng. Không có điều đó, hình ảnh sẽ không thể sử dụng được.
Tuy nhiên, bạn có thể lấy chiều dài của mỗi phân vùng fdisk -l
và sử dụng nó để xác định một số tham số cho dd
. Ví dụ:
> 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
Các đơn vị "Bắt đầu" và "Kết thúc" là các cung và thông báo kích thước cung được đưa ra là 512 byte. Đối với /dev/mmcblk0p2
, 26746879 (khu vực cuối cùng) - 122880 (khu vực đầu tiên) = 26623999/2 (cho 2 lĩnh vực trên mỗi kB) / 1024 (kB mỗi MB) / 1024 (MB mỗi GB) = 12,69, tôi đã tăng phân vùng bằng cách sử dụng gparted đến 12 GB, do đó, điều này có vẻ chính xác (thực sự tôi nên sử dụng 1000 chứ không phải 1024 là số chia với dung lượng lưu trữ, hoạt động lên tới 13,31 GB, nhưng tôi nghi ngờ gparted và một số công cụ khác cũng sử dụng 1024).
Vì vậy, điều đầu tiên bạn muốn kiểm tra là phân vùng thứ hai của bạn thực sự có kích thước nhỏ hơn mà bạn đặt nó. Tiếp theo, chỉ cần sử dụng những số đó với dd
; đối với tôi nó sẽ là:
dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880
Tôi đã có thêm một lĩnh vực ở đó để tránh bất kỳ loại bỏ bởi một sự hiểu lầm về cách làm dd
việc. Có một cách đơn giản để kiểm tra xem cái này có hiệu quả không:
> 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
Lưu ý rằng có một chút khác biệt ở đây: các phần "Bắt đầu" và "Kết thúc" khớp với bảng phân vùng ban đầu, nhưng tổng kích thước trong các số liệu thống kê lên trên chỉ là 102 MB! Điều này là do tôi thực sự đã sử dụng count=200000
làm thông số dd
vì tôi không thực sự muốn làm phiền với bản sao 12 GB (cũng lưu ý "tổng số 200000 lĩnh vực"). Lý do bảng ở phía dưới không phản ánh điều này là do fdisk đang lấy thông tin từ dữ liệu phân vùng được sao chép nguyên văn ở đầu hình ảnh từ đầu thẻ SD, như tôi đã đề cập trong đoạn thứ hai, là rất quan trọng để duy trì. Nếu tôi đã sao chép (đúng) phần còn lại, các con số sẽ là copacetic và hình ảnh sẽ khả thi.
Hãy thử xem. :)