首页 > 代码库 > ubuntu 下编译内核

ubuntu 下编译内核

目的:

1. 练习。网上有很多类似的文章可供参考。

2. 为写qemu的watchdog驱动练手。

有朋友问make的 watchdog驱动 需要什么准备,所以写这个blog。

环境:

ubuntu 12.04.4

耗时(基于熟悉linux环境和操作系统的条件下):

  1. make 时间 大于1个小时

 

过程:

1.安装编译内核所需要的软件

$ apt-get install build-essential kernel-package libncurses5-dev

2.下载内核源码

先查看linux内核版本:

$ uname -r

3.11.0-15-generic

搜索内核源码

$ apt-cache search linux-source

linux-source - Linux kernel source with Ubuntu patches
linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches

会列出一些可选源码包,选择你的内核版本号, “with Ubuntu patche”的那个

下载

$ apt-get install linux-source

下载之。会在/usr/src下。 解压缩源码包(tar jxvf  linux-source.tar.bz2),进入解压后的源码目录。

配置内核:

有三种选择选择方式1:make oldconfig  2:make  menuconfig 3:make  xconfig

最快的是配置原版的配置方法

$ cd /usr/src/linux-x.x.xx

$ sudo  make  oldconfig

(如果配置的过程中出现问题,原因是因为没有下载配置环境的那个依赖的库文件,可以自己下载)

可以借用Ubuntu原来内核的一个配置文件, 将linux-headers-x.x.xx-xx-generic目录下的.config 我们把它拷贝到刚下好解压的目录,也就是linux-source-x.x.xx

$ sudo cp /usr/src/linux-headers-x.x.xx-xx-generic/.config /usr/src/linux-x.x.xx

$ cp  /boot/config-x.x.xx-xx-generic ~/linux-x.x.xx

$ sudo  make menuconfig

编译内核

#sudo  make -j4

这个过程很漫长,建议去做做别的事情。  -j 取决于你的CPU的个数。

#sudo  make  zImage

执行结束之后,会在当前目录下面生成一个新的文件:vmlinux

编译模块

#sudo make  modules

安装模块

#sudo  make  modules_install

这条命令能在/lib/modules目录下产生一个目录

$ sudo make install

(以下的才做没有执行)

生成initrd

sudo update-initramfs -k -c x.x.xx

注意 :此处若使用mkinitramfs 则会在重启后报如下错误:

FATAL: Could not load /lib/modules/.../modules.dep

更新grub启动菜单

sudo update-grub

更新显卡驱动

重启后nvidia显卡驱动出错,报告ubuntu 正在运行在低画质模式,后面是各种failed to load。

通过ppa(personal package archive https://launchpad.net/ubuntu/+ppas)解决驱动更新问题

sudo sh -c "echo ‘deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu lucid main‘ >> /etc/apt/sources.list"
sudo sh -c "echo ‘deb-src http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu lucid main‘ >> /etc/apt/sources.list"

sudo apt-get update
sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings

至此最新版本内核安装完成

ubuntu 下编译内核