Загрузка с iso-образа через GRUB позволяет загрузить систему с образа диска в формате ISO, в частности, Live CD, таким же образом, как и с использованием физического дисковода и CD или DVD. Ну, не точно таким же, но очень похожим. И, соответственно, вы можете, к примеру, проверить файловую систему, побродить в Интернете, поработать с дисковыми разделами, и так далее. И самое приятное в том, что для этого не надо прилагать больших усилий, надо просто немного поменять конфигурацию GRUB’а. Вот как это сделать.
Размещение iso-образов
Образ диска в формате iso должен размещаться в том разделе, с которого загружается система. Для указания загрузчику раздела надо помнить, как обозначаются разделы в конфигурационных файлах GRUB’а. Первый раздел первого диска (sda1) будет обозначаться как «(hd0,1)», второй раздел (sda2) как «(hd0,2)» и так далее.
Добавление пунктов в меню загрузчика
Для добавления пунктов меню для загрузки с образов iso нужно добавить соответствующие записи в файл /etc/grub/40_custom. Формат записей будет выглядеть примерно так:
menuentry "<Название пункта меню>" { set isofile="<Полный путь к файлу iso>" loopback loop <Загрузочный раздел>$isofile <Дополнительные параметры (kernel, initrd,...)> }
Например, для GParted пункт меню будет выглядеть так:
menuentry "GParted Live CD i486" { set isofile="/boot/iso/gparted-live-0.18.0-1-i486.iso" loopback loop (hd0,1)$isofile loopback loop $isofile linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=${isofile} initrd (loop)/live/initrd.img }
После загрузки этого пункта меню вы увидите работающую систему с запущенной программой GParted.
Для Tails пункт будет выглядеть следующим образом:
menuentry "Tails 1.5 i386" { set isofile="/boot/iso/tails-i386-1.5.iso" loopback loop (hd0,1)$isofile loopback loop $isofile linux (loop)/live/vmlinuz boot=live config apparmor=1 security=apparmor nopersistent timezone=Etc/UTC block.events_dfl_poll_msecs=1000 noautologin module=Tails findiso=$isofile initrd (loop)/live/initrd.img }
Загруженная система будет выглядеть так:
А для Kali Linux чуть попроще:
menuentry "Kali Linux 2.0 i386" { set isofile="/boot/iso/kali-linux-2.0-i386.iso" loopback loop (hd0,1)$isofile loopback loop $isofile linux (loop)/live/vmlinuz boot=live username=root hostname=kali findiso=${isofile} initrd (loop)/live/initrd.img }
И она, соответственно, будет выглядеть так:
После изменения файла /etc/grub.d/40_custom не забывайте выполнять команду
update-grub
Наконец то нашёл то, что работает. На остальных сайтах написано, что в строке linux (loop)/live… нужно писать iso-scan/filename=$isofile root=(loop). Но с этими параметрами live-система не загружается. Загружается только с findiso=${isofile}. Огромное спасибо!