Jak / dlaczego cat zapisuje bootowalną ISO na urządzeniu


15

Niedawno odkryłem, że mogę utworzyć rozruchowy klucz USB z pliku ISO, używając po prostu cat(lub dd).

Nie mogę znaleźć żadnych informacji o tym, jak to działa. Dlaczego miałby:

cat my.iso > /dev/sdb && sync

wziąć ten plik i zapisać wszystkie zawarte w nim pliki w formacie rozruchowym na urządzeniu?


Nigdy nie myślałem, aby użyć catzamiast ddtworzenia LiveUSB
Rob

3
Było to w instrukcji do „Tails”, obrazu Tora na żywo. Zrobiłem trochę googlowania (zanim zapytałem tutaj) i wydaje się, że dd było tym, co ludzie używali do tego rodzaju rzeczy, ale kot wydaje się teraz preferowanym narzędziem. Sądzę, że jest to łatwiejsze, ponieważ nie musisz zawracać sobie głowy określaniem nazwanych parametrów dla szczegółów wejścia / wyjścia.

Odpowiedzi:


14

Plik ISO to kompletny, sformatowany obraz systemu plików. Wszystko catlub ddrobi to zrobić kopię obrazu systemu plików bit na bit na nośnik docelowy.

Za kulisami nie ma magii. Przygotowanie systemu plików ISO zostało wcześniej wykonane (często przez wyspecjalizowane narzędzie). Wystarczy catnapisać tę kolekcję bajtów. W ogóle nie interpretuje .isoani nie rozumie, że w ogóle próbuje utworzyć rozruchowy nośnik wymienny.
Wymaga odpowiedniego wsparcia ze strony jądra i sterownika urządzenia, aby writes działał na tym nośniku. Trwa „magia”, ponieważ zapisywalne nośniki optyczne nie działają dokładnie tak samo, jak konwencjonalne dyski twarde. Ale ta magia nie wymaga interpretacji zawartości pliku ISO.

Możesz zamontować .isoplik bezpośrednio, nie nagrywając go za pomocą pętli (jeśli taka funkcja jest dostępna w systemie operacyjnym). Podobnie możesz utworzyć plik, który zawiera na przykład system ext4plików, i możesz catto zrobić na partycję.


1
a następnie po prostu upewnij się, że dane naprawdę zapisały ci partycję (zamiast po prostu buforowane)
yuyichao

Synchronizacja @yuyichao powinna to obejmować, prawda? Edycja: Właśnie zdałem sobie sprawę, że odpowiedziałem na 6-letni komentarz
Manchineel

5

Działa to, ponieważ obraz ISO został przetworzony isohybrid, co powoduje zainstalowanie normalnego programu ładującego syslinux w obrazie ISO. Jest to możliwe, ponieważ iso9660 zwykle nie używa pierwszych kilku sektorów obrazu, więc można tam umieścić mniej lub bardziej normalny program ładujący dysk twardy. Nagrywany na dysk optyczny jest ignorowany, a system BIOS uruchamia dysk przy użyciu konwencjonalnej metody rozruchu cdrom el torito. Po umieszczeniu obrazu na dysku flash ładowany jest sektor rozruchowy syslinux.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.