LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1948|回复: 2

lilo引导多个linux系统的疑惑

[复制链接]
发表于 2007-6-8 10:23:07 | 显示全部楼层 |阅读模式
先贴一下我的lilo.conf

# Linux bootable partition config begins
image = /boot/vmlinuz
  root = /dev/sda8
  label = Zenwalk
  initrd = /boot/initrd.splash
  read-only

image = /boot/kernel-2.6.20
  root = /dev/sda7
  label = Gentoo
  read-only
# Linux bootable partition config ends

/dev/sda8是zenwalk的根分区,/dev/sda7是gentoo的
编辑后运行lilo -v 提示错误,找不到kernel-2.6.20这个文件

我搜索过以前的帖子,说是这样写就可以了。说是lilo会根据root的设定来寻找image文件
但我这里却出现错误。
然后我把gentoo的kernel-2.6.20拷贝到zenwalk的/boot下,lilo -v就成功了。
接着我删除zenwalk /boot下的kenel-2.6.20 重启后可以正常进入gentoo

我的疑惑是,为什么第一次lilo -v的时候会出现错误。
发表于 2007-6-11 11:42:42 | 显示全部楼层
首先说为什么删除后仍然能进,这是因为lilo是读低层IO的,删除操作并没有把文件真正从磁盘抹掉,所以cp过了之后就可以用,不管你是否删除(甚至格式化,重分区)。

第一次Lilo -v出错的原因是你写错了路径!注意,lilo这条命令运行的时候,是按你当前系统mount的路径来操作的,也就是说,你现在应该是是在Zenwalk这个系统下操作的吧?那你的/boot是什么呢,就是Zenwalk下的/boot,可能是你的/下的一个目录,也可能是/boot分区,这不重要。好,再看你的lilo.conf所写的:
mage = /boot/kernel-2.6.20
root = /dev/sda7
label = Gentoo
...
这个kernel-2.6.20的内核lilo实用程序去哪里找呢?去/boot里找,注意这里和/dev/sda7没有关系。如果你把kernel2.6.20放到/dev/sda7里,那你就应该mount /dev/sda7,然后按这个路径去设置kernel-2.6.20的路径。

举个实例:
现在Zen系统里:
> df
/dev/sda1      /windows
/dev/sda8      /
/dev/sda2      /boot
/dev/sda7      /gentoo
然后,Zen的内核放在/boot里,Gentoo是独立的,它没有/boot分区,则lilo.conf文件这么写:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/sda8
label = Zenwalk
initrd = /boot/initrd.splash
read-only

image = /gentoo/boot/kernel-2.6.20
root = /dev/sda7
label = Gentoo
read-only
# Linux bootable partition config ends

如果Gentoo有自己的独立/boot(其实没有这个必要,可以和Zen共用/boot):
#mount /dev/sda9 /gboot
lilo.conf:
...
image = /gboot/kernel-2.6.20
root = /dev/sda7
label = Gentoo
...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-11 13:53:05 | 显示全部楼层
很详细,非常感谢!明白了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表