Tôi có thể sử dụng dd để sao chép thẻ SD lớn hơn sang thẻ SD nhỏ hơn nếu các phân vùng thực sự phù hợp không?


9

Tôi có thẻ SD 16 GB có một vài phân vùng trên đó (thực ra đó là thẻ dành cho Raspberry Pi). Tôi có một số thẻ 4GB khác mà tôi muốn sao chép thẻ chính. 3 phân vùng trên thẻ chính là:

  • Phân vùng khởi động Rasp, FAT, 60MB
  • Phân vùng Linux, ext2, 1GB
  • Phân vùng "lưu trữ" bổ sung, FAT, 1GB

Nếu tôi sử dụng ddđể tạo một hình ảnh của thẻ thông qua:

dd if=/dev/sdb of=~/sd-card.bin

thì kết quả .bin có kích thước 16GB. Có cách nào để sử dụng ddđể sao chép chỉ những gì thực sự đang được sử dụng, tức là <4GB để tôi có thể sau đó ddvào thẻ 4GB mới không? Hoặc có một giải pháp tốt hơn mà tôi nên sử dụng?


Cuối cùng tôi đã tạo ra nội dung chính xác trên thẻ 4GB mới và nhân bản nó với ddmột số lượng thẻ khác. Tuy nhiên, muốn biết liệu có thể giải quyết vấn đề ban đầu không.

Câu trả lời:


9

Tôi giả sử bạn đang sử dụng PC linux hoặc máy tính mac để thực hiện sao chép chứ không phải bản raspberry pi. Bạn có thể sẽ cần phải thêm một kích thước khối.

Tôi đã thấy một và bốn megs được sử dụng cho các đĩa Raspberry pi bằng cách chỉ định bs = 1M hoặc bs = 4M. Tôi nghĩ rằng kích thước khối là quan trọng hơn khi ghi đĩa vì chuyển lớn nhanh hơn so với nhỏ hơn. Điều này không đặt kích thước khối cho đĩa, nó chỉ ảnh hưởng đến kích thước chuyển dd sử dụng. Một lý do để thiết lập kích thước khối lớn là cần phải xóa đèn flash trước khi viết nó. Điều này được thực hiện tự động nhưng nhanh hơn đối với các giao dịch chuyển lớn hơn kích thước xóa tối thiểu.

Bạn có thể giới hạn tổng số lượng dữ liệu được sao chép bởi dd bằng cách sử dụng "đếm". "Đếm" tính theo đơn vị khối. Nếu phần cuối của phân vùng cuối cùng trên đĩa nguồn nằm trước kích thước của đích bạn có thể làm những gì bạn muốn.

Một cái gì đó giống như dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000sẽ tạo ra một hình ảnh có kích thước 4000 MB.

Xem http://en.wikipedia.org/wiki/Dd_(Unix)http://elinux.org/RPi_ EAS_SD_Card_Setup để biết thêm thông tin. Không chắc chắn làm thế nào để tìm phần cuối của phân vùng cuối cùng hoặc tổng kích thước thẻ. Tuy nhiên nếu bạn đã định dạng các đĩa, bạn có thể sẽ biết cách thực hiện việc này.


Cảm ơn bạn về thông tin. Tôi đã không nhận thức được các tùy chọn đếm. Tôi sẽ thử.

@charlie sẽ thật hấp dẫn nếu bạn có thể dùng thử và không có tùy chọn đếm và báo cáo lại. mặc dù vậy, hãy chắc chắn kiểm tra kích thước của đĩa được báo cáo và nếu bạn có thể thêm tệp vào đó và kích thước thay đổi. Khi cos thất bại liên quan đến các đĩa có kích thước khác nhau, bạn sẽ gặp phải những vấn đề đó. Dưới đây là một ví dụ khi tôi nhắn tin với dd với hai ổ có kích thước khác nhau. superuser.com/questions/538583/diff Khó-resizing-a-partition Cuối cùng tôi đã không sử dụng dd để làm bản sao.
barlop

3

Mở rộng theo câu trả lời của William , người ta có thể tính toán kết thúc phân vùng cuối cùng bằng fdiskmáy tính và máy tính:

$ fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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
Disklabel type: dos
Disk identifier: 0x00057540

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        2048  186367  184320   90M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      186368 3667967 3481600  1.7G  5 Extended
/dev/mmcblk0p5      188416 3667967 3479552  1.7G 83 Linux

Tổng dung lượng được sử dụng theo byte = phần cuối của phân vùng X kích thước phân vùng cuối cùng (ở đây là 3667967 x 512).

Tổng dung lượng đã sử dụng tính bằng GB = tổng dung lượng đã sử dụng tính bằng byte / 1024 3 (ở đây là 1.749023 GB).

Thông thường, việc tạo ra một hình ảnh được phân loại theo bit dữ liệu hữu ích cuối cùng là không quan trọng, vì vậy trong ví dụ trên tôi sẽ tạo ra một hình ảnh 2 GB bằng phương pháp được William mô tả trong câu trả lời trước đó :

dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048

Bao gồm ở cuối hình ảnh sẽ là một phần nhỏ của guff vô dụng sau dữ liệu hữu ích cuối cùng của bạn nhưng về nguyên tắc không khác gì so với guff vô dụng sẽ bị ghi đè khi bạn viết lại hình ảnh ra phương tiện truyền thông của bạn.

Phương pháp này đã được làm việc cho tôi trên một tá bản sao. Nếu có bất kỳ sai sót chết người nào trong phương pháp này, chúng vẫn chưa nổi lên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.