更新升级Red Hat内核到Linux3.16.40版本

  • 硬件环境:联想Y485-PC机,AMD-A8(CPU)
  • 编译器:GCC
  • 原Linux系统内核2.6.32(Red Hat Enterprise 6.6光盘原始安装版本)
  • 升级后Linux系统内核3.16.40
  • Linux 系统位数: 32位(注: AMD-A8 CPU支持64bit系统,我配置内核的时候勾选64bit kernel时,make提示失败, 可能与我的gcc版本有关,用 Red Hat光盘yum安装的gcc是32位的,奇怪的是光盘安装linux后我的系统是el6.i686结尾,应该属于前一版本安装linux的历史遗留问题)

内核编译步骤:

-下载源码: https://www.kernel.org/pub/linux/kernel/

  • 配置内核
    root权限,解压源码到xxx/kernel文件夹,进入xxx/kernel/3.16.40
    make mrproper
    make clean
    make menuconfig
    一般来说利用旧配置文件来配置新的内核,可以执行:
    cp /boot/configure-$Current_Version xxx/kernel/3.16.40/.configure

  • 编译内核
    在menuconfig 菜单下将.configure文件load进去,然后再根据自己的实际情况来做精细化微调。另外, 由于本人需要开发嵌入式linux跨平台的程序, 需要开启samba功能, 还经常需要调试网络, 所以为了避免不必要的麻烦,也将selinux功能给去掉,不将它编译进内核。 一般非开发用户还是需要将selinux功能添加上,以免出现安全漏洞。配置完成以后, 执行make bzImage -j4; 多核CPU就加-j命令,提高编译速度吧;
    再执行: make modules -j4 编译模块, 需要等待较长时间;
    安装module到/lib/module/3.16.40目录下:
    执行 make modules_install;

    复制相关的文件到/boot文件夹下:
        cp  xxx/kernel/3.16.40/x86/boot/bzImage /boot/vmlinuz-$version
        cp  xxx/kernel/3.16.40/.configure /boot/configure-3.16.40
        cp xxx/kernel/3.16.40/initrd-$version /boot
    
  • 制作ramdisk:
    mkinitrd -v /boot/initramfs-3.16.40.img 3.16.40

  • 修改grub启动菜单:
    vi /boot/grub/menu.list
    仿照原来的格式,重新构造一个新的内核启动,一个有4行,根据自己的配置情况修改一下即可。 我的配置如下:
    title Simon’s Linux Kernel(3.16.40)
    root(hd0, 0)
    kernel /vmlinuz-3.16.40 ro root=/dev/mapper/ …
    …..
    ….
    ….
    initrd /initramfs-3.16.40.img

  • References:

    • 鸟哥的Linux私房菜

by Simon
2017/05/30

你可能感兴趣的:(Linux)