Можно ли установить Ubuntu на внешний жесткий диск с помощью UEFI?

Похоже, что установка Ubuntu на внешний жесткий диск невозможна с UEFI, где, как и с MBR, не было большой разницы между внешним и внутренним. Это правда или все еще возможно?

Можно ли даже объединить оба метода загрузки?

1 ответ

Решение

Это на самом деле возможно.

Прежде чем продолжить, эти инструкции предназначены для пустых системных разделов EFI (ESP) и, вероятно, будут перезаписывать существующие файлы или работать не так, как ожидалось. По крайней мере, делать резервные копии!

Добавление необходимых разделов для разных платформ

Платформы: Legacy PC, компьютер под управлением UEFI, компьютер Apple

Добавить ESP в существующую установку с MBR

Вы должны следовать этим инструкциям из другой установки или с живого носителя.

  1. Установите grub-efi-amd64-bin пакет. Это только установит необходимые ресурсы. Он не переключит вашу существующую установку в стиле MBR на UEFI и перевернет все с ног на голову.

  2. Сократите ваш раздел Ubuntu в GParted, чтобы освободить место для ESP. Рекомендуемые размеры для ESP варьируются от 100 МБ до 500 МБ, но для файлов, созданных в соответствии с приведенными ниже инструкциями, не потребуется более 2-5 мегабайт.

    Примечание: не должно иметь значения, где находится ваш ESP на диске, и сжатие раздела Ubuntu на несколько мегабайт от конца должно быть быстрым и безопасным. Сжатие в начале небезопасно. Однако следует предостеречь, что ваш ESP должен быть основным разделом, а не частью расширенного раздела или логического тома, номера разделов от 1 до 4 в порядке, числа выше указывают на расширенный раздел в таблицах разделов MBR.

    Выберите FAT32 в качестве файловой системы и установите флаг загрузки.

  3. Смонтируйте только что созданный ESP и корневую файловую систему, которую вы сократили:

    mkdir -p /mnt/esp
    mount $esp_device /mnt/esp
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Примечание: заменить $esp_device а также $root_device с соответствующими устройствами, например /dev/sdb2 а также /dev/sdb1, Точки крепления /mnt/esp а также /mnt/rootfs Это просто примеры, выбранные для работы с оставшейся частью этого ответа.

    Установите образ EFI GRUB и минимальный файл конфигурации с:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Обратите внимание, что $device это целое устройство, например /dev/sdb, а не раздел.

  4. Вот и все, мы уже сделали, но позвольте мне попытаться объяснить несколько вещей.

    Параметр --target x86_64-efi гарантирует, что образы и модули UEFI будут установлены по заданным путям. --removable установит образ UEFI в жестко заданный путь \EFI\BOOT\BOOT{arch}.EFI для съемных носителей, а не для конкретного пути распространения. Ваш grub.cfg в /boot/grub/ должен работать как с методами загрузки, так и с новой папкой с именем x86_64-efi теперь должен существовать рядом с i386-pc,

    Для полноты, это команда для несъемных носителей, которая записывает и использует записи NVRAM в платформе:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --bootloader-id "Ubuntu" $device
    

    Правильные установки UEFI включают линию, аналогичную приведенной ниже в /etc/fstab, но настройка работает без, и образ UEFI (аналог загрузчика MBR) обычно записывается / обновляется только во время установки ОС.

    UUID=1234-567F /boot/efi vfat defaults 0 1
    

Добавление ESP или GRUB-BBP в установку с GPT

Добавление ESP к устаревшей установке на многораздельном диске GPT очень похоже на приведенное выше:

  1. Установите grub-efi-amd64-bin пакет.
  2. Создайте раздел с файловой системой FAT32, как описано выше, изменив размер корневого раздела и установите boot флаг.
  3. Смонтируйте разделы и запустите grub-install Команда сверху, которая включает в себя --removable параметр.

Это также работает, если вы просто хотите загрузить существующую установку UEFI на другом компьютере.

