Zwykłe obrazy systemu plików można łatwo zamontować:
mount system.img /mnt
Sprawdzone i zmodyfikowane. Ale kiedy próbuję tego z obrazem systemu Raspberry Pi (np. Raspbian), otrzymuję:
mount: unknown filesystem type '(null)'
I bez względu na to, z czym spróbuję -t
, to nie zadziała. Jak mogę zamontować ten obraz?
Odpowiedzi:
Odpowiedź na to pytanie jest częścią odpowiedzi na inne pytania, ale tutaj zasługuje na kanoniczne traktowanie, więc nie trzeba jej powtarzać.
Nie można zamontować obrazu jako całości, ponieważ zawiera on dwie partycje i sektor rozruchowy. Można jednak zamontować poszczególne partycje na obrazie, jeśli znasz ich przesunięcie w pliku. Aby je znaleźć, sprawdź obraz jako urządzenie blokowe za pomocą
fdisk -l whatever.img
. Dane wyjściowe powinny zawierać następującą tabelę:To są dwie partycje. Pierwszy z nich nosi nazwę „FAT32”, a drugi „Linux”. Powyżej tej tabeli znajduje się kilka innych informacji o urządzeniu jako całości, w tym:
Możemy znaleźć przesunięcie w bajtach, mnożąc ten rozmiar jednostki przez
Start
blok partycji:Można ich używać z
offset
opcjąmount
polecenia. Mamy również wskazówkę dotyczącą typu każdej partycji zfdisk
. Zakładając, że mamy katalogi/mnt/img/one
i są/mnt/img/two
dostępne jako punkty montowania:Jeśli pojawi się tutaj błąd „nakładającej się pętli”, twoja wersja
mount
wymaga podania rozmiaru, jak również przesunięcia pierwszej partycji. Odmontuj to i użyj liczby bloków (57344) * 512 (= 29360128):Druga partycja nie potrzebuje limitu rozmiaru, ponieważ po obrazie nie ma nic.
Możesz teraz uzyskać dostęp do dwóch partycji. Jeśli nie zamierzasz niczego w nich zmieniać, użyj również przełącznika
-r
(tylko do odczytu). Jeśli cokolwiek zmienisz, zmiany te zostaną uwzględnione w.img
pliku.Zauważ, że pierwsza partycja jest prawdopodobnie zamontowana na
/boot
drugiej partycji, gdy system jest uruchomiony.źródło
kpartx -a whatever.img
tworzy odpowiednie (pętlowe) węzły, które później możesz zamontować do woli. Uruchom,kpartx -d whatever.img
aby usunąć (odmontowane) węzły pętli.sizelimit
opcją. Aby uzyskać więcej informacji: unix.stackexchange.com/a/342466/9689 . (Btw. Powyższa odpowiedź może zostać zaktualizowana, aby zapewnić przykładowe użycie tej opcji)$((8192*512))
.losetup
zapewnia sondowanie partycji przez-P
. Dzięki temu montowanie partycji obrazu pełnego dysku, takich jak obraz karty SD Raspbian, jest bardzo łatwe:źródło
Na początku używałem awk / grep do analizowania fdisk i wyciągania offsetów, ale odkryłem, że może to być nieco skomplikowane, płatkowe i trudne do zrozumienia później. Najłatwiejsza metoda, jaką znalazłem:
Stwarza to temp-dir dla ciebie, automatycznie przypisuje następnej pętli-device i ustawia go dla Ciebie jak
p1
ip2
działowych urządzeń, a wierzchowce bagażnik i korzeń.Możesz także umieścić część oczyszczania w pułapce wyjścia, więc jeśli coś zawiedzie, nie będziesz mieć wiszących plików / mountów:
źródło
W przypadku, gdy fdisk -l pokazuje się z sektorami zamiast bloków na Arch Linuxie ... Innym sposobem znalezienia liczby bloków w przypadku „błędu nakładania się pętli” jest odjęcie przesunięcia w bajtach pierwszej partycji od drugiej partycji i podziel przez dwa. Na przykład (62914560-4194304) / 2 = 29360128
źródło