QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3882|回复: 16

gentoo 更新内核,make 时报错

[复制链接]
发表于 2012-10-24 17:36:00 | 显示全部楼层 |阅读模式
今天升级系统后,最后升级 kernel 时遇到了问题:

我参照 wiki :
http://www.gentoo.org/doc/en/kernel-upgrade.xml

更新内核源码,用 eselect 更新软链接
  1. # emerge -u gentoo-sources

  2. # ll /usr/src
  3. total 8.0K
  4. drwxr-xr-x 17 root root 4.0K Oct 24 16:56 linux-3.5.7-gentoo
  5. lrwxrwxrwx  1 root root   18 Oct 24 16:33 linux -> linux-3.5.7-gentoo
  6. drwxr-xr-x 24 root root 4.0K Sep 13 16:36 linux-3.3.8-gentoo
复制代码
复制 linux-3.3.8-gentoo 的 .config 文件到 /usr/src/linux 进入该目录下
准备编译内核,报如下错误:

  1. gentoo linux # make oldconfig
  2. scripts/kconfig/conf --oldconfig Kconfig
  3. init/Kconfig:1111: can't open file "usr/Kconfig"
  4. make[1]: *** [oldconfig] Error 1
  5. make: *** [oldconfig] Error 2

  6. gentoo linux # make menuconfig
  7. scripts/kconfig/mconf Kconfig
  8. init/Kconfig:1111: can't open file "usr/Kconfig"
  9. make[1]: *** [menuconfig] Error 1
  10. make: *** [menuconfig] Error 2
复制代码

[ 本帖最后由 if_else 于 2012-10-24 17:39 编辑 ]
发表于 2012-10-24 19:52:53 | 显示全部楼层
检查内核文件是否完整
回复

使用道具 举报

 楼主| 发表于 2012-10-24 23:06:24 | 显示全部楼层
我重新 emerge ,仔细查看,输出发现是 failed 了
  1. >>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:
  2. >>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
  3. * GNU info directory index is up-to-date.
复制代码
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log 部分输出放在这里了:

http://bpaste.net/show/53273/

谢谢!
回复

使用道具 举报

发表于 2012-10-25 10:29:28 | 显示全部楼层
这个包安装失败,所以内核文件在 /usr/src 中的不完整,所以你编译会提示没有找到某些文件。
sys-kernel/gentoo-sources-3.5.7

其实内核的实际配置文件是
/usr/portage/sys-kernel/gentoo-sources/*.ebuild
里面会inherit
/usr/portage/eclass/kernel-2.eclass

so,这里面做的操作大体是,下载kernel,解压kernel到
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/work
在这里面要对源码打补丁啦,configure 和 编译(当然kernel在这里的编译几乎是没有操作)

然后会把这写准备好的文件(如果是其他包,那么这写文件应该已经编译成了二进制,不过这是source包,所以都是源文件)安装到
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/image/

那看你的log,上面的这几个步骤都是正常的,
最后将
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/image/
里面的文件安装到系统的
/usr/src
里面出现了collision 冲突。
你之前是不是拷贝 kernel文件到 /usr/src 中过,你把那里的文件删除后再安装。
回复

使用道具 举报

发表于 2012-10-25 13:27:17 | 显示全部楼层
之前的内核源代码怎么装的?
回复

使用道具 举报

 楼主| 发表于 2012-10-25 16:53:09 | 显示全部楼层
我移除 /usr/src 下的源码:

# ll
total 12K
drwxr-xr-x 17 root root 4.0K Oct 24 22:16 bak.linux-3.5.7-gentoo

重新 # emerge -u gentoo-sources 还是失败了。这是没有提示,文件冲突:
安装日志信息贴在这里:

http://bpaste.net/show/53478

编译时提示下面的错误:
  1. # make oldconfig
  2.   HOSTCC  scripts/basic/fixdep
  3.   HOSTCC  scripts/kconfig/conf.o
  4.   SHIPPED scripts/kconfig/zconf.tab.c
  5.   SHIPPED scripts/kconfig/zconf.lex.c
  6.   SHIPPED scripts/kconfig/zconf.hash.c
  7.   HOSTCC  scripts/kconfig/zconf.tab.o
  8.   HOSTLD  scripts/kconfig/conf
  9. scripts/kconfig/conf --oldconfig Kconfig
  10. init/Kconfig:1111: can't open file "usr/Kconfig"
  11. make[1]: *** [oldconfig] Error 1
  12. make: *** [oldconfig] Error 2
复制代码

[ 本帖最后由 if_else 于 2012-10-25 16:57 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2012-10-25 17:07:04 | 显示全部楼层
原帖由 jiangtao9999 于 2012-10-25 13:27 发表
之前的内核源代码怎么装的?


开始是通过升级方式安装的,安装 kernel 报错后换用 emerge -u gentoo-sources

  1. # time emerge -aDjNuv @world
  2. [ebuild  NS    ] sys-kernel/gentoo-sources-3.5.7 [3.3.8] USE="-build -deblob -symlink" 0 kB
复制代码
回复

使用道具 举报

发表于 2012-10-25 17:07:09 | 显示全部楼层
>>> Installing (1 of 1) sys-kernel/gentoo-sources-3.5.7

>>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:

>>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
看你的log,还是安装 gentoo-sources 失败了,把/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log贴上来看..
回复

使用道具 举报

 楼主| 发表于 2012-10-25 17:09:08 | 显示全部楼层
原帖由 zy_sunshine 于 2012-10-25 17:07 发表
>>> Installing (1 of 1) sys-kernel/gentoo-sources-3.5.7

>>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:

>>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
看你的 ...


log 里面和我上面贴的输出一样,下面是原始 log:
http://bpaste.net/show/53475/
回复

使用道具 举报

发表于 2012-10-25 17:22:18 | 显示全部楼层
if_else 同学, 错误已经很明显了...
包没安装好..你能解决的。只要包安装正确,编译肯定没问题。
回复

使用道具 举报

发表于 2012-10-25 18:27:44 | 显示全部楼层
原帖由 if_else 于 2012-10-25 05:07 PM 发表


开始是通过升级方式安装的,安装 kernel 报错后换用 emerge -u gentoo-sources
# time emerge -aDjNuv @world
[ebuild  NS    ] sys-kernel/gentoo-sources-3.5.7 [3.3.8] USE="-build -deblob -symlink" 0 kB ...

以前这个源代码没有存入 portage 的数据库,导致 emerge 提示出现已存在文件的问题而报错。
按理上说如果你用 emerge 安装的,不应该出现这个错误信息。
回复

使用道具 举报

发表于 2012-10-25 19:31:30 | 显示全部楼层
taotao,我和他连线对话了,这个问题是emerge的bug,可悲的emerge终于遭遇bug了。
我们把这个bug绕过去了。

[ 本帖最后由 zy_sunshine 于 2012-10-25 19:32 编辑 ]
回复

使用道具 举报

发表于 2012-10-25 21:58:06 | 显示全部楼层
这个 bug 我没遇到过。
回复

使用道具 举报

发表于 2012-10-26 00:19:00 | 显示全部楼层
emerge 在生成最后安装文件的时候,对每一个文件做检查的时候突然退出了,log里面也没有错误记录。
我直接用ebuild而没有用emerge把这个问题绕过去了。
回复

使用道具 举报

发表于 2012-10-26 09:04:10 | 显示全部楼层

删了内核源代码目录之后重新 emerge 就行了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-3-29 07:16 , Processed in 0.087653 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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