FreeBSD升级失败的处理

原创 2017年02月05日 21:47:38

手里有几台机器跑着FreeBSD,有实体机也有VPS,因为都是前几年安装的,所以基本上都是跑着10.0或10.1,这两个版本现在都已经停止支持了,只是一直懒得去动,所以凑和用着。

结果没想到最近一次升级pkgng以后,pkg不能用了,搜了一下所有的解决方案都是说要升级系统,看来必须要升级了。但是一直出抽不出空来,只能用pkg-static扛着,不太方便。

好不容易等到春节放假有点时间,决定一次搞定。

先在家里的实体机试了一把——万一搞崩实体机也好弄。结果果然不顺利,第一步执行:

freebsd-update -r 10.3-RELEASE upgrade

就出错,说是找不到update.freebsd.org,但是nslookup、ping、curl试过这个域名都是通的,最后只能用IP地址连才总算成功:

freebsd-update -s 204.9.55.80 -r 10.3-RELEASE upgrade

之后就是freebsd-update install,重启,再freebsd-update install即可。

第二台是VPS,结果这个前两步倒是顺利,到了重启后再次运行freebsd-update install时,出现大量的错误:

segmentation fault (core dumped) 

中断升级发现所有的命令都不可用——虽然SSH还正常连接着,但是新的连接已经不行。放狗一搜,说是因为旧的系统文件已经在升级过程中被删除,但是新版的文件没找到……

然后才想起来我用了ZFS,估计新文件在ZFS里,但是因为旧文件被删除,ZFS无法mount,所以无法找到新文件……

然而我在升级前并没有做备份……

再次重启系统——已经无法启动了。差点要重装系统的时候被我搜到这篇里的一个回复介绍了手工修复的方法:

In my case I restored system libraries with a FreeBSD 10.1-RELEASE memory stick using a similar procedure.

Boot from USB stick and exit to Live CD.

Mount the damaged FreeBSD installation on /mnt (/, /usr, /var)

Back up manually modified files from /mnt/etc to the USB stick.

Code:

# cd /usr/freebsd-dist; for file in base.txz lib32.txz kernel.txz src.txz ; do (cat $file | tar --unlink -xvpJf - -C /mnt); done

Reboot in current restored system.

Mount the USB stick and restore the backup to /etc.

这简直是大救星啊。当然也幸好用的是Vultr的VPS,可以外挂ISO启动,不然也是没得救。

当即下载了10.3的ISO文件并上传,然后用这个盘重启了系统,mount上root盘和ZFS盘,把/etc备份到ZFS里,最后从系统盘里恢复系统文件。

中间还出了个问题是mount root盘失败,最后是用fsck修复的。

fsck -y /dev/vtbd0p2

重启,果然成功进入系统,然后赶紧恢复/etc……

杯具的是恢复完etc又挂掉了,貌似因为rc之类目录下的东西也被删除了很多,/etc/group也变成空文件……

得,重来一遍再说。

因为/etc不能完全恢复备份,就只能手工恢复了。首先是rc.conf, pf.conf等,然后是用户系统的恢复(从这个贴子里找到方法):

If you still have the full /etc/master.passwd, you can recreate /etc/passwd using pwd_mkdb(8) (-p). If not, see if /var/backups/master.passwd fits your needs and use that. And before the entire forum says what it always says, and with good reason: make backups.

从备份里恢复master.passwd后执行:

pwd_mkdb -p /etc/master.passwd

至于/etc/group,只能手工恢复了,还好东西不多。

升级第三个的时候就有经验了,反正先做个备份总是没错的。

结果备份完重启准备升级的时候叕有新的状况:

网络无法连通……

DigitalOcean这是闹哪套?

后来是在这里看到一个可能的原因,一查果然是这个/etc/rc.digitalocean.d/droplet.confsymbol link丢了。

但是手工补上重启还是不通,最后只能自己在rc.conf里把IP和路由配置写死进去才终于可以。

之后整个升级过程就很成功了。

FreeBSD升级及pkgng

Ports和Package长期以来 FreeBSD 的应用安装主要都是依赖源码编译的 ports 系统,二进制的 package 系统当然也有,只是弱爆了,至少依赖问题需要人工处理( ports 是自...
  • Raptor
  • Raptor
  • 2014年07月15日 16:08
  • 7419

[FreeBSD] 文件系统自检失败处理

故障现象 FreeBSD系统开机显示: Automaticfile system check failed ;help!  Mar 2020:21:48 init :/bin/sh on /et...
  • m0_37313242
  • m0_37313242
  • 2017年08月25日 16:15
  • 75

freebsd安装JAVA的最简单方法

1 安装 jdk . 我是从 http://soft.huangdong.com/soft/jdk-1.4.1p3_3.bsd4.tgz 下载的 jdk1.4.1 , 直接解压后,复制到 /usr/l...
  • yjz0065
  • yjz0065
  • 2005年10月21日 12:07
  • 1676

freebsd环境变量设置

命令解释程序 shell是与用户关系最密切的应用程序,用户主要通过shell使用系统。在每次登录系统之后,就启动了一个与用户交互的shell,这个shell将给出一个提示符等待用户输入,(sh为 “ ...
  • zhangdaisylove
  • zhangdaisylove
  • 2015年06月15日 11:07
  • 2061

freeBSD TAILQ队列的理解

from  http://www.cnblogs.com/UnGeek/archive/2013/03/29/2989325.html 在看libevent源码中TAILQ的时候发现了一些让...
  • u010820135
  • u010820135
  • 2016年08月29日 12:02
  • 472

freebsd上更新升级python27到python33

因为要升级python2到python3, 所以将操作记录一下. 1. 找到资料说The default versions of lang/python* have been changed...
  • huyoo
  • huyoo
  • 2014年03月30日 15:22
  • 3216

Qt 5.3更新无数,更改C++控制台输出最为赞

本人觉得有了这个更新,Qt Creator可谓几乎没有缺点了,起码仅仅开发C/C++,是不用再去安装VS了。Qt 5.3放出,更新无数,具体参考:http://qt-project.org/wiki/...
  • ztz0223
  • ztz0223
  • 2014年05月23日 19:07
  • 6375

(4)FreeBSD9.0安装JDK1.6

今天在FreeBSD 9.0 上安装jdk1.6时遇到的问题,在这里和大家分享一下,希望对大家能有帮助。   根据官方提供的方案进行安装,但是在安装过程中需要手动下载一些jar和zip,我...
  • hot_zcy2012
  • hot_zcy2012
  • 2012年06月17日 16:04
  • 2969

升级FreeBSD的ports

Xinsoft-BSD# cp /usr/share/examples/cvsup/ports-supfile /rootXinsoft-BSD# vi /etc/make.conf# added b...
  • magicbreaker
  • magicbreaker
  • 2008年03月30日 23:29
  • 593

FreeBSD IPF gateway 网关 连接 Windows 服务器自带 1723 PPTP VPN 拨号 619 错误的解决

客户机在 FreeBSD 网关 gateway 内,采用 IPF 防火墙,Windows 客户端经过 FreeBSD IPF 防火墙访问远程 Windows 提供的 PPTP VPN 端口 1723,...
  • joyous
  • joyous
  • 2016年04月20日 03:52
  • 749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FreeBSD升级失败的处理
举报原因:
原因补充:

(最多只允许输入30个字)