Похоже, установка Ubuntu на внешний жесткий диск невозможна в UEFI, где, как и в MBR, не было большой разницы между внешним и внутренним. Это правда или все еще возможно?
Возможно ли объединить оба метода загрузки?
Похоже, установка Ubuntu на внешний жесткий диск невозможна в UEFI, где, как и в MBR, не было большой разницы между внешним и внутренним. Это правда или все еще возможно?
Возможно ли объединить оба метода загрузки?
Ответы:
Это на самом деле возможно .
Прежде чем продолжить, эти инструкции предназначены для пустых системных разделов EFI (ESP) и, вероятно, будут перезаписывать существующие файлы или работать не так, как ожидалось. По крайней мере, делать резервные копии!
Платформы: Legacy PC, компьютер под управлением UEFI, компьютер Apple
Вы должны следовать этим инструкциям из другой установки или с носителя.
Установите 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 к устаревшей установке на многораздельном диске GPT очень похоже на приведенное выше:
grub-efi-amd64-bin
пакет.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 (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 и выбрать правильный диск.
Чтобы быть как можно более точным, флаг загрузки не важен для GRUB, по умолчанию GRUB ищет UUID, чтобы найти подходящую файловую систему для загрузки. Установка флага загрузки или флага bios_grub в GParted обычно устанавливает тип (MBR) или GUID (GPT) для раздела.
Преимущество установки правильного типа или GUID, помимо правильной настройки, состоит в том, что эти разделы будут скрыты в файловом менеджере. Самый простой способ проверить и изменить типы и GUID - это использовать Disks ( gnome-disks
).
В качестве альтернативы вы можете использовать parted или gdisk:
В Википедии есть большой список GUID для GPT .
Эквивалентами командной строки в parted
соответствии с руководством являются parted $device set partition esp on
и parted $device set partition bios_grub on
.
/boot/
не найден». Раздел grub.cfg
ESP указывает на правильный UUID. Любые идеи? Я был бы рад опубликовать новый вопрос.