下载源码文件
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文件系统功能