grub: завантаження від ISO


41

Як я можу завантажитися у файл ISO у GRUB? Файл ISO знаходиться на розділі reiserfs і GRUB може отримати доступ до нього (це вже перевірено).


яка версія груба?
крякав кіхот

1
Те ж питання відповів тут .
dma_k


Відповіді:


55

Найбільша проблема завантаження файлу ISO полягає в тому, що ISO-системи, призначені для завантаження, майже завжди розроблені для завантаження з компакт-диска . Як пояснено в блозі Марко щодо Grub 2 (моє наголос):

GRUB може читати зображення ISO9660 ("iso"). Наприклад, він може завантажувати перші кілька секторів і завантажувати його. Але більшість людей не розуміє, що "що тоді?". Що б зробила завантажена операційна система? Він, швидше за все, шукатиме компакт-диск, який він не знайде, і вийде з ладу.

Тож мертвий найпростіший спосіб завантаження з якогось випадкового файлу ISO - це завантажити його у віртуальну машину (VirtualBox, VMware або Virtual PC) як віртуальний компакт-диск і завантажити його там. Це майже завжди повинно працювати, тому що для VM це не файл ISO - це справжній компакт-диск із реального обладнання CD.

Завантажити файл із ISO на голому металі набагато складніше. Як це зробити, залежить від того, яку версію Grub ви використовуєте, і результати можуть відрізнятися залежно від того, який ISO ви використовуєте та як він був налаштований для завантаження. Ось чому більшість інструментів завантаження ISO-від-USB (Unetbootin, WinToFlash тощо) зазвичай витягують вміст ISO на накопичувач - адже таким чином до них можна отримати доступ безпосередньо, не плутаючи завантаження ОС.


Груб 1

... не впевнений. Якщо можливо, записи в меню, ймовірно, будуть схожі на Grub4DOS, хоча я думаю, що команда "map --hook" є вдосконаленням Grub4DOS. З іншого боку, Grub має більш широку підтримку файлової системи, ніж Grub4DOS.

Примітка про Grub з reiserfs (непідтверджена) вказує на те, що "ви повинні встановити свій розділ, notailщоб він працював".

Memdisk - це варіант; Дивіться нижче.


Grub4DOS

Grub4DOS пропонує деяку експериментальну "емуляцію CD", яка працює з деякими ISO. На жаль, Grub4DOS зчитує лише файлові системи FAT32 / NTFS. Завантажте Grub4DOS.

Ось зразок запису ( джерело ):

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

Нібито ISO 7 може бути завантажений із цим записом :

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

Інші ISO можуть бути завантажені за допомогою Memdisk :

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

Ви також можете використовувати конфігуратор меню на зразок MultiBootISOs.exe від PenDriveLinux . Помістіть ISO на флешку та запустіть утиліту для встановлення завантажувача та налаштування меню завантаження.

Ось епізод Hak5 про встановлення Grub4DOS.


Груб 2

Ось пара прикладів Grub2. наразі ланцюговий завантажувач не працює для завантаження ISO, тому ці записи повинні (1) використовувати зворотний зв'язок, щоб "встановити" ISO, і (2) додати щось до типу iso-scan або findiso до рядка linux, який визначає файл ISO.

На жаль, немає загального способу зробити це. Кожен різний запис завантаження повинен бути налаштований під цільовий вміст ISO. Більшість Linux LiveCD використовують ISOLINUX як завантажувач; знайдіть isolinux.cfg і вивчіть цей запис для завантаження, щоб побачити, що він завантажується.

Приклад записів ( джерело ):

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
}

Якщо ви намагаєтеся завантажити не-Linux LiveCD, можливо, вам не пощастить. Знову ж таки, Memdisk може допомогти :

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

@albert: Я використовую Grub2 на флешці і розчарувався одними і тими ж речами, тож складно було скласти разом. Я переглядаю ваше інше питання, але я ніколи раніше не пробував "записувати" ISO на розділ, тому це може бути ... цікаво.
хитаючий кіхот

Звичайно, я можу завантажувати його всередині VMware (і я вже це робив), але це мені не дуже допомагає, оскільки це Windows, і коли я встановлюю його через VMware на своєму диску, він не буде завантажуватися пізніше (дурна Windows ...).
Альберт

Чи можете ви дати мені пропозицію, який варіант я повинен спробувати спочатку, тобто Grub1, Grub2 або Grub4DOS? Я можу просто встановити все, що потрібно, це звичайно не буде проблемою.
Альберт

@albert: ти питаєш, посилаючись на своє попереднє запитання? я вважаю, що найкраще скористатися методом видобутку; інсталятор Windows - один із тих ISO, які мають проблеми, коли вони не завантажуються з обладнання. Ви можете спробувати memtest, але я не знаю багато про це. ви, мабуть, хочете отримати флешку та використовувати це; дивіться superuser.com/questions/66948/… або superuser.com/questions/62193/install-win7-from-usb
кихат-квак

1
@quackquixote, Що стосується ваших жирних слів "Що б зробила завантажена операційна система? Швидше за все, вона знайде компакт-диск, який він не знайде, і вийде з ладу" , чому ОС потрібно шукати компакт-диск? Це вже ідеальний iso-файл, і все, що потрібно для завантаження ОС, вже знаходиться в ізо-файлі, так чому ж він не може пропустити пошук CDROM?
Pacerier

1

Ви можете використовувати dd з терміналу, щоб записати iso-файл до розділу. Будьте обережні, якщо ви неправильно використовуєте dd, ви можете все витерти. Це має виглядати приблизно так: dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition


Але розділ повинен бути первинним, щоб його можна було завантажувати Windows Loader.
Firelord

Це працює лише випадково, як правило, результат не є завантажувальним.
Девід Тонхофер

1
@Firelord: Ну, не використовуйте завантажувач Windows. Використовуйте Grub. Так, він також завантажує Windows, якщо вам це справді потрібно.
Evi1M4chine
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.