Чи все-таки можна встановити Ubuntu на зовнішній жорсткий диск з UEFI?


9

Схоже, встановити Ubuntu на зовнішній жорсткий диск не можливо з UEFI, де, як і у MBR, не було великої різниці між зовнішнім і внутрішнім. Це правда чи це все-таки можливо?

Чи можливо навіть комбінувати обидва способи завантаження?

Відповіді:


12

Це фактично можливо .

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

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

Платформи: Legacy PC, комп'ютер на базі UEFI на базі 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тільки приклади , вибрані для роботи з частиною цієї відповіді.

    Встановіть зображення EFUB 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. Ви можете використовувати нано- редактор командного рядка, щоб все було просто.

    Встановіть зображення 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), з яким я тестував, може завантажуватися зі стандартного FAT32 ESP, навіть з 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, що показує обсяги та логотип 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.


Я не документував деталей. Але я зміг просто розділити мою флешку на gpt, створити розділ efi та скопіювати завантажувальні файли efi в розділ efi. Grub-mkimage створює grubx64.efi, який очікує певних шляхів для файлів, тому я просто скопіював структуру файлу зі свого встановлення в / boot / grub і додав grub.cfg із записом конфігурації до іншого grub.cfg в моєму / iso папку для циклу завантаження моїх ISO. Можливо, правильніше створити власний grubx64.efi із зображенням make, але копія працювала.
Олдфред

Я шукав високо і низько, намагаючись зрозуміти, як зробити частину "Додати ESP до існуючої установки з MBR". Я нервував це, але це спрацювало з першої спроби! Чудова відповідь!
Марк Е. Хааз

Я намагаюся додати можливість завантаження EFI до повної установки BIOS / MRR Ubuntu на USB, використовуючи Додати ESP до існуючої установки з частиною відповіді MBR . Я отримую "Помилка: файл /boot/не знайдено". Розділ grub.cfgESP вказує на правий UUID. Будь-які ідеї? Я був би радий написати нове запитання.
user68186

@ user68186 ви змогли це зробити?
BRabbit27

Мені вдалося встановити Ubuntu на зовнішній диск із Mac. При підключенні до Mac він завантажується правильно в Ubuntu. Однак при підключенні до машини Windows10 (xps 15 9560) у завантажувальних пристроях зовнішній жорсткий диск не відображається. Моя думка, що це пов'язано з УЄФІ. Чи може хтось підтвердити, чи правильно моя думка, а також якщо ця нитка - це те, що мені може знадобитися для завантаження з машини Windows?
BRabbit27
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.