zoukankan      html  css  js  c++  java
  • Ubuntu下编译3.0.4内核

    Linux内核3.0版本发布已有一段时间了,不知道这个版本号大跃进的内核是否好用。不过目前各个发行版的linux还仍未采用3.0的内核,因此可以自己动手编译内核来感受一下!趁着这次编译内核的机会可以再熟悉一下编译内核的步骤。

    1.下载并解压内核到任意目录

    从源码官网下载最新的内核源码3.0.4,可以解压至任意目录,我放在主目录下:

     
    1. ~$ tar xjvf linux-3.0.4.tar.bz2  

    2.配置内核

    对内核进行配置是为了得到内核配置文件.config。通过对内核进行配置,可以使未来编译成功的内核增加或减少对一些内核特性的支持。对内核进行配置有多种方法,有基于文本的配置方式也有基于图形的用户界面。下面采用使用比较广泛的make menuconfig方式:

     
    1. ~/linux-3.0.4$sudo apt-get install libncurses5-dev  
    2. ~/linux-3.0.4$sudo make menuconfig  

    由于该配置方式基于ncurses库,所以在启动配置界面前要先安装ncurses库。启动配置界面前,必须进入源码根目录,配置界面启动成功后如下图:

    我们这里对内核按照默认的配置方式进行编译,因此当配置菜单启动后直接退出并保存即可。此时就在内核源码根目录下生成了.config。

    3.编译内核

    现在就可以编译内核了,不过整个编译过程比较漫长,因此可以对make加-j参数来提高编译的效率。在make时使用该选项会为编译过程分配n个并发任务,这样可以缩短编译时间。n的取值为cpu个数的二倍。

    1. ~/linux-3.0.4$sudo make -j4  

    上述过程会有两部分的工作,其一是编译内核,即编译配置选项中标记为Y的那部分内核;其二是编译内核模块,即编译配置选项中标记为M的那部分内核。

    4.安装内核模块以及内核

    首先对内核模块进行安装,这个过程会将刚刚编译内核模块时生成的内核模块复制到/lib/modules/3.0.4/目录下,其中3.0.4为对应的内核版本。使用的命令如下:

    1. ~/linux-3.0.4$sudo make modules_install  

    接着使用下述命令安装编译好的内核:

    1. ~/linux-3.0.4$sudo make install  

    安装内核的过程主要完成了以下的工作:

    1.将编译内核时生成的内核镜像bzImage拷贝到/boot目录下,并将这个镜像命名为vmlinuz-。如果使用x86的cpu,则该镜像位于arch/x86/boot/目录下(处于正在编译的内核源码下)。

    2.将~/linux-3.0.4/目录下的System.map拷贝到/boot/目录下,重新命名为System.map-3.0.4。该文件中存放了内核的符号表。

    3.将~/linux-3.0.4/目录下的.config拷贝到/boot/目录下,重新命名为config-3.0.4。

    5.创建initrd.img文件

    initrd.img即为初始化的ramdisk文件,它是一个镜像文件,将一些最基本的驱动程序和命令工具打包到镜像文件里。该镜像文件的作用是在系统还没有挂载根分区前,系统需要执行一些操作,比如挂载scsi驱动,此时将initrd文件释放到内存中,作为一个虚拟的根分区,然后执行相关脚本,运行insmod命令加载需要的模块。

    具体的创建方法如下:

    1. ~/linux-3.0.4$sudo mkinitramfs 3.0.4 -o /boot/initrd.img-3.0.4  

    6.更新grub

    最后一步则是更新grub启动菜单,使用下面的命令则可以自动更新启动菜单:

    1. sudo update-grub2  

    这样会将刚才编译好的内核放在启动菜单的首位,如果需要修改启动菜单中默认系统的启动顺序,则修改/boot/grub/grub.cfg文件中的set default=的值即可。

    OK,内核编译完毕。

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/ankier/p/2664523.html
Copyright © 2011-2022 走看看