2010-06-18 14:25:36 +0000 2010-06-18 14:25:36 +0000
41
41

grub: rozruch z ISO

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

Odpowiedzi (2)

55
55
55
2010-06-18 18:30:23 +0000

Największym problemem z uruchamianiem pliku ISO jest to, że ISO, które są zaprojektowane do uruchamiania, prawie zawsze są zaprojektowane do uruchamiania z CD. Jak wyjaśniono na blogu Marco odnośnie Grub 2 (podkreślenie moje):

GRUB może czytać obrazy ISO9660 (“iso”). Może na przykład załadować kilka pierwszych sektorów i uruchomić system. Ale większość ludzi nie zdaje sobie sprawy z tego “co potem?”. Co zrobi załadowany system operacyjny? Najprawdopodobniej będzie szukał CDROMu, którego nie znajdzie i zawiedzie.

Więc najprostszym sposobem na uruchomienie systemu z losowego pliku ISO jest załadowanie go do maszyny wirtualnej (VirtualBox, VMware, lub Virtual PC) jako wirtualny CD i uruchomienie go tam. To powinno prawie zawsze działać, ponieważ dla maszyny wirtualnej nie jest to plik ISO - to prawdziwa płyta CD na prawdziwym sprzęcie CD.

Rozruch z pliku ISO na gołym metalu jest znacznie trudniejszy. Jak to zrobić zależy od wersji Grub'a, którego używasz, a wyniki mogą się różnić w zależności od tego, jakiego ISO używasz i jak zostało ono skonfigurowane do rozruchu. To dlatego większość narzędzi do bootowania ISO z USB (Unetbootin, WinToFlash, itp.) zazwyczaj wyodrębnia zawartość ISO na dysk - ponieważ w ten sposób można uzyskać do niej bezpośredni dostęp, bez mylenia uruchamianego systemu operacyjnego.


Grub 1

… nie jestem pewien. Jeśli to możliwe, wpisy w menu będą prawdopodobnie wyglądały tak jak w Grub4DOS, chociaż myślę, że komenda “map –hook” jest ulepszeniem Grub4DOS. Na plus jest to, że Grub ma szersze wsparcie dla systemu plików niż Grub4DOS.

Notatka na temat Grub z reiserfs (niepotwierdzona) wskazuje, że “musisz zamontować swoją partycję z notail aby to zadziałało”.

Memdisk jest opcją; zobacz poniżej.


Grub4DOS

Grub4DOS oferuje eksperymentalną “emulację CD” która działa z niektórymi ISO. Niestety, Grub4DOS czyta tylko systemy plików FAT32/NTFS. Pobierz Grub4DOS. ](http://sourceforge.net/projects/grub4dos/files/)

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 można uruchomić Win7 ISO 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żna też użyć konfiguratora menu jak MultiBootISOs.exe z PenDriveLinux . Umieść ISO na pendrive i uruchom narzędzie, aby zainstalować bootloader i skonfigurować menu startowe.

Oto odcinek Hak5 na temat instalacji Grub4DOS.


Grub 2

Oto kilka przykładowych wpisów Grub2. chainloader nie działa obecnie do uruchamiania ISO, więc te wpisy muszą (1) użyć loopback do “zamontowania” ISO, i (2) dodać coś takiego jak iso-scan lub findiso do linii linux, która określa plik ISO.

Niestety, nie ma ogólnego sposobu, aby to zrobić. Każdy inny wpis startowy musi być dostosowany do zawartości docelowego ISO. Większość linuksowych LiveCD używa ISOLINUX jako bootloadera; znajdź isolinux.cfg i zbadaj ten wpis, aby zobaczyć co zazwyczaj uruchamia.

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ć LiveCD niebędący Linuksem, możesz mieć pecha. Ponownie, Memdisk może pomóc :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}
```.
1
1
1
2014-09-03 13:55:11 +0000

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