Linux内核笔记(1) 编译内核
2011-05-22 16:29
555 查看
内核学习笔记,既然是笔记就记住关键的东西,杂七杂八的慢慢再说啦。下面介绍编译内核的几个简单步骤:
1。到www.kernel.org下载内核去
2。mkdir /usr/src/linux-2.6.37
cp 2.6.37.tar.bz2 /usr/src/linux-2.6.37 (刚出来的)
3。解压缩其他的情况不考虑了,具体问题具体分析
tar -jxvf
2.6.37.tar.bz2
/////////////////////////////////
下面的作用是更新头文件,防止今后你编写驱动的时候出现头文件和内核不一致的现象!!!
将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
/////////////////////////////////
4。
删除源代码目录中残留的.o文件和其它从属文件。
make mrproper
5。开始编译内核这里做一些配置
make menuconfig或make config或make xconfig
我用的是ubuntu 10.04需要用make menuconfig 需要安装点东西
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
sudo
apt-get install build-essential
sudo
apt-get install libncurses5
sudo
apt-get install libncurses5-dev
6。建立编译时所需的从属文件
make dep
7。
清除内核编译的目标文件
make clean
8。编译内核了
make zImage
这里默认情况是编译的内核大小在640kb以内,如果多了的话就要用 make bzImage
9。编译可加载模块
如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。
make modules
make modelus_install
10。以上的步骤已经完成了内核的编译工作了,哈哈。下面的就是怎么把新的内核应用到你的系统上了
cp /usr/src/linux-2.4.22/System.map /boot/System.map
vmlinuz 改为编译好的那个 位于/usr/src/linux/arch/x86/bzImage
cp
/usr/src/linux/arch/x86/bzImage /boot/vmlinuz
启动项啥的也要修改
/boot/grub/grub.cfg
///////////////////////////////////////////////
menuentry 'Ubuntu, with Linux 2.6.37' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,10)'
search --no-floppy --fs-uuid --set 886aea56-c98a-4b80-a0e3-026900d0b720
linux /boot/vmlinuz-2.6.37 root=UUID=886aea56-c98a-4b80-a0e3-026900d0b720 ro quiet splash
initrd /boot/initrd.img-2.6.32-24-generic
}
///////////////////////////////////////////////
//make install 据说这样就完了,不过我不敢哦,内核坏了两次后我就很小心了,不敢乱搞了。咱还是按部就班吧,实在!
经过上面的操作估计得有一两个小时了,编译比较慢。。。
重启出问题了 启动的时候有两个错误,具体的还不是很清楚,基本上就那个问题initrd.img,
后续将继续学习吧
参考:
http://www.chinaunix.net/jh/4/208791.html http://blog.csdn.net/cdsnmdl/archive/2009/02/22/3922513.aspx
1。到www.kernel.org下载内核去
2。mkdir /usr/src/linux-2.6.37
cp 2.6.37.tar.bz2 /usr/src/linux-2.6.37 (刚出来的)
3。解压缩其他的情况不考虑了,具体问题具体分析
tar -jxvf
2.6.37.tar.bz2
/////////////////////////////////
下面的作用是更新头文件,防止今后你编写驱动的时候出现头文件和内核不一致的现象!!!
将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
/////////////////////////////////
4。
删除源代码目录中残留的.o文件和其它从属文件。
make mrproper
5。开始编译内核这里做一些配置
make menuconfig或make config或make xconfig
我用的是ubuntu 10.04需要用make menuconfig 需要安装点东西
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
sudo
apt-get install build-essential
sudo
apt-get install libncurses5
sudo
apt-get install libncurses5-dev
6。建立编译时所需的从属文件
make dep
7。
清除内核编译的目标文件
make clean
8。编译内核了
make zImage
这里默认情况是编译的内核大小在640kb以内,如果多了的话就要用 make bzImage
9。编译可加载模块
如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。
make modules
make modelus_install
10。以上的步骤已经完成了内核的编译工作了,哈哈。下面的就是怎么把新的内核应用到你的系统上了
cp /usr/src/linux-2.4.22/System.map /boot/System.map
vmlinuz 改为编译好的那个 位于/usr/src/linux/arch/x86/bzImage
cp
/usr/src/linux/arch/x86/bzImage /boot/vmlinuz
启动项啥的也要修改
/boot/grub/grub.cfg
///////////////////////////////////////////////
menuentry 'Ubuntu, with Linux 2.6.37' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,10)'
search --no-floppy --fs-uuid --set 886aea56-c98a-4b80-a0e3-026900d0b720
linux /boot/vmlinuz-2.6.37 root=UUID=886aea56-c98a-4b80-a0e3-026900d0b720 ro quiet splash
initrd /boot/initrd.img-2.6.32-24-generic
}
///////////////////////////////////////////////
//make install 据说这样就完了,不过我不敢哦,内核坏了两次后我就很小心了,不敢乱搞了。咱还是按部就班吧,实在!
经过上面的操作估计得有一两个小时了,编译比较慢。。。
重启出问题了 启动的时候有两个错误,具体的还不是很清楚,基本上就那个问题initrd.img,
后续将继续学习吧
参考:
http://www.chinaunix.net/jh/4/208791.html http://blog.csdn.net/cdsnmdl/archive/2009/02/22/3922513.aspx
相关文章推荐
- Linux内核笔记 - 内核编译错误及解决方法记录
- 【学习笔记】编译Linux内核(上)--编译基于x86平台的Linux内核的过程
- 【学习笔记】编译Linux内核(中)--安装内核时易出现的问题和解决方案
- 编译Linux内核过程记录(以内核版本2.6.39.1为例)
- Linux内核分析第六周学习笔记——分析Linux内核创建一个新进程的过程
- 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译
- Linux内核编译,内核模块编译加载
- linux内核学习笔记-Linux 内核系统体系结构
- 内核笔记2-Linux内核进程控制
- linux内核学习笔记【一】临时内核页表 Provisional kernel Page Tables
- 如何编译Linux内核(编译linux内核的基本步骤)
- 学习笔记 --- LINUX内核的配置与编译分析
- 编译Linux0.00内核(《Linux内核完全剖析-基于0.12内核》)linux-0.00-041217和linux-0.00-050613
- Android学习【Android内核编译流程和错误笔记】
- 旧版本linux内核升级到新版本内核编译选择
- Linux内核裁剪与编译(下篇)--基于2.6.30内核
- Linux内核学习笔记九——内核内存管理方式
- linux内核学习笔记【二】最终内核页表 Final kernel Page Table
- 在Debian 4.0rc3上编译内核2.6.24时加入Layer7模块笔记[防火墙中在TCP/IP第七层Layer7应用层阻挡QQ,MSN等软件的应用]