Я пытаюсь установить разные дистрибутивы 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
В любом случае, вот способ, который я использую для настройки после установки или для создания загрузочных резервных копий.
Избегайте создания дюжины подтомов установщиком, просто установите, например, в корень раздела / подтом по умолчанию (если это сработает).
После установки запустите систему спасения и
- Переместите установленные системные каталоги в нужный подтом, так чтобы у вас было обычное дерево файловой системы Linux под этим подтомом. Исправьте также домашнюю папку, если необходимо.
- Исправьте /etc/fstab, добавив соответствующие параметры subvol=/myrootsubvol
- Смонтируйте раздел с подтомом (будущий /), смонтируйте boot и смонтируйте boot/efi
Теперь создайте второй каталог за пределами смонтированного подтома. Сделайте 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"
Теперь используйте обычный подход 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.
- Выйдите из chroot и размонтируйте в обратном порядке. Проверьте инструмент еще раз, указывает ли grub2 core на правильный путь сейчас