默认配置不一定可信
今天在twitter上闹了个笑话。
因为gentoo stage3默认的fstab文件语法有问题。我一直以为这是convention,标准。
还傻不拉吉的去twitter上问,OS能引导起来,但boot目录是空的,是不是kernel的secutiy patch,或init script将boot分区内的文件隐藏了。
后来发现,原来是我在fstab里的一个单词写错了,实在汗颜。
old: /dev/sda1 /boot ext2 noauto,noatime 1 2 new: /dev/sda1 /boot ext2 defaults,noatime 1 2
不过仔细想想,还是因为碰到问题后,没有仔细做分析。现在来亡羊补牢一下:
为什么系统能正常引导,而boot文件夹是空的?
只要理解grub.conf与fstab是位于OS启动的两个不同阶段装载的,这个问题就迎刃而解了。
1,grub.conf是在创建 initramfs(内存文件系统,用于临时加载内核) 之前就载入了。
grub.conf里配置了如下信息
root(hd0,0) // 第一分区,我把sda1作为boot分区 kernel /boot/kernel root=/dev/sda3
因此,他不靠fstab,也能找到正确的boot分区,读到内核文件。
2,fstab是init进程调用的,也就是处于系统环境初始化阶段。
这个时候OS已经正常启动了,boot目录空否都不会直接影响OS的运作。所以,这个问题的根源,只能是init没去挂载boot或挂载失败。
上面分析结果,如果在问题发生时,也能想到,就不会闹这么大笑话了。
最后,我还是提醒大家,不要坚信默认配置,也许哪天作者犯迷糊,就给你留个大惊喜呢!
转载请注明原文链接:http://kenwublog.com/dont-trust-default-configuration
您好,最近我也在装gentoo,原本是出于好奇心的,依照说明文档装的,有些地方依旧是不知所云,不知道为什么这样做,装是装起来了,但进入系统后pwd在/boot 目录,不知道为什么这样。
进入系统后,默认是在/root,在/boot说明你是手动挂载的。
这不是默认配置有语法问题,也不是作者犯迷糊。如果您使用独立的boot分区,由于系统启动是不需要访问/boot分区除非你需要修改内核或者启动菜单。因此默认配置是设置为不自动加载boot分区,以避免误操作。如果需要手动加载即可。