Linux内核编译:
编译安装内核的详细说明:
编译安装内核概要步骤:
一、安装开发包组
二、下载内核源码文件
三、准备.config文本配置文件
四、经过make menuconfig配置内核选项
五、make[-j #] 指定编译时使用CPU核心数
六、make modules_install:安装模块
七、make install :安装内核相关文件,安装bzImage为/boot/vmlinuz-VERSION-RELEASE、生成initramfs文件、编辑grub配置文件linux
配置内核选项方式:
支持“更新”模式进行配置:在已有的.config文件的基础之上进行修改配置:
make config:基于命令行以遍历的方式去配置内核中可配置的每一个选项;
make menuconfig:基于cureses的文本配置窗口;
make gconfig:基于GTK开发环境的窗口界面
make xconfig;基于QT开发环境窗口界面;
支持“全新配置”模式进行配置,不须要.config文件:
make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;
make allnoconfig:全部选项均回答为“no”git
编译参数指定:
make [-j #] 多线程编译
编译内核中的一部分代码:
只编译某子目录中的相关代码:
cd /usr/src/linux
make path/to/dir/ 只能在内核源码所在的目录中才能编译centos
只编译一个特定的模块:
cd /usr/src/linux
make path/to/dir/file.ko
例如:只为e1000编译驱动:
make drivers/net/ethernet/intel/e1000/e1000.ko多线程
如何交叉编译:目标平台与当前编译操做所在的平台不一样;
make ARCH=arch_name
获取特定目标平台的使用帮助:
make ARCH=arch_name help编辑器
编译清理:
如何在执行过编译操做的内核源码树上作从新编译,需先清理:
make clean:清理编译生成的绝大多数文件,但会保留.config及编译外部模块所须要的文件;
make mrproper:清理编译生成的全部文件,包括配置生成的.config文件及某些备份文件;
make distclean:至关于mrproper,额外清理各类patches以及编辑器备份文件;ide
卸载内核:
删除/lib/modules/目录下不须要的内核库文件
删除/usr/src/linux/目录下不须要的内核源码
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不须要的内核启动列表工具
内核编译演示:
一、获取源码包(www.kernel.org),选择要编译的版本,为了保障可以成功编译,建议不要使用跨版本太大的源码包开发工具
二、准备开发环境(相关开发工具包),以及查看本身的主机硬件相关信息是否能够符合ui
三、解压到 /usr/src 目录下tar xf linux-3.10.67.tar.xz -C /usr/src
[root@centos7 ~]# ls
bin Documents f1 httpd-2.2.29 linux-3.18.41.tar.xz # 获取的源码包 Music Public Templates
anaconda-ks.cfg Desktop Downloads hanshu3.sh httpd-2.2.29.tar.bz2 mbox Pictures select.sh Videos
[root@centos7 ~]# tar xvf linux-3.18.41.tar.xz -C /usr/src # 解压到/usr/src目录下
[root@centos7 ~]# ls /usr/src
debug kernels linux-3.18.41 # 解压的源码包centos7
四、进到/usr/src目录中,并建立一个软连接;
[root@centos7 ~]# cd /usr/src
[root@centos7 src]# ls
debug kernels linux-3.18.41
[root@centos7 src]# ln -s linux-3.18.41/ linux # 建立软连接
[root@centos7 src]# ls
debug kernels linux linux-3.18.41
[root@centos7 src]# cd linux # 进到目录中去
[root@centos7 linux]# ls
arch COPYING crypto drivers fs init Kbuild kernel MAINTAINERS mm README samples security tools virt
block CREDITS Documentation firmware include ipc Kconfig lib Makefile net REPORTING-BUGS scripts sound usr
[root@centos7 linux]# du -sh . # 查看大小
631M .
五、复制/boot下的以config开头的文件做为模板文件到/usr/src/linux/.config
# cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config
[root@centos7 linux]# cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config #复制模板文件
[root@centos7 linux]# ls -a
. arch .config(# 复制的模板文件) CREDITS Documentation firmware .gitignore init Kbuild kernel .mailmap Makefile net REPORTING-BUGS scripts sound usr
.. block COPYING crypto drivers fs include ipc Kconfig lib MAINTAINERS mm README samples security tools virt
六、在/usr/src/linux 中使用 # make menuconfig 配置内核选项,选好以后保存退出;
七、打开screen界面,执行 # make [-j 4] 编译内核,可以使用-j指定编译线程数量;
这时可使用 # htop 查看一下cpu的使用状况,以下所示:cpu占用率急剧升高,负载也变得好大;
八、编译完成以后,接下来须要执行 # make modules_install 安装内核模块
[root@centos7 src]# du -sh linux-3.18.41/
7.1G linux-3.18.41/ # 能够看到编译完成以后,变成了7.1G
[root@centos7 linux]# ls /lib/modules
3.10.0-327.el7.x86_64 # 能够看到这时模块文件只有一个
[root@centos7 linux]# make modules_install # 安装内核模块
[root@centos7 linux]# ls /lib/modules
3.10.0-327.el7.x86_64 3.18.41-1.0-Taolinux # 能够发现多了一个内核模块
[root@centos7 linux]# ls /lib/modules/3.18.41-1.0-Taolinux/ # 编译完成,而已看到生成的内核模块文件
build modules.builtin.bin modules.softdep
kernel modules.dep modules.symbols
modules.alias modules.dep.bin modules.symbols.bin
modules.alias.bin modules.devname source
modules.builtin modules.order
九、执行 # make install 生成内核文件
[root@centos7 linux]# make install
sh ./arch/x86/boot/install.sh 3.18.41-1.0-Taolinux arch/86/boot/bzlmage \
System.map "/boot"
十、reboot重启系统,选择使用新内核
启动以后,查看内核版本以下:
[root@centos7 ~]# uname -r
3.18.41-1.0-Taolinux # 说明新版内核已经启动,编译成功