grub: boot dari ISO

41

Bagaimana saya bisa boot ke file ISO di GRUB? File ISO ada di partisi reiserfs dan GRUB dapat mengaksesnya (sudah mengujinya).

Albert
sumber
versi grub yang mana?
quack quixote
1
Pertanyaan yang sama dijawab di sini .
dma_k
1
Ubuntu: askubuntu.com/questions/340156/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Lihat juga instalasi - Instal Windows 7 dari ISO image - Super User untuk Windows ISO.
user202729

Jawaban:

55

Masalah terbesar dengan mem-boot file ISO adalah bahwa ISO yang dirancang untuk di-boot hampir selalu dirancang untuk di-boot dari CD . Seperti yang dijelaskan di blog Marco mengenai Grub 2 (penekanan pada saya):

GRUB dapat membaca gambar ISO9660 (”iso”). Misalnya dapat memuat beberapa sektor pertama dan mem-bootnya. Tetapi kebanyakan orang tidak menyadari adalah "lalu bagaimana?". Apa yang akan dilakukan sistem operasi yang dimuat? Kemungkinan besar akan mencari CDROM, yang tidak akan ditemukan, dan gagal.

Jadi cara termudah untuk mem-boot dari beberapa file ISO acak adalah dengan memuatnya ke mesin virtual (VirtualBox, VMware, atau Virtual PC) sebagai CD virtual dan mem-boot-nya di sana. Itu hampir selalu berhasil, karena untuk VM, ini bukan file ISO - itu adalah CD nyata pada perangkat keras CD nyata.

Booting dari file ISO pada bare metal jauh lebih sulit. Cara Anda melakukan ini tergantung pada versi Grub yang Anda gunakan, dan hasilnya dapat berbeda tergantung pada ISO apa yang Anda gunakan dan bagaimana itu dikonfigurasi untuk boot. Inilah sebabnya mengapa sebagian besar alat boot-ISO-dari-USB (Unetbootin, WinToFlash, dll) biasanya mengekstrak konten ISO ke drive - karena dengan cara itu mereka dapat diakses secara langsung, tanpa membingungkan OS yang sedang di-boot.


Grub 1

... tidak yakin. Jika memungkinkan, entri menu mungkin akan sangat mirip dengan Grub4DOS, meskipun saya pikir perintah "map --hook" adalah peningkatan Grub4DOS. Di sisi positifnya, Grub memiliki dukungan sistem file yang lebih luas daripada Grub4DOS.

Catatan tentang Grub dengan reiserfs (belum dikonfirmasi) menunjukkan Anda "harus memasang partisi Anda notailagar bisa berfungsi".

Memdisk adalah opsi; Lihat di bawah.


Grub4DOS

Grub4DOS menawarkan beberapa "emulasi CD" eksperimental yang bekerja dengan beberapa ISO. Sayangnya, Grub4DOS hanya membaca sistem file FAT32 / NTFS. Unduh Grub4DOS.

Berikut entri sampel ( sumber ):

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

Seharusnya Win7 ISO dapat di-boot dengan entri ini :

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

ISO lain dapat di-boot dengan Memdisk :

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

Anda juga dapat menggunakan konfigurator menu seperti MultiBootISOs.exe dari PenDriveLinux . Tempatkan ISO pada flash drive, dan jalankan utilitas untuk menginstal bootloader dan konfigurasikan menu boot.

Berikut ini adalah episode Hak5 tentang pemasangan Grub4DOS.


Grub 2

Berikut beberapa contoh entri Grub2. chainloader tidak berfungsi untuk mem-boot ISO saat ini, jadi entri ini harus (1) menggunakan loopback untuk "me-mount" ISO, dan (2) menambahkan sesuatu seperti iso-scan atau findiso ke baris linux yang menentukan file ISO.

Sayangnya, tidak ada cara umum untuk melakukan ini. Setiap entri boot yang berbeda harus disesuaikan dengan konten ISO target. Sebagian besar Linux LiveCD menggunakan ISOLINUX sebagai bootloader; temukan isolinux.cfg dan periksa entri boot untuk melihat apa yang biasanya boot.

Entri contoh ( sumber ):

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
}

Jika Anda mencoba untuk mem-boot LiveCD non-Linux, Anda mungkin kurang beruntung. Sekali lagi, Memdisk dapat membantu :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}
quack quixote
sumber
@albert: Saya menggunakan Grub2 pada flash drive dan merasa frustrasi dengan hal yang sama, jadi tidak sulit untuk menyatukannya. Saya melihat pertanyaan Anda yang lain, tetapi saya belum pernah mencoba "membakar" ISO ke partisi sebelumnya, jadi mungkin ... menarik.
quack quixote
Ofc saya bisa boot di dalam VMware (dan saya juga sudah melakukannya) tetapi itu tidak banyak membantu saya karena itu adalah Windows dan ketika saya menginstalnya melalui VMware pada disk saya, itu tidak akan boot nanti (Windows bodoh ...).
Albert
Bisakah Anda memberi saya saran opsi apa yang harus saya coba pertama, yaitu Grub1, Grub2 atau Grub4DOS? Saya hanya dapat menginstal apa pun yang diperlukan, yang tidak akan menjadi masalah.
Albert
@albert: apakah Anda bertanya mengacu pada pertanyaan Anda sebelumnya? saya yakin taruhan terbaik Anda adalah menggunakan metode ekstraksi; Penginstal Windows adalah salah satu ISO yang memiliki masalah ketika tidak di-boot dari perangkat keras. Anda dapat mencoba memtest, tetapi saya tidak tahu banyak tentang itu. Anda mungkin ingin mendapatkan flash drive dan menggunakannya; lihat superuser.com/questions/66948/… atau superuser.com/questions/62193/install-win7-from-usb
quack quixote
1
@quackquixote, Mengenai kata-kata Anda yang tebal "Apa yang akan dilakukan oleh sistem operasi yang dimuat? Kemungkinan besar akan mencari CDROM, yang tidak akan ditemukan, dan gagal" , Mengapa OS perlu mencari CDROM? Ini sudah merupakan file iso yang sempurna dan semua yang diperlukan untuk memuat OS sudah ada di dalam file iso, jadi mengapa tidak bisa lewati mencari CDROM?
Pacerier
1

Anda dapat menggunakan dd dari terminal untuk menulis file iso ke partisi. Hanya berhati-hatilah, jika Anda menggunakan dd salah Anda dapat menghapus semuanya. Seharusnya terlihat seperti ini: dd if = Desktop / LinuxCDFile.iso dari = / Path / To / Partition

Naos parth
sumber
Tetapi partisi tersebut harus Primer agar dapat di-boot oleh Windows Loader.
Firelord
Ini hanya berfungsi sesekali, umumnya hasilnya tidak dapat di-boot.
David Tonhofer
1
@Firelord: Ya, jangan gunakan Windows Loader. Gunakan Grub. Ya, itu bisa boot Windows juga, jika Anda benar-benar perlu.
Evi1M4chine