zoukankan      html  css  js  c++  java
  • Linux内核编译

    前言

    最近在笔记本物理机装了Ubuntu系统,虽然不是并第一次实体机装Linux,但这是第一次认真配置了系统环境并在Linux下开发和学习。目前同时也在学习计算机操作系统的课程,因此尝试编译Linux内核,同时为以后学习Linux内核分析裁剪做准备。第一次踩了不少坑也查了不少资料,在此记录一下Linux内核编译的过程。

    下载内核源码并解压

    The Linux Kernel :Kernel
    这里我选择的是:Linux-3.16.49
    通过httpie代替wget下载:

    http https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.16.49.tar.xz --download
    

    解压Linux内核源码:

    xz -d linux-3.16.49.tar.xz
    tar xvf linux-3.16.49.tar
    
    cd linux-3.16.49
    

    配置内核

    make menuconfig
    

    make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录.
    #make config(基于文本的最为传统的配置界面,不推荐使用)
    #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
    #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
    #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
    目的都是生成一个.config文件,这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置。如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。 选择相应的配置时,有三种选择,它们分别代表的含义如下:
    Y--将该功能编译进内核
    N--不将该功能编译进内核
    M--将该功能编译成可以在需要时动态插入到内核中的模块

    运行失败有可能是缺少依赖库libncurses5-dev,也可能是终端窗口太小无法显示配置界面

    sudo apt-get install libncurses5-dev
    

    编译内核

    大概花了10分钟

    make all
    make modules
    

    创建初始化文件

    cd arch/x86/boot
    mkinitramfs -o initrd.img
    

    使用qemu运行内核

    qemu-system-x86_64 -kernel bzImage -initrd initrd.img -m 512M
    


    运行成功

    使用tmpfs和-j8参数加速编译

    经测试使用tmpfs和-j8参数多线程编译使整体编译时间缩短到2分钟以内

    测试环境:

    • CPU:i7-4720HQ
    • MEM:12GiB 1600MHz
    sudo mount tmpfs ~/ramdisk -t tmpfs -o size=3G
    make all -j8
  • 相关阅读:
    157 判断字符串是否没有重复字符
    53 翻转字符串
    671 循环单词
    8 旋转字符串
    39 恢复旋转字符串
    6 合并排序数组 Ⅱ
    64 合并排序数组
    60 搜索插入位置
    141 x的平方根
    TCSRM 593 div2(1000)(dp)
  • 原文地址:https://www.cnblogs.com/zbqhc/p/7744822.html
Copyright © 2011-2022 走看看