内核编译后 重启进入系统出现错误

RealFiona 2007-12-05 12:54:14
我机子上装的是Ubuntu 内核版本是2.6.22 因为学习需要要编译内核 2.6.17
把许多内核编译需要的包都装上了 像gcc的build-essential kernel-package initrd-tools..
gcc --version 显示的是4.1.3
步骤是
make mrproper
make menuconfig
make
make modules_install
make install
可是这样的话连make都过不了 出现下面的错误
init/built-in.o: In function `try_name':
do_mounts.c: (.text+0x47f): undefined reference to `__stack_chk_fail'
init/built-in.o: In function `name_to_dev_t':
(.text+0x6de): undefined reference to `__stack_chk_fail'
init/built-in.o: In function `change_floppy':
(.init.text+0x851): undefined reference to `__stack_chk_fail'
init/built-in.o: In function `mount_block_root':
(.init.text+0xa6c) : undefined reference to `__stack_chk_fail'
init/built-in.o: In function `do_header':
initramfs.c: (.init.text+0x417c): undefined reference to `__stack_chk_fail'
arch/i386/kernel/built-in.o: (.text+0x48a0) : more undefined references to `__stack_chk_fail' follow
make: *** [.tmp_vmlinux1] 错误 1

同学的机子上和我是同一张盘装的 他没问题 编译成功的
然后去百度了一下 在CFLAGS 后多另了-fno-stack-protector选项(不知道为什么) 这样一来编译倒是通过了
但是在编译模块的时候 警告是满屏幕的闪过 不管了
然后一步一步做下去 mkinitrd -o /boot/initrd.img-2.6.17xxx 2.6.17xxx

重启
可是刚过了Grub就出现下面的问题。。没辙了 到这来向大家请教了
[17179569:552000] PCI: BIOS Bug : MCFG area not E820-reserved
[17179569:552000] PCI: Not using MMCONFIG
[17179570:440000] padlock: VIA PadLock not detected
mount: unknown file system type "devfs"
unmount: devfs : not mounted
/scripts/ext3-add-journal sh: 27 : arith : syntax error "0x"
/sbin/init:426:arith: syntax error : "0x"
[17179572:556000] Kernel panic-not syncing : Attempted to kill init!
...全文
754 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
接分是王道!
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
RealFiona 2007-12-08
  • 打赏
  • 举报
回复
/boot/config-2.6.22-14-generic:3065:warning: symbol value 'm' invalid for WAN_ROUTER_DRIVERS
/boot/config-2.6.22-14-generic:3076:warning: trying to assign nonexistent symbol WLAN_80211
/boot/config-2.6.22-14-generic:3077:warning: trying to assign nonexistent symbol WLAN_PRE80211
/boot/config-2.6.22-14-generic:3096:warning: trying to assign nonexistent symbol ZD1211RW
/boot/config-2.6.22-14-generic:3097:warning: trying to assign nonexistent symbol ZD1211RW_DEBUG

是不是意味着从/boot目录取了配置文件?
RealFiona 2007-12-07
  • 打赏
  • 举报
回复
这个我知道 但是我想问的是为什么会产生关于/boot/config-2.6.22-14-generic这个原内核的配置文件的警告?
make menuconfig还会用到这个配置文件吗?
hefuhua 2007-12-07
  • 打赏
  • 举报
回复
只要能用这些警告一般可以忽略,主要是gcc的版本不样引起的,当然有时间可以慢慢的学习gcc配置和新的特性功能,解决这些警告问题
RealFiona 2007-12-07
  • 打赏
  • 举报
回复
我把同样的内核版本放到FC4下面去编译,成功了,可以进系统的

这是不是意味着我用默认的配置 可以满足我机子的需要?
默认的配置是在源码生成的 那么make menuconfig的时候 这些警告是怎么产生的?
/boot/config-2.6.22-14-generic:3065:warning: symbol value 'm' invalid for WAN_ROUTER_DRIVERS
/boot/config-2.6.22-14-generic:3076:warning: trying to assign nonexistent symbol WLAN_80211
/boot/config-2.6.22-14-generic:3077:warning: trying to assign nonexistent symbol WLAN_PRE80211
/boot/config-2.6.22-14-generic:3096:warning: trying to assign nonexistent symbol ZD1211RW
/boot/config-2.6.22-14-generic:3097:warning: trying to assign nonexistent symbol ZD1211RW_DEBUG

hefuhua 2007-12-07
  • 打赏
  • 举报
回复
如果你用以前的config文件为.config文件的话,经过make menuconfig存盘后,一般会在原来的基础上重新产生模块依赖关系..
RealFiona 2007-12-05
  • 打赏
  • 举报
回复
这么一大堆问题搞得我头疼死了
大家帮忙解决下吧
sangshener 2007-12-05
  • 打赏
  • 举报
回复
觉得是机器的问题,默认的配置不一定适合你,就像我没有SCSI设备,而默认的有,结果升级过程中就出现了问题。
tb01412 2007-12-05
  • 打赏
  • 举报
回复
1.如果是默认的话,就是在源码中默认的配置,默认的配置并不一定适合你机子啊,不过一般情况下是适合的.每个机子不太一样,比如就说分区的问题,你用手动分区与自动分区的结果就不一样,如果用默认的配置,你是自动分区的话,肯定是挂不上根文件系统的.自动分区时那个分区表有点怪,连BOOT分区都是单独一个,而且还有个LVM之类的东东,这个东东在默认的内核配置中是没有选上的.
2.你可不可以先卸载掉开发环境?我用的是FC5,用rpm命令可以卸载,但是不清楚你用那种是如何卸载的,肯定能卸载.
3.如果initrd.img已经重新做过,估计是没问题的
RealFiona 2007-12-05
  • 打赏
  • 举报
回复
1。同学make menuconfig的是用默认的配置的 太菜了嘛。。
说到这里我想问一下了 他那个默认是本来源码包里面就有了的呢 还是从系统中的配置文件导进来的。
因为我帅上了这些警告。。
/boot/config-2.6.22-14-generic:3065:warning: symbol value 'm' invalid for WAN_ROUTER_DRIVERS
/boot/config-2.6.22-14-generic:3076:warning: trying to assign nonexistent symbol WLAN_80211
/boot/config-2.6.22-14-generic:3077:warning: trying to assign nonexistent symbol WLAN_PRE80211
/boot/config-2.6.22-14-generic:3096:warning: trying to assign nonexistent symbol ZD1211RW
/boot/config-2.6.22-14-generic:3097:warning: trying to assign nonexistent symbol ZD1211RW_DEBUG

2。GCC版本同学的更新过了 比我高他是4.2.3 我是4.1.3(可是 我装了4.2.1了,但是gcc --version显示的还是4.1.3 假怎么样才能替换成高版本 直接更新也不行 源里面有这个包的)

3.initrd.img已经重新做过的啊
tb01412 2007-12-05
  • 打赏
  • 举报
回复
1.在make menuconfig时你的配置是否正确,试着在内核当中将DEVFS文件系统选上,诸如此类的...
2.试着降低你的GCC版本,比如降低到带2.6.17版本内核的发行版中所带的GCC版本,如果你朋友的机子上能成功,说明GCC版本应该没问题.
3.如果内核变了,那个initrd映像文件需要改变,主要是对ext3文件系统的支持,默认情况下,对ext3文件系统的支持是以模块形式加载的,并放在了initrd映像文件中,如果你内核版本变了,加载此模块文件时就会出错,从而无法加载根文件系统,所以你有两个办法,一是解压此映像文件,替换新版本的对EXT3文件系统支持的模块文件.另一种办法就是直接将对EXT3文件系统的部分直接编译到内核当中.

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