皮皮虾的博客

一个备受大佬们欺负的萌新

记一次夏姬巴乱折腾的历程-Centos6.9升级至Centos7.x

Update

5-18更新:

增加修复功能,理论上开机之后能直接用。(理论。在root目录中start.sh自动删除之后即可使用

 

前言

因为军佬放弃制作Centos7的网络重装包,又Centos7的安装引导和6有较大区别所以,选择曲线救国(技术不行,只能这样乱搞)

前文:Centos6.9一键重装包https://ppx.ink/netrebuild.ppx

开始折腾

首先,用军佬的脚本安装到Centos6.9(本懒人用的DO宝宝自带的centos6.9)

ps:DO宝宝=digitalocean

然后开始百度如何升级

然后。。。

没有然后了。。全部失败

打开狗狗 搜索成功 得到了以下资料

远程升级云服务器系统 CentOS 6.x 至 CentOS 7.x

 

因为是Centos6.9 所以问题很多

准备步骤

首先,添加升级所需的源

vi /etc/yum.repos.d/upgradetool.repo

输入以下内容:wq保存

[upg]
name=CentOS-$releasever - Upgrade Tool
baseurl=http://dev.centos.org/centos/6/upg/x86_64/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

安装更新工具,卸载较新的预升级助手,安装较老的预升级助手

yum install redhat-upgrade-tool preupgrade-assistant-contents -y
yum erase openscap -y
yum install http://dev.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm -y
yum install redhat-upgrade-tool preupgrade-assistant-contents -y

执行预更新检查

preupg -s CentOS6_7 #输入y

如果不更换预升级助手的版本,则会出现以下错误

I/O warning : failed to load external entity "/usr/share/openscap/xsl/security-guide.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 40 element import
xsl:import : unable to load /usr/share/openscap/xsl/security-guide.xsl
I/O warning : failed to load external entity "/usr/share/openscap/xsl/oval-report.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 41 element import
xsl:import : unable to load /usr/share/openscap/xsl/oval-report.xsl
I/O warning : failed to load external entity "/usr/share/openscap/xsl/sce-report.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 42 element import
xsl:import : unable to load /usr/share/openscap/xsl/sce-report.xsl
OpenSCAP Error:: Could not parse XSLT file '/usr/share/preupgrade/xsl/preup.xsl' [oscapxml.c:416]
Unable to open file /root/preupgrade/result.html
Usage: preupg [options]
preupg: error: [Errno 2] No such file or directory: '/root/preupgrade/result.html'

 

开始升级

导入Centos7的key

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7

执行升级命令

centos-upgrade-tool-cli --network 7 --instrepo=http://vault.centos.org/centos/7.2.1511/os/x86_64/
reboot

错误引导

通过百度等方法得到的centos6.5升级方案中升级方式为

centos-upgrade-tool-cli --network 7 --instrepo=http://mirror.centos.org/centos/7/os/x86_64/

如果在Centos6.5以上执行将会提示以下错误

Continue with the upgrade [Y/N]? y
getting boot images...
Downloading failed: invalid data in .treeinfo: No option 'upgrade' in section: 'images-x86_64'

根据反馈是.treeinfo 文件中的 ‘images-x86_64’ 部分没有 ‘upgrade’ 选项

查看文件 http://mirror.centos.org/centos/7/os/x86_64/.treeinfo

确实没有upgrade选项,还好狗狗到了上面提到的资料

在Centos的旧版本备份中http://vault.centos.org/ 7.0.1406、7.1.1503、7.2.1511几个版本都有 ‘upgrade’ 选项

这里我选择7.2来升级,所以上文包仓库地址为http://vault.centos.org/centos/7.2.1511/os/x86_64/ 而不是官方文档以及大部分资料中的http://mirror.centos.org/centos/7/os/x86_64/

更新完成

更新完成之后建议执行以下命令

因为从Centos6.9更新到7.2必然出现一些问题

例如ssh yum 无法正常使用

所以,再重启之前,先做好准备

vi start.sh #在root目录创建start.sh文件
######输入以下内容
#!/bin/bash
ln -s /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
ln -s /usr/lib64/libpcre.so.1.2.0 /usr/lib64/libpcre.so.0
service sshd restart
rm -rf /etc/rc.d/rc.local  
mv /etc/rc.d/rc.local.bak /etc/rc.d/rc.local #恢复原始文件
rm -rf /root/start.sh #删除自身
######:wq保存
#执行以下命令
chmod +x start.sh
chmod +x /etc/rc.d/rc.local
cp /etc/rc.d/rc.local /etc/rc.d/rc.local.bak #创建备份
echo 'bash /root/start.sh' >>/etc/rc.d/rc.local #添加脚本为开机自启动

升级后续

在重启之后,等待5-10分钟(也可能更长,视机器网络以及配置有关),连接SSH

处理软件

执行

yum upgrade -y

执行完成之后执行

yum downgrade grep

执行

yum upgrade python

执行上行代码时,会报错,什么python(abi)=2.6什么什么的

利用rpm挨个删除后面的包再次执行

#rpm -e xxxxxx
yum upgrade python

不报错升级成功即可运行

yum update

最后

至此,系统基本就可以正常运行使用了,如还有什么BUG,请自行查阅资料修复

特别

不想看过程的可以直接保存以下代码一键执行即可

本代码可直接执行到重启的步骤,需要自行连接SSH进行修复

#!/bin/bash
echo '
[upg]
name=CentOS-$releasever - Upgrade Tool
baseurl=http://dev.centos.org/centos/6/upg/x86_64/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
' >>/etc/yum.repos.d/upgradetool.repo
echo '
#!/bin/bash
ln -s /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
ln -s /usr/lib64/libpcre.so.1.2.0 /usr/lib64/libpcre.so.0
service sshd restart
yum upgrade sos -y
yum downgrade grep -y
yum remove python-argparse* python-iwlib* redhat-upgrade-tool* -y
yum upgrade python* -y
yum upgrade -y
yum update -y
echo "" > /etc/rc.d/rc.local
rm -rf /root/start.sh
' > start.sh
chmod +x start.sh
chmod +x /etc/rc.d/rc.local
echo 'bash /root/start.sh' >>/etc/rc.d/rc.local
yum install redhat-upgrade-tool preupgrade-assistant-contents -y
yum erase openscap -y
yum install http://dev.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm -y
yum install redhat-upgrade-tool preupgrade-assistant-contents -y
preupg -s CentOS6_7 <<EOF
y
EOF
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
centos-upgrade-tool-cli --network 7 --instrepo=http://vault.centos.org/centos/7.2.1511/os/x86_64/ <<EOF
y
EOF
reboot

 

 

点赞
  1. 落叶大大说道:

    爬爬虾牛逼,爬爬虾是神

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code