Чи можливий гібрид Linux-USB Stick для UEFI та застарілих BIOS?


14

моя ідея полягає у створенні USB-Boot-Stick з Lubuntu, який може завантажуватися на старшому ноутбуку BIOS та новіших системах UEFI.

Це було б досить просто, коли Stick буде налаштований як застарілий завантажувальний пристрій, але я хочу, щоб це був пристрій, що підтримує UEFI.

  1. Це має навіть сенс ?! Або я зрозумів, що концепція UEFI жахливо неправильна?
  2. При необхідності можуть бути дві різні установки Linux (одна для UEFI, одна для застарілих, але обидві на одному диску)
  3. Завантажте GPT-пристрій зі застарілим біосом - це буде працювати?

Я не можу зрозуміти, я можу бути просто кращою ідеєю мати окремий застарілий завантажувальний накопичувач Linux, але мені цікаво вивчити межі :)

Отже, чи можлива моя ідея про гібридний linux-uefi-boot-usb-stick, який би працював із застарілими біосами?


(3), мабуть, можливо для Linux з grub http://www.rodsbooks.com/gdisk/booting.html

Крім того, у мене на цій палиці готовий розділ EF00, окрім Swap, Fat32 та двох розділів Ext4.


(1) здається, що це теж можливо http://www.rodsbooks.com/bios2uefi/

Ця інструкція, однак, починається з 2012 року, минуло певний час - чи є у когось легкий робочий приклад?


Для інших дослідників цієї теми:

Завантаження Windows 7 з диска GPT на материнській платі, що не має EFI Чи є спосіб завантаження Windows 7/8 за допомогою BIOS на GPT?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


ОНОВЛЕННЯ:

Мені вдалося створити частину UEFI, що включає захищену настройку завантаження за допомогою rEFInd.

Дотримуючись наданих порад, я ddскопіював gptmbr.binна свій накопичувач, який зараз, здається, робить хоч щось у BIOS-системі: "Це не завантажувальний диск"

Однак я дотримувався поради та встановлював pmbrпрапор для диска та legacy bootпрапор gpt - все-таки отримую цю помилку, будь-які ідеї?

Мій розділ ESP - це другий розділ на диску і налаштовується з файлами efi.

Налаштування:

  • 64 Гб місця
  • GPT Partitiontable
  • На диску встановлено прапор pmbr
  • Перший розділ починається з 16MiB і становить близько 45 Гб, основний жирний32 для даних
  • Другий розділ починається близько 45 ГБ і є системою EFI (fat32) з робочою установкою rEFInd
  • 3-й - 5-й розділ - це домашня сторінка (ext4), swap та root (ext4) мого робочого Lubuntu 14.04.1

Використовуючи, ddя скопіював gptmbr.binсвій зібраний 6.02 Syslinux на перші 440 байт.

Під розділеним 3.2 я бачу, що мій розділ 2 має а bootта legacy_bootпрапор.

Під час завантаження я не знайшов завантажувального диска - якщо я встановив свій 5-й замість другого розділу, legacy_bootя отримаю відсутніх ОС

Воно живе!

(Оскільки моє старе питання було видалено /ubuntu//q/516730/319747 )


Я здогадуюсь, що мені доведеться скопіювати деякі *.c32та інші файли в папку syslinux вісімк на моєму EFI (де ?!) або на моєму кореневому розділі ( /boot/syslinux?!), Щоб змусити його працювати - я прав? Які файли є важливими?

Далі, мабуть, мені знадобиться і цей syslinucx.cfgфайл - правда?


Моєю метою було б принаймні пряме завантаження системи lubuntu на кореневому розділі ext4.

Оновлення:

Хоча я не маю поняття, чому я це зрозумів, але не з ручною установкою.

  • pmbrпрапор був поганим і заборонив мою систему UEFI від завантаження палиці , як UEFI
  • legacy_bootпрапор був необхідний для мого 5 - я розділу (Linux кореневого)
  • Мені довелося користуватися extlinux --install /path/to/root/parition
  • Мені довелося створити syslinux.cfgпапку syslinux під завантаженням мого кореневого розділу

Я все це робив на другій меншій палиці, потім спробував скопіювати лише папку syslinux, але не пощастило - extlinux --installздається, це обов’язково.

Хтось знає, що саме extlinux --installробить? Чи можна це зробити вручну або як ще можна встановити нову версію на зразок 6.02, не встановлюючи її на вашу систему?

Зробив палицю, що працює з розділами, згаданими на BIOS, UEFI та UEFI SecureBoot, пекло їзди, багато чого навчився, ледь не вбив 2 ТБ з розлукою, будь обережним і удачі.


ваше посилання порушено .. у вас є ваша історія десь ще? Я хотів би зробити те саме. Спасибі.
pvinis

1
@pvinis спасибі за інформацію, я зливаю питання / результат з askubuntu сюди, як його видалили
Jook

Відповіді:


11

Це можливо, і це дуже часто робиться як із зовнішніми USB-накопичувачами, так і з внутрішніми накопичувачами.

Щодо типів таблиць розділів:

  • Для BIOS зазвичай не потрібна таблиця розділів. Його цікавить лише частина коду завантажувального коду, яка є першими 440 байтами вашого MBR. (Хоча є і винятки. Деякі реалізації BIOS насправді роблять зрив, якщо вони не можуть знайти MBR з одним із звичайних типів розділів. Сподіваємось, вони рідкісні.)

    Таблиця розділів GPT фізично не замінює MBR - вона завжди починається в секторі 1, тоді як MBR знаходиться в секторі 0 - тому диск може мати обидва. Насправді, більшість GPT дисків у є «захисний MBR» , що містить тільки один розділ , який охоплює весь диск, щоб запобігти старі MBR тільки розбиття на розділи інструментів від випадкового знищення даних.

    Таким чином, ви можете встановити, наприклад, завантажувальний сектор Syslinux у свій MBR, і він завантажиться. (  syslinux-install_updateСценарій зробить це за вас, але ви можете шукати gptmbr.binв своєму пакеті syslinux, щоб зробити це вручну.)

    Так само, як "активний" прапор на розділах MBR, Syslinux шукатиме прапор "застарілого завантажувального BIOS" на розділах GPT (біт 2 - специфікація UEFI 2.4, розділ 5.3.3, таблиця 20); Згаданий вище сценарій також встановлює цей прапор автоматично, якщо у вас встановлено sgdisk(від gptfdisk).

    GRUB також можна використовувати, але це також трохи більше дратує. Оскільки GRUB 2 хоче "вбудувати" частини себе в традиційно невикористані сектори 1-62, це перезаписає GPT, який зберігається в тому самому місці. Тому вам може знадобитися створити виділений розділ розміром 2-4 Мб і позначити його як завантажувальний BIOS, щоб grub-installвін знайшов собі місце вбудовування.

  • З іншого боку, специфікація UEFI робить потрібна підтримка типів MBR розділів (розділ 12.3.1) і привласнити тип MBR розділу 0xEFв системний розділ EFI (розділ 5.2.2).

    Отже, якщо ви з якихось причин не можете змусити ваш диск працювати з GPT, ви все одно можете створити системний розділ EFI на MBR, і він буде використовуватися до тих пір, поки у ньому є правильна файлова система та всі необхідні файли (розділ 12.3.1.3):

    Для знімних мультимедійних пристроїв повинен бути лише один системний розділ, сумісний з UEFI, і цей розділ повинен містити визначений UEFI каталог у кореневій директорії. Каталог буде названий EFI. Усі завантажувачі ОС та додатки будуть зберігатися у підкаталозі, який EFIназивається нижче BOOT. Для кожної підтримуваної архітектури процесора в BOOTкаталозі повинно бути тільки одне виконуване зображення EFI . Щоб знімні носії могли завантажуватися за допомогою EFI, вони повинні бути створені відповідно до правил, викладених у розділі 3.4.1.1.

Що стосується операційних систем, Linux, як правило, не хвилює ні найменшого біту щодо того, чи він завантажується з BIOS сьогодні та з UEFI завтра. Мені довелося перезавантажити свій ноутбук з режиму UEFI в режим "сумісності BIOS" і назад, можливо, сто разів цього тижня, намагаючись знайти помилку в підтримці UEFI 3.17 ...


Зауважте, що стаття "Перетворення BIOS в UEFI" - це зовсім інша річ. В ньому описано, як встановити сам UEFI - реалізацію UEFI під назвою "DUET" - запустити з системи, що використовується лише для BIOS. Це не має нічого спільного з завантаженням операційної системи безпосередньо з BIOS.


+1 - syslinux_install Я розгляну це, дякую за підтвердження, заспокоєння та новий вклад
Jook

Я дотримувався ваших порад, але я затримався з налаштуваннями, моє, mbrздається, нормально, але не знаходить свого EFI Systemрозділу. Чи проблема в тому, що це другий розділ на диску, який починається близько 45 Гб на диску? Чи потрібно мені налаштовувати спектральний розділ на ІФІ на додаток до роботи там, де працює інший EFI?
Джок

Зрозуміло :) Так, спасибі! syslinux дуже приємний і привів мене до gPxe та plopkexec, які я ще раз вивчу. Для будь-яких інших дослідників: askubuntu.com/q/516730/319747
Джок

2

Так, це можливо.

Основна ідея полягає в тому, щоб розділити GPT своїм USB-накопичувачем так:

  1. Завантажувальний розділ BIOS (тип GPT 1686148-6449-6E6F-744E-656564454649) - 1 МіБ, відсутність файлової системи
  2. Розділ системи EFI (тип GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B) - файлова система VFAT 200 MiB
  3. Завантажувальний розділ Linux (тип GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - файлова система 1 Гб, ext4
  4. Коренева / домашня файлова система Linux (тип GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - залишок місця, файлова система XFS або Btrfs

Цей розділ дозволяє завантажувати системи Legacy, оскільки у GPT все ще є місце для MBR (з міркувань зворотної сумісності), а Grub2 має достатньо місця для встановлення середньої стадії в завантажувальний розділ BIOS. Спадкові BIOS не переймаються схемою розділення, а ядро ​​Grub2 / Linux не має проблем із розумінням GPT у застарілих системах.

У системах UEFI прошивка UEFI ігнорує MBR і використовує системний розділ EFI в якості точки входу.

Наприклад, із Fedora в основному вам потрібно зробити наступне:

Переконайтесь, що під файловою системою Linux Boot встановлено /bootі що під файловою системою розділів системи EFI /boot/efi.

(Повторно) Встановіть як застарілі, так і завантажувачі UEFI:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(Знову) Створіть файли конфігурації grub як для спадщини, так і для завантаження UEFI:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

В залежності від того , ваша система завантажується в спадок або в режимі UEFI , ви повинні встановити або перший або другий файл і замінити (linux|initrd)16з (linux|initrd)efiабо навпаки.

Встановіть grub в MBR:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

Вуаля.


PS: Я написав сценарій забезпечення, який реалізує цей гібридний підхід і, таким чином, може бути використаний для автоматичного створення такого USB-накопичувача.
maxschlepzig
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.