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

    下载源码文件

      linux官网:https://www.kernel.org/

      mainline:测试版

      stable:稳定版

    安装开发包组

      yum groupinstall "development tools"

    .config:准备文本配置文件

      借助已经编译好的内核特性,5000多个特性,个人进行选择工作量太大

      boot目录下:

        vmlinuz里存放一些最基础的文件,大部分的放在/lib/modules/

        config文件里确定了哪些文件放哪里,y表示在vmlinuz,m表示独立文件在modules文件夹里

    make menuconfig:配置内核选项   

       这步可以使用其他的方法实现:    

          make config  以命令行便利的方法去配置内核中的每个选项

          make gconfig  基于GTK环境窗口界面配置

          make xconfig  基于QT环境的窗口界面

          make defconfig  默认参数配置

          make allyesconfig  所有选项均回答yes

          make allnoconfig  所有选项均回答no

    make [-j #]
    make modules_install:安装模块
    make install :安装内核相关文件
      安装bzImage为/boot/vmlinuz-VERSION-RELEASE
      生成initramfs文件
      自动编辑grub的配置文件

    完整的编译操作过程:

      rz 将文件移动到/app

      tar  xvf   linux-4.19.8.tar.xz       解压生成linux-4.19.8文件夹

      cd linux-4.19.8         进入文件夹进行操作

      cp /boot/config-3.10.0-693.el7.x86_64   /app/linux-4.19.8/.config   将本机centos7里的config文件拷贝过来并命名为.config,利用本系统的配置进行修改,减少工作量

      yum  -y  grouplist  "development tools"

      make menuconfig            进入图形化菜单进行内核功能选择   这个命令修改的就是.config文件

      修改虚拟机CPU数量,尽量调高,编译会花费很多时间

      make -j 4       开始编译 ,并使用4个cpu核心

      make modules_install   安装模块文件,路径在本机/usr/lib/modules/4.19.8-1.0-liulinux

      make install      安装内核文件

        将会在本机的/boot目录下生成

            vmlinuz-4.19.8-1.0-liulinux

            initramfs-4.19.8-1.0-liulinux.img

            自动编辑grub配置文件  

      reboot

    编译:

      全编译:make [-j #]

      编译内核的一部分功能:

        1)、只编译某子目录中的相关代码

          cd /app/linux-4.19.8

          make PATH/

        2)、只编译特定的模块

          cd /app/linux-4.19.8

          make PATH/file.ko

          例如:只为e1000编译驱动

          make drivers/net/ethernet/intel/e1000/e1000.ko

    在已经执行过编译操作的内核源码树做重新编译,需要实现做清理操作

      make clean:清理大多数编译生成的文件,但会保留config文件等

      make mrproper:清理所有编译生成的文件,cofnig以及某些备份文件

      make distclean:mrproper、ptches以及编辑器备份文件

    卸载内核

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

    练习:

    1、破解root口令,并为grub设置保护功能
    2、破坏本机grub stage1,而后在救援模式下修复之
    3、删除vmlinuz和initramfs文件后无法启动,两种方法恢复之
    4、增加新硬盘,在其上制作能单独运行kernel和bash的系统
    5、在U盘上定制linux,使其可启动系统,并具有网络功能
    6、删除/etc/fstab和/boot目录的所有文件,并恢复之
    7、编译安装kernel,启用支持ntfs文件系统功能

  • 相关阅读:
    Nacos(六):多环境下如何“管理”及“隔离”配置和服务
    nginx 反向代理配置(二)
    nginx 反向代理配置(一)
    nginx的access_log与error_log
    MySQL 慢查询日志
    php-fpm 慢日志查询
    理解 OAuth2.0
    如何在 Apache 里修改 PHP 配置
    Go-常见的面试题(一)
    Go 嵌入类型
  • 原文地址:https://www.cnblogs.com/tony3154/p/10091036.html
Copyright © 2011-2022 走看看