[原创]ZFS与内核模块_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2447 | 回复: 0   主题: [原创]ZFS与内核模块        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2015-3-22 20:50:52 | [全部帖] [楼主帖] 楼主

系统安装时使用了ZFS,重新编译内核后,发现系统无法正常启动,提示“找不到启动介质”。 

北京联动北方科技有限公司
在启动时,也提示正在使用zfsboot启动,但是输入问号后只显示gpt,没有发现zfs的选项:
北京联动北方科技有限公司
原因是zfs没有编译,在编译内核时为了加快编译速度,用了NO_MOUDLES选项,导致zfs模块没有编译,所以在系统启动时就无法加载zfs模块,导致zfs模块不能使用。
另外zfs还需要两个模块:opensolaris和krpc,注意要把这两个模块一起编译才行。
正确的编译参数如下,这除了内核之外还编译zfs等三个模块,一般的机器5分钟之内就能完成:

make buildkernel KERNCONF=FB MODULES_OVERRIDE="zfs opensolaris krpc"


还要注意安装的时候也要指定MODULES_OVERRIDE,否则仍然没有zfs模块:

make installkernel KERNCONF=FB MODULES_OVERRIDE="zfs opensolaris krpc"


下图是一个老内核图,借用了一下,在加载内核之前,已显示加载zfs模块,但是没有提到krpc,因为通用内核中已经有这个模块了,所以不需要再加载。

北京联动北方科技有限公司
  另外再提示一点,如果编译内核后启动失败,在下面图片的选单中按一下“5”,就会切换到“kernel.old(2 of 2)”,kernel.old就是安装新内核时对老内核的备份。如果kernel.old也被重写(比如:一不小心改了内核配置,在重启前安装了两次以上错误的内核),可以用FreeBSD的启动盘进入live模式,挂载/boot后,把GERNRIC内核复制下来,复制的时候注意用-pR参数,保证目录和权限正确。
用Live进入FreeBSD的时候,可能会找不到zfs池,这时可以用zpool import -f zroot来导入,zroot是默认安装时的zfs池名,如果你改了名,必须要对应才可以,但是要注意这时整个系统都是安装后的系统了,Live上面的东西已经完全看不到,因为根已经被zroot重置了。

  最后的一个问题:为什么zfs不能编译进内核,只能作为内核模块呢?我也查了很长时间,正常情况下,应该是协议的问题,但是只看到gpl和cddl之间不兼容,没说BSD协议的事,但是一直没搞明白为什么zfs不能进内核。

该贴被wulcan编辑于2015-3-22 20:51:26



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论