编译安装kernel 5.1.10及删除内核
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译安装kernel 5.1.10及删除内核相关的知识,希望对你有一定的参考价值。
参考技术A (1)make clean:清理大多数编译生成的文件,但会保留config文件等(2)make mrproper: 清理所有编译生成的文件、config及某些备份文件
(3)make distclean:mrproper、清理patches以及编辑器备份文件
(4)删除/lib/modules/目录下不需要的内核库文件
(5)删除/usr/src/linux/目录下不需要的内核源码
(6)删除/boot目录下启动的内核和内核映像文件
(7)更改grub的配置文件,删除不需要的内核启动列表
Kernel编译安装
写在前面:
博客书写牢记5W1H法则:What,Why,When,Where,Who,How。
本篇主要内容:
● kernel编译安装
kernel编译安装
回顾:
源码包编译安装步骤:
(1)编译环境:开发软件包组、头文件、库文件
(2)./configure
(3)make
(4)make install
kernel编译安装:
(1)开发环境
包组:
Development Tools
Server Platform Development
其他:
make menuconfig依赖包:ncurses-devel
(2)获取目标主机硬件设备相关信息
CPU:
a) cat /proc/info
b) lscpu
c) x86info -a
PCI设备:
a) lspci
-v
-vv
b) lsusb
-v
-vv
c) lsblk
了解全部硬件设备信息:
hal-device
(3)获取目标主机系统功能相关信息,如要启用的文件系统等
(4)获取内核源码包:www.kernel.org
(5)编译过程
a) tar -xJf linux-3.10.67.tar.xz -C /usr/src
b) cd /usr/src
c) ln -sv linux-3.10.67 linux
编译过程需要有linux目录,我们这里建立软链接
d) cd linux
e) make menuconfig
配置内核选项,会弹出图形化界面,对模块进行个性化配置。
此步骤会在目录中生成.config文件,每一个安装完成的系统都会有这样的.config文件,默认为/boot/config-`uname -r`,可以拷贝过来使用
选项含义:
[ ]不编译此模块
[*]将此模块编译进内核
[M]将此模块编译为动态模块,放入/lib/modules目录
备注:此步骤可以有多种方式,查看后续过程详细说明。
f) make [-j #]
-j # 可以指定以多线程方式执行,这里的数字不应该超过cpu核心数
g) make modules_install
安装内核模块
h) make install
安装内核
i) grub2-set-default MENU_ENTRY
对grub2引导的系统,设置默认启动内核。
对grub引导的系统,修改/boot/grub/grub.conf的default项即可。
j) reboot
注意:由于编译过程需要很长时间(双核大概要1小时),通过ssh远程连接 很可能由于某些原因导致ssh掉线,进而导致整个编译过程错误。所以建议使用screen命令。
screen
screen会建立一个独立的bash窗口,供用户运行命令,即便用户远程登录断开,也不会影响到screen内运行的命令。所有的输出都会打印到screen内,用户可以随时查看输出信息。
打开screen:screen
拆除screen:Ctrl+a,d
列出screen:screen -ls
连接至screen:screen -r SCREEN_ID
关闭此screen:exit
编译过程详细说明:
(1)配置内核选项
支持“更新”模式进行配置,在已有的.config文件的基础上进行“修改”配置:
(a) make config
基于命令行,以遍历的方式去配置内核中可配置的每个选项;
(b) make menuconfig
基于cureses文本配置窗口,图形选项方式
(c) make gconfig
基于GTK开发环境的窗口界面,包组“桌面平台开发”
(d) make xconfig
基于QT开发环境的窗口界面。
支持“全新配置”模式进行配置:
(a) make defconfig
基于内核为目标平台提供的“默认”配置为模板,进行配置
(b)make allnoconfig
将所有选项均设置为“no”
(2)编译
(a)多线程编译
make [-j #]
(b)只编译内核中的部分代码
(a)按目录划分的部分代码
cd /usr/src/linux
make path/to/dir/
(b)只编译特定的模块
cd /usr/src/linux
make path/to/dir/file.ko
这里的file.ko并不一定仅匹配file.ko,如file.ko不存在,也会匹配为file.c
(c)交叉编译
目标平台与当前编译平台不同
make ARCH=arch_name
获取帮助:
make ARCH=arch_name help
(3)编译清理操作
在事先编译过的目录再次编译前,需要先进行清理操作
make clean
清理大多数文件,但会保留配置文件.config以及编译外部模块所需的文件
make mrproper
清理编译生成的所有文件,包括匹配文件及某些备份文件
make distclean
相当于mrproper,额外清理各种patches以及编辑器备份文件
实例:
[[email protected] ~]# cd /tmp [[email protected] tmp]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.1.20.tar.xz [[email protected] tmp]# screen [[email protected] tmp]# tar -xJf linux-4.1.20.tar.xz -C /usr/src/ [[email protected] src]# ln -sv linux-4.1.20 linux ‘linux’ -> ‘linux-4.1.20’ [[email protected] src]# cd linux [[email protected] linux]# make menuconfig #界面如下图 [[email protected] linux]# make -j 2 [[email protected] linux]# make modules_install [[email protected] linux]# make install #查看grub2配置文件,发现多了一个menuentry条目 [[email protected] linux]# cat /boot/grub2/grub.cfg ...省略输出... menuentry ‘CentOS Linux (4.1.20) 7 (Core)‘ ...省略输出... [[email protected] linux]# grub2-set-default ‘CentOS Linux (4.1.20) 7 (Core)‘ [[email protected] linux]# reboot
本文出自 “FredDream” 博客,请务必保留此出处http://1036416056.blog.51cto.com/5943987/1757787
以上是关于编译安装kernel 5.1.10及删除内核的主要内容,如果未能解决你的问题,请参考以下文章