LILO, Linux Crash Rescue HOWTO LILO 毁损,无法开机
2024-07-26 00:30:55
供稿:网友
LILO, linux Crash Rescue HOW-TO 中译版
作者:Al Dev (Alavoor Vasudevan) alavoor@yahoo.com
译者:黄国伟 u4561055@cc.ncu.edu.tw
v6.0, 25 Dec 2000 翻译日期:19 Mar 2001
--------------------------------------------------------------------------------
这份文件探讨从 Linux 系统失灵中回复的方法。造成 Linux 系统失灵的各种原因可能是 - LILO 毁损、 linux 无法开机、 硬碟主开机记录 (Master Boot Record, MBR) 损坏、或是安装其他作业系统例如 Windows NT 而将 LILO 或 MBR 盖写掉所造成 linux 无法开机。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 简介
您无法避免意外的发生;如果意外发生在 linux 系统,这可能会损害到硬碟主开机记录 (MBR) 或是 LILO (Linux boot Loader)。当 linux 由於硬碟故障而导致无法开机时,意外就会发生。假如您不小心重新划分磁碟,或是在 linux 系统的电脑上安装其他作业系统,例如:Windows 98/NT,LILO 也可能会失效。
这份文件给您一些点子、秘诀、和快速的指引来快速回复系统,而不必费心地研读上百页有关 LILO 或 Linux 的文件。
1.1 回复系统的快速步骤
循著这些步骤执行,以便从 LILO 或系统失灵中回复。
状况 1: 假如系统无法开机 -
取得并建立 tomsrtbt 开机磁片 http://www.toms.net/rb,并使用 tomsrtbt 开机磁片开机。使用 fdisk 指令找出分割区 (partitions)。试著用以下指令辨识出 root 分割区 -
--------------------------------------------------------------------------------
bash# fdisk /dev/hda
bash# mkdir /test
bash# mount /dev/hda1 /test
bash# ls /test
您应该会看到 root 分割区显示如下 -
bin fd lib mnt PRoc sbin usr
boot dev etc home lost+found opt root tmp var
--------------------------------------------------------------------------------
如果此分割区并非 root 分割区,试试下个分割区 /dev/hda2 。再继续尝试 hda3 、 hda4 、 hda5 等,直到您找出 root 分割区为止。如在 hda 仍无法找到,请重复以上的步骤在其他装置上, 例如 hdb, hdc, hdd 等.. 在建立新的 lilo 设定时, /usr、/var、与 /boot 分割区也是需要的。
以我的系统为例,root 分割区是在 /dev/hda4:
--------------------------------------------------------------------------------
bash# mkdir /hda4
bash# mount /dev/hda4 /hda4
bash# cat /hda4/etc/fstab
阅读 fstab 的内容,并且按照 fstab 档案挂上 (mount) 分割区。像下面这样 -
bash# mount /dev/hda5 /hda4/boot
bash# mount /dev/hda6 /hda4/usr
bash# mount /dev/hda7 /hda4/var
bash# mount /dev/hda8 /hda4/opt
bash# mount /dev/hda9 /hda4/root
bash# mount /dev/hda10 /hda4/home
--------------------------------------------------------------------------------
以我的系统为例,按照 fstab 所显示,hda5 是 boot、hda6 是 usr , hda7 是 var、hda8 是 opt、hda9 是 root、hda10 是 home、而 hda11 是 windows95 的目录
编辑 /etc/fstab (不是 /hda4/etc/fstab)并且加入(以下简单的程式码)
--------------------------------------------------------------------------------
/dev/hda4 /hda4 ext2 defaults 1 1
/dev/hda5 /hda4/boot ext2 defaults 1 1
/dev/hda6 /hda4/usr ext2 defaults 1 1
/dev/hda7 /hda4/var ext2 defaults 1 1
/dev/hda8 /hda4/opt ext2 defaults 1 1
/dev/hda9 /hda4/root ext2 defaults 1 1
/dev/hda10 /hda4/home ext2 defaults 1 1
/dev/hda11 /hda4/win95part vfat defaults 1 1
在我的电脑中,hda4 含有 linux 的 root 分割区、hda5 有 boot 分割区、
hda11 则有 windows 95 的 vfat 系统。
bash# mkdir /hda4/win95part
bash# mount /hda4/win95part
使用 fsck 或 e2fsck 指令来修复系统。
bash# man fsck
bash# man e2fsck
--------------------------------------------------------------------------------
状况 2: 如果 LILO 是无效的..
依照状况 1 的步骤来排除问题。如果无法解决,则参照以下步骤。现在您应该已经挂上 /hda4 且已经编辑好 /etc/fstab 档案了。
--------------------------------------------------------------------------------
bash# mount -a
bash# chroot /hda4 /sbin/lilo -q
bash# man chroot
bash# chroot /hda4 /sbin/lilo
--------------------------------------------------------------------------------
您也可以选择使用 /sbin/lilo 以代替 chroot。 lilo 加选项 -r 实际上就和 chroot 的指令是一样的。 强烈建议您使用 chroot,而不要使用 lilo -r,因为使用 chroot 比较方便,且较容易找出错误。
--------------------------------------------------------------------------------
bash# man lilo
bash# /sbin/lilo -r /hda4
--------------------------------------------------------------------------------
状况 3: 如果 LILO 是无效的..
如果使用状况 1 和状况 2 的步骤均无法解决,假如您有使用 'mkbootdisk' 制作过开机片(於安装时或参考 'man mkbootdisk'自行建立),则使用您的开机磁片来开机并修复分割区。 mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。 (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织)
状况 4: 如果以上状况 1、2、3 的步骤皆无法解决问题,且您也没有开机磁片
假如您有其他 linux 系统的电脑,以 root 身份登入并且执行 -
--------------------------------------------------------------------------------
bash$ man mkbootdisk
bash# cp /etc/lilo.conf /etc/lilo-original.conf
--------------------------------------------------------------------------------
编辑 /etc/lilo.conf 并将您在 '状况 1' 所获得的 root 分割区格式填入;之後插入空白磁碟片并执行 -
--------------------------------------------------------------------------------
bash# mkbootdisk /dev/fd0
--------------------------------------------------------------------------------
mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。 (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) 您必须确保将 /etc/lilo-original.conf 更改回原来的档名 /etc/lilo.conf!! 再以此开机磁片进行状况 3 的步骤。
状况 5: 这是最坏的情况,希望您不会走到这个地步。状况 1 到 4 已包含了绝大多数的案例,但是如果连状况 1、2、3、和 4 的步骤都无法解决 -
第一步: 使用 tomsrtbt 开机磁片开机,挂上分割区,并且使用以下指令备份 root 分割区至其他还有磁碟空间的分割区 -
--------------------------------------------------------------------------------
编辑 /etc/fstab 并且写入 (以下简单的程式码,
您可能必须按照您的磁碟机实际状况作改变) -
/dev/hda4 /hda4 ext2 defaults 1 1
/dev/hda11 /b1 vfat defaults 1 1
bash$ mkdir /hda4; mount /hda4
bash$ mkdir /b1; mount /b1
bash$ cd /
bash$ df
查看 /b1 是否有足够的磁碟空间,以便使用 tar 来备份 root 分割区。
bash$ tar cvf /b1/root-hda4.tar /hda4
--------------------------------------------------------------------------------
第二步: 放入 Linux 光碟片,重开机并安装 redhat linux (译注:或其他 linux 发行套件) 在 /dev/hda4 (但千万不要安装任何多馀的套件,您只需要安装 root、boot 系统,和 LILO 管理者。也就是说,选择最小安装即可)。 安装程式也将会安装 LILO 在您的硬碟里。现在重新启动 linux,以 root 身份登入,并且执行 -
--------------------------------------------------------------------------------
bash$ man mkbootdisk
bash# cp /etc/lilo.conf /etc/lilo-original.conf
--------------------------------------------------------------------------------
注意:您必须记得将 lilo-original.conf 复制回 lilo.conf!! 编辑 /etc/lilo.conf 并将您在 '状况 1' 所获得的 root 分割区格式填入;之後插入空白磁碟片并执行 -
--------------------------------------------------------------------------------
bash# mkbootdisk /dev/fd0
bash# cp /etc/lilo-original.conf /etc/lilo.conf
--------------------------------------------------------------------------------
测试此开机磁片,检视其是否能运作,并将第一步中利用 tar 作备分的档案 /b1/root-hda4.tar 回复。 (译注:您可使用 tar xvf 来回复。详见 tar manpage)
1.2 预防性措施
您应当采取下列的预防性措施来处理未来可能发生的问题:
您一定要偶尔制作救援开机磁片,且在您改变分割区时一定要制作。插入空白磁碟片并执行 -
--------------------------------------------------------------------------------
bash$ man mkbootdisk
mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。
(译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织)
bash$ mkbootdisk --help
bash$ mkbootdisk --device /dev/fd0 2.2.12-20
--------------------------------------------------------------------------------
您手边必须拥有 tomsrtbt 的开机磁片。详见 http://www.toms.net/rb
您手边必须拥有 Yard 救援和开机磁片。详见 http://www.croftj.net/~fawcett/yard
备分 /root 与 /boot 目录。使用 Tomsrtbt 开机磁片开机,并且执行
--------------------------------------------------------------------------------
bash# vi /etc/fstab
加入以下数行 -
/dev/hda1 /a1 vfat defaults 1 1
/dev/hdb1 /b1 vfat defaults 1 1
以我的系统为例, hda1 为 linux 之 root 分割区 '/'
bash# cd /
bash# tar cvf /b1/linux-root-partition-hda1.tar a1
bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot
--------------------------------------------------------------------------------
1.3 移除 LILO
您可以使用 DOS 启动载入程式(boot loader)载入启动磁区,并以之取代 LILO。在 MS DOS 提示符号下输入以下指令:
--------------------------------------------------------------------------------
FDISK /MBR
--------------------------------------------------------------------------------
此处的 MBR 代表 "硬碟主开机记录(Master Boot Record)"。
请参考 LILO 文件,取得其他移除 LILO 的方法;这些文件通常放在 linux 系统上的 /usr/doc/lilo* (译注:或者是 /usr/share/doc/lilo*)。也请参考 'man lilo'。
1.4 常犯错误
在您更改 /etc/lilo.conf 之後,您必须执行 lilo ,使您的改变生效。忘了执行是 linux 初学者很常犯的错误。执行 -
--------------------------------------------------------------------------------
bash# lilo -v -v -v
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 相关连结
请参阅以下位址,可取得 LILO、Linux 救援、当机回复的相关资讯 -
Mini Lilo HOWTO at http://www.linuxdoc.org/HOWTO/mini/LILO.html
Bootdisk-HOWTO at http://www.metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO/index.html
Pre-made boot disks at http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/
Tomsrtbt boot floppy disk http://www.toms.net/rb
Yard rescue and boot floppy disk http://www.croftj.net/~fawcett/yard
BootPrompt-HOWTO at http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO.html
Multiboot with LILO mini HOWTO at http://www.linuxdoc.org/HOWTO/mini/Multiboot-with-LILO.html
Linux+WinNT mini HOWTO at http://www.linuxdoc.org/HOWTO/mini/Linux+WinNT.html
Linux goodies main site http://www.aldev.8m.com
Linux goodies mirror site http://aldev.webjump.com
Vim color text editor for C++, C http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 此份文件的其他格式
此份文件是以 11 种不同的格式所发行的 - DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages, single HTML file 以及 SGML.
您可以从下列连结得到 HTML、DVI、Postscript、或 SGML 格式的 HOWTO 文件单一 tar ball 档案 - ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/
纯文字格式: ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
其他语言之文件翻译,像是法文、德文、西班牙文、 中文、日文等是在 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO 欢迎您帮忙翻译成其他语言的版本。
此份文件是以 "SGML-Tools" 工具软体所撰写的,您可以在下面的连结得到此软体 - http://www.sgmltools.org 您可使用以下指令组译原始档,例如:
sgml2html LILO-crash-rescue-HOWTO.sgml (获取 html 档案)
sgml2rtf LILO-crash-rescue-HOWTO.sgml (获取 RTF 档案 )
sgml2latex LILO-crash-rescue-HOWTO.sgml (获取 latex 档案)
(译注:中译版使用者请至 ftp.linux.org.tw/pub/CLDP/src 下载 zh-sgmltools-1.x-x.tar.gz 并安装之,再以 big5sgml2html、big5sgml2rtf、 big5sgml2latex 指令组译原始档。详见 SGMLtools 中文套件使用说明 http://www.linux.org.tw/CLDP/zh-sgmltools.html)
LaTeX 文件可以使用 sgml2latex 来制作 Postscript,再用 dvips 转成 PDF 档,并且使用 Acrobat distill ( http://www.adobe.com) 指令观看结果。如以下所示:
--------------------------------------------------------------------------------
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man Ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
--------------------------------------------------------------------------------
或者您可使用 Ghostscript 的指令 ps2pdf。 ps2pdf 是个与 Adobe's Acrobat Distiller 产品作用相似并拥有其大部分功能的指令:它将 PostScript 档案转换成可携式文件格式(Portable Document Format, PDF)档案。 ps2pdf是被一个包含在 Ghostscript 的指令稿 (command script) (批次档 batch file),且选择一种名叫 pdfwrite 的特殊 "输出装置 (output device)" 来执行。为了要使用 ps2pdf,当 Ghostscript 在安装组译时,pdfwrite 装置必须要包含在 makefile 里。详见安装 Ghostscript 的文件。
这份 howto 文件位於 -
http://sunsite.unc.edu/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
您可也以在下列镜像站找到这份文件 -
http://www.caldera.com/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.WGS.com/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.cc.gatech.edu/linux/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.redhat.com/linux-info/ldp/HOWTO/LILO-crash-rescue-HOWTO.html
其他较靠近您的镜像站 (网址智慧辨识, network-address-wise) 可以在此找到 http://sunsite.unc.edu/LDP/mirrors.html 选择一个镜像站,且进入目录 /LDP/HOWTO/LILO-crash-rescue-HOWTO.html
要阅读 dvi 格式的文件,必须使用 xdvi 程式。xdvi 程式在 Redhat Linux 是存在於 tetex-xdvi*.rpm (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织)。您可以从控制面板(ControlPanel) | 应用程式(applications) | 出版(Publishing) | Tex 的选单按钮开启之。要读取 dvi 格式文件,执行以下指令 -
xdvi -geometry 80x90 howto.dvi
man xdvi
并且使用滑鼠来重新设定视窗大小。使用方向键、Page Up、Page Down 来导引,您也可使用 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' 字母键来上移、下移、置中、至下一页、回上一页等。要关闭专家选单,请按 'x'。
您可以使用 'gv' (ghostview) 或 'ghostscript' 来阅读 postscript 格式的文件。在 Redhat Linux 里,ghostscript 存在於 ghostscript*.rpm 套件;gv 则存在於 gv*.rpm 套件里。(译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) 您可以从控制面版(ControlPanel) | 应用程式(Applications) | 美工绘图(Graphics) 的选单按钮开启之。gv 远比 ghostscript 更人性化。 ghostscript 和 gv 也有其他平台的版本,像是 OS/2、 Windows 95 和 NT,您甚至在那些平台也可以观看此份文件。
您可从以下网址获得 Windows 95、OS/2、和所有作业系统平台的 ghostscript http://www.cs.wisc.edu/~ghost
要阅读 postscript 格式的文件,执行以下指令 -
gv howto.ps
ghostscript howto.ps
您可以使用 Netscape Navigator、Microsoft Internet explorer、 Redhat Baron Web browser 或任何其他的 10 种浏览器来阅读 HTML 格式的文件
您可以使用 LyX -- 一种 latex 在 X-Windows 的前端界面,来阅读 latex 格式的文件。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 版权 Copyright
版权政策按照 LDP (Linux 文件计划) 为 GNU/GPL。 LDP 是 GNU/GPL 计划之一。额外的请求为您在所有的复制文件中保留作者的姓名、电子邮件信箱位址、和此份版权声明。假如您对这份文件进行修改或增添,那麽请您告知此份文件的所有作者。在这份文件上所烙印的姓名为其各自所有人的所有权
原文 (如中译有误,以原文为主)
Copyright policy is GNU/GPL as per LDP (Linux Documentation project). LDP is a GNU/GPL project. Additional requests are that you retain the author's name, email address and this copyright notice on all the copies. If you make any changes or additions to this document then you please intimate all the authors of this document. Brand names mentioned in this document are property of their respective owners.
--------------------------------------------------------------------------------