跳转至内容

LILO

来自 ArchWiki

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 配置

提示 如果 LILO 在加载 bzImage 时速度非常慢,请尝试在 /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#Hooksalpm-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

参见