linux内核编译
来源:互联网 发布:mac jenkins 启动 编辑:程序博客网 时间:2024/06/17 20:04
为了学习内核代码,打算在虚拟机上学习代码,所以先把内核进行重新编译一次。对比了virtualbox和vmware,发现virtualbox虽然比较简单方便,但是还是商业化的vmware功能比较强大。记录一下遇到的问题:
安装vmware8.0.1,但是为了安装redhat9,所以设置了6.0的硬件,并且硬盘需要使用ide接口的,否则为了让redhat9这老古董去支持scsi太麻烦了,所以还是少折腾了。
网卡还是出问题了,解决方法:
以root权限,编辑 /etc/sysconfig/network-scripts/ifcfg-eth<n> 和
/etc/sysconfig/networking/devices/ifcfg-eth<n>
其中<n>是数字,比如eth0,
在每个文件中添加:
check_link_down ()
{
return 1;
}
从官方下载了2.4.0的内核版本,因为能够和正在看的linux内核源代码情景分析同步,放的虚拟机编译,失败。。。。。。预料之中。
出现4点报错:
1.xtime报重复包含,/usr/src/linux-2.4/include/linux/sched.h 和/usr/src/linux-2.4/include/asm/system.h,从网上找到解决办法
vim include/linux/sched.h
找到extern struct timeval xtime;
修改为extern volatile struct timeval xtime;
2.boot makefile -oformat不对 改成--oformat
3.driver/pci 还是makefile不对 对比2.4.20版本修改
4.所有的工作重新开始,在内核配置时要选中SCSI support——>SCSI low-level drivers——>BusLogic SCSI support,将其选为模块加载的方式,然后保存退出,然后接着往后进行内核的编译和模块的编译。
解决完这些问题,终于可以编译了,步骤如下:
make mrproper 把原来编译产生的垃圾删除
配置内核可以根据需要与爱好使用下面命令中的一个:
#make config (基于文本的最为传统的配置界面)
#make menuconfig (基于文本选单的配置界面)
#make xconfig (基于图形窗口模式的配置界面)
#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
#make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。
#make clean (确保所有有关文件都处于最新版本状态)
#make zImage (编译压缩形式的内核)
在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:
#make bzImage
编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。
#make modules (编译选择的模块)
#make modules_install (将编译后的模块转移到系统标准位置)
# make install
编译完后查看grub的menu.lst,多出了一个选项,reboot选到新的内核,好吧,又失望了,这次是内核初始化里面的一个函数报不能为空,估计是旧版本内核没有这个指针导致执行初始化程序时取不到指针,哎,内核定位以后再慢慢搞,看来还是的先用redhat9自带的内核版本来用,版本差距不大,后面再去分析吧。
- Linux内核:编译内核
- 【LINUX内核】LINUX内核编译
- Android编译 & Linux内核编译
- linux内核编译kernel编译
- Linux编译内核详解
- Linux编译内核详解
- linux内核编译
- 菜鸟编译Linux内核
- linux内核编译详解
- LINUX内核编译(ZT)
- Linux 内核编译 全功略
- 第一次编译linux内核
- linux内核编译步骤
- Linux内核编译步骤
- Linux 内核编译详解
- Linux内核编译详解
- Linux内核编译
- linux内核编译
- Linux 程序设计 第4版 陈健译 #3-#15
- GenericWritable实例
- 创业总结:创业公司怎样留人
- 用摄像头进行人脸和人眼实时检测的优化 算法
- hdu_1013_Digital Roots(模拟)
- linux内核编译
- KeyValueTextInputFormat实例
- java Heap Dump基本概念及如何获取
- Toad趣题:说真话的程序员 & 不说实话的经理
- HPU1287: HH实习 【贪心】
- java自学系列之0
- NLineInputFormat实例
- c++地址复制strcpy
- android中使用Application