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?
cat
zamiastdd
tworzenia LiveUSBOdpowiedzi:
Plik ISO to kompletny, sformatowany obraz systemu plików. Wszystko
cat
lubdd
robi 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
cat
napisać tę kolekcję bajtów. W ogóle nie interpretuje.iso
ani 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
write
s 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ć
.iso
plik 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 systemext4
plików, i możeszcat
to zrobić na partycję.źródło
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.źródło