Як встановити дві незалежні установки Ubuntu на одному жорсткому диску з UEFI?


8

З міркувань безпеки я хотів би встановити вторинну повністю незалежну операційну систему на комп'ютері з одним жорстким диском за допомогою UEFI. Обидві установки повинні мати можливість використовувати різні криптовалютні розділи LUKS як кореневий пристрій (LVM на вершині криптовалюти) та мати можливість використовувати власні ядра.

Подвійне завантаження з двома різними операційними системами - не велика справа. Ubuntu та Fedora не будуть перешкоджати і можуть спільно використовувати системний розділ EFI, але дві установки Ubuntu будуть битися між собою, оскільки вони хочуть встановити свій екземпляр Grub в одному місці EFI.

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

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

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

Відповіді:


6

У мене дві пропозиції ...

Варіант №1: Окремі ESP

Під EFI завантажувач знаходиться на "розділі системи EFI (ESP)". Я ставлю слово "the" у лапки, тому що немає правила, яке говорить про те, що ви обмежені одним ESP. Якщо ви створите на своєму жорсткому диску два ESP, ви можете використовувати один з них для першої установки, а другий ESP - для другої. Це має працювати досить легко, хоча вам доведеться створювати свої розділи вручну (використовуючи опцію "Щось інше" під час встановлення), принаймні для другої установки 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, ймовірно, можуть заплутатися в цій конфігурації. Це спостереження призводить до очевидного рішення, що ви просто не повинні використовувати ці інструменти. Існує кілька інших завантажувачів EFI для Linux, більшість з яких легше вручну підтримувати, ніж GRUB. Ви можете налаштувати ELILO, SYSLINUX, патч GRUB Legacy, gummiboot або rEFInd та керувати обома своїми установками вручну. Насправді, оскільки rEFInd виявляє ядра щоразу, коли воно завантажується, rEFInd повинен бути близьким до відсутності технічного обслуговування, як тільки він буде налаштований. Крім того, але в подібному сенсі ви можете вручну відредагувати свій grub.cfgфайл, щоб робити те, що ви хочете, а не покладатися на сценарії настройки GRUB.

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

Зауважте також, що жоден із цих інструментів не може прочитати ядро ​​із зашифрованої файлової системи або з LVM, тому вам потрібно мати окремий незашифрований /bootрозділ для кожної з ваших установок Ubuntu. Це так, як більшість інструкцій, які я бачив, говорять про те, щоб налаштувати зашифровану установку Ubuntu так чи інакше, тому, мабуть, це не велика справа, якщо ви не хочете грати на "кровоточивому краю" шифрування диска.

Деякі завантажувачі EFI мають додаткові конкретні вимоги до розподілу або файлової системи. Найбільше, що ELILO, SYSLINUX і gummiboot вимагають, щоб ядро ​​знаходилось на розділі FAT, і ESP найкраще працює для цього. Ви можете зробити це, встановивши ESP на /boot, але це втілене рішення в Ubuntu, оскільки для деяких оновлень пакунків потрібні символічні посилання. Також у вас виникнуть проблеми з двома окремими установками Ubuntu, оскільки вони обидва намагаються заявити одні і ті ж файли. (У цьому випадку "ESP" насправді означає "розділ, з якого запущений завантажувач", тож у цьому випадку у вас може бути лише один ESP.) GRUB Legacy та rEFInd щодо цього більш гнучкі.

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

Особисто я би використовував rEFInd для цього - але, як я підтримую rEFInd, я не зовсім неупереджений. Насправді у мене є комп’ютер, який має багато завантажень між трьома установками Ubuntu, і rEFInd перемикається між ними просто чудово. Ця система не використовує шифрування, але я сумніваюся, чи це спричинить якісь нові проблеми з точки зору rEFInd.

Однак це означає, що окремі ESP повинні також добре працювати із застереженням, який, можливо, знадобиться використовувати GRUB Customizer для налаштування параметрів принаймні однієї з цих копій GRUB.


Дуже хороші пропозиції, дякую! Я впевнений, що ви правильні щодо того, що за специфікацією може бути декілька ESP, але я сумніваюся, що ця програма UEFI Dell Latitude також підтримує це. Це дозволяє лише переглядати контури окремими дисками. Я мушу насправді спробувати це.
gertvdijk

якщо реалізація EFI вашої Dell настільки зламана, що вона не може обробляти декілька ESP, то ви повинні повернути її в магазин для повернення коштів. Серйозно; такий поганий би вказував на таку жахливість, що я б не довіряв прошивці виконувати свої найосновніші завдання. На практиці я не думаю, що це було б так погано; Я ніколи не чув про EFI, який не може обробити декілька ESP.
Род Сміт

1

