博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
瞎折腾-CentOS 7.4 编译4.16.2版kernel 并安装
阅读量:4677 次
发布时间:2019-06-09

本文共 3234 字,大约阅读时间需要 10 分钟。

CentOS 7.4下

  • 原内核版本: 3.10.0-693.el7.x86_64

  • 改后内核版本: 4.16.2

  • 系统版本: CentOS-7-x86_64-Minimal-1708.iso

  • 运行环境: VMware14.0 Pro虚拟机

刚好学到内核这里, 做了两个实验: 

  1. 最小化最小系统, 开机仅启动bash

  2. 更换内核

    1. 更换CentOS6的2.6.32至3.10.67, 据说过了这个内核就编译不了了, 试过编译4.16.2, 各种缺包缺库就放弃了
    2. CentOS 7 编译内核并更换

 

最小化最小系统, 开机仅启动bash:

 

新建硬盘并添加, 新建分区格式化

fdisk /dev/sdb //新建分区n-->p-->1-->+100M  //放grub启动n-->p-->2-->+2G    //swap   t  2  82n-->p-->3-->+5G   // /mke2fs -t ext4 /dev/sdb1         //格式化,做bootmke2fs -t ext4 /dev/sdb3      //做根分区mkswap /dev/sdb2        partx -a /dev/sdb         //刷新识别partx -a /dev/sdb
mkdir /tmp/boot        //创建dirmount /dev/sdb1 /tmp/boot   //挂载grub-install --root-directory=/tmp /dev/sdb       //至关重要, 指明boot目录, 创建Bootloader, MBR前446个字节cp /boot/vmlinuz-2.6.32-696.23.1.el6.x86_64 /tmp/boot/vmlinuz    //复制内核cp /boot/initramfs-2.6.32-696.23.1.el6.x86_64.img /tmp/boot/initramfs.img   //复制ramfsvim /tmp/boot/grub/grub.conf    //编辑grub配置文件default=0 timeout=5   //读秒titel CentOS6 [ugly] //标题(开机grub表中)  root(hd0,0)  //指定位置, 注意硬盘表示方法, 玩过Windows的Ghost会比较眼熟; 本地重启设置 root(hd1,0),即第二块硬盘, sda要改成sdb  kernel /vimlinuz ro selinux=0 root=/dev/sda3 init=/bin/bash  //重点, 指定内核位置, 关闭selinux, 指定根目录位置, kernel初始化后第一个启动的为/bin/bash, 而不是init  initrd /initramfs.img  //指明ramfs位置mkdir /tmp/sysmount /dev/sdb3 /tmp/sys  //挂载cd /tmp/sysmkdir -pv etc bin sbin usr lib lib64 dev mnt tmp sys proc media var home root  //建立假根文件夹cp /bin/bash /tmp/sys/bin  //复制bashldd /bin/bash            // 查看bash的依赖库cp /lib64/libtinfo.so.5 ./lib64   //复制依赖库 ... chroot /tmp/sys //切换bash查看是否可以运行 reboot  //重启*   *: 卸载硬盘新建虚拟机运行起来了, 只有内建命令,啥也没有

 

 



 更换CentOS 6.9 的2.6.32至3.10.67

  下载源码编译, 不是yum

准备环境:

yum -y groupinstall 'Development Tools' 'Server Platform Development'

 

下载源码

wget https://mirrors.aliyun.com/linux-kernel/v3.x/linux-3.10.67.tar.xztar JxPf linux-3.10.67.tar.xz -C /usr/srccd /usr/src/linux-3.10.67   //打开目录make menuconfig  //图形界面编辑kernel, 内置或模块或取消; 编译和安装模块的过程中有一大堆没有用的driver,
<暗中观察了一下, amd的显卡最耗时间>
浪费大量时间, 选择时可以取消;//此处以下开始编译, 建议在本地监视器上运行make -j8   //8线程同时编译//大约30分钟make modules_installmake install

 

 

CentOS6 上编译完成后直接重启, 并没有编辑grub, 直接有了选项, 建议还是编辑一下grub比较好:

grub2-set-default 0grub2-mkconfig -o /etc/grub2.cfg // 来自https://blog.csdn.net/breeze915/article/details/79243673

 

尝试在CentOS6上编译过4.16.2,最后跪了, 不了了之;

 

 



 更换CentOS 7.4 的3.10.0至4.16.2

 

准备安装环境:

  基于CentOS 6上编译失败的经验, 这次准备了很多组

yum -y groupinstall 'Development and Creative Workstation' 'Compatibility Libraries' 'System Administration Tools' 'System Management' 'Development Tools' //基本够用, 后面还有的直接加了

 

下载源码

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.2.tar.xz mv linux-4.16.2.tar.xz /usr/src  //老位置,还是熟悉的配方,还是熟悉的味道 cd /usr/src ls tar Jxf linux-4.16.2.tar.xz  //移动到这里解压, 跟上面的-C效果一样的 cd linux-4.16.2 

 源码准备妥当, 开干

yum -y install ncurses-devel libncurses-dev  //make menuconfig直接提示要安装, 省得百度报错信息找解决方案
make menuconfig  //配置信息, 这里并没有去复制原内核的配置, 在配置信息里瞎点, 减了一堆驱动下去, 编译快多了 make -j8   //满负载运行 //报错,装包 yum -y install ncurses-devel libncurses-dev elfutils-libelf-devel openssl-devel openssl
make -j8  //继续 make modules_install make install //安装完成, reboot后发现内核不在, 看了看发现安装报错,磁盘不够用了, 囧 //以后说说btrfs增加容量的事儿 grub2-set-default 'CentOS Linux (4.16.2) 7 (Core)' reboot

 

 

 

 



 

 修改内核的核心意义是在于根据主机量身定制内核以发挥最大效率, 本次纯属瞎折腾.

 报错一般百度都能解决, 顺便贴一下浏览记录:

转载于:https://www.cnblogs.com/gettolive/p/8871215.html

你可能感兴趣的文章
js去除范围内所有标签并显示指定字符串
查看>>
结对项目进度2
查看>>
git + git flow 的简单介绍
查看>>
Servlet详解(四)--Request与Response
查看>>
如果我们想要交换两个数字,就可以使用位运算
查看>>
求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
查看>>
P1059 明明的随机数【去重排序】
查看>>
HDU 1060 Leftmost Digit【log10/求N^N的最高位数字是多少】
查看>>
tomcat配置文件web.xml与server.xml解析--重要
查看>>
【C语言】《C Primer Plus》递归:以二进制形式输出整数
查看>>
使用框架的——好处
查看>>
如此大量的代码,但每个类里面的代码却不显得特别多,原因。。。。。。。。。。。。...
查看>>
C#特征备忘
查看>>
intelil——快捷键
查看>>
Java 面向对象 之 final 关键字
查看>>
Contact Form 7邮件发送失败的解决办法
查看>>
How to use For loop in CruiseControl.net
查看>>
P1800 software_NOI导刊2010提高(06)
查看>>
Python学习日记(1)使用if __name__ == "main"
查看>>
二进制的最大公约数
查看>>