moran321 发表于 2004-3-16 22:23:41

论坛有BUG。文章标题不能太长,长了不提示之后打开就是空白的了。
正题:关于RouterOS、ipcop、Smoothwall安装启动时死机的一种解决思路。
以下是转贴的一篇文章描述了LILO启动时的过程和为什么出现故障。希望对遇到此问题的朋友有帮助。



zhaoyz wrote:
> 宫大虾:

大虾?你准备拿来红烧还是油闷呢? :-)

> 我在scsi硬盘上装了lilo,MBR方式启动,只有一块seagate 3555w(4.3G)硬盘
> 硬盘上只有linux分区,root在/dev/sda1下我也加入lilo了,可是每次起动
> 显示LI就死机了,不知道为什么,谁能指教一下呀,我感觉是MBR没读出来
> 有人能救我吗??

你的SCSI卡是什么厂家的?
有没有换卡?或者有没有在某机器上安装好Linux
然后换到另一机器上用?
如果有以上两中情况发生那么就不奇怪了。因为不同的SCSI卡有不同的扇区
到柱面数/磁头数/每面扇区数的映射算法。Lilo会认为boot.b或者内核已经
移动了,因而出错死机。据lilo的资料讲,当停机在Li的时候它的意思就是
boot.b被移动了。

另一个可能性是当你copy了一个新的内核到lilo安装时的文件后(比如说是
/boot/vmlinuz)没有重新跑lilo。

总之能不能把你的情况说得详细些,因为情况很复杂,我好根据情况告诉你该
怎么样做。

再见!

宫敏

--
----
NT=No Thanks, WWW=World Wide Wait
Does PnP mean "Plug and Pray"?


    对LILO还有个很有名的问题: Linux的根文件系统不能超出1024柱面,否则LILO可能不能正确
读出boot.b或内核.其实很多操作系统都有类似的问题。解决办法是在跺死/瘟都死下使用loadlin
.exe/load95来代替LILO,或者做个启动软盘,或者把Linux的根文件系统分配得靠前一些,LILO一旦
读出内核后,内核不使用BIOS操作硬盘,将不再存在1024问题.专业的做法是:专门为根文件系统分配
一个64M左右的分区(当然全部在1024以前), 然后为/usr,/var,/home等(视情况而定)分配分区(独立
的文件系统).

    在我整理这个FAQ时,我自己还遇到了以前未提到的问题.先描述一下背景:
    我的计算机采用了华硕双CPU BX主板P2B-DS,集成了Adaptec AIC-7890 SCSI卡,那时候Linux
还不支持这种卡,只好找个IDE硬盘来装了Redhat 5.1,过了一段时间在suse的主页上找到一个补丁,
内核升级到2.0.35并打上这个patch,就认这个卡了,于是我开始琢磨用自己编译的内核来代替RH启
动盘上的内核,但我怎么精简内核配置,编译出来的内核(用make bzImage)总比启动盘上的大,后来
有个网友告诉我在ftp.dialnet.net/pub/linux/aic78xx下已经有了最新的启动盘,于是下载了一个,原
来它把aic-78xx编译成一个模块放在initrd.img里.我用这个启动盘把RH5.1装到SCSI硬盘上(9.1G),
安装时我小心翼翼地设定Linux根文件系统全在1024柱面以内,并选择了Linear模式,重新启动,出现
"L"后再也不动弹.于是想去掉linear参数看看: 进入BIOS设置IDE设备先于SCSI设备,启动IDE硬盘上
的Linux,把自己编译的内核拷贝到SCSI硬盘上的Linux分区上,在/etc/lilo.conf里加上SCSI上的Linux
启动项:
   image=/boot/bzImage
       root=/dev/sda4
       label=newlinux
运行一遍lilo,然后就可以从IDE上的LILO启动SCSI上的Linux了.进去修改/etc/lilo.conf,去掉linear
参数,运行lilo,显示倒是正常.重新启动并把SCSI设备设为先于IDE设备,启动后显示
L 04 04 04 04 ...... 04反复循环.
哈哈,很多网友提到的问题都让我遇到了! 没有办法,先去看看/usr/doc/lilo-0.2/README,04表示
LILO不能正确认识硬盘的物理参数(CHS),怎么回事? 从IDE上LILO不是能正常工作吗?再仔细读读,哈!
原来LILO还有个问题: 当系统里既有IDE硬盘又有SCSI硬盘时,LILO并不知道BIOS里设的是IDE先还是
SCSI先,于是读硬盘的CHS参数时会乱套. 决定在/etc/lilo.conf里加上:
   disk=/dev/sda
       bios=0x80

