grub: boot z ISO


41

Jak mogę uruchomić do pliku ISO w GRUB? Plik ISO znajduje się na partycji reiserfs i GRUB może uzyskać do niego dostęp (już to przetestował).


która wersja gruba?
— quack quixote

1
Odpowiedzi na to samo pytanie tutaj .
— dma_k


Odpowiedzi:


55

Największy problem z uruchamianiem pliku ISO polega na tym, że pliki ISO zaprojektowane do rozruchu prawie zawsze są zaprojektowane do rozruchu z dysku CD . Jak wyjaśniono na blogu Marco dotyczącym Grub 2 (moje podkreślenie):

GRUB może odczytywać obrazy ISO9660 („iso”). Może na przykład załadować kilka pierwszych sektorów i uruchomić go. Ale większość ludzi nie zdaje sobie sprawy, że „co wtedy?”. Co zrobiłby załadowany system operacyjny? Najprawdopodobniej wyszuka CDROM, którego nie znajdzie i zawiedzie.

Tak więc najprostszym sposobem na uruchomienie z losowego pliku ISO jest załadowanie go na maszynę wirtualną (VirtualBox, VMware lub Virtual PC) jako wirtualną płytę CD i uruchomienie tam. To prawie zawsze powinno działać, ponieważ dla VM nie jest to plik ISO - to prawdziwa płyta CD na prawdziwym sprzęcie CD.

Ładowanie z pliku ISO na goły metal jest znacznie trudniejsze. To, jak to zrobisz, zależy od używanej wersji Gruba, a wyniki mogą się różnić w zależności od używanego ISO i tego, jak został skonfigurowany do rozruchu. Właśnie dlatego większość narzędzi rozruchowych ISO z USB (Unetbootin, WinToFlash itp.) Zwykle wyodrębnia zawartość ISO na dysk - ponieważ w ten sposób można uzyskać do nich bezpośredni dostęp, bez mylenia uruchamianego systemu operacyjnego.


Grub 1

... niepewny. Jeśli to możliwe, pozycje menu prawdopodobnie będą wyglądać bardzo podobnie do Grub4DOS, chociaż myślę, że polecenie „map --hook” jest rozszerzeniem Grub4DOS. Na plus, Grub ma szersze wsparcie systemu plików niż Grub4DOS.

Uwaga na temat Grub z reiserfs (niepotwierdzona) wskazuje, że „musisz zamontować partycję notail, aby działała”.

Memdisk jest opcją; patrz poniżej.


Grub4DOS

Grub4DOS oferuje eksperymentalną „emulację CD”, która działa z niektórymi ISO. Niestety, Grub4DOS odczytuje tylko systemy plików FAT32 / NTFS. Pobierz Grub4DOS.

Oto przykładowy wpis ( źródło ):

title fdfullcd.iso (0xFF)
  find --set-root /fdfullcd.iso
  map /fdfullcd.iso (0xFF)
  map --hook
  root (0xFF)
  kernel /isolinux/data/memdisk
  initrd /isolinux/data/fdboot.img

Podobno Win7 ISO można uruchomić za pomocą tego wpisu :

title Windows 7
  map (hd0,0)/win7.iso (hd32)
  map --hook
  chainloader (hd32)

Inne ISO można uruchomić za pomocą Memdisk :

title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
  kernel /memdisk iso
  initrd /hdt.iso

Możesz także użyć konfiguratora menu, takiego jak MultiBootISOs.exe z PenDriveLinux . Umieść pliki ISO na dysku flash i uruchom narzędzie, aby zainstalować program ładujący i skonfigurować menu rozruchu.

Oto odcinek Hak5 na temat instalowania Grub4DOS.


Grub 2

Oto kilka przykładowych wpisów Grub2. Chainloader nie działa obecnie w celu uruchomienia ISO, więc wpisy te muszą (1) używać pętli zwrotnej do „montowania” ISO i (2) dodawać coś takiego jak iso-scan lub findiso do linii linux , która określa plik ISO.

Niestety nie ma ogólnego sposobu na zrobienie tego. Każdy inny wpis rozruchowy musi być dostosowany do zawartości docelowego ISO. Większość płyt LiveCD z systemem Linux używa ISOLINUX jako programu ładującego; znajdź plik isolinux.cfg i sprawdź ten wpis rozruchu, aby zobaczyć, co zwykle uruchamia się.

Przykładowe wpisy ( źródło ):

menuentry "Ubuntu Live 9.10 32bit" {
 loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
 initrd (loop)/casper/initrd.lz
}

menuentry "Grml small 2009.10" {
  loopback loop /boot/iso/grml-small_2009.10.iso
  linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
  initrd (loop)/boot/grmlsmall/initrd.gz
}

Jeśli próbujesz uruchomić dysk LiveCD inny niż Linux, możesz mieć pecha. Ponownie Memdisk może pomóc :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}

@albert: Używam Grub2 na dysku flash i byłem sfrustrowany tymi samymi rzeczami, więc nie było to trudne. zastanawiam się nad innym pytaniem, ale nigdy wcześniej nie próbowałem „wypalić” ISO na partycji, więc może być… interesujące.
— quack quixote

Często mogę uruchomić go w VMware (i już to zrobiłem), ale to mi niewiele pomaga, ponieważ jest to Windows, a kiedy instaluję go za pomocą VMware na moim dysku, nie uruchamia się później (głupi Windows ...).
— Albert

Czy możesz mi zasugerować, którą opcję powinienem najpierw wypróbować, tj. Grub1, Grub2 lub Grub4DOS? Mogę po prostu zainstalować wszystko, co jest potrzebne, to naprawdę nie będzie problem.
— Albert

@albert: pytasz w związku z wcześniejszym pytaniem? uważam, że najlepszym rozwiązaniem jest użycie metody ekstrakcji; Instalator Windows jest jednym z tych ISO, które mają problemy, gdy nie są uruchamiane ze sprzętu. możesz spróbować memtest, ale niewiele o nim wiem. prawdopodobnie chcesz mieć dysk flash i korzystać z niego; patrz superuser.com/questions/66948/… lub superuser.com/questions/62193/install-win7-from-usb
— quack quoteote

1
@ quackquixote, Jeśli chodzi o pogrubione słowa „Co zrobiłby załadowany system operacyjny? Najprawdopodobniej będzie szukał CD-ROM-u, którego nie znajdzie i zawiedzie”. Dlaczego system operacyjny musi szukać CD-ROM? Jest to już idealny plik ISO, a wszystko, co jest potrzebne do załadowania systemu operacyjnego, znajduje się już w pliku ISO, więc dlaczego nie może pominąć szukania CDROM-ów?
— Pacerier

1

Możesz użyć dd z terminala, aby zapisać plik ISO na partycji. Bądź ostrożny, jeśli źle użyjesz dd, możesz wyczyścić wszystko. Powinno to wyglądać mniej więcej tak: dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition


Ale partycja musi być Podstawowa, aby mogła zostać uruchomiona przez moduł ładujący systemu Windows.
— Firelord

Działa to tylko sporadycznie, generalnie wynik nie jest bootowalny.
— David Tonhofer,

1
@Firelord: Nie używaj modułu ładującego system Windows. Użyj Grub. Tak, uruchamia także system Windows, jeśli naprawdę potrzebujesz.
— Evi1M4chine
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.