主要内容
源码编译Linux内核
源码编译的执行步骤:
确认编译软件的基本条件
有足够的空间(建议独立一个20G分区);安装make ,gcc, gcc-c++ ,ncurses-devel,openssl-devel开发工具和库工具等等 。到www.kernel.org上下载相应的内核源码包
如 linux-4.3.3.tar.xz-
1
2xz -d linux-4.3.3.tar.xz
tar xf linux-4.3.3.tar #解压文件比较多就不加-v了 -
1
make menuconfig
-
1
2make bzImage -j n #生成内核
make modules -j n #生成新内核的驱动模块n为 电脑CPU核心数-2 左右合适, 为了确保没有错误,可以用
echo $?
命令来查看是否有错误,如果是0的话,就表示没有错误或警告了 -
1
2make modules_install #安装模块
make install #安装新编译的系统内核 查看或修改GRUB菜单
为了确认你是不是真的把内核安装好了
确认编译软件的基本条件
- 增加独立分区
fdisk, mkfs.xfs, mkdir, mount - 确认开发工具和库工具
1
[root@localhost ~]# rpm -qa | grep make #类似可以检查 gcc 等
下载相应的内核源码包
以下开始所有操作都在新分区下操作(本实验环境是/sdb1)
1 | wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.3.3.tar.xz |
linux-4.3.3.tar.xz
看实际情况。
解压内核源码包
1 | [root@localhost sdb1]#xz -d linux-4.3.3.tar.xz |
配置内核编译参数
保险起见,可以在现有系统的config基础上做修改
1 | [root@localhost linux-4.3.3]#cp /boot/config-3.10.0-229.el7.x86_64 /sdb1/linux-4.3.3/.config # 现有系统的config |
扩展:可以在首页上输入 \
,出现检索页面。
编译内核
1 | [root@localhost linux-4.3.3]#make bzImage -j n #生成内核 ,此内核是经过压缩的内核.这里需要一段时间,取决于你的系统性能。 |
n为 电脑CPU核心数-2 左右合适
安装编译好的内核与模块
1 | [root@localhost linux-4.3.3]#make modules_install #安装模块, 就是把编译好的modules拷贝到/lib/modules/相应的内核目录里面 |
查看或修改GRUB菜单
1 | [root@localhost ~]# vim /boot/grub2/grub.cfg |
设置系统启动时默认的等待时间
配置好的系统内核
配置默认启动的内核方法
1
2
3
4
5[root@localhost ~]# vim /etc/default/grub
#设置默认启动项,按menuentry顺序。比如要默认从第四个菜单项启动,数字改为3,若#改为 saved,#则默认为上次启动项。
GRUB_DEFAULT=saved
[root@localhost ~]#grub2-mkconfig #重新生成内核参数使用新内核启动系统后,查看内核版本:
1
[root@localhost ~]# uname –r
Linux内核模块操作
模块的作用:把具体功能封装好的程序。存放内核模块的目路径: /lib/modules/版本/kernel
插入模块
模块也有依赖关系,一般使用 modprobe
来安装模块; 如确定无依赖关系,可以用 insmod
命令安装。新添加一个模块后,需要 depmod
通知系统 。
1 | [root@localhost fat]# cd /lib/modules/4.2.4/kernel/fs/fat |
查看当前系统中加载的模块 lsmod
1 | [root@localhost fat]#lsmod | grep fat |
查看模块信息 modinfo
1 | [root@localhost fat]#modinfo vfat |
删除模块 modprobe rmmod
1 | [root@localhost fat]# rmmod fat |
开机自动加载模块
可以在/etc/rc.local
执行命令加载模块
1 | [root@localhost ~]# vim/etc/rc.local |