关于lilo——IDE和SCSI的问题

王朝other·作者佚名  2006-11-23
宽屏版  字体: |||超大  

对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 <=== 还记得吗,0x80表示第一个硬盘. 告诉LILO,SCSI硬盘为第一个硬盘

sectors=63

heads=255

cylinders=1110

disk=/dev/hda

bios=0x81 <===0x81表示第二个硬盘

sectors=63

heads=128

cylinders=621

问题就这样解决了(我原本准备去看原代码的).关于CHS参数可以用hdparm -g或fdisk的p命令看到.

顺便还解决了另外一个问题:

IDE上的LILO不能启动SCSI上的瘟都死98和NT,或启动后盘符不正确的问题.先把boot.0804拷贝过来, 修改/etc/lilo.conf:

other=/dev/sda1

label=win98

table=/dev/sda

map-drive=0x80

to=0x81

map-drive=0x81

to=0x80

最后这四行实际上起到"软"切换硬盘顺序的作用,对于那些BIOS里没有设定IDE或SCSI先后顺序的机器 特别有用.就算有,手动切换多麻烦呐!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有