news 2026/10/2 2:00:08

Linux lilo 命令实战指南:从 lilo.conf 配置到 MBR 安装与启动故障诊断

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux lilo 命令实战指南:从 lilo.conf 配置到 MBR 安装与启动故障诊断
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

导读

lilo(Linux Loader)是 Linux 系统上历史最悠久的引导加载程序,负责在开机阶段加载 Linux 内核,并支持在同一台机器上引导多个操作系统(如 Linux 与 Windows 双系统)。本文以 command/lilo.md 文档为主体,系统讲解lilo命令的语法与全部选项、/etc/lilo.conf配置文件的完整写法与逐项语义、从现有发行版迁移到 LILO 的实操流程,以及 LILO 启动阶段L-I-L-O字符序列对应的故障诊断方法。读完本文,你将能够独立完成 LILO 的安装、双系统配置、MBR 更新与启动异常排查。

lilo 命令是什么

lilo用于安装核心载入(内核加载)开机管理程序。它是一个 Linux 系统核心载入程序,同时具备管理开机(选择启动哪个操作系统或内核)的功能。单独执行lilo指令时,它会读取/etc/lilo.conf配置文件,然后根据其内容把引导程序安装(写入)到指定设备。

在 README.md 中,lilo被归入"系统设置"命令分类,与chkconfig、depmod、insmod、modprobe、hwclock等同属一类,可见其定位是系统引导层面的底层配置工具。

LILO 已成为所有 Linux 发行版的标准组成部分。作为较老(也是最老)的 Linux 引导加载程序之一,它凭借不断壮大的 Linux 社区支持而持续发展,始终能够充当可用的现代引导加载程序。其后续引入的新功能包括:增强的用户界面,以及对能够突破传统1024 柱面(cylinder)限制的新 BIOS 功能的利用。虽然 LILO 仍在不断发展,但它的基本工作原理始终未变——把引导代码写入主引导记录(MBR)或指定分区,并在启动时根据映射文件(map file)定位内核映像。

1024 柱面限制在仓库的 command/partprobe.md 中也有印证:当磁盘柱面数超过 1024 时,会提示"could in certain setups cause problems with software that runs at boot time (e.g., old versions of lilo)"——这正是旧版 LILO 的典型约束,也解释了为什么新版 LILO 要利用新 BIOS 功能突破该限制。

命令语法

lilo(选项)

执行时需以 root 身份运行(引导加载程序的安装需要直接写 MBR 等底层设备)。

命令选项详解

lilo提供大量选项,下表为完整清单(来源:command/lilo.md):

选项作用
-b<外围设备代号>指定安装 lilo 之处的外围设备代号(即引导代码写入的目标设备,如/dev/hda、/dev/fd0)
-c使用紧致映射模式(compact map mode)
-C<配置文件>指定 lilo 的配置文件(默认读取/etc/lilo.conf)
-d<延迟时间>设置开机延迟时间
-D<识别标签>指定开机后预设启动的操作系统或系统核心识别标签
-f<几何参数文件>指定磁盘的几何参数配置文件
-i<开机磁区文件>指定欲使用的开机磁区文件,预设是/boot目录里的boot.b文件
-I<识别标签>显示系统核心存放之处
-l产生线性磁区地址(linear sector addresses)
-m<映射文件>指定映射文件(默认/boot/map)
-P<fix/ignore>决定要修复(fix)或忽略(ignore)分区表的错误
-q列出映射的系统核心文件
-r<根目录>设置系统启动时欲挂入成为根目录的目录(用于 chroot 场景)
-R<执行指令>设置下次启动系统时首先执行的指令
-s<备份文件>指定备份文件(备份将被覆盖的 MBR/引导扇区)
-S<备份文件>强制指定备份文件(无条件写入备份)
-t不执行指令,仅列出实际执行会进行的动作(测试/演练模式)
-u<外围设备代号>删除 lilo(卸载引导加载程序)
-U<外围设备代号>效果与-u类似,但不检查时间戳记
-v显示指令执行过程(可叠加,如-v -v显示更详细输出)
-V显示版本信息

其中几个高频选项值得特别注意:

  • -t(测试模式):只"预演"安装动作而不真正写入设备,是修改配置后安全校验的首选;
  • -u/-U(删除模式):用于从设备上卸载 LILO,-U不检查时间戳,适合备份文件缺失等异常场景;
  • -R(下次启动指令):可让系统在下次启动时自动执行指定命令,常配合内核参数调整使用;
  • -s/-S(备份文件):安装前会把原引导扇区备份到指定文件,-S为强制备份,为回滚提供保障。

