如何使用 extlinux 启动 Linux

如何使用 extlinux 启动 Linux

编辑:这个问题很“流行”,我只想补充一下我的看法。我一直很喜欢它,grub因为它可以启动我使用的所有东西。然而,当grub2我真正开始使用它时,我真的不喜欢它,因为它

  • 本身就巨大无比
  • 在我的文件夹中留下大量垃圾/boot,其中 99.9% 对我来说都是无用的
  • “增强”语法对我来说太复杂了
  • 尝试使用 UEFI 启动grub2确实是一件非常麻烦的事
  • 我可以将其用作grub我的 CD 引导加载程序,但我不知道是否grub2可以这样做——我不再关心了,因为我找到了更好的替代方案。

syslinux 生态系统(包括 extlinux)现在可启动我使用的所有设备,CD/DVD、FAT、Ext2/3/4 甚至 Btrfs。此外,它可毫无障碍地处理 MBR/PBR 中继或 GPT。它很小巧,切中要点,并全面保持通用语法。extlinux(syslinux)目前是我选择的解决方案,用于启动我使用的所有设备。

现在回到 OP。

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

我已经用尽了谷歌搜索,但仍然无法找出启动 Linux 的正确方法extlinux。我找到的所有结果都谈到/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

我已经用各种方法运行了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

答案1

好的,正如您所希望的,以下是我安装 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

如果 grub 做了一些坏事。

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

答案2

这是关于在 Debian 上配置 extlinux 的自动更新这应该就是你要找的:

几天前,我写了一篇关于如何设置和配置 extlinux (syslinux) 作为引导加载程序的文章。但在 Debian 或 Ubuntu 上,如果您直接更改 /boot/extlinux/extlinux.conf 等文件,它们将被覆盖。

配置文件由名为 extlinux-update 的程序重新生成,每次更新内核时都会自动运行。(具体来说,它从 linux-base 包的 postinst 脚本运行:您可以在 /var/lib/dpkg/info/linux-base.postinst 中看到它。)

[...]

答案3

以下是 MBR 标准“手动”安装的细目:

假设您正在磁盘设备上安装 Extlinux /dev/sda

  • 在磁盘上安装标准 MBR。此 MBR 将查找并尝试启动任何具有“启动”标志的分区。
    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。软件就应该如此。我实际上可以知道并了解正在发生的事情并且通过它的使用我学到了一些关于计算机的新知识。

相关内容