moran321 发表于 2004-3-16 22:24:29

lilo故障代码解释。

当LILO装入它自己的时候,显示单词"LILO": 每完成一个特定的过程显示一个字母.
如果LILO在某个地方失败了,屏幕上就停留几个字母,以指示错误发生的地方.在技术
文档中有更详细的描述. (注:LILO不是一个程序,而是一组程序)
注意,如果磁盘发生瞬间故障,可能会在第一个字母"L"后插入一些十六进制数字.除非
LILO停在那里并不停地产生错误码流,否则并不说明有严重问题.

() LILO一点也没装入. LILO可能没有安装,或分区没有被激活

L...         LILO的第一部分已经被装入并运行了,但它不能装入第二部分的引
                     导程序.两位数字的错误码指示问题的类型(请看后面"磁盘错误码")
                     这种情况通常是在介质访问失败或硬盘几何参数(CHS,chs)不匹配.

LI                     LILO的第一阶段已经装入了LILO的第二部分,但是执行它失败.
                     错误的原因是硬盘几何参数不匹配或/boot/boot.b被移动后没有
                     重新运行映射(map)安装程序.

LIL                  第二阶段已经启动,但它不能从映射(map)文件读出描述符表(descriptor table)
                     典型原因是介质出错或硬盘几何参数不匹配.

LIL?                   LILO的第二部分被装入到错误的地址.典型原因是硬盘几何参数微妙的不匹配
                     或/boot/boot.b被移动而没有运行映射安装程序.

LIL-                   描述符表被破坏了.这可能是/boot/map被移动后没有运行映射安装程序或几何参
                     数不匹配.

LILO                   LILO的所有部分都被成功地装入.

1010101010             分区情况已经改变却没有重新安装LILO,据说超频也会出这种情况.


磁盘错误码:

0x00"内部错误". 由LILO扇区读子程序产生.可能是因为被破坏的文件,重建map文件试试看.另一个原因也       许是,当使用linear参数时去访问超出1024的柱面.参考"BIOS的限制"这一节.
0x01"非法命令". 它不该发生,如果它出现了,意味着LILO去访问BIOS不支持的硬盘.
       整理这份文档的时候,我的一个朋友就遇到了L 010101...的错误,因为他把Linux装在第二个IDE口
       上(/dev/hdc),加上Disk参数就好了。
0x02"没找到地址标记". 通常是介质问题,多试几遍看看.
0x03"写保护错".仅在写操作时出现.
0x04"扇区未找到". 典型的原因是硬盘参数不匹配.
0x06"激活顺序改变". 这应该是短暂的错误,再试一次.
0x07"无效的初始化". BIOS没有适当地初始化硬盘,热启动一次或许有帮助.
0x08"DMA超出限度". 这不应当发生,重新启动.
0x09"DMA试图越过64k边界". 这不应当发生,建议忽略COMPACT参数.
0x0C"无效的介质". 这不应当发生,重新启动看看.
0x10"CRC错误". 检测到介质错误.建议多启动几次,运行map安装程序,把map文件从坏块写到正常的介质上.
0x11"ECC矫正成功". 读错误发生然后被矫正,但是LILO并不知道这个情况,终止了启动过程.
0x20"控制器错误". 不应该发生.
ox40"定位失败". 这可能是介质问题,重新启动试试.
0x80"磁盘超时". 磁盘或驱动器没有准备好.介质坏了或磁盘没有转,如果从软盘启动则可能是没有关门.
0xBB"BIOS错误". 这不应该发生,如果反复发生,则考虑移去COMPACT参数或加上/取消LINEAR参数.
如果在写操作过程中发生错误,则在错误码前有个前缀"w".尽管写错误并不影响启动过程,但它们会指示一些
错误,因为它们暗示系统中存在错误,一个好的建议是重新配置LILO成只读(read-only).

chwsqx 发表于 2004-3-17 13:35:34

好文章,至顶。

心想事成 发表于 2004-3-17 13:52:31

不错
页: [1]
查看完整版本: [分享]RouterOS、ipcop、Smoothwall安装死机解决