实战一:将现有 Linux 迁移到 LILO

要将现有的 Linux 迁移到 LILO,分为两种情况:

  • 全新安装:直接跳到下面的"配置 LILO"一节;
  • 已安装某个 Linux 发行版:可以安装并配置 LILO,让机器引导到新的 Linux 安装。

迁移步骤与注意事项:

  1. 获取最新版本的 LILO,并确保手边拥有一张 Linux 引导盘。一旦配置出错,引导盘可以帮你恢复到初始的 Linux 配置,这是最重要的安全措施。
  2. 将 LILO 安装到系统后,让它接管 MBR 非常简单——以 root 身份执行:
/sbin/lilo -v -v
  1. 该命令使用当前的 LILO 默认值,抹去 MBR 中当前所有内容。执行前务必先阅读并确认"配置 LILO"一节,确保能够按预期引导起来。

Windows 与 Linux 双系统安装顺序建议:如果要在同一台机器上运行 Windows 和 Linux,应当先安装 Windows,再安装 Linux,这样 Linux 安装时选用的引导加载程序不会被 Windows 引导加载程序覆盖。与 Linux 引导加载程序不同,多数 Windows 引导加载程序不支持引导 Linux。如果已经先安装了 Linux,则需要自己创建一张 Linux 引导盘,这样在安装完 Windows 之后,可以回到 Linux 安装中重写 MBR。

实战二:配置 /etc/lilo.conf

LILO 的所有配置都通过位于/etc/lilo.conf的配置文件完成。下面是一份支持 Linux 与 Windows 双重引导的完整示例(对应物理环境为:主 HDD 安装 Windows XP,即/dev/hda;从 HDD 安装 Red Hat Linux,root 分区位于第三个分区/dev/hdb3):

boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=100 compact default=Linux image=/boot/vmlinuz-2.4.18-14 label=Linux root=/dev/hdb3 read-only password=linux other=/dev/hda label=WindowsXP

配置文件选项逐条说明

  • boot=:告诉 LILO 在哪里安装引导加载程序。上例中安装到第一块硬盘的 MBR(主引导记录)。也可以选择将 LILO 安装到/dev/hdb3(Linux 分区),再向/dev/hda安装另一个引导加载程序并令其指向 LILO,此时 LILO 作为二级引导加载程序。通常引导加载程序应位于/dev/hda;还可以将参数指向软盘驱动器(最常见的是/dev/fd0)来制作 LILO 软盘引导盘。
  • map=:指向引导期间 LILO 内部使用的映射文件。使用/sbin/lilo安装 LILO 时自动生成,其中包含描述符表等内容。建议不要改动此文件。
  • install=:LILO 在引导过程中内部使用的文件之一,同时包含引导加载程序的主要部分和二级部分。boot.b文件的一个片段会被写入 MBR(引导加载程序的主要部分),它指向映射文件,随后指向二级引导加载程序。同样不要改动。
  • prompt:告诉 LILO 使用用户界面(本例中给出 Linux 与 WindowsXP 两个选项)。除交互界面外,还可以在适当情况下为 Linux 内核等指定具体参数。如果配置文件中不指定此选项,LILO 将直接引导默认 OS,不发生任何用户交互、也不等待。但请注意:即使在引导时按下SHIFT键仍可得到提示——当不想把引导加载程序暴露给普通用户时,这一行为非常有用。
  • timeout=:引导提示在自动引导默认 OS 之前的等待时间,单位是十分之一秒(上例100即 10 秒)。如果lilo.conf中未指定prompt,此参数会被忽略。
  • compact:可大大加速引导过程,它将连续读取磁盘的请求合并为单个请求。不过这是把双刃剑——很多论坛反馈此选项可能引发问题;当希望从软盘引导时,该选项尤其有用。
  • default=:告诉 LILO 默认使用哪个映像进行引导(例如等待超时之后)。它与lilo.conf中某个映像的label相关联。若未指定,则引导文件中指定的第一个映像。
  • image=:对允许用户引导到的每一个 Linux 版本,都应指定image=及以下三个选项。image指定希望引导到的内核版本(上例为/boot/vmlinuz-2.4.18-14)。
  • label=:标明运行期间能够从用户界面引导的不同 OS,同时用于指定默认引导的 OS。注意:标签名称中避免出现空格,否则引导该条目时会出现无法预期的错误。
  • root=:告诉 LILO OS 文件系统实际所在的位置,上例为/dev/hdb3(第二块硬盘上的第三个分区)。
  • read-only:告诉 LILO 以只读方式初始引导到文件系统;OS 一旦完全引导起来,就会以读写方式挂载。
  • password=:为将要引导到的特定 OS 设置口令。注意该口令以可读文本方式保存在lilo.conf文件中,所有能读取该文件的用户都能看到它。可以为每个操作系统分别设置口令(上例只为 Linux 设置了一个)。
  • other=:作用类似image和root选项的组合,但用于除 Linux 以外的其他操作系统。上例中它告诉 LILO 到哪里找 Windows OS(第一块硬盘第一个分区/dev/hda)。先装 Windows 再装 Linux 时通常如此配置。
  • label=(other 段):与所有其他label选项语义相同。

