Из GRUB2 загрузите ISO в логический том LVM2

tl; dr - можно ли загрузиться с a .iso-файл, расположенный в незашифрованном логическом томе lmv2? Как?

Я пытаюсь настроить это в виртуальной машине VirtualBox, прежде чем я сделаю это по-настоящему с моим ноутбуком. У меня есть следующие настройки:

  • 4 разделов GPT
    • gpt1 - 2M ef02 bios boot
    • gpt2-5G незашифрованные non-lvm,для данных по misc, iso, etc.
    • gpt3-5G незашифрованный lvm, для /boot,iso и т.д.
    • gpt4 - остальные, lvm, зашифрованные dm-crypt / luks, для root,swap,home и др.
  • в gpt2, у меня есть копии текущей арки и Xubuntu iso
  • в gpt3 у меня есть lvm2 lv с теми же копиями тех же iso

Я имею следующую работу:

  • в gpt4, функционирующие установки Arch и Xubuntu (и хотел бы добавить другие дистрибутивы в других логических томов в какой-то момент)
  • grub2 устанавливается из Arch on/dev / sda
  • С помощью команды grub2 в configfile, можно переключаться и загрузки из обоих дистрибутива grub2 меню в
  • может загружать iso из меню grub из не-lvm gpt2

то, что я хотел бы сделать, это загрузиться с iso в gpt3 lvm (и, в конечном счете, даже не иметь раздела gpt2 без lvm).

Моя запись grub-это:

menuentry "Xubuntu ISO" {
  set isofile="/xubuntu-12.04.1-desktop-amd64.iso"
  # from non-lvm
  loopback loop (hd0,gpt2)$isofile
  # from lvm
  #loopback loop (vgboot-iso)$isofile
  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
  initrd (loop)/casper/initrd.lz
}

2 линии петлевым указывают на 2 разных копий одной ИСО.
Я проверил по команде grub линии, что оба шлейфа линии работы.

при загрузке с iso в разделе, отличном от lvm, все работает нормально.

при загрузке с iso в разделе lvm, загрузка начинается, и в конечном итоге получает эту ошибку:

(initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found

для входа арки:

menuentry "Arch ISO" {
  set isofile="/archlinux-2012.09.07-dual.iso"
  loopback loop (hd0,gpt2)$isofile
  #loopback loop (vgboot-iso)$isofile
  linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201209 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop
  initrd (loop)/arch/boot/x86_64/archiso.img
}

загрузка с gpt2 iso работает, но я не знаю, что изменить в "/dev/sda2" для загрузки lvm.


EDIT: это можно сделать? Для любой официальный дистрибутив Linux .iso-файл? Федора? Debian? openSUSE? CentOS?

это невозможно? Или это то, что никто не думал попробовать раньше?


EDIT2: моя награда давно истекла, и после 9 месяцев, я предполагаю, что это просто невозможно с любым дистрибутивом Linux. Я оставлю вопрос открытым, но я сомневаюсь, что в ближайшем будущем будет рабочее решение.

19
задан snapshoe
10.02.2023 12:36 Количество просмотров материала 2882
Распечатать страницу

5 ответов

используя Fedora 21 ISO, я просто успешно попробовал следующее:

menuentry "Fedora 21 Live M6600" --class fedora {
    insmod part_gpt
    insmod lvm
    insmod ext2
    set vg='m6600'
    set lv='F21Live'
    set root="lvm/${vg}-${lv}"
    search --no-floppy --fs-uuid --set=root --hint=${root} 95e4eec8-c1de-4802-b821-5753de990cbe
    set isofile="/Fedora-Live-Workstation-x86_64-21-5.iso"
    echo "Using ${isofile}..."
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile} root=live:CDLABEL=Fedora-Live-WS-x86_64-21-5 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 rd.auto=1
    initrd (loop)/isolinux/initrd0.img
}

rd.auto=1 скажет Linux загрузить все LVM и iso-scan ищет их.

1
отвечен nxxy 2023-02-11 20:24

вдохновленный это простое решение для Ubuntu, я использовал следующее, которое работает для загрузки iso Fedora 27 KDE и 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 монтируется логически volume, поэтому я оставляю это и начинаю путь с /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
      

      что вы можете просто скопировать.

1
отвечен erik 2023-02-11 22:41

Я думаю, что это невозможно для официального iso-файла большинства дистрибутивов.

ошибка, которую вы получаете:

 (initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found

означает, что при загрузке живая система, которую вы запускаете, ищет CD / dvd-привод и не находит его.

Live CD не настроены на поиск исходного iso на LVM; вы можете изменить загрузочные скрипты образа, чтобы сделать это, но я не думаю, что какой-либо текущий дистрибутив официальный .файл ISO это. Вы можете попробовать связаться может быть, ваши любимые разработчики дистрибутива интегрировали это ?

0
отвечен alphatiger 2023-02-12 00:58

вы можете попробовать это:

добавить это в начале menuentry:

insmod lvm

затем укажите раздел LVM с помощью:

set lvmpart=lvm/<lvm_group_name>-<lvm_logical_partition_name>

Так что ваша запись Xubuntu ISO будет выглядеть следующим образом:

menuentry "Xubuntu ISO" {
  insmod lvm
  set lvmpart=lvm/<lvm_group_name>-<lvm_logical_partition_name>
  set isofile="/xubuntu-12.04.1-desktop-amd64.iso"
  loopback loop $lvmpart$isofile
  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
  initrd (loop)/casper/initrd.lz
}

пожалуйста, внесите необходимые исправления.

это должно заставить GRUB распознавать том lvm2, делая возможным чтение ISO-файла в нем. Однако, вероятно, ISO все равно не будет найден...

0
отвечен Leonardo Dagnino 2023-02-12 03:15

просто точка на это:

ISO при загрузке должен смонтировать iso, поэтому должен знать, как его найти.

Grub2 может видеть ISO с insmod... команды, но это делает ничего другого, чем пусть для grub2 прочитать в ISO, смонтируйте его и т. д., Но как только Linux внутри ИСО начинается в Д / Лукс / петли / и т. д. Там нет (не установлен), загрузочные скрипты внутри ИСО должны знать, как монтируют, что ЛВМ / Лукс / цикл; так что если, что Linux не готов для этого, он будет невозможно загрузиться с него.

образец без LVM, LUKS, etc... если обычный Linux LiveCD ISO не предназначен для поиска и монтирования цикла в A .iso-файл во время загрузки, никогда не будет возможно загрузиться в него из Grub2 (С.iso в виде файла).

для таких случаев вам нужен аппаратный CD / DVD эмулятор (если на реальном оборудовании), или просто смонтировать .iso на виртуальном устройстве CD / DVD виртуальной машины.

другой вариант, конечно, "редактировать" такой ISO в включить при загрузке некоторые скрипты для поиска и монтирования LVM / LUKS / etc.

0
отвечен Anonimo 2023-02-12 05:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх