Можно ли установить 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
,