linux 内核cpx86_64,Linux 内核编译 - osc_mmbv6tsc的个人空间 - OSCHINA - 中文开源技术交流社区...

本文详细介绍了Linux内核的编译安装步骤,包括安装开发包、下载内核源码、配置内核选项、多线程编译、安装模块和内核,以及清理和卸载旧内核。此外,还提到了交叉编译和配置选项的多种方式,如通过makemenuconfig、makeconfig等。最后,文章展示了实际操作过程,包括获取源码、配置内核、编译和安装,以及验证新内核的成功启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux内核编译:

编译安装内核的详细说明:

编译安装内核概要步骤:

1、安装开发包组

2、下载内核源码文件

3、准备.config文本配置文件

4、通过make menuconfig配置内核选项

5、make[-j #] 指定编译时使用CPU核心数

6、make modules_install:安装模块

7、make install :安装内核相关文件,安装bzImage为/boot/vmlinuz-VERSION-RELEASE、生成initramfs文件、编辑grub配置文件

配置内核选项方式:

支持“更新”模式进行配置:在已有的.config文件的基础之上进行修改配置:

make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;

make menuconfig:基于cureses的文本配置窗口;

make gconfig:基于GTK开发环境的窗口界面

make xconfig;基于QT开发环境窗口界面;

支持“全新配置”模式进行配置,不需要.config文件:

make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;

make allnoconfig:所有选项均回答为“no”

编译参数指定:

make [-j #]  多线程编译

编译内核中的一部分代码:

只编译某子目录中的相关代码:

cd /usr/src/linux

make path/to/dir/ 只能在内核源码所在的目录中才能编译

只编译一个特定的模块:

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以及编辑器备份文件;

卸载内核:

删除/lib/modules/目录下不需要的内核库文件

删除/usr/src/linux/目录下不需要的内核源码

删除/boot目录下启动的内核和内核映像文件

更改grub的配置文件,删除不需要的内核启动列表

内核编译演示:

1、获取源码包(www.kernel.org),选择要编译的版本,为了保障能够成功编译,建议不要使用跨版本太大的源码包

44348554ab1c0383f8b58ab905aadc3f.png

2、准备开发环境(相关开发工具包),以及查看自己的主机硬件相关信息是否可以符合

3、解压到 /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 # 解压的源码包

4、进到/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 .

5、复制/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

6、在/usr/src/linux 中使用 # make menuconfig 配置内核选项,选好之后保存退出;

05bba4f7e0612d105952cbacee412618.png

7、打开screen界面,执行 # make [-j 4] 编译内核,可使用-j指定编译线程数量;

4113ec4ce2bd7ceebb3e66e5220e87af.gif

这时可以使用 # htop 查看一下cpu的使用情况,如下所示:cpu占用率急剧升高,负载也变得好大;

5fad8a26145e58350a926d2294edd172.png

8、编译完成之后,接下来需要执行 # 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

b968e03b5fb3fcbaaf052aa2871d7f7e.gif

9、执行 # 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"

10、reboot重启系统,选择使用新内核

9f4c4a1fbe7f87a35a36bbfdf9e28fd5.png

启动之后,查看内核版本如下:

[root@centos7 ~]# uname -r

3.18.41-1.0-Taolinux # 说明新版内核已经启动,编译成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值