GRUB - найкраще завантажувальне рішення? Чи є простіша альтернатива?


26

Я мав з цим досить поганий досвід GRUB2. Я міг би сказати (і сказав) деякі противні речі щодо його проектування та розробки. Мені особливо не подобаються його засоби оновлення: з будь-якої причини він повинен напівавтоматично оновлювати декілька сценаріїв - один опосередковано через інший у ланцюжку - для кожного оновлення ядра - або багато інших незначних (і, здавалося б, не пов'язаних) змін конфігурації.

Це прямо протиставляється попередньому досвіду, який я мав LILO- до якого я серйозно розглядаю питання про повернення - оскільки у мене жодних проблем з цим не виникало, а його конфігурація була досить простою. По-перше, наскільки я пам’ятаю, мені довелося лише оновити (а точніше, він лише коли-небудь оновлював) єдиний, просто керований текстовий файл конфігурації на кожне оновлення ядра.

То як LILO працює на сучасному обладнанні з сьогоднішніми ядрами? Як працює GRUB? Як інші завантажувачі? Чи потрібно мені виконувати якісь передумови, чи мова йде лише про запис конфігураційного файлу та виконання liloкоманди, як я з любов'ю пам’ятаю його за старих часів? Чи оновлює пакет ядра (Debian / Ubuntu) LILO, як це робиться з GRUB2?


Залежно від того, чи є у вас тип прошивки EFI, ви можете обійтися без того, якби вам сподобалось і завантажте ядро ​​Linux з прошивки. Але ви все одно можете використовувати LILO разом із EFI (eLILO у будь-якому випадку) або BIOS. Він знаходиться в дереві джерела ядра і підтримується. Якщо ви хочете знати, як це зробити з EFI, я можу відповісти на це, але я не маю особистого досвіду роботи з LILO, просто знайте, що воно зберігається і працює.
mikeserv

Я пам’ятаю, що використовував LILO близько 2010 або 2011 року на тодішньому Core 2 Duo. Я думаю, це все ще має працювати (розглядаючи UEFI тощо), архітектура ПК не так сильно змінилася.
Ренан

@mikeserv, будь ласка, напишіть усе, що ви знаєте про дует LILO-EFI. Будь-яка інформація щодо цієї теми вітається.

Я на насправді написав то , що ви могли б виявитися корисними раніше тут , що угоди в найближчий час з відмінностями між підтримкою UEFI / BIOS. Справа в тому, що uefi включає завантажувач, тому grub / lilo / що-небудь зайве. Що часто не включає диспетчер завантаження - для меню та інше - тому я рекомендую вам зайти на rodsbooks.com/refind
mikeserv

3
Це все, що постачається з Slackware. Це навряд чи крихітна громада.
Бандрамі

Відповіді:


28

ELILO

Керування завантажувачами EFI для Linux: Використання ELILO

Мені дуже важко вирішити, яку частину копіювати + вставити, тому що це все дуже добре, тому я просто попрошу вас прочитати її.

Род Сміт

Автор та підтримує gdiskі rEFInd.

Але перш ніж зробити це, я хотів би трохи прокоментувати це. Посилання ELILO вище - це одна з багатьох сторінок завантаження UEFI, яку ви знайдете на rodsbooks.com, написаному Родом Смітом. Він є досвідченим технічним письменником, і якщо ви коли-небудь гуглили тему завантаження та забиття УЄФІ, не читаючи щось його, це, швидше за все, ви пропустили кілька перших результатів.

Linux UEFI завантаження

В основному ядро ​​Linux може бути безпосередньо виконане прошивкою.

У посиланні вище він згадує завантажувач заглушок EFI ядра Linux - це те, що ви повинні використовувати, на мій погляд, оскільки це дозволяє виклик ядра Linux безпосередньо самою прошивкою. Незалежно від того, що ви щось робите , виконується прошивка - і це здається, що щось таке є grub. Якщо вбудована програма може безпосередньо завантажувати ваше ядро ​​os, яка корисна завантажувач? Прошивка UEFI монтує формат FAT, відформатований GPT-розділом, позначений esp , таблицею розділів і виконує там шлях, який він зберег у вигляді змінної завантаження UEFI у вбудованому модулі флеш-пам’яті. Отже, одне, що ви можете зробити, - це поставити ядро ​​Linux на цей розділ FAT і зберегти його шлях у цій змінній завантаження. Раптом ядро ​​є власним завантажувач.

Завантажувачі

У системах UEFI завантажувачі завантажуються надмірно - включено ELILO.

Проблема завантажувачів, призначених для вирішення, полягала в тому, що системи BIOS читають лише в першому секторі завантаженого флагового розділу та виконують його. З ядром 512 байтів зробити щось значуще важко, тому загальне, що потрібно зробити, - це написати мініатюрну утиліту, яка могла б змонтувати файлову систему, де ви зберігали фактичне ядро та завантажували його.

Насправді, 512 байт часто було недостатньо навіть для завантажувачів. grub, наприклад, насправді ланцюг завантажується перед тим, як коли-небудь завантажувати ваше ядро, оскільки він заклинає свою другу стадію в порожньому просторі між завантажувальним сектором та першим сектором вашої файлової системи. Це свого роду брудний злом - але це спрацювало.

Менеджери завантаження

Для легкої конфігурації, деякі переходи між ними можуть бути корисними.

Що rEFInd Рід Сміт робить запуск як EFI додатки - це відносно нова концепція. Це програма, яка виконується з диска - і повертається до - мікропрограмного забезпечення. Те, що робить REFInd, дозволяє вам керувати меню завантаження, а потім повертає свій вибір завантаження до програмного забезпечення для виконання. Він поставляється з драйверами UEFI файлової системи - так, наприклад, ви можете використовувати EFI-заглушку завантажувач ядра на знежиреному розділу (наприклад , в якості струму /boot). Управляти мертвим просто - якщо така річ взагалі необхідна - і це додає простоту виконуваного ядра системи для зручності налаштованого завантажувача.

Атомний непрямий

Ядро не потребує символьних посилань - воно може mount --bind.

Якщо на вашому шляху є якийсь шлях, /де вам слід заборонити символізувати, це так /boot. Осиротіла симпосилання /boot- це не проблема, з якою ви коли-небудь мали б вирішити проблеми. Тим не менш, це достатньо поширена практика для налаштування детальних непрямих напрямків за /bootдопомогою декількох дистрибутивів - навіть якщо це жахлива ідея - для обробки оновлень ядра та / або декількох конфігурацій ядра.

Це проблема для систем EFI, які не налаштовані на завантаження драйверів файлової системи (такі, які надаються з пакетом rEFInd), оскільки FAT є загалом дурною файловою системою, і вона їх не розуміє.

Я особисто не використовую драйвери файлової системи UEFI, надані з rEFInd, хоча більшість дистрибутивів включає пакет rEFInd, який можна встановити через менеджер пакунків і забути про використання лише їх власного жахливого /bootконфігураційного конфігурації та упакованих драйверів файлової системи UEFI rEFInd.

Моя конфігурація

Я колись написав набір інструкцій на нього і розмістив його тут , але це виглядає так:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Тож я просто помістив ці два рядки в мою /etc/fstabвказівку на папку, в якій я маю намір містити нову інсталяцію Linux, /bootі я майже переживаю за все. Я також повинен зробити:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

Крім встановлення refind-efiпакету через pacmanперший, це все, що потрібно для установки стільки окремих установок / конфігурацій, скільки я хочу. Зауважте, що більшість цього рядка вище складається з специфічних для btrfs параметрів монтажу, вказаних як параметри ядра. Більш типовий /boot/refind_linux.conf, мабуть, виглядатиме так:

"Menu Entry" "root=/dev/sda2"

І це все, що потрібно.

rodsbooks.com

Якщо ви все ще хочете ELILO, ви можете знайти інструкції з установки за посиланням вище. Якщо ви хочете rEFInd, ви знайдете посилання на нього в першому пункті там. Якщо ви хочете виконати будь-яку конфігурацію завантаження UEFI, спочатку прочитайте rodsbooks.com .


3

Я використовую LILO замість GRUB2. Якщо чесно, то це був не мій вибір - встановлення GRUB2 не вдалося встановити Debian Live CD, але тоді була можливість встановити LILO, що вдалося. У мене 2-річний ноутбук під керуванням Debian Stable. LILO працює для мене бездоганно.


1

LILO все ще є корисним, навіть з UEFI BIOS. Зазвичай UEFI може завантажувати ядро ​​Linux безпосередньо. Однак це залежить від самого УЄФІ.

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

Однак я б подумав використовувати EXTLINUX . Це варіант SYSLINUX, але він знаходиться у extрозділах типу.

Краса EXTLINUX полягає в тому, що хоча він розширюється і має набагато більше варіантів, ніж LILO, він може бути таким же простим і активно підтримується.


-1 Пакет ядра (deb / ubuntu) не оновлюватиме EFI. (EFI не буде читати файли, що підтримують символьні посилання, тому ви не можете просто використовувати мою відповідь). +1 для EXTLINUX як новішої альтернативи LILO. Ваше посилання показує, що він підтримує декілька інших файлових систем, що є хорошим знаком. Підтримка EFI виглядає дещо новою, де це необхідно.
sourcejedi

@sourcejedi - ти помилився. Система EFI, на яку завантажуються належні драйвери файлової системи EFI, може легко обробляти символьні посилання.
mikeserv

Чомусь посилання безпосередньо на syslinux.com видаються забороненими.
полемон

@mikeserv Я знаю, але завантаження драйвера файлової системи вразило мене як дещо незрозуміле для більшості випадків. Вам навіть знадобиться встановити якийсь сценарій EFI (термінологію?), Щоб завантажити драйвер і потім ядро. О, і я думаю, що ніхто не має захищених підписів завантажувача MS для цих драйверів, тож це черговий черв'як: p.
sourcejedi

@sourcejedi - чи читайте, будь ласка, відповідь, яку я написав тут? І так - вам знадобляться певні засоби для завантаження водія.
mikeserv

1

Я не пам'ятаю жодного еквівалента update-grub. Однак є стара система, яка все ще підтримується в Debian. (Він використовується для uboot на моєму сервері ARM).

Найновіше ядро ​​є посиланнями на /boot/vmlinuzта initrd до /boot/initrd.img. Він оновлюється пакетом ядра. Завантажувач вказується на ті, що відмінюють симпосилання на кожному завантаженні.

Тож ви, можливо, не отримаєте можливість відновлення. У будь-якому випадку це не буде найбільш перевіреним варіантом, тому ще доцільніше зберігати робочий завантажувальний диск навколо :-).


Оновлення: Якщо ваша мета - це що-небудь, крім буквального запуску LILO на сучасному комп’ютері, можливо, є кращі альтернативи, як описано в інших відповідях тут :).

Сказане має сенс лише для оригінальної версії LILO на основі BIOS. Сучасне обладнання забезпечить сумісність BIOS поверх EFI, якщо ви не хочете захищати завантаження або завантажувати Windows 8 з того самого меню. Теоретично ви можете змусити ELILO працювати, але він не підтримує захищене завантаження або завантаження Windows 8. ELILO більше не має сенсу, так що я гадаю, що позаду цього не так багато спільноти.


тьфу. символьні посилання в / з /boot- це брудне рішення будь-якої проблеми.
mikeserv

welp lilo мертвий (і застарілий uboot), так що так. Яка проблема ви мали на увазі? Люди ще не використовують FAT для / завантаження ... BootLoaderSpec - це хороший проект, але насправді ще не існує ... і для цього є вагомі причини (злі патенти, ліцензія, сумісна з FLOSS, надана лише для інтеропа EFI).
sourcejedi

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