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’,可以改成你想显示的任何字符。
安装新内核完毕
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’,可以改成你想显示的任何字符。
安装新内核完毕
相关文章推荐
- [Kernel] Linux 4.10.0+ 下编译安装内核模块(Hello World为例)
- Linux内核调试工具:Kdb的编译安装
- linux内核编译选项详解(三):Processor type and features
- linux 2.6.3x内核源码编译和安装
- Linux 环境下编译 0.11版本内核 kernel
- [转贴]linux内核编译选项详解(三):Processor type and features
- linux 内核编译安装及卸载
- Linux-3.10.1内核编译安装
- linux内核编译选项详解(三):Processor type and features
- [Linux] 内核编译安装
- Kinect sensor and Linux kernel driver
- linux内核基础及其编译安装
- ubuntu 10.04 编译安装linux-2.6.36内核(debug)
- 修复/boot及/etc/fstab、自制linux、编译安装内核
- Linux内核编译与安装
- Linux 内核编译安装
- Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核
- 虚拟机下编译安装linux-3.12.3内核
- Linux下配置交叉编译环境,配置编译内核及uboot安装
- linux-内核编译、安装grub、安装initrd及内核,screen,组装Linux