lilo.conf中还可以使用很多其他参数,上述参数已足以让机器可用;更多参数可参考手册页man lilo.conf。

修改配置后必须更新 MBR

关键点:引导时不会读取lilo.conf。因此当该文件有任何改动时,都需要"更新"MBR;如果不完成这一步就重新引导,对lilo.conf的修改不会在启动中反映出来。更新方法与首次写入 MBR 相同:

/sbin/lilo -v -v

-v -v会给出非常详细的输出。运行时还可以指定大量其他参数,进一步信息参见man lilo。

初始引导过程与 L-I-L-O 字符诊断

当 LILO 初始引导时,会按次序打印出每个字母L-I-L-O。如果所有字母都显示出来,说明第一阶段引导成功;缺少任何内容都表示出现问题。各阶段含义与常见故障如下:

屏幕显示含义常见原因
L第一阶段引导加载程序已被加载引导第二阶段引导加载程序时出问题(通常伴随错误代码)。常见原因:介质问题,或lilo.conf中指定了不正确的磁盘参数
LI第二阶段引导加载程序已被加载第二阶段引导加载程序不能被执行。原因类似上一条:加载失败,或boot.b文件被破坏、移动、删除
LIL第二阶段引导加载程序正在被执行可能再次出现介质问题,或映射文件(如lilo.conf所指定)在寻找描述符表时出现问题
LIL?加载到与上面相同的阶段通常意味着加载第二阶段引导加载程序使用了错误的地址,最常见原因是boot.b所在位置与lilo.conf指定不同
LIL-加载到与上面相同的阶段加载描述符表时出现问题,最常见原因是描述符表错误
LILOLILO 成功被加载,没有出现任何错误—

引导时的交互操作与附加配置

LILO 成功加载后,会显示LILO 提示符。以上述示例lilo.conf为例,此时有两个选择:

  1. 让 LILO 超时(10 秒后):自动引导/dev/hdb3,即 Linux 分区;
  2. 按下 TAB 键:列出将要引导的操作系统选项——本例为 "Linux" 和 "Windows"。输入其中一个即可引导对应 OS。选择加载 Linux 选项后会提示输入口令(本例为linux);口令有误则返回 LILO 提示符。

需要特别指出:LILO 不支持引导期间的交互式配置,所有选项只能在lilo.conf中或运行/sbin/lilo时指定。

使用软盘引导盘降低风险

第一次尝试 LILO 时,使用软盘引导盘比直接操作硬盘实现 LILO 配置更安全。做法:

  1. 在lilo.conf中使用boot=/dev/fd0替换boot=/dev/hda;
  2. 这样即使弄乱了lilo.conf中的任何配置,也可以取出引导盘、像先前一样引导到 Linux;
  3. 当软盘引导一切正常后,将lilo.conf改回boot=/dev/hda,最后再运行一次/sbin/lilo上传修改。

配套工具与相关知识

制作引导软盘:mkbootdisk

与 LILO 软盘引导方案配套的是 command/mkbootdisk.md 中的mkbootdisk命令,它为当前运行的系统创建可单独使用的系统引导软盘,以便系统出现故障时启动并进行修复:

mkbootdisk --device /dev/fd0 `uname -r`

其中`uname -r`为当前 Linux 系统使用的内核版本;如果有多个内核版本,也可直接输入指定版本,例如以 2.2.18 内核制作引导盘:

mkbootdisk --device /dev/fd0 2.2.18

创建 initrd/initramfs 映像:mkinitrd

LILO 引导 Linux 内核时通常需要配合 initrd(ramdisk 映像)。command/mkinitrd.md 中的mkinitrd命令用于创建这种映像文件,供 Linux 开机时载入。当自行修改了设备驱动、需要把新驱动编入内核启动阶段时,可重新封包内核:

