LILO
LInux LOader,简称 LILO,是 Linux 系统的传统多重启动引导程序。尽管在 数年 间一直是标准选择,但它已逐渐被淘汰。截至 2016 年 1 月,LILO 不再进行积极开发。
支持的文件系统
来自上游的 readme
- LILO 不知道如何读取文件系统。相反,map 安装程序会向内核询问文件的物理位置(例如内核镜像),并记录该信息。这使得 LILO 可以与 Linux 支持的大多数文件系统一起工作。
实际上,LILO 的开发已经停止,正是由于这种方法的一些限制,例如 Btrfs、GPT、RAID。
安装
LILO 以 liloAUR 和 lilo-gitAUR(开发版本)的形式提供。LILO 仅适用于 BIOS 系统。
以 root 身份运行命令 lilo
将会将 LILO 安装到 MBR。在运行 lilo 命令之前,您应该编辑 /etc/lilo.conf
以确保 root 条目指向 root 分区。如果您的 root 分区在 /dev/sda1
上,则 root 条目应如下所示:root=/dev/sda1
。请记住更改 'arch' 和 'arch-fallback' 条目的 root 行。
安装到分区或无分区磁盘
使用 -b
标志来指定分区或整个磁盘(而不是隐含的 -M
)以将 LILO 安装到 卷引导记录 (VBR) 而不是 MBR。请参阅 lilo(8) 和 Gentoo 论坛上 Hypnos 的回答。
配置
通过编辑 /etc/lilo.conf
文件并在之后运行 lilo
来应用新配置,以此配置 LILO。
作为提醒,请考虑 LILO 需要 在每次内核升级后运行,否则系统很可能处于无法启动的状态。
有关设置 LILO 的更多帮助,请参见 LILO-mini-HOWTO。
示例设置
典型的 LILO 设置
compact
添加到 /etc/lilo.conf
的全局部分,如下所示。/etc/lilo.conf
# # /etc/lilo.conf # boot=/dev/sda # This line often fixes L40 errors on bootup # disk=/dev/sda bios=0x80 default=arch timeout=50 lba32 prompt # Nice colours install=menu menu-scheme=Wb:Yr:Wb:Wb # Highly recommended to uncomment line below if it # does not give any error on booting compact # Remember to change root=/dev/??? image=/boot/vmlinuz-linux label=arch root=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX initrd=/boot/initramfs-linux.img read-write image=/boot/vmlinuz-linux label=arch-fallback root=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX initrd=/boot/initramfs-linux-fallback.img read-write #other=/dev/hda1 # label=dos
您可以使用 hwinfo --framebuffer
来确定您可以使用的 vga 模式。
使用图像作为背景
首先准备背景图像
- 在 GIMP 中打开它。
- 将其缩放到 640x480。
- 将其更改为索引模式(图像 > 模式 > 索引)。
- 选择创建最佳调色板并将其设置为 16 色。选择任何适合您的抖动方法。
- 打开“索引调色板”对话框。记下您要用于菜单文本条目、时钟等的颜色。在您的
lilo.conf
中,您可以通过索引引用颜色。 - 将图像导出为
/boot
目录中的 bmp。在导出对话框中,选中不写入颜色空间信息选项
现在编辑 lilo.conf
。您可以为图形菜单设置一些选项。有关更多信息,请参见 man lilo.conf
。
- bitmap=<bitmap-file> 将其设置为您上面保存的文件。
- bmp-colors=<fg>,<bg>,<sh>,<hfg>,<hbg>,<hsh>
- 这些是菜单中条目的颜色。它们分别指的是前景色、背景色和阴影颜色,然后是突出显示文本的相同颜色。不要使用空格。使用的值是您在上一步中发现的调色板中的索引。如果您选择,您可以留空一个值(但不要忘记逗号)。默认背景是透明的,默认阴影是没有阴影。
- bmp-table=<x>,<y>,<ncol>,<nrow>,<xsep>,<spill> 此选项指定菜单的放置位置。x 和 y 是字符坐标。您也可以在它们后面加上 p 以指定像素坐标。
- bmp-timer=<x>,<y>,<fg>,<bg>,<sh> 此选项指定计时器的坐标和颜色,该计时器在启动默认条目之前倒计时超时。它使用颜色索引作为颜色,并使用字符(或像素)坐标。
例如
bitmap=/boot/arch-lilo.bmp bmp-colors=1,0,8,3,8,1 bmp-table=250p,150p,1,18 bmp-timer=250p,350p,3,8,1
保存 lilo.conf
,以 root 身份运行 lilo
,然后重新启动并查看效果!
Pacman 钩子
lilo 需要在每次内核更新后运行。您可以使用 pacman 钩子来自动化它。请参阅 Pacman#Hooks 或 alpm-hooks(5)。
如果目录 /etc/pacman.d/hooks
尚不存在,请创建它。
/etc/pacman.d/hooks/lilo.hook
[Trigger] Operation = Install Operation = Upgrade Operation = Remove Type = Package Target = linux Target = linux-lts [Action] Description= Run lilo after kernel update When = PostTransaction Depends = lilo Exec = /usr/bin/lilo
故障排除
启动时出现读写错误消息
此错误消息是由 mkinitcpio 中的 更改 引起的,该更改是对 systemd commit 的响应。此更改导致分区在以只读方式挂载时被 fsck 两次。要修复此错误,请编辑 /etc/lilo.conf
并将两个 arch 条目的“read only”行更改为“read write”。
有关更多信息,请参阅 此论坛帖子。
内核升级后出现 Devmapper 未找到错误消息
在内核升级后运行 lilo
命令可能会导致 devmapper 未找到错误。如果是这种情况,请在内核升级后运行 lilo
之前运行 modprobe dm-mod
。