当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 新编译的Linux内核,GRUB引导提示invalid magic number
帖子发表于 : 2010-11-22 12:34 

注册: 2010-11-22 12:12
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
我的电脑装的 Ubuntu 10.04 LTS, 内核是 2.6.32版.
我想学学怎么编译更新内核,昨晚编译Linux内核2.6.35版, menuconfig里基本上没改什么重要设置,只是关掉了"压缩内核".
[/share/linux] # make
由于机器比较趴,然后我就睡觉了.今天早上起来发现vmlinux文件编译完成,同时也生成了System.map文件,没有make失败我想应该OK吧.
为了验证它确实可以引导:
[/share/linux] # cp System.map /boot/System.map-2.6.35
[/share/linux] # cp vmlinux vmlinuz-2.6.35
我把这两个文件复制到/boot下,把vmlinux重命名为vmlinuz是为了和/boot下的其它vmlinuz"对齐".
然后我发现ubuntu的vmlinuz都有一个initrd.img文件.
[/share/linux] # mkinitramfs -o initrd.img-2.6.35
我不知道initrd是啥,这个命令网上找到的,貌似用这个命令成功生成了一个,所以没有深究.
[/share/linux] # mv initrd* /boot
然后:
[/share/linux] # update-grub

重启之后,菜单中有了新的内核选项,我选择它启动却失败了,错误信息:

error: invalid magic number
error: you need to load the kernel first

press any key to continue...

然后我想,会不会因为内核没压缩过,而我起名为vmlinuz的问题,于是:
[/boot] # mv /boot/vmlinuz-2.6.35 /boot/vmlinux-2.6.35
[/boot] # update-grub
错误信息依旧.

我刚才说,机器比较趴嘛,所以在重新编译一个内核之前,上论坛来问问,有没有哪位大虾能帮帮忙,谢谢哦!

顺便附一下我的电脑磁盘分区:
引用:
Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x71087376

Device Boot Start End Blocks Id System
/dev/sda1 * 57 12289718 6144831 b W95 FAT32
Partition 1 does not end on cylinder boundary.
/dev/sda2 12289725 16386299 2048287+ 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 16386300 156296384 69955042+ f W95 Ext'd (LBA)
Partition 3 does not end on cylinder boundary.
/dev/sda5 16386363 38925494 11269566 83 Linux
/dev/sda6 38925558 53882009 7478226 83 Linux
/dev/sda7 53882073 156296384 51207156 b W95 FAT32

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x205f205f

Device Boot Start End Blocks Id System
/dev/sdb1 63 61448624 30724281 c W95 FAT32 (LBA)
/dev/sdb2 61448625 976768064 457659720 f W95 Ext'd (LBA)
/dev/sdb5 61448688 348176744 143364028+ 7 HPFS/NTFS
/dev/sdb6 348176808 552989429 102406311 b W95 FAT32
/dev/sdb7 552989493 976768064 211889286 7 HPFS/NTFS


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 新编译的Linux内核,GRUB引导提示invalid magic number
帖子发表于 : 2010-11-22 21:42 

注册: 2010-11-20 11:33
帖子: 57
送出感谢: 1
接收感谢: 0 次
原来有update-grub这个命令的啊! :em06
cat那个grub.cfg让我们看看!
另外生成那个什么initrd.img之前,是否要建立模块的? make modules && make modules_install
然后看看/lib/modules,应该有个新建立的模块文件夹吧(NmodulesDIR);创建initrd.img:
mkinitramfs NmodulesDIR -o /boot/initrd.img-xxxxx

反正我编译内核是这样一个过程,虽然编译出来的内核没有声音!郁闷!


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 新编译的Linux内核,GRUB引导提示invalid magic number
帖子发表于 : 2011-04-14 18:02 

注册: 2010-04-15 18:55
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
您好,请问您这个问题解决了吗?
我现在也遇到同样的问题了。。
不知道您怎么解决的。
方便的话告诉我下吧。。
我邮箱
yanjl04@gmail.com


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 新编译的Linux内核,GRUB引导提示invalid magic number
帖子发表于 : 2011-11-27 12:55 

注册: 2011-11-27 12:48
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
mkinitramfs 生成 initrd 文件时没有指定 内核,默认使用当前内核,而不是新的内核,应该是
mkinitramfs -o initrd.img-2.6.35 linux-2.6.35
也许你的内核名称不是 linux-2.6.35,自己改就是了


_________________
You're never really done for as long as you've got a good story and someone to tell it to.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译