У коментарі до RooTer ви згадуєте, що A) ви зменшили початковий розмір розділу за допомогою gparted
, але dd
все-таки копіюєте всю карту і B), що хочете включити обидва розділи до зображення.
Випуск "А" пояснити нескладно: ви все ще копіюєте всю карту, тому що саме це /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 секторів на кБ) / 1024 (кБ на МБ) / 1024 (МБ на ГБ) = 12,69, що я зростав розділ за допомогою gparted до 12 ГБ, тому це виглядає правильно (справді я повинен використовувати 1000, а не 1024 як дільник зі сховищем, який працює на 13,31 ГБ, але я підозрюю, що 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 МБ! Це тому, що я насправді використовувався count=200000
як параметр, dd
тому що я не дуже хотів турбуватися копією в 12 ГБ (зауважте також "всього 200000 секторів"). Причина, що таблиця внизу не відображає це, полягає в тому, що fdisk отримує свою інформацію з даних про розділи, скопійованих дослівно на початку зображення з початку карти SD, що, як я вже згадував у другому абзаці, є життєво важливим підтримувати. Якби я (правильно) скопіював решту, цифри були б просторовими, а зображення було б життєздатним.
Спробуйте. :)