How to Upgrade the Linux Kernel on CentOS 7
CentOS7 Docker容器无法ping通宿主机ip问题解决记录 - 平台梦
Linux 内核升级_Andy杨的博客-CSDN博客_linux内核升级工具
升级 CentOS7.9 的内核版本 - 爱吃桔子的程序羊
注: kernel-lt-5.4.191.x86_64.tar.gz 为kernel离线rpm文件的压缩包
1。将下载的新内核(比如linux-2.6.17.tar.bz2)拷贝到 /usr/src, 然后在/usr/src本地解压,生成新目录linux-2.6.17;2.#cd linux-2.6.17编辑Makefile 找到EXTRAVERSION:EXTRAVERSION = -xhawk(你自己给新内核取的名字) (注意前面的“-” 符号)3。拷贝/boot/下的1个config文件到/usr/src/linux-2.6.17/(解压的新内核目录),更名为.config。4。#make clean &&make mrproper5. #make xconfig6. load 刚拷贝过来的/usr/src/linux-2.6.17/.config7. 在"Processor type and features" 栏目,选择自己的CPU类型,我的CPU 是Athlon64 3000+,但我想用32位的SUSE Linux,这里仍然选择Athlon64;选择Preemptible Kernel(Low-Latency Desktop)Time Frequency 选择1000Hz;8。在Networking 栏目,去掉IPv6 Protocolsave退出;9.编辑 .config file;找到:CONFIG_BLK_DEV_RAM_SIZE 把值改为 128000;10。在命令行执行 #export CHOST="i686-pc-linux-gnu"11。#export CFLAGS="-march=athlon64 -O2 -pipe -funroll-all-loops -funit-at-a-time -fpeel-loops -ftracer -funswitch-loops -fomit-frame-pointer -fweb -msse3"说明:如果CPU 是新版的Athlon64("Venice" or "San Diego")/Athlon64-X2("Manchester" or "Toledo"),加上-msse3,以支持SSE3 功能;12.#export CXXFLAGS="${CFLAGS}"13.#export MAKEOPTS="-j6"说明:MAKEOPTS= will set number of concurrent threads. 我有 1GB 内存 所以我的 MAKEOPTS=”-j6”,如果内存小,选MAKEOPTS="-j2"。***对于其它CPU的参数,请参考: http://gentoo-wiki.com/CFLAGS http://gentoo-wiki.com/Safe_Cflags#Intel_Processors14。开始编译:#make bzImage#make modules#make modules_install15.#make install 自动copy新内核到/boot,自动修改Grub. (不用再mkinitrd)16.启用新内核(这一步似乎可以不做,因为我忘记做这一步,仍然成功启动到新内核):#rm /boot/vmlinuz#rm /boot/initrd#ln -s vmlinuz-2.6.17-xhawk-default vmlinuz (注意新生成的内核的名称,在/boot 下查一下)#ln -s initrd-2.6.17-xhawk-default initrd17。重起计算机,用#dmesg命令查看启动信息,第一行就是当前内核版本。或者用命令 #uname -r18.如果内核去掉了IPv6, 最好修改一下 /etc/sysconfig/SuSEfirewall2,把 FW_IPv6="" 改为FW_IPv6="no"然后修改 /etc/modprobe.conf将alias net-pf-10 ipv6 修改为 alias net-pf-10 off添加 alias ipv6 off1.下载内核去linux内核的官网或者镜像站点下载即可。
2.下载热点内核标准配置文件
wget http://vbets.googlecode.com/files/config</p><p>mv config .config
3.编译内核
make menuconfig
选中Load an Alternate Configuration File ,然后选择刚下载的。config
另外,要特别选中:
1)、通过make menuconfig选中以下对应的选项
General setup –></p><p>[*] enable deprecated sysfs features to support old userspace tools
2)、修改。config文件
修改。config文件中CONFIG_SYSFS_DEPRECATED_V2,将原本被注释掉的
CONFIG_SYSFS_DEPRECATED_V2 改成CONFIG_SYSFS_DEPRECATED_V2=y
注: 修改这项是因为旧版的mkinitrd及其nash在内核没有CONFIG_SYSFS_DEPRECATED_V2参数时默认使用旧版sysfs路径格式,从而在新内核下无法正确访问/sys内的硬盘信息节点。
主要是解决"mount:could not find filesystem '/dev/root'"这样的错误
make bzImage</p><p>make modules</p><p>make modules_install</p><p>make install
4.解压修改内核
cp /boot/initrd-2.6.38.img /tmp</p><p>cd /tmp/</p><p>mkdir newinitrd</p><p>cd newinitrd/
zcat /initrd-2.6.38.img |cpio -i
rm -rf /tmp/initrd-2.6.38.img
vi init[/code]
找到这2行一样的,去掉1行
echo "Loading dm-region-hash.ko module"</p><p>insmod /lib/dm-region-hash.ko</p><p>echo "Loading dm-region-hash.ko module"</p><p>insmod /lib/dm-region-hash.ko
这主要是解决:"insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists"这样的错误
5.从新打包内核
find .|cpio -c -o >/initrd</p><p>cd /</p><p>gzip -9 <initrd >initrd-2.6.38img</p><p>rm -rf /boot/initrd-2.6.38.img</p><p>cp initrd-2.6.38.img /boot</p><p>rm -rf /cd /usr/src/linux-2.6.38.tar.gz</p><p>rm -rf /cd /usr/src/linux-2.6.38
6.设置从新内核启动
vi /boot/grub/grub.conf
把default=1改为default=0
7.重新启动系统
reboot
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)