下面就是CentOS下编译Linux内核的具体实现方法的攻略:
准备工作
- 网络环境要好,需要下载内核源代码、安装需要的依赖库等。
- 对于初学者来说,最好在虚拟机上面进行操作,避免造成系统损坏。
- 需要有一定的Linux基础和shell编程经验。
具体实现方法
- 获取内核源代码
首先需要下载内核源代码,可以到 http://www.kernel.org 下载最新的稳定版本内核源代码,解压后可以得到一个目录,例如 linux-3.18.5 。
- 安装编译内核所需的依赖库
在centOS下编译Linux内核还需要安装一些依赖库,包括gcc编译器、make工具、ncurses库等,可以通过以下命令进行安装:
yum groupinstall "Development tools"
yum install ncurses-devel
- 配置内核
执行以下命令:
cd linux-3.18.5
make mrproper
make menuconfig
其中,make mrproper
命令会清理之前编译生成的临时文件,防止影响新的编译过程。 make menuconfig
命令是进入配置内核的界面,需要根据实际情况选择需要编译进内核的驱动和功能,需要了解一些内核配置的知识。
- 编译内核
在进行内核编译前,需要将内核代码编译成可执行文件,具体命令为:
make
make modules_install
其中,make
命令是编译内核,并将生成的 vmlinuz 文件和 System.map 文件保存在/boot 目录下。 make modules_install
命令是将内核模块文件拷贝到/lib/modules 目录下。
- 安装内核
为了使新编译的内核生效,还需要修改 grub 配置文件并重启系统,执行以下命令:
cp arch/x86/boot/bzImage /boot/vmlinuz-3.18.5
cp System.map /boot/System.map-3.18.5
cp .config /boot/config-3.18.5
将新编译的内核文件复制到 /boot 目录下。将 /etc/grub.conf 中的 default 配置项,修改为新内核的版本号,如:
default=0
timeout=5
hiddenmenu
title CentOS (2.6.32-573.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=/dev/mapper/vg_centos6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_centos6/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos6/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-573.el6.x86_64.img
title CentOS (3.18.5)
root (hd0,0)
kernel /vmlinuz-3.18.5 ro root=/dev/mapper/vg_centos6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_centos6/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos6/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.18.5.img
最后,执行以下命令,重启系统,就可以使用新的内核了:
reboot
示例说明
示例一
比如我想在centOS7上编译Linux内核(版本3.10-rc1),需要执行以下步骤:
- 下载linux3.10-rc1源代码:
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/testing/linux-3.10-rc1.tar.gz
tar -zxvf linux-3.10-rc1.tar.gz
- 安装编译内核所需的依赖库:
yum groupinstall "Development tools"
yum install ncurses-devel
- 配置内核
cd linux-3.10-rc1
make mrproper
make menuconfig
- 编译内核
make bzImage
make modules
make modules_install
5.安装内核
cp arch/x86/boot/bzImage /boot/vmlinuz-3.10-rc1
cp System.map /boot/System.map-3.10-rc1
cp .config /boot/config-3.10-rc1
修改/etc/grub.conf
相应的默认内核版本、配置对应新内核的initramfs,然后重启系统。
示例二
比如我要在CentOS 6.5上编译Linux内核3.18.5. 需要执行以下步骤:
- 下载linux3.18.5源代码:
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.18.5.tar.gz
tar zxvf linux-3.18.5.tar.gz
- 安装编译内核所需的依赖库:
yum groupinstall "Development tools"
yum install ncurses-devel
- 配置内核
cd linux-3.18.5
make mrproper
make menuconfig
- 编译内核
make
make modules_install
- 安装内核
cp arch/x86/boot/bzImage /boot/vmlinuz-3.18.5
cp System.map /boot/System.map-3.18.5
cp .config /boot/config-3.18.5
修改/etc/grub.conf
相应的默认内核版本、配置对应新内核的initramfs,然后重启系统。
以上就是CentOS下编译Linux内核的具体实现方法攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Centos下编译Linux内核的具体实现方法 - Python技术站