Как установить две независимые установки Ubuntu на одном жестком диске с UEFI?

По соображениям безопасности я хотел бы установить вторичную полностью независимую операционную систему на компьютере с одним жестким диском, используя UEFI. Обе установки должны иметь возможность использовать различные криптографические разделы LUKS в качестве корневого устройства (LVM поверх криптографии) и должны иметь возможность использовать свои собственные ядра.

Наличие двойной загрузки с двумя различными операционными системами не является большой проблемой. Ubuntu и Fedora не будут вмешиваться и могут совместно использовать системный раздел EFI, но две установки Ubuntu будут сражаться друг с другом, потому что они хотят, чтобы оба их экземпляра Grub были установлены в одном месте EFI.

  • Есть ли способ изменить Ubuntu для установки Grub в другом месте, чем /boot/efi/EFI/ubuntu во время установки? Мне нужен постоянный способ, чтобы обновления пакетов и обновления ядра / grub по-прежнему устанавливались на этом пути. Так же, как Fedora Grub будет устанавливать в /boot/efi/EFI/fedora . Я не могу найти этот параметр конфигурации в Grub. Если бы я мог, мое меню загрузки Dell UEFI позволило бы мне выбрать, какую ОС загрузить. Возможно, я пропустил какой-то клей между efibootmgr и grub-efi здесь.

  • В качестве альтернативы, можно ли использовать одну установку Grub из одной из двух установок Ubuntu и автоматически определить правильные настройки загрузки? Я имею в виду, я знаю, что os-prober найдет другой /boot раздел с ядрами, но как он может знать правильные параметры загрузки для этой ОС (например, объем LVM внутри заблокированного объема криптообмена в качестве корневой файловой системы)? Я могу понять, что это может быть с незашифрованными установками с одним разделом, но он не может соответствовать /boot с соответствующей корневой файловой системой, верно? И это невозможно, если зашифровано. Это потребует много ручной настройки файлов конфигурации grub. Мне также не нравится этот вариант одной общей конфигурации загрузчика, что делает две операционные системы менее изолированными до некоторой степени.

Между прочим, я в порядке с серверной текстовой установкой. Также некоторая настраиваемая конфигурация, пока мне не нужно повторять шаги для каждого обновления ядра / Grub.

У меня есть два предложения …

Вариант №1: Отдельные ESP

В EFI загрузочный загрузчик находится на « системном разделе EFI» (ESP). Я помещал слово «the» в кавычки, потому что нет правила, согласно которому вы ограничены одним ESP. Если вы создаете два ESP на вашем жестком диске, вы можете использовать один из них для первой установки и второй ESP для второй установки. Это должно работать довольно легко, хотя вам придется создавать свои разделы вручную (используя опцию «Something Else» во время установки), по крайней мере, для вашей второй установки Ubuntu.

Одна из проблем с этим подходом заключается в том, что, хотя спецификация EFI явно заявляет, что вы можете создать столько ESP, сколько захотите, некоторые программы могут запутаться в ней. Одним из ярких примеров этого является установщик Windows, по крайней мере, через Windows 7 (я не знаю о Windows 8 или новее); когда установщик Windows 7 видит диск с двумя ESP, он выходит из строя и делает странные вещи. IIRC, он не выполняет свою собственную установку должным образом. Вполне возможно, что инструменты для восстановления Windows пострадали от одной и той же проблемы. Если вы не загружаете Windows в эту систему, это не должно быть большой проблемой. Если вы загружаетесь с Windows, вы должны просто знать о проблеме, потому что вы можете легко преодолеть ее, временно изменив код типа не-Windows ESP (ы), если у вас возникнут проблемы. Обратите внимание, что Windows будет загружаться только на диск с несколькими ESP; это просто установщик, который задыхается на таких дисках.

Другая проблема заключается в том, как вы переключаетесь между двумя дистрибутивами. Возможно, вам придется настроить одну или обе установки GRUB установки с помощью инструмента, такого как GRUB Customizer. Другой (но несовместимый) вариант будет заключаться в том, чтобы использовать собственный менеджер загрузки вашей прошивки для переключения между двумя установками GRUB и использовать каждый для загрузки только своей версии Ubuntu.

Вариант № 2: отменить GRUB (или, по крайней мере, инструменты GRUB от Ubuntu)

Проблема с GRUB в вашей ситуации состоит в том, что у вас есть две установки, и инструменты обслуживания GRUB могут смущаться этой конфигурацией. Это наблюдение приводит к очевидному решению, что вы просто не должны использовать эти инструменты. Для Linux есть несколько других загрузчиков EFI, большинство из которых легче обслуживать вручную, чем GRUB. Вы можете настроить ELILO, SYSLINUX, исправленные GRUB Legacy, gummiboot или rEFInd, а также управлять своими установками вручную. Фактически, поскольку rEFInd обнаруживает ядра всякий раз, когда он загружается, rEFInd должен быть близок к отсутствию обслуживания после его настройки. Альтернативно, но в аналогичном ключе вы можете вручную отредактировать файл grub.cfg чтобы делать то, что хотите, вместо того, чтобы полагаться на сценарии установки GRUB.

Помимо rEFInd, все эти инструменты потребуют от вас изменения конфигурации при каждом обновлении ядра, которое будет перетаскиваться. Также возникает вопрос, когда и как установить дополнительную программу загрузки. Я бы, вероятно, отложил его до следующей установки Ubuntu, так как каждая установка зарегистрирует свою собственную копию GRUB в качестве загрузчика по умолчанию, и вы хотите переопределить это значение по умолчанию.

Также обратите внимание, что ни один из этих инструментов не может считывать ядро ​​из зашифрованной файловой системы или из LVM, поэтому для каждой установки Ubuntu вам потребуется отдельный незашифрованный /boot раздел. Это то, как большинство инструкций, которые я видел, говорят, чтобы настроить зашифрованную установку Ubuntu так или иначе, так что это, вероятно, не большая проблема, если вы не хотите играть на «кровоточащей грани» шифрования диска.

Некоторые загрузчики EFI имеют дополнительные требования к конкретному разделению или файловой системе. Прежде всего, ELILO, SYSLINUX и gummiboot требуют, чтобы ядро ​​находилось на разделе FAT, и ESP работает лучше всего для этого. Вы можете сделать это, установив ESP в /boot , но это решение iffy в Ubuntu, потому что некоторые обновления пакетов требуют символических ссылок. У вас также возникнут проблемы с двумя отдельными установками Ubuntu, потому что они оба попытаются потребовать одни и те же файлы. (В этом случае «ESP» действительно означает «раздел, из которого запускался загрузчик», поэтому в этом случае вы можете иметь только один ESP.) GRUB Legacy и rEFInd более гибки в этом.

Моя рекомендация

Лично я использовал бы rEFInd для этого, но, поскольку я поддерживаю rEFInd, я не совсем объективен. На самом деле, у меня есть компьютер, который имеет несколько загрузок между тремя установками Ubuntu, и rEFInd переключаются между ними очень хорошо. Эта конкретная система не использует шифрование, но я сомневаюсь, что это вызовет новые проблемы с точки зрения rEFInd.

Тем не менее, отдельные ESP также должны отлично работать с предостережением, что вам может понадобиться использовать GRUB Customizer для настройки настроек хотя бы одной из этих копий GRUB.

Чтобы избежать установки двух GRUB-установок, которые сражаются друг с другом, вы можете установить GRUB на третий отдельный раздел. Принятый ответ Создание выделенного раздела grub перед установкой ubuntu (который должен работать после установки Ubuntu тоже) должен достаточно хорошо описать эту возможность.