Как выполнить несколько Ubuntu 18.x с отдельным шифрованием раздела и Начальной загрузкой UEFI/Secure?

Чтобы иметь четкое разделение опасений за различные задачи (работа, программирование с открытым исходным кодом, играя), не вкладывая капитал в несколько компьютеров, я предпочитаю устанавливать параллельные операционные системы на отдельно зашифрованных разделах.

Список пожеланий, цели:

  • Используйте единственную машину с единственным жестким диском.
  • Используйте UEFI с Защищенной загрузкой.
  • Установите несколько, высоко разделенные экземпляры Linux параллельно.
    • Отдельно зашифрованные разделы для обеспечения (легкого) доступа к дискам других экземпляров.
    • Сохраняет собственное программное обеспечение, настройки и домашние папки.
    • В настоящее время рабочий стол Ubuntu 18.x.
    • Могли быть другие дистрибутивы, но это не покрыто здесь.
  • Установите один экземпляр Windows.
  • Дополнительно используйте другие разделы или диски для общего (общего) устройства хранения данных.
    • Не покрытый здесь.
1
задан 29 March 2019 в 15:14

1 ответ

Используемый ниже шагов для установки трех отдельных систем Ubuntu на одной машине. Работает отлично!

Идеи

Обзор

  • Очевидно, создайте несколько резервных копий любых ценных данных заранее. Изменение процедуры загрузки, форматирование дисков, включение шифрования, и так далее могут быть опасными и заботиться о потребностях, которые будут взяты.
  • Установите Windows сначала.
    • Кажется, общая рекомендация, хотя должен иметь значение меньше с UEFI.
    • Это подготовит GPT и ESP, это может также быть сделано вручную с помощью Редактора Раздела GNOME от USB/DVD Ubuntu.
    • ESP, созданный установщиком Windows, не мог бы быть достаточно большим, в зависимости от количества экземпляров Ubuntu и размеров ядра. 512 МБ кажутся достаточно для 2 экземпляров Ubuntu, но 1 ГБ был бы более безопасным и позволил бы больше экземпляров.
  • Установка refind и удостоверьтесь, что это загружается с Защищенной загрузкой.
  • Поскольку каждый требовал системного экземпляра Ubuntu:
    • Запустите установщик Ubuntu по умолчанию от USB или DVD.
    • Выберите опцию "Something else" вручную настроить шифрование и избранные разделы.
    • Не перезагружайте после установки, но оставайтесь для установки refind процесс начальной загрузки.
  • Со временем выполните задачи обслуживания, если существует ядро или обновления драйвера.

Установка на экземпляр

Предполагает, что Таблица разделов GUID (GPT) и ESP были настроены установщиком Windows, и что существуют дополнительные разделы (разделы) или пустое дисковое пространство для экземпляра (экземпляров) Ubuntu.

Пути раздела и имена

Для непротиворечивости я буду использовать это именование пути раздела ниже. Пути будут отличаться в Вашей системе и будут варьироваться экземпляром, поэтому сохраните примечания.

  • /dev/nvme0n1p11 Ваш ESP.
  • /dev/nvme0n1p22 Ваш временный файл /boot раздел.
  • /dev/nvme0n1p33 Ваш "физический том на экземпляр для шифрования" (заблокированный) корень / раздел.
  • /dev/mapper/nvme0n1p33_crypt Ваш (разблокированный) корень / раздел.

