您的位置:首页 > 运维架构 > Linux

linux kernel and driver-编译安装内核

2015-04-13 23:27 405 查看
开发主机系统:ubuntu10.04

1. 安装一些库和工具,否则编译内核时可能出现错误:

$sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev x11proto-core-dev libx11-dev libg11-mesa-dev g++-multilib mingw32 tofrodos libncurese5-dev

2. 在https://www.kernel.org/pub/linux/kernel/上下载需要的内核版本,我下载的是linux-2.6.38.8.tar.gz版本的内核:

ubuntu的内核源码树在/usr/src/目录中,则把linux-2.6.38.8.tar.gz复制到/usr/src/下。

3. $cd /usr/src,跳到/usr/src/目录下,然后$sudo tar -zvxf linux-2.6.38.8.tar.gz解压内核包后



linux-2.6.38.8就是解压后的内核源码目录。

4. $cd linuxlinux-2.6.38.8下:

  $sudo make menuconfig进行内核配置,然后保存(我选择默认后,直接exit、保存),如图选择yes后会在linux-2.6.38.8生成.config配置文件





5. $sudo make编译内核

6. $sudo make_install,如图会在/lib/modules下生成2.6.28.8模块目录



7. $sudo make bzImage会在arch/x86/boot/下生成bzImage内核镜像文件

8. $sudo make install,此命令相当于

     $sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.38.8

     $sudo cp .config /boot/config-2.6.38.8,并在/boot/目录下创建System.map-2.6.38.8文件

 


其中System.map-2.6.38.8是编译内核时产生的内核符号表。可以在网页引用中查看关于内核符号表的详细介绍http://blog.chinaunix.net/uid-17188120-id-2820834.html

9. $sudo mkinitramfs -o /boot/initrd.linux2.6.38.8 2.6.28.8

  如果是虚拟机安装的Ubuntu,则需要执行次命令,用于引导系统启动,否则启动的时候会显示 vfs挂载失败之类的错误

  2.6.28.8是前面make modules_install安装到/lib/modules/目录下的模块文件夹名

10. $sudo gedit /etc/default/grub将GRUB_HIDDEN_TIMEOUT=0用#注释掉,这样启动内核时会有延时等待时间。

11. $sudo update-grub,会自动搜索/boot文件夹,将相应的镜像加入/boot/grub/grub.cfg启动菜单,并根据/etc/default/grub内容更新配置文件。

  因为是虚拟机安装的ubuntu,所以在/boot/grub/grub.cfg中添加如图圈中所示代码,initrd.linux2.6.38.8是步骤9中生成的文件。

 


保存后重启会有如下图选择启动的内核,只要选择“Ubuntu,Linux 2.6.38.8”即可使用新安装的内核启动系统,此时“Ubuntu,Linux 2.6.38.8”就是上图中“menuentry ‘Ubuntu,Linux 2.6.38.8’ --class .......”的 ‘Ubuntu,Linux 2.6.38.8’,可以改成你想显示的任何字符。

 


安装新内核完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux kernel 驱动 ubuntu