Ось кроки, які я використовував для подвійного завантаження з двома системами Ubuntu, зашифрованими LUKS, на одному жорсткому диску з UEFI, використовуючи параметр №2, який раніше рекомендував Род Сміт. Це було спеціально для Ubuntu 18.04.1-desktop. Шифрування домашнього каталогу більше не надається як опція під час встановлення, оскільки є сумніви щодо надійності та обслуговування eCryptfs. Рекомендується замість цього використовувати LUKS, тому я вважаю, що найкращий варіант мати кілька користувачів із зашифрованими домашніми розділами.

    1. Завантажте на Live USB, це було за допомогою завантаження ISO та за допомогою інструмента Startup Disk Creator для форматування та налаштування USB-накопичувача.
    1. Використовуйте GParted для розділення диска. Це ґрунтувалося на рекомендаціях https://help.ubuntu.com/community/ManualFullSystemEncryption та використанні деяких за замовчуванням, встановлених установщиком Ubuntu при виборі шифрування диска для повного диска.
      • Розділ системи EFI / 512MiB / FAT32 / boot, esp (прапори)
      • Система завантаження №1 / 732MiB / EXT4
      • Система завантаження №2 / 732MiB / EXT4
      • Дані зашифровані №1 / [потрібний розмір] / очищено
      • Дані зашифровані №2 / [потрібний розмір] / очищено
    1. Перезавантажте назад на Live USB
      • Встановіть Ubuntu
      • Виберіть налаштування установки
      • Виберіть "Щось інше" для макета диска розділів та в межах цієї конфігурації розділу для установки:
        • У меню внизу виберіть "Розділ системи EFI" як завантажувач.
        • Виберіть "Шифровані дані №1" та виберіть "фізичний пристрій для шифрування", а потім введіть фразу шифрування, яка буде використана для розділу.
        • Виберіть новостворений розділ за допомогою EXT4 та змініть точку монтажу на "/".
        • Виберіть "Система завантаження №1" та вкажіть для неї "/ boot".
      • Продовжуйте та встановлюйте
    1. Перезавантажте нову установку
      • Встановіть "refind" через "apt-get install refind" і накладіть його автоматично на ESP, "EFI System Partition".
    1. Перезавантажте програму USB Live Live
      • Повторіть кроки 3 та 4 для розділів завантажувальної системи №2 та шифрованих даних №2, встановивши другу установку Ubuntu.
    1. Налаштуйте та оновіть кожну інсталяцію за потребою.

1

Я використовую такий підхід із єдиним ESP:

Я створив додаткові завантажувачі для кожної ОС

sudo grub-install --bootloader-id=ID

використовуючи різні IDдля кожної операційної системи.

Приклад:

У мене встановлені Ubuntu 16.04 і Ubuntu 18.04. Я завантажуюся в Ubuntu 16.04 і запускаю

sudo grub-install --bootloader-id=Ubuntu1604

Потім із завантаженого в Ubuntu 18.04 бігаю

sudo grub-install --bootloader-id=Ubuntu1804

У налаштуваннях UEFI я бачу нові записи завантаження з іменами Ubuntu1604та Ubuntu1804переставляю порядок завантаження, щоб встановити одну з нових записів на перше місце.

Я також бачу папки з цими іменами в ESP.

Коли оновлення системи постачається з новою версією grub, вона перевстановить новий екземпляр grub у- ubuntuпапку на ESP, це не вплине на завантажувачі, які я створив сам, але мені доведеться переставити замовлення завантаження ще раз як ubuntu-entry буде висунутий на перше місце в порядку завантаження.

Це те, що efibootmgr -vпоказано в моїй конфігурації:

~ $ efibootmgr -v
Поточний завантаження: 0001
Час очікування: 0 секунд
Запуск завантаження: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Файл (EFI \ Ubuntu \ grubx64.efi)

Ще не працювали для мене. Я змінюю типовий параметр / etc / default / grub на розподіл, як-от GRUB_DISTRIBUTOR="Bionic_18_04"і перевстановлюю grub, використовуючи це як ідентифікатор за замовчуванням UEFI. Але кожен раз він використовує лише /EFI/ubuntu/grub.cfg як місце за замовчуванням для завантаження з не мого нового /EFI/bionic_18_04/grub.cfg.
oldfred

@oldfred Для мене це працює чудово протягом декількох років, працюючи над потрійним завантаженням.
mook765

Спробував свою команду, а не перейменувати в / etc / default / grub. Не мало різниці. UEFI встановлений за замовчуванням завантаження нового запису. Але він завантажився з використанням мого / efi / ubuntu з Disco як завантаження за замовчуванням, а не grub у новій папці / EFI / ubuntu1804. Я б подумав, що різниця не UEFI.
oldfred

@oldfred Будь ласка, погляньте на результат, efibootmgr -vякий я додав до своєї відповіді. Це працює. У вас можуть бути додаткові зміни, які не дозволяють вам це робити. Те, що я описав, - це єдине, що я роблю, щоб змусити його працювати.
mook765

Я перевірив efibootmgr -v, і він був встановлений для нового запису, але завантажив grub в / EFI / ubuntu. Шахта завантажує /EFI/ubuntu1804/shimx64.efi. Чи використовуєте ви grubx64.efi або shimx64.efi, можливо, це різниця? У мене немає захищеного завантаження, але воно за замовчуванням перетворилося на перший запис ubuntu1804. У якийсь момент у мене з’явилося стільки записів або папок UEFI в / EFI, що у мене виникли проблеми із завантаженням & довелося використовувати rEFInd на іншому диску для завантаження. Тому мені зараз не подобається надто багато в папці / EFI або записах в UEFI.
oldfred
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.