如何使用 extlinux 启动 Linux

xpt*_*xpt 5 boot grub ubuntu grub2 syslinux

编辑:在这个问题成为“流行”问题后,再添加我的两分钱。我一直是它的忠实粉丝,grub因为它能够启动我使用的所有东西。然而,当grub2它到来时,我真的不喜欢它,因为它是

  • 本身巨大
  • 在我的文件夹中留下大量垃圾/boot,其中 99.9% 对我来说毫无用处
  • “增强”语法对我来说过于复杂
  • 尝试使用 UEFI 启动grub2确实是一个 ROYAL PITA
  • 我能够用作grub我的 CD 引导加载程序,但我不知道是否grub2可以这样做 - 我不再关心,因为我找到了更好的替代方案。

syslinux 生态系统(包括 extlinux)现在正在引导我使用的所有内容,CD/DVD、FAT、Ext2/3/4,甚至 Btrfs。此外,它还可以顺利处理 MBR/PBR 中继或 GPT。它很小,但重点突出,并且全面保持通用语法。extlinux (syslinux) 目前是我选择的解决方案来引导我使用的任何东西。

现在回到OP。

有人知道如何正确启动 Linux 吗extlinux

我已经用尽了谷歌搜索,但仍然无法弄清楚设置extlinux启动 Linux 的正确方法是什么。我发现的所有点击都谈到了/boot/extlinux/extlinux.conf直接编辑文件。然而,其中有一个很大的警告阻止我这样做:

## /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
Run Code Online (Sandbox Code Playgroud)

我已经以各种方式运行了extlinux-update无数extlinux -update次,但文件仍然保持不变。问题是,这个文件不会启动任何东西!

如果我自己编辑它,然后extlinux-update再次运行,然后 BOOM,它再次回到上面的无启动版本。

有人知道如何在 Ubuntu 下正确设置 extlinux 来启动它(无需直接编辑 extlinux.conf)吗?

这是来自最新 Ubuntu Trusty 的 extlinux 顺便说一句:

% 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
Run Code Online (Sandbox Code Playgroud)

ju.*_*ber 4

好的,如您所愿,以下是我安装 extlinux 的绝对最少步骤:

sudo apt-get install extlinux

sudo extlinux --install /boot/extlinux
Run Code Online (Sandbox Code Playgroud)

这做到了。简直不敢相信,但这确实有效。所以这里有一些额外的信息:我的系统(uname)

3.13.0-24-generic (Kernel)
#46-Ubuntu SMP .. (Kernel version)
i686 (Processor and machine)
Run Code Online (Sandbox Code Playgroud)

还有

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
Run Code Online (Sandbox Code Playgroud)

/boot/extlinux/extlinux.conf

default l0
prompt 1
timeout 50

include themes/debian/theme.cfg
Run Code Online (Sandbox Code Playgroud)

我想这和你的一样。我不认为 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
Run Code Online (Sandbox Code Playgroud)

好的,就是这样。但是我发现了一些关于引导过程的其他有趣的事情:我创建了“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
Run Code Online (Sandbox Code Playgroud)

据我了解,这是使系统正常工作的最低配置。靴子很适合我。请注意,/ 是这些文件中标记为带有 extlinux 的引导分区的根文件夹。

APPEND initrd=/myinitrd.img root=/dev/sda5
Run Code Online (Sandbox Code Playgroud)

也确实有效。我在一张磁盘上使用了不同的分区 / (sda5)、/boot (sda1)、swap 等。我创建了 /boot 作为主分区,不知道这是否重要。也许你可以尝试

cat /usr/lib/extlinux/mbr.bin > /dev/sda
Run Code Online (Sandbox Code Playgroud)

如果 grub 做了坏事。

好吧,我希望你能运行它,如果它有效,请告诉我!