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 / что-нибудь является избыточным. Часто он не включает в себя менеджер загрузки - для меню и прочего
— mikeserv

3
Это все еще то, что поставляется со Slackware. Это вряд ли крошечное сообщество.
— Бандрами

Ответы:


28

ELILO

Управление загрузчиками EFI для Linux: использование ELILO

Мне действительно трудно решить, какую часть этого скопировать + вставить, потому что все это действительно хорошо, поэтому я просто попрошу вас прочитать ее.

Род Смит

Автор и поддерживает как gdiskи rEFInd.

Но прежде чем сделать это, я бы хотел немного прокомментировать это. Приведенная выше ссылка на ELILO ведет на одну из многих страниц загрузки UEFI, которую вы найдете на rodsbooks.com, написанную Родом Смитом. Он опытный технический писатель, и если вы когда-нибудь гуглили тему загрузки UEFI и не читали что-то из его, это, вероятно, потому что вы пропустили несколько лучших результатов.

Linux UEFI загружается

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

В приведенной выше ссылке он упоминает загрузчик заглушек EFI ядра Linux - это то, что вы должны использовать, по моему мнению, так как это позволяет ядру linux вызываться непосредственно самой прошивкой. Независимо от того, что вы делаете, что- то выполняется встроенным программным обеспечением - и это звучит так grub. Если прошивка может напрямую загружать ваше ядро ​​OS, что хорошего в загрузчике? Микропрограмма UEFI монтирует раздел GPT в формате FAT, помеченный esp таблицей разделов, и выполняет путь, который он там сохранил, в качестве переменной загрузки UEFI во встроенном модуле флэш-памяти. Поэтому вы можете поместить ядро ​​linux в этот раздел FAT и сохранить его путь в этой загрузочной переменной. Вдруг ядро ​​становится своим Загрузчик.

Загрузчики

В системах UEFI загрузчики являются избыточными - ELILO включен.

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

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

Bootmanagers

Тем не менее, для простоты настройки может быть полезен некоторый посредник.

REFInd Род Смит запускает как приложение EFI - это относительно новая концепция. Это программа, которая выполняется с диска и возвращается в прошивку. Что делает rEFInd - это позволяет вам управлять меню загрузки и затем возвращать ваш выбор загрузки в микропрограмму для выполнения. Он поставляется с драйверами файловой системы UEFI - так, например, вы можете использовать загрузчик заглушки EFI ядра в не-FAT- разделе (например, текущем /boot). Он очень прост в управлении - если такая вещь вообще необходима - и добавляет простоту ядра исполняемой системы к удобству настраиваемого загрузчика.

Атомная косвенность

Ядру не нужны символические ссылки - оно может mount --bind.

Если на вашем пути есть какой-то путь, /где вы должны запретить символические ссылки, это так /boot. Сиротливая символическая ссылка /boot- это не та проблема, с которой вам когда-либо придется сталкиваться. Тем не менее, достаточно распространенной практикой является установка сложных косвенных сообщений в /bootнескольких дистрибутивах - даже если это ужасная идея - для обработки обновлений ядра на месте и / или нескольких конфигураций ядра.

Это проблема для систем EFI, не настроенных для загрузки драйверов файловой системы (например, поставляемых с пакетом rEFInd), поскольку FAT в целом является довольно глупой файловой системой и не понимает их.

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

Мой Конфиг

Однажды я написал набор инструкций и разместил здесь , но это выглядит так:

% 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. ЛИЛО работает для меня безупречно.


1

LILO по-прежнему можно использовать даже с BIOS UEFI. Обычно UEFI может загружать ядро ​​Linux напрямую. Это зависит от самого UEFI.

Однако, если вам нужен экран выбора загрузки, например, если вы загружаетесь в несколько ОС на одном компьютере, тогда может пригодиться небольшой загрузчик.

Я бы хотел вместо этого использовать EXTLINUX . Это вариант SYSLINUX, но он находится в extразделах -типа.

Прелесть EXTLINUX в ​​том, что, хотя он более расширяемый и имеет гораздо больше возможностей, чем LILO, он может быть таким же простым и активно поддерживаться.


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

@sourcejedi - ты не прав. Система EFI, в которой загружены надлежащие драйверы файловой системы EFI, может легко обрабатывать символические ссылки.
— mikeserv

По какой-то причине прямые ссылки на syslinux.com, по-видимому, запрещены.
— Полемон

@mikeserv Я знаю, но загрузка драйвера файловой системы показалась мне несколько неясной в большинстве случаев. Вам даже нужно установить какой-нибудь сценарий EFI (терминология?), Чтобы загрузить драйвер и затем ядро. О, и я держу пари, что никто не имеет подписей MS Secure Boot для этих драйверов, так что это еще один червячный код: с.
— sourcejedi

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

1

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

Самое последнее ядро ​​является символической ссылкой /boot/vmlinuzи initrd для /boot/initrd.img. Он обновляется пакетом ядра. Загрузчик указывает на те & разыменовывает символическую ссылку при каждой загрузке.

Так что вы вполне можете не получить вариант восстановления. В любом случае, это не самый проверенный вариант, поэтому еще лучше сохранить рабочий загрузочный диск :-).


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

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


тьфу. символические ссылки в / из /bootгрязного решения любой проблемы.
— mikeserv

Welp Lilo мертв (и Uboot устарел), так что да. Какую проблему вы имели в виду? Люди пока не используют FAT для / boot ... BootLoaderSpec - хороший проект, но пока его нет ... и тому есть веская причина (злые патенты, FLOSS-совместимая лицензия, предоставляемая только для взаимодействия EFI).
— sourcejedi

Это было хорошее редактирование.
— mikeserv
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.