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

    查阅诸多资料,经过亲自实践,现将步骤整理一二:

    1. 下载内核wget url...
    也可以直接下载到目录

    2. 解压:
    tar -jxvf linux-....tar.bz2

    3. 清理源代码:
    (其实这一步可以省,不过如果你是第二次编译,并且有改动,用也无妨.这一步是参考的)
    make mrproper
    清除临时文件、中间文件和配置文件
       make clean
            remove most generated files but keep the config
       make mrproper
            remove all generated files + config files
       make distclean
            mrproper + remove editor backup and patcher files

    4. 安装有关编译程序。安装make ,gcc, make-kpkg,运行xconfig等等和编译内核相关的工具.
    这一步make或者gcc或者其它命令没有安装的话,就要执行这一步。
    如果make都没有,那这一步就要和第三步换换了。
    不知道为什么就没有make. 这个不是安装系统时候就有的么?

    执行;
    sudo apt-get install build-essential 
    sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot

    5.使用如下命令之一配置内核(这个参考网上资料)
    我用的是menuconfig
    就用的是默认,直接exit了,无非就是生成一个config
    如果不是专业人士,里面的很多选项真是无从说起

    make config : 基于文本模式的交互式配置。
    make menuconfig:基于文本模式的菜单型配置。(推荐使用,这个会弹出一个对话窗口)
    make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项。
    make xconfig:图形化配置(需安装图形化系统)
    命令:make menuconfig

    进入之后,选择需要的功能和模块。
    这个操作比较简单:
    [ ] Prompt for development and/or incomplete code/drivers
      (tian) Local version - append to kernel release   可在该选项中设置名称,这样编译后的内核版本就是3.2.39,这样容易区别

    这个地方最好不要改,除非你非常熟悉,直接exit

    6. 退出了后,就是
    make all
    包括三个操作:
    make vmlinux
    make modules
    make bzlmage
    成功后会看到kernel:arch/x86/boot/bzImage is ready的提示
    这个步骤时间很长的说

    7.安装新内核与多重内核菜单

    系统内核存放在/boot目录下,且为vmlinuz开头的文件夹下
    所以安装新内核就是将新编译好的bzImage复制到/boot下,并该文件名为vmlinuz开头,可用如下命令实现:
    [root@localhost ~]$ cp /home/wen/linux3.2.39/arch/x86/boot/bzImage  /boot/vmlinuz-linux3.2.39
    cp /home/wen/linux-2.6.32.55/.config  /boot/config-linux3.2.39
    64位的话就复制x86_64文件夹下的bzImage

    8. 安装模块
    make modules_install
    提示DEPMOD 3.2.39l
    执行后查看/lib/modules 
    会多出一个你要的文件夹
    到这里就应该完事了。

    这里还有一个乳酸的地方:
    如果在第5步的menuconfig选项中给Linux的内核另取了一个名字,那你编译完成后,uname -a得到的内核名字就是你取的那个名字。
    这个本无可说的,但有些驱动程序就是通过命名判断内核的,不一样的话就说不能安装。
    所以最好不要自己另取一个名字。menuconfig时直接退出了事。


    9. 开机重启,选择对应的就ok了
    具体的时选择linux-previous version.
    就又进入了一个grub,选择你安装的那个内核就搞定了
    如果觉得麻烦,就删除原来的内核

    10. 卸载内核
    rm -rf /lib/moudles/...
    rm -rf /home/...
    rm -rf /...和此内核相关的
    这个地方不知道会不会有影响,哥没试过。
    因为grub改版了,所以对grub会有影响的,最好不要操作这一步。

    11. grub文件修改了:
    在/etc/grub.d文件中
    文件夹数字表示顺序
    里面好多信息,暂时不懂。

    好了,就酱紫~

    学习的技能
    1、内核编译
    2、相关命名
    mount
    w3m
    wget


    每天早上叫醒你的不是闹钟,而是心中的梦~
  • 相关阅读:
    Nginx+keepalived高可用配置
    kubespahere安装kubenetes
    Fastdfs原理及集群搭建
    Spark 3.0.3集群安装文档
    Mybatis Plus 代码生成器
    redis集群方案
    Go 语言并发之道
    重构-改善即有代码的设计
    QT线程
    QT中的cout
  • 原文地址:https://www.cnblogs.com/vintion/p/4117075.html
Copyright © 2011-2022 走看看