Как загрузить Linux с помощью extlinux

РЕДАКТИРОВАТЬ: просто добавив мои два цента после того, как этот вопрос становится "популярным". Я был большим поклонником grub потому что он был в состоянии загрузить все, что я использовал. Однако когда grub2 пришел, мне очень не нравится, потому что это

  • сам по себе огромный
  • оставь кучу мусора на моем /boot папка, что 99,9% для меня бесполезны
  • "расширенный" синтаксис слишком сложен для меня
  • попробуйте загрузить UEFI, используя grub2 действительно королевская пита
  • Я был в состоянии использовать grub как мой загрузчик CD, но я не знаю, если grub2 могу это сделать или нет - мне все равно, потому что я нашел лучшую альтернативу.

Экосистема syslinux (включая extlinux) теперь загружает все, что я использую, CD/DVD, FAT, Ext2/3/4 и даже Btrfs. Кроме того, он обрабатывает реле MBR/PBR или GPT без заминки. Он небольшой, и поддерживает универсальный синтаксис по всем направлениям. Extlinux (syslinux) в настоящее время - мое выбранное решение для загрузки всего, что я использую.

Теперь вернемся к ОП.

Кто-нибудь знает, как правильно загрузить Linux с extlinux?

Я исчерпал свой поиск в Google, но все еще не могу понять, как правильно настроить extlinux загрузить Linux. Все найденные хиты говорят о редактировании/boot/extlinux/extlinux.conf файл напрямую. However, there is a big warning inside it that discourages me doing so:

## /boot/extlinux/extlinux.conf
##
## IMPORTANT WARNING
##
## The configuration of this file is generated automatically.
## Do not edit this file manually, use: extlinux-update


default l0
prompt 1
timeout 50

include themes/debian/theme.cfg

Я бегал extlinux-update или же extlinux -update in all sorts of ways a gazillion time but the file still remains the same. The problem is, this file won't boot anything!

If I edit it myself, and run extlinux-update again, then BOOM, it gets back to the above boot-nothing version again.

Anyone knows how to properly setup extlinux under Ubuntu to boot it (without directly editing extlinux.conf)?

This is the extlinux from latest Ubuntu Trusty BTW:

% apt-cache policy extlinux
extlinux:
Installed: 3:4.05+dfsg-6+deb8u1
Candidate: 3:4.05+dfsg-6+deb8u1
Version table:
*** 3:4.05+dfsg-6+deb8u1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
100 /var/lib/dpkg/status

3 ответа

Решение

Итак, как вы и хотели, вот абсолютные минимальные шаги для установки extlinux:

sudo apt-get install extlinux

sudo extlinux --install /boot/extlinux

И это сделал это. Не могу поверить, но это сработало. Итак, вот дополнительная информация: Моя система (uname)

3.13.0-24-generic (Kernel)
#46-Ubuntu SMP .. (Kernel version)
i686 (Processor and machine)

И

apt-cache policy extlinux
extlinux:
  Installed: 3:4.05+dfsg-6+deb8u1
  Candidate: 3:4.05+dfsg-6+deb8u1
  Version table:
 *** 3:4.05+dfsg-6+deb8u1 0
        500 http://de.archive.ubuntu.com/ubuntu/ trusty/universe i368 Packages
        100 /var/lib/dpkg/status

/Boot/extlinux/extlinux.conf

default l0
prompt 1
timeout 50

include themes/debian/theme.cfg

Я думаю, что это так же, как у вас. И я не думаю, что тема Debian будет меняться. Так вот мой конкретный linux.cfg:

label l0
    menu label Ubuntu GNU/Linux, kernel 3.13.0-24-generic
    linux /vmlinuz-3.13.0-24-generic
    append initrd=/initrd.img-3.13.0-24-generic root=UUID=61e460f5-878a-4cff-be9c-12239153d59c ro quiet

label l0r
    menu label Ubuntu GNU/Linux, kernel 3.13.0-24-generic (recovery mode)
    linux /vmlinuz-3.13.0-24-generic
    append initrd=/initrd.img-3.13.0-24-generic root=UUID=61e460f5-878a-4cff-be9c-12239153d59c ro single
    text help
    This option boots the system into recovery mode (single-user)
    endtext

Хорошо, вот и все. Но вот еще кое-что интересное, что я узнал о процессе загрузки: я создал "myvmlinuz" и "myinitrd.img" как копии исходных файлов в /boot и отредактировал файл extlinux.conf в следующем:

default test
prompt 1
timeout 50

#include themes/debian/theme.cfg
LABEL test
    MENU Test entry
    LINUX /myvmlinuz
    APPEND initrd=/myinitrd.img root=UUID=61e460f5-878a-4cff-be9c-12239153d59c

Насколько я понимаю, это минимальная конфигурация для работы системы. Ботинки хорошо для меня. Обратите внимание, что / - это корневая папка раздела, помеченная как загрузочная с extlinux на нем в этих файлах.

APPEND initrd=/myinitrd.img root=/dev/sda5

тоже работал. Я использовал разные разделы на одном диске для / (sda5), /boot (sda1), swap и так далее. Я создал /boot как основной раздел, не знаю, важно ли это. Может быть, вы можете попробовать

cat /usr/lib/extlinux/mbr.bin > /dev/sda

если личинка сделала что-то плохое.

Ну, я надеюсь, что вы запустите его, пожалуйста, дайте мне знать, если это работает!

Это разбивка стандартной "ручной" установки для MBR:

Предполагая, что вы устанавливаете Extlinux на дисковое устройство /dev/sda:

  • Установите стандартную MBR на диск. Эта MBR будет искать и пытаться загрузить любой раздел с флагом "boot".
    dd /usr/lib/extlinux/mbr.bin of=/dev/sda bs=440 count=1
  • Установите флаг загрузки на раздел, который будет содержать EXTLINUX
  • Скопируйте файлы extlinux и использованные модули в каталог (или корень) загрузочного раздела. Давайте использовать /boot/Ради примера.
  • Установите загрузчик на этот раздел и укажите его в каталоге syslinux.
    extlinux --install /boot/
  • Убедитесь, что конфигурация правильная.

Поэтому при загрузке MBR загрузит загрузчик загрузочного раздела, который запустит EXTLINUX, который будет читать extlinux.conf.

Некоторые шаги могут быть излишними, но я думаю, что было бы неплохо написать шаги, чтобы иметь представление о том, что происходит.

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

Вот хорошее руководство по настройке автоматического обновления extlinux в Debian, которое должно быть именно тем, что вы ищете:

Несколько дней назад я писал о том, как настроить и настроить extlinux (syslinux) в качестве загрузчика. Но в Debian или Ubuntu, если вы внесете изменения в файлы, такие как /boot/extlinux/extlinux.conf, они будут перезаписаны.

Файлы конфигурации восстанавливаются программой extlinux-update, которая запускается автоматически при каждом обновлении ядра. (В частности, он запускается из сценария postinst пакета linux-base: вы можете увидеть его в /var/lib/dpkg/info/linux-base.postinst.)

[...]

Другие вопросы по тегам