[root@localhost tmp]# mkinitrd -v -f myinitrd.img $(uname -r) Creating initramfs WARNING: using /tmp for temporary files Looking for deps of module ide-disk Looking for deps of module ext3 jbd Looking for deps of module jbd Using modules: ./kernel/fs/jbd/jbd.ko ./kernel/fs/ext3/ext3.ko /sbin/nash -> /tmp/initrd.Vz3928/bin/nash /sbin/insmod.static -> /tmp/initrd.Vz3928/bin/insmod ... Loading module jbd Loading module ext3

生成的myinitrd.img实际是 gzip 压缩的 cpio 归档(可用file、gzip -d验证),这正是 LILO 启动时通过initrd=参数加载的 ramdisk 映像形态。

与 GRUB 系列引导加载程序的对照

LILO 同属引导加载程序家族,仓库中 GRUB 系列的文档可作为横向参照:

  • command/grub.md:GRUB 的命令行 shell 工具,支持--batch、--config-file等选项,可用于在grub>提示符下手工启动损坏的系统;
  • command/grub2-mkconfig.md:生成 GRUB2 配置文件(/boot/grub2/grub.cfg),对应 LILO 的/etc/lilo.conf+/sbin/lilo两步流程;
  • command/grub2-set-default.md:设置 GRUB2 默认启动内核,对应 LILO 配置中的default=选项。

GRUB 家族采用"引导时读取配置文件"的机制,而 LILO 则采用"安装时把配置编译进映射文件"的机制——这正是两者最大的理念差异,也是 LILO 每次修改配置后都必须重新运行/sbin/lilo更新 MBR 的根本原因。

小结

lilo的核心工作流可概括为三步:编写/etc/lilo.conf→ 以 root 运行/sbin/lilo写入引导扇区 → 重启验证L-I-L-O字符序列。掌握本文的选项清单、配置语义与故障诊断表,即可在传统 Linux 环境(尤其是需要双系统引导或软盘救援的场景)中熟练使用 LILO;同时理解其"安装时固化配置"的设计,与 GRUB 的"运行时读配置"形成对比,有助于在不同引导加载程序之间做出合理选择。

  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载
上一篇:智能音频转录革命:Speakr如何重塑会议记录体验
下一篇:MCP 2026 Roadmap 深度解读:五大优先领域、SEP 优先级与协议演进路线

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 1:59:19

VSCode ARM64版安装与配置指南:Windows on ARM开发必备

简介&#xff1a;本资源是专为Windows ARM64平台&#xff08;如Surface Pro X、骁龙笔记本等&#xff09;定制的Visual Studio Code 1.86.2正式版安装包&#xff0c;面向使用ARM架构Windows设备的开发者与技术爱好者&#xff0c;解决x64/x86版VSCode在WoA设备上兼容性差、运行效…

作者头像 李华
网站建设 2026/10/2 1:58:28

Codex实操指南:协议层原理与生产环境排错

1. 这不是另一个“AI编程助手”教程&#xff0c;而是帮你真正用上Codex的实操手册Codex这个词最近在开发者圈子里反复刷屏&#xff0c;但很多人点开各种“Codex安装教程”后发现&#xff0c;要么是几行命令糊弄过去&#xff0c;要么直接跳到写Python脚本&#xff0c;中间缺了一…

作者头像 李华
网站建设 2026/10/2 1:58:17

Win10安装RabbitMQ避坑指南:Erlang配置、服务启动与管理插件实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 1:58:10

Ebitengine (v2) 实战入门:使用 Go 编写跨平台 2D 游戏引擎应用

游戏开发图形学 【免费下载链接】ebiten A dead simple 2D game engine for Go 项目地址&#xff1a; https://gitcode.com/GitHub_Trending/eb/ebiten 点击查看 免费下载 Ebitengine&#xff08;原名 Ebiten&#xff09;是一个使用 Go 语言编写的开源 2D 游戏引擎&#xff0c…

作者头像 李华
网站建设 2026/10/2 1:57:19

Wi-Fi Test Suite Control API v10.12.0:无线测试自动化接口规范与实战避坑

简介&#xff1a;Wi-Fi Test Suite Control API Specification v10.12.0 是 Wi-Fi 联盟发布的官方控制接口规范文档&#xff0c;面向从事 Wi-Fi 认证测试的开发者、测试工程师与协议栈研发人员&#xff0c;用于解决测试控制器与测试代理之间接口定义不统一、测试流程难以标准化…

作者头像 李华