Можно ли установить Ubuntu на внешний жесткий диск с помощью UEFI?
Похоже, что установка Ubuntu на внешний жесткий диск невозможна с UEFI, где, как и с MBR, не было большой разницы между внешним и внутренним. Это правда или все еще возможно?
Можно ли даже объединить оба метода загрузки?
1 ответ
Это на самом деле возможно.
Прежде чем продолжить, эти инструкции предназначены для пустых системных разделов EFI (ESP) и, вероятно, будут перезаписывать существующие файлы или работать не так, как ожидалось. По крайней мере, делать резервные копии!
Добавление необходимых разделов для разных платформ
Платформы: Legacy PC, компьютер под управлением UEFI, компьютер Apple
Добавить ESP в существующую установку с MBR
Вы должны следовать этим инструкциям из другой установки или с живого носителя.
Установите
grub-efi-amd64-binпакет. Это только установит необходимые ресурсы. Он не переключит вашу существующую установку в стиле MBR на UEFI и перевернет все с ног на голову.Сократите ваш раздел Ubuntu в GParted, чтобы освободить место для ESP. Рекомендуемые размеры для ESP варьируются от 100 МБ до 500 МБ, но для файлов, созданных в соответствии с приведенными ниже инструкциями, не потребуется более 2-5 мегабайт.
Примечание: не должно иметь значения, где находится ваш ESP на диске, и сжатие раздела Ubuntu на несколько мегабайт от конца должно быть быстрым и безопасным. Сжатие в начале небезопасно. Однако следует предостеречь, что ваш ESP должен быть основным разделом, а не частью расширенного раздела или логического тома, номера разделов от 1 до 4 в порядке, числа выше указывают на расширенный раздел в таблицах разделов MBR.
Выберите FAT32 в качестве файловой системы и установите флаг загрузки.
Смонтируйте только что созданный 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, а не раздел.Вот и все, мы уже сделали, но позвольте мне попытаться объяснить несколько вещей.
Параметр
--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 очень похоже на приведенное выше:
- Установите
grub-efi-amd64-binпакет. - Создайте раздел с файловой системой FAT32, как описано выше, изменив размер корневого раздела и установите
bootфлаг. - Смонтируйте разделы и запустите
grub-installКоманда сверху, которая включает в себя--removableпараметр.
Это также работает, если вы просто хотите загрузить существующую установку UEFI на другом компьютере.
Создание загрузочного раздела BIOS (BBP) для GRUB немного отличается:
Установите
grub-pc-binпакет.Создайте раздел, аналогичный приведенным выше инструкциям, изменив размер корневого раздела и установите
bios_grubфлаг. Выберите не файловую систему и оставьте ее неформатированной.Отредактируйте файл конфигурации
/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! В любом случае, здесь мы идем:
Установите
grub-efi-amd64-bin,hfsprogs,mactel-bootа такжеmactel-boot-logo(необязательно) пакеты. Вам необходимо включить репозитории Universe ( Как включить репозиторий "Universe" из командной строки?) И добавить текущий PPA поддержки Mactel (для получения более подробной информации см. Группу поддержки Mactel), чтобы установить все из них.Создайте раздел с файловой системой HFS+, как описано выше, изменив размер корневого раздела. На этот раз нам нужно больше места на несколько мегабайт, поэтому удвойте размер ESP, если раньше у вас было всего 5 мегабайт или меньше. Флаг не требуется.
Смонтируйте разделы:
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 и выбрать нужный диск.

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


В качестве альтернативы вы можете использовать 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,