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文件系统功能

 

posted on 2018-12-09 14:09  tony3154  阅读(256)  评论(0编辑  收藏  举报

导航