Раздел и установка новый (дополнительный) экземпляр Ubuntu

  1. Получите Ubuntu на USB или DVD, загрузите его, выбор "Испытывает Ubuntu".
  2. Откройте терминал, чтобы обновить и запустить установщик.
    sudo apt update && sudo apt dist-upgrade -y
    ubiquity --no-bootloader
    
  3. Когда Вас спрашивают о типе установки (сосуществующий с другими операционными системами) и дисковое форматирование/разделение, выберите "Что-то еще" для наблюдения списка дисков и разделов.
  4. Найдите раздел с типом efi, ESP.
    • В моей системе это /dev/nvme0n1p11.
    • Обратите внимание на путь раздела, поскольку Вам будет нужен он ниже.
    • Проверьте, что это имеет по крайней мере 200 МБ, свободных перед продолжением, поскольку это будет необходимо для нового ядра экземпляра.
  5. Выберите или создайте раздел начальной загрузки.
    • В моей системе это /dev/nvme0n1p22.
    • Обратите внимание на путь раздела начальной загрузки, поскольку Вам будет нужен он ниже.
    • Будет снова использован для последующих установок экземпляра Ubuntu.
    • Создайте или выберите маленькое (максимальные 512 МБ) раздел.
    • Стирание/формат как EXT4.
    • Нажмите "изменение" и смонтируйте его как /boot.
  6. Выберите или создайте корневой раздел для Ubuntu.
    • В моей системе это /dev/nvme0n1p33.
    • Обратите внимание на корневой путь раздела, поскольку Вам будет нужен он ниже.
    • Это будет стерто.
    • 5 ГБ для минимального, 25 + ГБ для полной установки.
    • Нажмите "изменение" и сделайте его "физическим томом для шифрования".
    • Выберите пароль, который не является тем же что касается других экземпляров.
  7. Найдите новый, разблокированный раздел, заканчивающийся _crypt.
    • В моей системе это /dev/mapper/nvme0n1p33_crypt.
    • Измените точку монтирования для укоренения /.
  8. Позвольте установщику закончиться, но не перезагрузить в конце выбором, "Продолжают тестировать".

Настроить refind для нового экземпляра.

  1. Войти chroot к новой операционной системе для внесения большего количества изменений.

    # NOTE: create temporary mount directories.
    sudo mkdir /mnt/bootpartition /mnt/ospartition
    
    # NOTE: Mount the newly created encrypted partition.
    sudo mount -o subvol=@ /dev/mapper/nvme0n1p33_crypt /mnt/ospartition
    sudo mount /dev/nvme0n1p22 /mnt/bootpartition
    
    # NOTE: Copy the boot files into the encrypted partition.
    # NOTE: Watch those trailing slashes! rsync is very sensitive to them.
    sudo rsync -aXAH /mnt/bootpartition/ /mnt/ospartition/boot/
    
    sudo mount /dev/nvme0n1p11 /mnt/ospartition/boot/efi
    sudo mount --bind /dev /mnt/ospartition/dev
    sudo mount --bind /proc /mnt/ospartition/proc
    sudo mount --bind /sys /mnt/ospartition/sys
    
    # NOTE: change root to the newly installed Ubuntu.
    sudo chroot /mnt/ospartition
    
  2. Править /etc/fstab и прокомментируйте строку для /boot. Другие записи корректны.
  3. Дополнительный: внесите другие изменения системного файла низкого уровня, такие как обходные решения для поврежденного drivers1.
  4. Создайте загрузочную EFI копию ядра (vmlinuz) и начальный электронный диск (initrd) для refind. Не забудьте заменять ubuntu-instance с чем-то собственным. Я использую "работу человечности" и подобный. Не используйте просто "человечность", поскольку она могла бы быть перезаписана установщиком Ubuntu.
    # NOTE: Choose your own per-instance directory name.
    sudo mkdir /boot/efi/EFI/ubuntu-instance/
    sudo cp /boot/vmlinuz* /boot/initrd* /boot/efi/EFI/ubuntu-instance/
    
  5. Искать /dev/nvme0n1p33, физический том для шифрования для этого экземпляра. Обратите внимание (или скопируйте в буфер обмена), UUID (но не PARTUUID).
    sudo blkid
    
  6. Подготовиться refindпараметры загрузки ядра экземпляра Ubuntu для зашифрованного раздела в refind_linux.conf. Создать /boot/efi/EFI/ubuntu-instance/refind_linux.conf от ниже шаблона, но с Вашим путем и UUID.
    "Boot with standard options"  "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro quiet splash"
    "Boot to single-user mode"    "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro single"
    "Boot with minimal options"   "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro"
    
  7. Выход chroot и перезагрузка. Не забудьте выбирать новое ядро в refind.
    exit
    sudo reboot
    

