Linux
May 5, 2020

Загрузка LiveCD ISO напрямую через Grub

Обычно при каких-то проблемах с загрузкой основной установленной на жесткий диск системы, большинство мануалов советует загрузиться с LiveCD Ubuntu или любого дистрибутива и дальше творить некие действия, дабы починить основную систему. Вопрос, что под рукой может не быть диска (или флэшки) с LiveCD… Для такого случая очень просто перестраховаться и создать запись в Grub для возможности загрузки в сохраненный на жестком диске ISO-файла.

Как создать возможность загрузки LiveCD с ISO-файла через Grub?

На самом деле, это очень просто — Grub2 с самого начала научился понимать формат ISO9660 и может загружать ОС прямо из ISO-образа, расположенного на жестком диске!

В конце файла /etc/grub.d/40_custom необходимо создать следующую запись (предварительно сложив нужные iso-файлы в любую директорию — у нас это будет /home/user/, куда уже скопированы два файла с нужными мне дистрибутивами):

menuentry "Linux Deepin Live" {
   set root=(hd0,5)
   loopback loop /home/user/deepin.iso
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/home/user/deepin.iso noeject noprompt --
   initrd (loop)/casper/initrd.lz
}
 
menuentry "ElementaryOS Live" {
   set root=(hd0,5)
   loopback loop /home/user/elementaryos.iso
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/home/user/elementaryos.iso noeject noprompt --
   initrd (loop)/casper/initrd.lz
}
 
menuentry "Zorin OS Live" {
    set root=(hd0,5)
    loopback loop /home/user/zorin-os.iso
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/home/user/zorin-os.iso noeject noprompt --
    initrd (loop)/casper/initrd.lz
}

! hd0,5 необходимо заменить на правильный номер раздела на вашей машине. Указывайте полный путь к образу относительно корня раздела.

!! В последнем примере можно заметить, что расширение vmlinuz.efi. Если не работает /casper/vmlinuz, значит, необходимо прописывать с расширением файла .efi.

В разделе «loopback loop» создается loop-устройство, к которому монтируется файл нашего iso. А две следующие строчки указывают местонахождение ядра и образа initrd относительно корня loop устройства (путь к файлам ядра и initrd внутри ISO-образа).

После сохранения файла, необходимо обновить grub командой sudo grub-mkconfig -o /boot/grub/grub.cfg.

После перезагрузки в меню можно будет выбрать один из двух пунктов. У меня это Linux Deepin Live и ElementaryOS Live, при выборе любого из которых я загружаюсь в чистую Live-систему Deepin или ElementaryOS соответственно.

Это удобный способ попробовать какой-то дистрибутив без установки и даже записи его на диск или флэшку. Правда, некоторые дистрибутивы «не умеют» загружаться таким способов, но с большинством популярных сборок должно сработать.

ПС для параноиков: Есть мнение, что оставлять эти пункты в меню загрузки не особо безопасно, ведь с liveCD очень легко получить права root, после чего делать с основной системой и данными все что угодно. Однако, если злоумышленнику нужно будет это сделать с вашей системой, то он может просто взять диск и изнасиловать вашу систему прямо с него. Так что про некую опасность/безопасность — весьма сомнительно…