Próbowałem utworzyć nowy obraz Raspbian z innym jądrem (z obsługą CAN) i zainstalowanym Pythonem 3.3. Zamiast robić to wszystko na Raspberry Pi, pomyślałem, że byłoby to interesujące zrobić to na komputerze (postępując zgodnie z tymi instrukcjami ). Jednak po zamontowaniu obrazu i przygotowaniu go do pracy szybko zabrakło mi miejsca na dysku. Zakładam, że dzieje się tak, ponieważ rozmiar obrazu jest tylko wystarczająco duży, z oczekiwaniem, że użytkownik zmieni rozmiar systemu plików po zapisaniu go na karcie SD.
Czy można zmienić rozmiar obrazu i systemu plików przed zapisaniem go na karcie SD, aby móc wykonać więcej dostosowań bez wyczerpania miejsca?
Odpowiedzi:
Oto jak zmienić rozmiar surowego pliku obrazu. Wiem, że to głupio uproszczone, ale zadziała.
Utwórz pusty obraz o rozmiarze, który chcesz rozwinąć w oryginale (w moim przykładzie używam 5 GB);
Dołącz to do oryginalnego obrazu:
Zmień rozmiar systemu plików, który znajduje się na końcu dysku (zwykle jest to ten, który chcesz większy):
Gotowy! Twój dysk powinien być teraz o 5 GB większy!
źródło
fdisk -l file.img
(był to 122880), a następnielosetup --offset $((122880 * 512)) /dev/loop0 file.img
. Mógłbym wtedy wykorzystaćresize2fs
na/dev/loop0
i posprzątać zlosetup -d /dev/loop0
. Jeśli zaktualizujesz swoją odpowiedź, aby ją uwzględnić, oznaczę ją jako odpowiedź zaakceptowaną. Dzięki za wskazanie mi właściwego kierunku.resize2fs
na/dev/loop0
ale dostałem dostaję kernel panic podczas startu mówiąc wielkość superblock i rozmiar partycji nie pasują:The filesystem size (according to the superblock) is 483840 blocks The physical size of the device is 458240 blocks
masz natknąć się coś takiego?To jest synteza odpowiedzi powyżej i gdzie indziej, które działały dla mnie - wykonaj kopię zapasową swojego obrazu na wypadek pomyłki:
Najpierw powiększ plik obrazu (tutaj dodajemy 1 GB na końcu):
Następnie zamapuj cały obraz jako urządzenie pętlowe, abyśmy mogli zaczepić się o tablicę partycji
W celu odniesienia w przyszłości pozwala to zrzucić:
Wyjście wygląda następująco:
Teraz przerobimy ostatnią partycję, usuwając ją, a następnie odtwarzając w tej samej lokalizacji początkowej, tego samego typu, ale innej lokalizacji końcowej. Zanotuj więc kolumnę „Start” dla loop0p2 (partycja 2 - partycja Linux) - użyjemy jej później - tutaj jest jej 122880.
Wpisz następujące informacje - są bezpieczne, aby wejść - nic trwałego się nie zdarzy, dopóki nie przeczytasz poniższego wyjaśnienia:
p
d
2
n
p
2
122880
p
Krok 1 - wydrukuj bieżącą tabelę. Kroki 2-3 - usuń partycję 2, Kroki 4-8 - odtwórz partycję 2 z nowym punktem końcowym (domyślnie jest to koniec obrazu), Krok 9 - wydrukuj nową tabelę.
Zakładając, że nowo wydrukowana tabela jest identyczna z tabelą oryginalną, z wyjątkiem wartości końcowej i wartości bloków (tj. Rozmiar się zmienił), którą jesteś gotowy zatwierdzić.
Wchodzić
w
aby zatwierdzić zmianę, a następnie enter,q
aby wyjść.Możesz usunąć to urządzenie pętli zwrotnej, zrobimy kolejne dla drugiej partycji. Zapamiętaj początkowe przesunięcie zanotowane i użyte powyżej - użyjemy go ponownie:
Spowoduje to utworzenie nowego mapowania
/dev/loop0
wskazywanie tylko na partycji 2 - dla odniesienia 512 to rozmiar sektora widoczny na pierwszymfdisk
wyjściu.Teraz zmień rozmiar partycji, aby wypełnić dostępne miejsce:
Gotowe - teraz posprzątaj:
źródło
Dla tych, którzy mają Oracle VM VirtualBox, jest to dość łatwe.
Na komputerze z systemem Windows wygląda to następująco:
input.img
jest tutaj obraz, którego rozmiar należy zmniejszyć, ioutput.img
jest to obraz końcowy - w tym przykładzie zdefiniowano go jako 7000 MB dużego.Mam nadzieję, że to trochę pomoże.
źródło
Kernel panic - not syncing: VFS: Unable to mount rootfs on unknown-block(179,2)
Oto jak zmienić rozmiar surowego pliku obrazu. Wiem, że to głupio uproszczone, ale zadziała.
Utwórz pusty obraz o rozmiarze, który chcesz rozwinąć w oryginale (w moim przykładzie używam 5 GB);
Dołącz to do oryginalnego obrazu:
Następnie zmień rozmiar partycji i systemu plików. Najpierw uzyskaj przesunięcie partycji;
Wyniki w tabeli takiej jak ta:
Zwróć uwagę na przesunięcie początkowe drugiej partycji
Na koniec odmontuj / dev / loop
Gotowy! Twój dysk powinien być teraz o 5 GB większy!
źródło