Очистка

Дополнительный. Это удалит неиспользованные параметры загрузки в refind. Мне нравится иметь в наличии их как резервное копирование, пока система не устойчива.

  • Удалите совместно использованный загрузчик Личинки Ubuntu любого остатка.
    # NOTE: The shared Ubuntu Grub EFI loader might be leftover from previous installations.
    #sudo rm -r /boot/efi/EFI/ubuntu/
    
  • Удалите файлы из неиспользованного раздела начальной загрузки.
    # NOTE: Optionally clean up files from the Ubuntu installer.
    #sudo mkdir /mnt/bootpartition
    #sudo mount /dev/nvme0n1p22 /mnt/bootpartition
    #sudo rm -r /mnt/bootpartition/*
    

Обслуживание после ядра или обновлений драйвера

Поскольку Ubuntu не знает о refind, обновления kernel+driver требуют ручного шага копии для vmlinuz+initrd.

  • После установки обновлений, но перед перезагрузкой, копируют новый vmlinuz+initrd с зашифрованного /boot к незашифрованному ESP ubuntu-instance как вышеупомянутый.
  • Если Вы забываете делать это, и система повредилась, или новые драйверы не загружались, загружались также:
    • Однопользовательский режим от refind путем выбора пользовательских параметров загрузки.
    • Установщик Ubuntu USB/DVD, и монтируется к временным местоположениям:
      • Зашифрованный диск, который содержит /boot.
      • ESP.
    • Скопируйте vmlinuz+initrd с Вашего /boot к ESP ubuntu-instance как вышеупомянутый.

Будущие улучшения

  • Если/когда существуют драйверы файловой системы EFI так refind может считать зашифрованные разделы LUKS, исследовать не хранение ядер на незашифрованном ESP. Это могло бы значительно упростить вышеупомянутую установку.
  • Выполнение ubiquity --no-bootloader установка пропусков shim-signed, таким образом, сторонние модули/драйверы DKMS (Nvidia и так далее) требуют руководства, расписывающегося за безопасную начальную загрузку. Это может быть сделано с помощью kmodsign для /lib/modules/x.y.z/updates/dkms/*.ko после каждого обновления ядра/драйвера. Более гладкая альтернатива должна установить shim-signed (включая части grub), который делает автоматическое подписание. Возможно, существует альтернатива, которая менее неряшлива?
  • Фигура, если обновления kernel+driver могут автоматически инициировать обновление ESP на экземпляр vmlinuz+initrd копия для refind.
  • Улучшите временное использование раздела начальной загрузки с одним из:
    • Настройте временный раздел начальной загрузки как зашифрованную область подкачки в каждом из экземпляров Linux.
    • Многократное использование ESP для временного файла /boot файлы. Не хотел добавленный риск уничтожения ESP путем случайного форматирования его или подобный, но мог бы работать точно также.

Вдохновение

Спасибо!

  • Ответ Dubinsky @Aleksandr на "полное шифрование диска Ubuntu с зашифрованной начальной загрузкой /".
  • Ответ @StefK на "Установку Ubuntu 12.04, не устанавливая Личинку".
  • Ответ Smith's @Rod на, "Как я устанавливаю две независимых установки Ubuntu на единственном жестком диске с UEFI?"
  • Намного больше ответов, статей, документации, записанной Roderick W. Smith, который является автором refind.
  • Документация по установке Ubuntu для настольного использования.

1 Этот Уэйленд плюс проблема с драйвером графики Nvidia поймал меня. Это вызывает черный экран после того, как диск был разблокирован. К счастью легко зафиксировать, и Уэйленд может быть восстановлен, когда-то обновил драйверы Nvidia, были установлены - просто не забывают копировать обновленный kernel+initrd в Ваш ESP.

1
ответ дан 7 December 2019 в 15:05

Другие вопросы по тегам:

Похожие вопросы: