LinuxSir.cn,穿越时空的Linuxsir!

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

换了硬盘后,不知道怎么修改默认的启动分区

[复制链接]
发表于 2004-4-24 12:31:05 | 显示全部楼层 |阅读模式
我换了个硬盘,是dump过去的,原来的硬盘ad0s1a是root,新的这个ad0s1e是root分区,所以启动到装入内核时提示找不到kernel,停在boot:提示符下,输入新的root所在分区,可以正常启动。
请问,怎么修改默认的启动分区,告诉系统我的root是在ad0s1e,而不是默认的ad0s1a ?
发表于 2004-4-25 20:10:48 | 显示全部楼层

去修改:

/etc/fstab文件,把里面的分区修改就可以了!
 楼主| 发表于 2004-4-26 10:48:54 | 显示全部楼层
噢,我明白了,启动分区的dump和pass段的值应该是1,1,其他分区(除swap外)应该是2,2
请问是这样吗?我现在没有试验环境,理论上是这样的。
下次会在实验环境下试一试。
 楼主| 发表于 2004-4-26 14:22:09 | 显示全部楼层
刚才试了下,发现改fstab没用的。
过程是这样的。
我加了个硬盘,只分了一个区,ad1s1d,
进入单用户模式
然后用dump和restore把ad0s1a复制到ad1s1d。
这时候我犯了个错误,也就是这个错误,我才发现了fstab的无效。
是这样的,我要修改fstab,把/这行从ad0s1a改到ad1s1d,
但是本来是要修改ad1s1d下的fstab文件的(因为修改后ad1s1d是根嘛),但是我一疏忽改的是ad0s1a下的文件。
启动后mount的下,发现/已经是ad1s1d了,在看ad1s1d下的fstab文件,上面写的/是ad0s1a的。
也就是说,当boot2启动时,它找的还是ad0s1a下的loader,而loader是根据ad0s1a下fstab文件信息mount分区的。
我这么说不知道大家看懂了没,上面的实验说明如果只修改fstab文件,是不能改变boot2缺省情况下寻找ad0s1a分区的loader文件的行为。
发表于 2004-4-27 08:40:33 | 显示全部楼层

等于你说的是bsd的引导程序自动寻找的就是ad1s1a

默认是把他当作主分区的。
因为默认的分区形式就是ad1s1a,ad1s1b,ad1s1c等,bsd自身的boot load自身去找了ad1s1a,如果采用grub来引导,并且安装在bsd分区的引导上,那么就可以指定根分区的位置了。
我不知道这样说你明白不,在这个论坛上面有关于grub的引导解释,你可以搜索一下。然后要注意的是grub还不支持ufs2格式,如果是freebsd5.2的话,可能会有问题。
 楼主| 发表于 2004-4-27 15:02:26 | 显示全部楼层
找的是ad0s1a(准确的说是主硬盘的引导分区的a区),grub是linux的引导器,虽然我并不了解grub,但推想应该具备指定引导分区的功能。
但我就是不知道BSD的boot load怎么去修改默认值,也没找到这方面的资料。
发表于 2004-4-28 08:44:57 | 显示全部楼层

对此我也无能为力。

bsd的引导的确是不尽如人意,我一直使用grub来引导bsd,有两种方式,一种是指定bsd所在的主分区,如:(hdd0,1),或者指定bsd的跟分区,如(hdd0,1,a)。
此两种的引导要求grub安装在不同的位置。
对与bsd自身的load,还请哪位兄弟来指教。谢谢先。
发表于 2004-4-29 09:35:38 | 显示全部楼层
你的意思是说你现在的root分区是ad0s1d是吗?如果是在boot提示下手动输入root分区,进入系统后执行以下操作试试:

echo "boot 0:ad(0,d)/kernel" > /boot.config

如果你需要使用loader来加载kernel则:
echo "boot 0:ad(0,d)/boot/loader" > /boot.config

然后重新启动机器便可。

Good luck!
 楼主| 发表于 2004-4-29 09:40:10 | 显示全部楼层
:% :% :%
终于盼到正解了。谢谢谢谢
:thank :thank
发表于 2004-4-29 15:01:24 | 显示全部楼层
You're welcome ^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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