LinuxSir.cn,穿越时空的Linuxsir!

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

为什么内核模块安装在/lib/modules目录下?能不能将内核模块安装在/boot下?

[复制链接]
发表于 2011-8-8 23:21:19 | 显示全部楼层 |阅读模式
内核映像在boot目录下,模块却在/lib目录下。这个设计有什么技术原因吗?
一方面是安全性会差些,boot分区一般比root分区更稳定。
还有是如果内核映像和模块在一个分区里备份会更方便。
发表于 2011-8-8 23:55:55 | 显示全部楼层
你是指独立的 /boot 分区?你要考虑到不少人的 fstab 里根本不挂载 /boot
回复 支持 反对

使用道具 举报

发表于 2011-8-9 01:13:08 | 显示全部楼层
模块是在最基本的内核加载完之后加载的。。。。
然后是根据系统的配置加载的模块。。。


具体参见:http://www.360doc.com/content/11/0119/15/1317564_87628375.shtml
回复 支持 反对

使用道具 举报

发表于 2011-8-9 09:47:17 | 显示全部楼层
首先,根目录下几个目录是不能单独分区的:

/sbin /bin 重要的二进制文件
/etc 配置文件
/lib (/lib32 /lib64) 重要的库文件

这些目录下的一些文件在启动时(挂载前)都会用到。比如 /etc/fstab ,如果 /etc 单独分区,产生的问题可想而知。

Gentoo 官方给的内核编译安装方案是,不用 initrd ,只用一个内核就好。以此为例:假如我的分区挂载点与格式列表如
/    ext3
/boot    ext2
/usr    jfs

然后我在内核编译的时候,将 ext3 编入内核, ext2 jfs 等编成模块。
若模块在 /lib 下,这是没问题的。
若模块在 /boot 下,这样做显然会导致 /boot /usr 不能被正确挂载。


当然,我这么说不能使人信服,因为我不能证明:先有这类用户习惯,再有 linux 如此设计。

那么还是从 linux 目录结构的约定俗称解释。/lib 是重要的库文件。 /boot 是启动相关文件。kernel 在 /boot ,启动时直接进驻内存,所以 /boot 不必挂载。而 modules 在 /lib 是因 modules 可算是 kernel 的库文件吧。

当然这是个人浅见,有什么问题请不吝指教
回复 支持 反对

使用道具 举报

发表于 2011-8-9 11:24:20 | 显示全部楼层
感觉楼上的说法挺有说服力的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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