Создание загрузочного раздела BIOS (BBP) для GRUB немного отличается:

  1. Установите grub-pc-bin пакет.

  2. Создайте раздел, аналогичный приведенным выше инструкциям, изменив размер корневого раздела и установите bios_grub флаг. Выберите не файловую систему и оставьте ее неформатированной.

  3. Отредактируйте файл конфигурации /etc/default/grub с административными правами и добавить GRUB_DEVICE=/dev/sdb6 к концу. замещать /dev/sdb6 с фактическим названием устройства вашего BBP. Вы можете использовать редактор командной строки nano, чтобы упростить задачу.

    Установите образ GRUB MBR на BBP с помощью:

    grub-install --boot-directory /mnt/test/boot/ --target i386-pc $device
    

    Вы можете удалить или закомментировать строку в /etc/default/grub и добавьте его к фактической установке.

Бонус: добавление раздела для Mac при установке с GPT

Я обнаружил, что очень новый Mac (Mac Mini A1347 EMC 2840), на котором я тестировал, мог загружаться со стандартного ESP FAT32, даже с MBR! В любом случае, здесь мы идем:

  1. Установите grub-efi-amd64-bin, hfsprogs, mactel-boot а также mactel-boot-logo (необязательно) пакеты. Вам необходимо включить репозитории Universe ( Как включить репозиторий "Universe" из командной строки?) И добавить текущий PPA поддержки Mactel (для получения более подробной информации см. Группу поддержки Mactel), чтобы установить все из них.

  2. Создайте раздел с файловой системой HFS+, как описано выше, изменив размер корневого раздела. На этот раз нам нужно больше места на несколько мегабайт, поэтому удвойте размер ESP, если раньше у вас было всего 5 мегабайт или меньше. Флаг не требуется.

  3. Смонтируйте разделы:

    mkdir -p /mnt/esp-mac
    mount $esp-mac_device /mnt/esp-mac
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Примечание: я выбрал $esp-mac_device а также /mnt/esp-macчтобы избежать конфликтов.

    Запустить grub-install Команда, которая включает в себя --removable параметр:

    grub-install --efi-directory /mnt/esp-mac --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Наконец, настройте раздел так, как того ожидает Mac:

    sudo hfs-bless /mnt/esp-mac/EFI/BOOT/bootx64.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/bootx64.efi /mnt/esp-mac/System/Library/CoreServices/boot.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/grub.cfg /mnt/esp-mac/System/Library/CoreServices/grub.cfg
    sudo cp -v /usr/share/mactel-boot/SystemVersion.plist /mnt/esp-mac/System/Library/CoreServices/SystemVersion.plist
    sudo cp -v /usr/share/mactel-boot-logo/ubuntu.icns /mnt/esp-mac/.VolumeIcon.icns
    echo "Dummy kernel for booting" | sudo tee /mnt/esp-mac/mach_kernel
    

    Чтобы загрузить Ubuntu с внешнего носителя на Mac, вам просто нужно нажать клавишу выбора или Alt на клавиатурах Windows и выбрать нужный диск.

    Mac Startup Manager с томами и логотипом Ubuntu

О флагах разделов, кодах типов и GUID

Чтобы быть как можно более точным, флаг загрузки не важен для GRUB, по умолчанию GRUB ищет UUID, чтобы найти подходящую файловую систему для загрузки. Установка флага загрузки или флага bios_grub в GParted обычно устанавливает тип (MBR) или GUID (GPT) для раздела.

Преимущество установки правильного типа или GUID, помимо правильной настройки, состоит в том, что эти разделы будут скрыты в файловом менеджере. Самый простой способ проверить и изменить типы и GUID - это с помощью дисков (gnome-disks).

снимок экрана с дисками и разделами в gnome-дисках

снимок экрана, показывающий диалог редактирования раздела в gnome-дисках

В качестве альтернативы вы можете использовать parted или gdisk:

  • 0xef - код типа для ESP в MBR для использования с fdisk
  • ef00 - это сокращенный код типа для ESP в GPT для использования с gdisk
  • ef02 - это сокращенный код типа для BBP в GPT для использования с gdisk

В Википедии есть большой список GUID для GPT.

Эквиваленты командной строки в parted согласно инструкции parted $device set partition esp on а также parted $device set partition bios_grub on,

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