W komentarzu do RooTer wspominasz, że A) zmniejszyłeś początkowy rozmiar partycji gparted
, ale dd
nadal kopiujesz całą kartę, i B), że chcesz dołączyć obie partycje do obrazu.
Zagadnienie „A” jest łatwe do wyjaśnienia: nadal kopiujesz całą kartę, ponieważ właśnie o to chodzi /dev/mmcblk0
. Poszczególne partycje są oczywiście /dev/mmcblk0p1
i /dev/mmcblk0p2
. Jest to komplikacja w numerze „B”, ale nie można po prostu dd
każdej partycji i połączyć dwóch plików razem, ponieważ tabela partycji na początku /dev/mmcblk0
indeksuje początek i długość każdej partycji. Bez tego obraz będzie bezużyteczny.
Możesz jednak pobrać długość każdej partycji fdisk -l
i użyć jej do określenia niektórych parametrów dd
. Na przykład:
> 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
Jednostki „Start” i „Koniec” są sektorami i zauważają, że podany jest rozmiar sektora, 512 bajtów. Dla /dev/mmcblk0p2
, 26746879 (ostatni sektor) - 122880 (pierwszy sektor) = 26623999/2 (dla 2 sektorów na kB) / 1024 (kB na MB) / 1024 (MB na GB) = 12,69, które powiększyłem partycję używając gparted do 12 GB, więc wygląda to poprawnie (naprawdę powinienem używać 1000, a nie 1024 jako dzielnika z pamięcią, który działa do 13,31 GB, ale podejrzewam, że gpart i niektóre inne narzędzia również używają 1024).
Pierwszą rzeczą, którą chcesz sprawdzić, jest to, że twoja druga partycja ma naprawdę mniejszy rozmiar, na jaki ją ustawiłeś. Następnie użyj tych liczb z dd
; dla mnie byłoby to:
dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880
Mam tam dodatkowy sektor, aby uniknąć jakiegokolwiek nieporozumienia przez jedno nieporozumienie dotyczące sposobu dd
działania. Istnieje prosty sposób sprawdzenia, czy to zadziałało:
> 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
Zauważ, że jest tu trochę rozbieżności: sektory „Start” i „End” pasują do oryginalnej tabeli partycji, ale całkowity rozmiar w górnej części statystyk to tylko 102 MB! To dlatego, że faktycznie użyłem count=200000
jako parametru, dd
ponieważ tak naprawdę nie chciałem zawracać sobie głowy kopią 12 GB (zauważ także „ogółem 200 000 sektorów”). Tabela u dołu tego nie odzwierciedla, ponieważ fdisk pobiera swoje informacje z danych partycji skopiowanych dosłownie na początku obrazu od początku karty SD, co, jak wspomniałem w drugim akapicie, jest niezbędne utrzymać. Gdybym (właściwie) skopiował resztę, liczby byłyby kopacetyczne, a obraz byłby wykonalny.
Spróbuj. :)