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ł).

Albert
źródło
która wersja gruba?
quack quixote
1
Odpowiedzi na to samo pytanie tutaj .
dma_k
1
Ubuntu: askubuntu.com/questions/340156/…
Ciro Santilli 24 改造 中心 法轮功 六四 事件
Zobacz także instalacja - Zainstaluj Windows 7 z obrazu ISO - Super User dla Windows ISO.
user202729

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
}
quack quixote
źródło
@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

Naos parth
źródło
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