热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(Mark)(Ubuntu)Ubuntu12.04LTS编译内核(Linux)(内核)

编译环境为Ubuntu12.04LTS64Bit内核版本3.2.0-591.https:www.kernel.org下载内核和补丁linux-3.13.6.tar.xz和patch

 

编译环境为Ubuntu 12.04 LTS 64 Bit 内核版本3.2.0-59

1.https://www.kernel.org/下载内核和补丁linux-3.13.6.tar.xz和patch-3.13.6.xz

2.安装编译时需要的工具,构建编译环境

sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers

注:

build-essential  (基本的编程库(gcc, make等)

kernel-package   (Debian 系统里生成 kernel-image 的一些配置文件和工具)

libncurses5-dev  (meke menuconfig要调用的)

libqt3-headers   (make xconfig要调用的)

 

3.解压内核到/usr/src/下,补丁到/usr/src/linux-3.13.6/下

sudo tar xvf linux-3.13.6.tar.xz -C /usr/src/
xz
-d patch-3.13.6.xz
sudo cp patch-3.13.6 /usr/src/linux-3.13.6/

4.净化内核

cd /usr/src/linux-3.13.6/
sudo make mrproper

注:

 make mrproper

 删除之前编译所生成的文件和配置文件,备份文件,如.config配置文件。如果你是第一次编译,可不执行。

5.为内核打上补丁,用file 命令查看补丁

file patch-3.13.6

输出:patch-3.13.6: unified diff output, ASCII text

此处Patch文件使用diff 做的,因此使用diff命令打补丁

sudo diff -rN patch-3.13.6 ./

注:如果patch文件是patch做成的,那么就相应的用:patch -p1

5.配置内核

  对于内核配置可不是那么熟练什么的,可以用原来系统中存在的配置文件。原来系统中的配置文件,位置有两种情况:一是放在/boot下面的,一个是放在/usr/src/linux-headers-xxxxx-generic/下面.

  本机是把/usr/src/linux-headers-xxx-generic/下面的.config复制到要编译的内核路径下

sudo cp ../linux-headers-3.2.0-59-generic/.config ./

或者  sudo cp /boot/config-3.2.0-59-generic ./.config

6.清理编译中间文件

sudo make clean

注: 删除绝大多数编译生产的文件并保留配置文件。如果你是第一次编译,可不执行

7.在menuconfig中配置内核

sudo make menuconfig

默认会加载.config的配置,也可根据自己的需求在界面中修改。然后 Exit --->Yes

8.编译

sudo make -j4

注:make命令可以理解为 make bzImage(编译内核) 和make modules (编译模块)

-j4 表示jobs=4,同时最多跑4个进程。make自己会协调,如果CPU等资源不够可能小于4个。不过一般瓶颈都在硬盘,所以一般能看到4个进程一起跑。

9.安装模块,将编译好的模块安装到/lib/modules/下

sudo make modules_install

10.创建创建initrd 文件

sudo mkinitramfs -o /boot/initrd.img-3.13.6-generic

注:如果linux系统安装在scsi磁盘上,这步是必须的,否则可以跳过。

11.安装内核

sudo make install

注:此步包含如下操作

cp /usr/src/linux-3.13.6/arch/x86/boot/bzImage /boot/vmlinuz-3.13.6-generic
cp/usr/src/linux-3.13.6/System.map /boot/System.map-3.13.6-generic

12.更新grub

update-grub2

到此完成内核编译安装完成

注:使用命令查看grub添加的信息 3.13.6 为新编的内核

sudo gedit /boot/grub/grub.cfg

查看信息中包含如下配置描述

menuentry 'Ubuntu,Linux 3.13.6-generic' --class ubuntu --class gnu-linux --class gnu --class os {recordfailgfxmode $linux_gfx_modeinsmod gzioinsmod part_msdosinsmod ext2set root='(hd0,msdos8)'search --no-floppy --fs-uuid --set=root 67f03453-7d9b-4a50-9441-ce3af69abc42linux /boot/vmlinuz-3.13.6-generic root=UUID=67f03453-7d9b-4a50-9441-ce3af69abc42 ro quiet splash $vt_handoffinitrd /boot/initrd.img-3.13.6-generic
}

重新编译可从第6步开始,如要清除配置文件从第4步开始。

 

 

转:https://www.cnblogs.com/think-o/p/3586655.html



推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
author-avatar
失意的汐_194
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有