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-->-->+100M //放grub启动
n-->p-->-->+2G //swap t 2 82
n-->p-->-->+5G   // /
mke2fs -t ext4 /dev/sdb1 //格式化,做boot
mke2fs -t ext4 /dev/sdb3      //做根分区
mkswap /dev/sdb2        
partx -a /dev/sdb         //刷新识别
partx -a /dev/sdb
mkdir /tmp/boot        //创建dir
mount /dev/sdb1 /tmp/boot //挂载
grub-install --root-directory=/tmp /dev/sdb //至关重要, 指明boot目录, 创建Bootloader, MBR前446个字节
cp /boot/vmlinuz-2.6.-696.23..el6.x86_64 /tmp/boot/vmlinuz    //复制内核
cp /boot/initramfs-2.6.-696.23..el6.x86_64.img /tmp/boot/initramfs.img //复制ramfs
vim /tmp/boot/grub/grub.conf    //编辑grub配置文件
default=0
timeout=5   //读秒
titel CentOS6 [ugly] //标题(开机grub表中)
  root(hd0,)  //指定位置, 注意硬盘表示方法, 玩过Windows的Ghost会比较眼熟; 本地重启设置 root(hd1,0),即第二块硬盘, sda要改成sdb
  kernel /vimlinuz ro selinux= root=/dev/sda3 init=/bin/bash //重点, 指定内核位置, 关闭selinux, 指定根目录位置, kernel初始化后第一个启动的为/bin/bash, 而不是init
  initrd /initramfs.img  //指明ramfs位置
mkdir /tmp/sys
mount /dev/sdb3 /tmp/sys  //挂载
cd /tmp/sys
mkdir -pv etc bin sbin usr lib lib64 dev mnt tmp sys proc media var home root  //建立假根文件夹
cp /bin/bash /tmp/sys/bin  //复制bash
ldd /bin/bash // 查看bash的依赖库
cp /lib64/libtinfo.so. ./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.xz
tar JxPf linux-3.10..tar.xz -C /usr/src
cd /usr/src/linux-3.10. //打开目录
make menuconfig //图形界面编辑kernel, 内置或模块或取消; 编译和安装模块的过程中有一大堆没有用的driver,<暗中观察了一下, AMD的显卡最耗时间> 浪费大量时间, 选择时可以取消;
//此处以下开始编译, 建议在本地监视器上运行
make -j8   //8线程同时编译 //大约30分钟 make modules_install make install

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

grub2-set-default
grub2-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



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

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

瞎折腾-CentOS 7.4 编译4.16.2版kernel 并安装的更多相关文章

  1. CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1多版本全能环境

    准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...

  2. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...

  3. centos 7.0 编译安装php 7.0.3

    php下载页面 http://cn2.php.net/downloads.php 7.0.3多地区下载页面 http://cn2.php.net/get/php-7.0.3.tar.gz/from/a ...

  4. CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3

    http://www.osyunwei.com/archives/8867.html 一.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables #编辑防火墙配置 ...

  5. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13

    CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.132013-10-24 15:31:12标签:服务器 防火墙 file 配置文件 written 一.配置好I ...

  6. CentOS 6.4 编译安装Mysql 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  7. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享

    一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  8. CentOS 6下编译安装MySQL 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  9. Centos 6.8编译安装LNMP环境

    Centos 6.8编译安装LNMP环境 参考资料: http://www.jb51.net/article/107429.htm https://phperzh.com/articles/1360 ...

随机推荐

  1. nyoj--914--Yougth的最大化(二分查找)

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...

  2. xBIM 基础14 使用LINQ实现最佳性能(优化查询)

    系列目录    [已更新最新开发文章,点击查看详细]  LINQ代表语言集成查询,它是3.5版以来的.NET Framework的一部分.它实现延迟执行,这意味着您可以链接查询语句,并且在您实际迭代结 ...

  3. COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)

    思路: 此题显然是CDQ套CDQ套树套树 (然而我懒) 想用一种奇怪的姿势卡过去 就出现了以下解法 5w*5w/8的bitset hiahiahia 但是空间会爆怎么办啊- 折半~ 变成5w*2.5w ...

  4. POJ 1952 DP

    思路: 这题要求最长下降子序列的长度和个数,我们可以增加 数组maxlen[size](记录当前第1个点到第i个点之间的最长下降序列长度) 和maxnum[size](记录1~i之间的最长下降序列个数 ...

  5. + (void)initialize vs 静态构造方法

    在继承体系中,多个子类的引用,父类缺省执行一次: 特殊情况: 1)子类没有实现.调用父类方法: 2)子类显示调用父类: 3)存在分类实现,分类实现覆盖本体. Initializes the class ...

  6. JDOJ 2785: 商之和 数论分块

    Code: #include <iostream> #include <cstdio> #define setIO(s) freopen(s".in",&q ...

  7. java jar打包命令使用

    用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的 ...

  8. 洛谷 P1005 矩阵取数游戏 (区间dp+高精度)

    这道题大部分时间都在弄高精度-- 还是先讲讲dp吧 这道题是一个区间dp,不过我还是第一次遇到这种类型的区间dp f[i][j]表示取了数之后剩下i到j这个区间的最优值 注意这里是取了i之前和j之后的 ...

  9. numpy学习笔记 - numpy数组的常见用法

    # -*- coding: utf-8 -*- """ 主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新. Created on Mon Aug 20 ...

  10. 【codeforces 255D】Mr. Bender and Square

    [题目链接]:http://codeforces.com/problemset/problem/255/D [题意] 给你一个n*n的方框; 给你一个方块;(以下说的方块都是单位方块) 每一秒钟,可以 ...