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

    Linux内核编译:
    编译安装内核的详细说明:
      编译安装内核概要步骤:
      1、安装开发包组
      2、下载内核源码文件
      3、准备.config文本配置文件
      4、通过make menuconfig配置内核选项
      5、make[-j #] 指定编译时使用CPU核心数
      6、make modules_install:安装模块
      7、make install :安装内核相关文件,安装bzImage为/boot/vmlinuz-VERSION-RELEASE、生成initramfs文件、编辑grub配置文件

      配置内核选项方式:
      支持“更新”模式进行配置:在已有的.config文件的基础之上进行修改配置:
      make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
      make menuconfig:基于cureses的文本配置窗口;
      make gconfig:基于GTK开发环境的窗口界面
      make xconfig;基于QT开发环境窗口界面;
      支持“全新配置”模式进行配置,不需要.config文件:
      make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;
      make allnoconfig:所有选项均回答为“no”

      编译参数指定:
      make [-j #]  多线程编译
      编译内核中的一部分代码:
        只编译某子目录中的相关代码:
        cd /usr/src/linux
        make path/to/dir/ 只能在内核源码所在的目录中才能编译

        只编译一个特定的模块
        cd /usr/src/linux
        make path/to/dir/file.ko
        例如:只为e1000编译驱动:
        make drivers/net/ethernet/intel/e1000/e1000.ko

        如何交叉编译:目标平台与当前编译操作所在的平台不同;
        make ARCH=arch_name
        获取特定目标平台的使用帮助:
        make ARCH=arch_name help

      编译清理:
      如何在执行过编译操作的内核源码树上做重新编译,需先清理:
      make clean:清理编译生成的绝大多数文件,但会保留.config及编译外部模块所需要的文件;
      make mrproper:清理编译生成的所有文件,包括配置生成的.config文件及某些备份文件;
      make distclean:相当于mrproper,额外清理各种patches以及编辑器备份文件;

      卸载内核:
      删除/lib/modules/目录下不需要的内核库文件
      删除/usr/src/linux/目录下不需要的内核源码
      删除/boot目录下启动的内核和内核映像文件
      更改grub的配置文件,删除不需要的内核启动列表

    内核编译演示:
    1、获取源码包(www.kernel.org),选择要编译的版本,为了保障能够成功编译,建议不要使用跨版本太大的源码包

    2、准备开发环境(相关开发工具包),以及查看自己的主机硬件相关信息是否可以符合

    3、解压到 /usr/src 目录下tar xf linux-3.10.67.tar.xz -C /usr/src
    [root@centos7 ~]# ls
    bin Documents f1 httpd-2.2.29 linux-3.18.41.tar.xz # 获取的源码包 Music Public Templates
    anaconda-ks.cfg Desktop Downloads hanshu3.sh httpd-2.2.29.tar.bz2 mbox Pictures select.sh Videos
    [root@centos7 ~]# tar xvf linux-3.18.41.tar.xz -C /usr/src # 解压到/usr/src目录下
    [root@centos7 ~]# ls /usr/src
    debug kernels linux-3.18.41 # 解压的源码包

    4、进到/usr/src目录中,并创建一个软链接;
    [root@centos7 ~]# cd /usr/src
    [root@centos7 src]# ls
    debug kernels linux-3.18.41
    [root@centos7 src]# ln -s linux-3.18.41/ linux # 创建软链接
    [root@centos7 src]# ls
    debug kernels linux linux-3.18.41
    [root@centos7 src]# cd linux # 进到目录中去
    [root@centos7 linux]# ls
    arch COPYING crypto drivers fs init Kbuild kernel MAINTAINERS mm README samples security tools virt
    block CREDITS Documentation firmware include ipc Kconfig lib Makefile net REPORTING-BUGS scripts sound usr
    [root@centos7 linux]# du -sh . # 查看大小
    631M .

    5、复制/boot下的以config开头的文件作为模板文件到/usr/src/linux/.config
    # cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config
    [root@centos7 linux]# cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config #复制模板文件
    [root@centos7 linux]# ls -a
    . arch .config(# 复制的模板文件) CREDITS Documentation firmware .gitignore init Kbuild kernel .mailmap Makefile net REPORTING-BUGS scripts sound usr
    .. block COPYING crypto drivers fs include ipc Kconfig lib MAINTAINERS mm README samples security tools virt

    6、在/usr/src/linux 中使用 # make menuconfig 配置内核选项,选好之后保存退出;

    7、打开screen界面,执行 # make [-j 4] 编译内核,可使用-j指定编译线程数量;

    这时可以使用 # htop 查看一下cpu的使用情况,如下所示:cpu占用率急剧升高,负载也变得好大;

    8、编译完成之后,接下来需要执行 # make modules_install 安装内核模块
    [root@centos7 src]# du -sh linux-3.18.41/
    7.1G linux-3.18.41/ # 可以看到编译完成之后,变成了7.1G

    [root@centos7 linux]# ls /lib/modules
    3.10.0-327.el7.x86_64 # 可以看到这时模块文件只有一个
    [root@centos7 linux]# make modules_install # 安装内核模块
    [root@centos7 linux]# ls /lib/modules
    3.10.0-327.el7.x86_64 3.18.41-1.0-Taolinux # 可以发现多了一个内核模块

    [root@centos7 linux]# ls /lib/modules/3.18.41-1.0-Taolinux/ # 编译完成,而已看到生成的内核模块文件
    build modules.builtin.bin modules.softdep
    kernel modules.dep modules.symbols
    modules.alias modules.dep.bin modules.symbols.bin
    modules.alias.bin modules.devname source
    modules.builtin modules.order

    9、执行 # make install 生成内核文件
    [root@centos7 linux]# make install
    sh ./arch/x86/boot/install.sh 3.18.41-1.0-Taolinux arch/86/boot/bzlmage
    System.map "/boot"

    10、reboot重启系统,选择使用新内核

    启动之后,查看内核版本如下:
    [root@centos7 ~]# uname -r
    3.18.41-1.0-Taolinux # 说明新版内核已经启动,编译成功

  • 相关阅读:
    Hibernate Validation注解列表
    Java_Shell多线程
    Lua读写文件
    shell导出和导入redis
    大文件读写
    Java_Hbase优化
    控制语句if
    字典(DICT)
    元组Tuple
    Session 会话
  • 原文地址:https://www.cnblogs.com/Link-Luck/p/9859259.html
Copyright © 2011-2022 走看看