免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 双眼皮的猪
打印 上一主题 下一主题

编译内核相关问题.... [复制链接]

论坛徽章:
0
81 [报告]
发表于 2003-10-30 08:43 |只看该作者

编译内核相关问题....

晕倒,编译内核后如果是grub.conf作引导的话基本是不要修改什么。
直接REBOOT就OK了,如果想把内核的版本号改过来的话,你只要到里面改一下LABEL后面的版本号就可以了。
对了,你做的过程中的确有错。1、内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage 2、# make modules
# make modules_install  
编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录,里面存放着新内核的所有可加载模块。 3、启动新内核
1、将新内核和System.map文件拷贝到/boot目录下  
# cp /usr/src/linux-2.4/arch/i386/boot/bzImage  /boot/vmlinuz-2.4.7-10
# cp /usr/src/linux-2.4/System.map  /boot/System.map-2.4.7-10
# cd /boot  
# rm -f System.map   (删除原来的连接)
# ln -s System.map-2.4.7-10  System.map
然后到GRUB里面改一下版本号。
 2-3两步总的意思就是把新内核代替旧的 然后建立新的系统MAP的连接。

论坛徽章:
0
82 [报告]
发表于 2003-10-30 08:49 |只看该作者

编译内核相关问题....

编译内核后如果是grub.conf作引导的话基本是不要修改什么。
直接REBOOT就OK了,如果想把内核的版本号改过来的话,你只要到里面改一下LABEL后面的版本号就可以了。
对了,你做的过程中的确有错。1、内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage 2、# make modules
# make modules_install
编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录,里面存放着新内核的所有可加载模块。 3、启动新内核
1、将新内核和System.map文件拷贝到/boot目录下
# cp /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10
# cp /usr/src/linux-2.4/System.map /boot/System.map-2.4.7-10
# cd /boot
# rm -f System.map (删除原来的连接)
# ln -s System.map-2.4.7-10 System.map
然后到GRUB里面改一下版本号。
 2-3两步总的意思就是把新内核代替旧的 然后建立新的系统MAP的连接

论坛徽章:
0
83 [报告]
发表于 2003-10-30 09:05 |只看该作者

编译内核相关问题....

错误

论坛徽章:
0
84 [报告]
发表于 2003-10-30 09:06 |只看该作者

编译内核相关问题....

刚才发错了!
up!
昨晚我花了好几个小时升级内核(2.6.0-test9),但老出新错误,放在这里,希望高手们分析一下什么原因.如下
mount: error 19 mounting ext3
pivot root: pivot_root(/sysroot,/sysroot/initrd) failed:2
unount /initrd/proc failed :2
Freeing unused kernel memory:236k freed
kernel panic:no init found
Try passing init option to kernel

论坛徽章:
0
85 [报告]
发表于 2003-10-30 09:37 |只看该作者

编译内核相关问题....

就是啊,好象现在的版本根本就不用修改,它自动就搞定了.现在甚至连备份都不用做,它会自动在新内核后加上custom的,我编了好几次了,都没有问题的!
wyckwemail:请重新开个帖如何,这个看得我累死了,而且你这样跟帖,别人都不会回哦,经验!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
86 [报告]
发表于 2003-10-30 11:46 |只看该作者

编译内核相关问题....

1) system.map 不用 copy ,它會自動更新。
2) Makefile 決定用甚麼版本。
3) 用 make install 或 make bzlilo 這類 target ,最好能了解它們底下做了些啥。
4) grub 只需改 menu.lst ,不需重灌 grub 。LILO 則不然。
5) menu.list 中的 root=(hdx,x) 的 root 是指 /boot partition
但 kernel 那行的 root=/dev/hdxx 則是指 / partition 。這點請留意。
6) 若 /boot 是獨立的 partition ,那 kernel 那行的 kernel image path 是從 / 下找(/boot partition),
要是 /boot 沒有切出來,那就要到 /boot/ 下找(/ paritition)
7) 要是用 SCSI 應碟,需要制作 initrd ,這除了要求在 kernel 中將 inittrd 編進 boot up 之外,還要產生正確的 module 才能 make initrd。
對開機流程了解一下,對 troubleshooting 很有幫助。
9) 任何時侯都建議 backup 及準備好 boot disk 。
10) 最後,多燒香拜佛、求神保祐...

论坛徽章:
0
87 [报告]
发表于 2003-10-30 13:06 |只看该作者

编译内核相关问题....

编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录


我也感觉问题没解决,这个过程没头绪...

楼上大哥的这句话好象不对,编译成功后,应该是在/lib/modules里边生成一个2.4.20-8custom的文件夹,所有modules,在这里

谢谢各位,学到不少东东 ...

以后有问题还要向大家多多请教....

继续编译,争取做到熟练:)

论坛徽章:
0
88 [报告]
发表于 2003-10-30 13:21 |只看该作者

编译内核相关问题....

1.你前后两次操作有没有添加modules?
而make modules_install 未用,system.map未替换,
却取得了成功?
看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚


2.为什么initrd的错误会导致根本不存在的SCSI的BusLogic module出错?
难道是内核报错的bug?因为很多的内核compile上都出现这问题?



看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚


非常感谢提出意见,我们把这个帖子一直顶下去如何?
我来解答一些问题:

在把新核心放进/boot之后,我觉得,在grub.conf里边指定一下,然后制作不制作initrd.img我个人认为无所谓,我的是IDE硬盘,因为这个你可以在grub.conf里边写initrd /initrd-2.4.20-8.img的这个地方改成no initrd,同样是可以启动的,因为initrd的存在是由于你使用了ext3格式以及SCSI磁盘.


是否make modules我觉得也没什么?这里我有点疑问...
make modules之后是否把编译好的modules放到/lib/modules/2.4.20-8custom去了?还是在make modules_install之后才放到那里去?
insmod和modprobe应该都是在/lib/modules/相应文件夹里查找模块的吧...
如果我make modules,modules 编译了,但是没安装?这又是个什么意思?
也就是,俺想知道make modules之前之后系统有哪些地方改变了.
make modules_install之前之后系统又有哪些地方改变了?
make install又是起什么作用,干什么的?


System.map如网中人大哥所说,自动更新:)

至于initrd.img
我有一点浅见:

initrd.img类似于ramdisk,在这里我写过:
http://chinaunix.net/forum/viewtopic.php?t=169044

initrd***.img

initrd的镜像,类似ramdisk,把一段程序打包到img里,然后在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程序


不同内核,初始化的img可以相同,也可以不同,不要也可以。。。

如果没有,可以在grub.conf里加上no initrd,它就跳过initrd的检测和执行了,以前好像就没有,后来才有的

在没有mount /分区以前,系统要执行一些操作,比如挂载驱动什么的,它就把initrd释放到内存里,作一个虚拟的/,然后执行

查看initrd.img:
initrd好像是gz格式的
cp initrd.img initrd.gz
guzip initrd.gz
mount -o loop initrd /mnt/floppy
试试
看看/mnt/floppy下有没有啥


initrd.img这里边主要是一些驱动,里面有buslogic.o文件,ext3.o等,而我在vm下为什么编译不成功,是因为vm中要求BusLogic做vm中SCSI的驱动...
所以会出错....但是为什么SCSI就会出错?我不大清楚...
我在vm当前系统中lsmod里边出现了BusLogic ...

论坛徽章:
0
89 [报告]
发表于 2003-10-30 13:29 |只看该作者

编译内核相关问题....

顶...

论坛徽章:
0
90 [报告]
发表于 2003-10-30 13:54 |只看该作者

编译内核相关问题....

十分建议你去搞本书系统的看一下,你的问题基本就明白了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP