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

Ответы:

12

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

Прежде чем продолжить, эти инструкции предназначены для пустых системных разделов 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 - это использовать Disks ( 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.

LiveWireBT
источник
Я не документировал детали. Но смог просто разбить мою флешку на gpt, создать раздел efi и скопировать загрузочные файлы efi в раздел efi. Grub-mkimage создает grubx64.efi, который ожидает определенные пути для файлов, поэтому я просто скопировал файловую структуру из моей установки в / boot / grub и добавил grub.cfg с записью configfile в другой grub.cfg в моем / iso папка для зацикливания загрузки моего ISO. Возможно, правильнее было бы создать свой собственный grubx64.efi с образом make, но копирование работало.
oldfred
Я искал высоко и низко, пытаясь выяснить, как выполнить часть «Добавить ESP в существующую установку с MBR». Я нервничал по этому поводу, но это сработало с первой попытки! Отличный ответ!
Марк Э. Хаас
Я пытаюсь добавить возможность загрузки EFI к полной установке Ubuntu через USB с помощью BIOS / MRR, используя команду « Добавить ESP к существующей установке с MBR» . Я получаю «Ошибка: файл /boot/не найден». Раздел grub.cfgESP указывает на правильный UUID. Любые идеи? Я был бы рад опубликовать новый вопрос.
user68186
@ user68186 ты смог это сделать?
BRabbit27
Я смог установить Ubuntu на свой внешний диск с Mac. При подключении к Mac он действительно загружается в Ubuntu. Однако при подключении к машине Windows10 (xps 15 9560) в загрузочных устройствах внешний жесткий диск не появляется. Я догадываюсь, что это из-за UEFI. Может ли кто-нибудь подтвердить, правильно ли мое предположение, а также, является ли этот поток тем, что мне может потребоваться для загрузки с компьютера Windows?
BRabbit27