内核学习笔记,既然是笔记就记住关键的东西,杂七杂八的慢慢再说啦。下面介绍编译内核的几个简单步骤:

 

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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