编辑:这个问题很“流行”,我只想补充一下我的看法。我一直很喜欢它,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。软件就应该如此。我实际上可以知道并了解正在发生的事情并且通过它的使用我学到了一些关于计算机的新知识。