目的:

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 下编译内核的更多相关文章

  1. Ubuntu下编译内核

    一.下载源代码和编译软件的准备 下载内核源代码:http://www.kernel.org/ 注意,点击2.6.25内核的F版,即完整版. 如果你懒得去网站点联接,运行下列命令:  代码: $cd ~ ...

  2. ubuntu下编译内核驱动。

    目的: 1. 驱动热身.网上有很多类似的文章可供参考. 2. 在操作系统中, 编写这个设备的驱动. 3. 为写qemu的watchdog驱动练手. 有朋友问make的 watchdog驱动 需要什么准 ...

  3. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  4. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  5. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

  6. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  7. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  8. Ubuntu下编译Bilibili/ijkplayer

    在做Android客户端视频播放器的过程中熟悉ijkplayer.他在视频支持协议上要比Android原生的mediaplayer做的要好.因此,自己也基于Bilibili/ijkplayer的重新编 ...

  9. Ubuntu下编译SHTOOLS

    SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...

随机推荐

  1. 汽车总线obd模拟器,obd仿真器,ecu模拟器,obd开发测试工具,可以模拟ecu中的obd协议 MRD-5050

    汽车总线OBD模拟器MRD-5050型号是在车辆越来越趋于网络化的趋势下研发的,是汽车产品开发.调试.生产必备的工具,能为为开发人员节省大量的时间.当前车辆上的总线设备越来越多,有的高端车上甚至多到有 ...

  2. sqlserver 增加用户并分配权限

    1.创建用户cmd2:CREATE LOGIN cmd2 WITH  PASSWORD='123qwe!@#',DEFAULT_DATABASE=DEV_CMD CREATE USER cmd2 FO ...

  3. 如何在同一系统里同时启动多个Tomcat

    需要在同一系统里启动多个tomcat,应该怎么处理? tomcat是个服务程序,需要占用几个通讯端口,所以默认情况是不能启动多个tomcat,如果要启动多个tomcat,需要修改配置文件,通过在配置文 ...

  4. 用 Python脚本生成 Android SALT 扰码

    发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行) #!/usr/bin/python # F ...

  5. JavaEE Tutorials (22) - 事务

    22.1Java EE应用中的事务35222.2什么是事务35322.3容器托管事务353 22.3.1事务属性354 22.3.2回滚容器托管事务357 22.3.3同步会话bean的实例变量357 ...

  6. javascript 汉字拼音排序

    定义和用法 用本地特定的顺序来比较两个字符串. 语法 stringObject.localeCompare(target) 参数 描述 target 要以本地特定的顺序与 stringObject 进 ...

  7. javascript时间处理方法收集

    首先收集到的是一个给某一个时间对象增加一段时间的方法, 例如2026-05-11增加一个月的时间,增加后时间为2026-05-11, 代码如下: function DateAdd(interval,n ...

  8. iOS开发之GCD使用总结

    GCD是iOS的一种底层多线程机制,今天总结一下GCD的常用API和概念,希望对大家的学习起到帮助作用. GCD队列的概念 在多线程开发当中,程序员只要将想做的事情定义好,并追加到DispatchQu ...

  9. 函数(jquery)

    <script type="text/javascript"> function makeArray(arg1, arg2){    return [ this, ar ...

  10. .CN根域名被攻击至瘫痪,谁之过?【转】

    2013年8月25日凌晨,.CN域名凌晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析.事故造成大量以.cn和.com.cn结尾的域名无法访问.直到当日凌晨4点 ...