LILO
LInux LOader,简称 LILO,是一款遗留的 Linux 系统多重引导加载程序。尽管它曾是 多年 来的标准选择,但它已被缓慢淘汰。截至 2016 年 1 月,LILO 已不再积极开发。
支持的文件系统
来自上游的 readme
- LILO 不知道如何读取文件系统。相反,映射安装程序会向内核询问文件(例如内核映像)的物理位置,并记录该信息。这使得 LILO 能够与 Linux 支持的大多数文件系统协同工作。
实际上,LILO 的开发停止正是由于该方法存在一些限制,例如在 Btrfs、GPT、RAID 上。
安装
可以使用 liloAUR 包 安装 LILO。LILO 仅在 BIOS 系统上工作。
运行 lilo 命令(以 root 身份)会将 LILO 安装到 MBR。在运行 lilo 命令之前,您应该编辑 /etc/lilo.conf 以确保 root 条目指向根分区。如果您的根分区在 /dev/sda1 上,那么 root 条目应该如下所示:root=/dev/sda1。请记住为 'arch' 和 'arch-fallback' 条目更改 root 行。
安装到分区或无分区磁盘
使用 -b 标志指定一个分区或整个磁盘(而不是隐含的 -M)将 LILO 安装到 卷引导记录 (VBR) 而不是 MBR。请参阅 lilo(8) 和 Hypnos 在 Gentoo 论坛上的回答。
配置
LILO 通过编辑 /etc/lilo.conf 文件并在之后运行 lilo 来应用新配置。
提醒一下,请记住 LILO 在每次内核升级后 *必须* 运行,否则系统很可能处于无法启动的状态。
有关设置 LILO 的更多帮助,请参阅 LILO-mini-HOWTO。
示例配置
典型的 LILO 配置
/etc/lilo.conf 的全局部分添加 compact,如下所示。/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中,您通过索引引用颜色。 - 将图像导出为 bmp 格式并放入您的
/boot目录。在导出对话框中,勾选 *不写入颜色空间信息* 选项。
现在编辑 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 hook 来自动化此过程。请参阅 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 not found 错误消息
在内核升级后运行 lilo 命令可能会导致 devmapper not found 错误。如果是这种情况,请在内核升级后运行 lilo 之前运行 modprobe dm-mod。