Установить OpenSUSE на подтом BTRFS

Установить OpenSUSE на подтом BTRFS

Я пытаюсь установить разные дистрибутивы Linux внутри одной файловой системы BTRFS, используя подтом для каждого, чтобы избежать траты свободного места на разные разделы.
Я использую ноутбук с UEFI и хотел использовать следующую схему разбиения на разделы:

sda1: загрузка EFI, смонтированная в /boot/efi на всех системах
sda2: подкачка
sda3: том BTRFS

sda3 затем будет «разделен» на следующие подтома:
/data: подтом для данных
/snapshots: подтом для снимков
/os/DISTID: подтом для дистрибутива DIST (один для дистрибутива)

Каждый дистрибутив установит свой GRUB2, а я загружу нужный мне GRUB в UEFI, чтобы каждому дистрибутиву не нужно было знать о других.

Мне удалось установить Arch и Funtoo, но не удалось настроить OpenSUSE на установку в подтом /os/suse.
Я попробовал следующее:

  • установите последний как субтом по умолчанию (как указано такжездесь) и сказал OpenSUSE не форматировать раздел; установка, казалось, прошла успешно, но загрузиться не удалось
  • смонтировал подтом в /mnt в системе установки live и сообщил OpenSUSE игнорировать этот факт; установка завершилась неудачей при попытке перемонтировать раздел для фактической установки
  • установил OpenSUSE на виртуальной машине, напоминающей среду ноутбука, затем скопировал всю систему на подтом и внес необходимые изменения в grub и его настройки (те, которые мне приходилось делать с Arch или Funtoo); grub загрузился, но загруженная система впала в панику ядра

Изменения в GRUB, о которых я писал, подразумевают следующее:

  • chroot в подтоме (используя arch-chroot илипроцедура установки gentoo/funtoo)
  • установить grub в /boot/efiсистемный раздел EFI (но сохранить данные GRUB в /boot)
  • запустить grub-mkconfig -o /boot/grug/grub.cfgдля обновления загрузчика

Есть у кого-нибудь идеи? Я что-то пропустил?

решение1

По моему опыту, обработка пользовательских (например, отличных от snapper / @-notation) подтомов установщиком OpenSUSE Leap 42.2 / 42.3 не работает. Хуже того, некоторые инструменты, такие как установка загрузчика, имеют с этим проблемы. Например, в моем случае ядро ​​grub указывало на /boot/grub..., но должно быть просто /grub.. при обновлении из chroot. Вы можете проверить текущие настройки с помощью этого инструмента:https://github.com/arvidjaar/bootinfoscript

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

Избегайте создания дюжины подтомов установщиком, просто установите, например, в корень раздела / подтом по умолчанию (если это сработает).

После установки запустите систему спасения и

  1. Переместите установленные системные каталоги в нужный подтом, так чтобы у вас было обычное дерево файловой системы Linux под этим подтомом. Исправьте также домашнюю папку, если необходимо.
  2. Исправьте /etc/fstab, добавив соответствующие параметры subvol=/myrootsubvol
  3. Смонтируйте раздел с подтомом (будущий /), смонтируйте boot и смонтируйте boot/efi
  4. Теперь создайте второй каталог за пределами смонтированного подтома. Сделайте bind-mount всего в этот каталог.

    mount -o bind "/mnt/partition_root/sysroot_subvol" "/mnt/temp_sys_prep" 
    mount -o bind "/mnt/partition_root/sysroot_subvol/boot" "/mnt/temp_sys_prep/boot" 
    mount -o bind "/mnt/partition_root/sysroot_subvol/boot/efi" "/mnt/temp_sys_prep/boot/efi" 
    mount -o bind /proc "/mnt/temp_sys_prep/proc"
    mount -o bind /sys "/mnt/temp_sys_prep/sys"
    mount -o bind /dev "/mnt/temp_sys_prep/dev"    
    
  5. Теперь используйте обычный подход chroot для /mnt/temp_sys_prep.В chroot-окружениивы можете использовать

    • grub2-install --no-nvram --recheck --efi-directory=/boot/efi /dev/disk/by-id/scsi-SATA...,
    • grub2-mkconfig -o /boot/grub2/grub.cfg,
    • mkinitrd

    Я не уверен в правильном порядке; mkinitrd, вероятно, также вызывает grub.

  6. Выйдите из chroot и размонтируйте в обратном порядке. Проверьте инструмент еще раз, указывает ли grub2 core на правильный путь сейчас

Связанный контент