Grub Boot от ISO с lvm

В простой процедуре загрузки из образа ISO нижеприведенные операторы работают хорошо:

menuentry "Ubuntu.iso" {
set isofile="/iso/ubuntu.iso"
loopback loop (hd0,3)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile      noeject noprompt --
initrd (loop)/casper/initrd.lz
}

где hd0 - первый жесткий диск, а 3 - номер раздела.

Я хотел бы знать, как это сделать в среде lvm

loopback loop (hd0,3)$isofile   ----> (hd0,???)

Результат команды blkid -

/dev/sda1: UUID="28f0906e-d285-42dd-b3cd-18ef27b9261e" TYPE="ext2" 
/dev/sda5: UUID="Nx2a6F-O11u-sZxe-HDvm-6a2u-zdUf-suvn46" TYPE="LVM2_member" 
/dev/mapper/sal06--vg-root: UUID="2adef9b5-66de-4ffc-9c04-b33199815a35" TYPE="ext4" 
/dev/mapper/sal06--vg-swap_1: UUID="95938380-8ee5-42c9-ad1b-eee1338870db" TYPE="swap"

Мой iso находится в /dev/mapper/sal06--vg-root.

2
задан 15 June 2016 в 05:15

2 ответа

Наконец я нашел путь

просто, мы должны добавить для добавления следующей строки в/etc/default/grub

GRUB_PRELOAD_MODULES="lvm"

затем в/etc/grub.d/40_custom

menuentry "Ubuntu.iso" {
set isofile="/iso/ubuntu.iso"
search --no-floppy --fs-uuid --set=root <your LV uuid here >
loopback loop ($root)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile          noeject noprompt --
initrd (loop)/casper/initrd.lz

}

и сделанный, здесь я сделал видео

https://youtu.be/5MCWFStgkQU

1
ответ дан 15 June 2016 в 05:15

Вдохновленный Вашим решением и несколько сложным я нашел здесь, я использовал следующее, которое работает на загрузку Fedora 27 KDE iso и ISO Ubuntu 17.10.

Я просто добавил следующие строки в файле /etc/grub.d/40_custom

menuentry "Live Fedora KDE 27" --class fedora {
  insmod part_msdos
  insmod lvm
  set iso_path="/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso"
  search --no-floppy --fs-uuid --set=root 6340d364-fc09-44d1-914f-b902a6394a55
  loopback loop ($root)$iso_path
  linux (loop)/isolinux/vmlinuz iso-scan/filename=${iso_path} root=live:CDLABEL=Fedora-KDE-Live-27-1-6 rootfstype=auto rd.live.image quiet
  initrd (loop)/isolinux/initrd.img
}

menuentry "Ubuntu 17.10.1" --class ubuntu {
  insmod part_msdos
  insmod lvm
  set iso_path="/erik/Downloads/transmission/ubuntu-17.10.1-desktop-amd64.iso"
  search --no-floppy --fs-uuid --set=root 6340d364-fc09-44d1-914f-b902a6394a55
  loopback loop ($root)$iso_path
  linux (loop)/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash ---
  initrd (loop)/casper/initrd.lz
}

Объяснение

  • Строка, которая начинается set iso_path определяет путь, где файл ISO может быть найден на логическом томе. Когда я запускаю свою систему, она находится в /home/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso", но /home смонтированный логический том, таким образом, я пропускаю это и начинаю путь с /erik/Downloads/…
  • Строка, которая начинается search имеет странную алфавитно-цифровую переменную (так называемый UUID) в конце, который начинается 6340. Я получил это число от команды

    sudo blkid
    

    который дал мне, вдоль других, следующей строки

    /dev/mapper/fedora_pluto-home: UUID="6340d364-fc09-44d1-914f-b902a6394a55" TYPE="ext4"
    
  • Затем другой важной вещью, если Вы хотите загрузить другие файлы ISO, являются строки, которые начинаются linux и initrd. Я получил их путем открытия файла ISO с file-roller (gui для извлечения сжатых архивов) или mc (консольный файловый менеджер).

    • Fedora и подобный: Там Вы переходите к каталогу /isolinux, где Вы найдете файл названным isolinux.cfg. Там я нашел некоторое начало строк label, и ниже их следующие важные строки

      kernel vmlinuz
      append initrd=initrd.img root=live:CDLABEL=Fedora-KDE-Live-27-1-6 rd.live.image quiet
      

      который Вы будете использовать для заполнения последних двух строк моего grub2 menuentry.

    • Ubuntu и подобный: Там Вы переходите к каталогу /boot/grub, где Вы найдете файл названным grub.cfg. Здесь Вы найдете некоторое начало строк menuentry, и ниже их следующие важные строки

      linux   /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash ---
      initrd  /casper/initrd.lz
      

      который можно просто скопировать.

0
ответ дан 2 December 2019 в 04:56

Другие вопросы по тегам:

Похожие вопросы: