我有一台 Ubuntu 14.10 VPS。每次尝试升级到 15.04 时,都会出现奇怪的症状。我能够毫无问题地从 14.04 升级到 14.10。升级成功后,服务器重新启动,无法再通过正常方式访问,只能通过提供商的紧急 ssh 接口访问。
连接时我的 ifconfig 输出如下:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
以前我也遇到过这种情况:
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:14177 errors:0 dropped:0 overruns:0 frame:0
TX packets:12143 errors:0 dropped:1 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8039529 (8.0 MB) TX bytes:7086087 (7.0 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:XXXXXXXXXX P-t-P:XXXXXXXXXXXXXX Bcast:XXXXXXXXXXXXX Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
因此,基本上升级后我的虚拟网络接口就消失了,我必须恢复备份。我还注意到几乎没有进程在运行(比如 5 个)。例如,应该自动启动的 apache2 和 mysqld 没有启动。我现在确实回滚到了 14.04,但我真的很想升级而不必重新安装所有内容。在重试之前,是否有一些配置文件我应该备份?我如何升级而不破坏所有内容?
答案1
确保这三个文件相同,您可以复制它们,然后在新系统上恢复它们。
/etc/network/interfaces
/etc/resolv.conf
/etc/hosts
看看是否可行。此外,您可能还想检查设备名称是否未更改。例如,venet0 是否已更改为 venet1 或类似名称。您可以通过查看内核日志 (dmesg) 来检查这一点。
另外,至于其余服务,它们可能无法启动,因为它们依赖于网络接口的启动。
答案2
这也许可以解决你的问题:
- 使用此命令删除输入组:
sudo groupdel input
- 在 中
/var/lib/dpkg/info/udev.postinst
删除以下行:
addgroup --quiet --system input
- 重新启动——现在应该有一个界面,您可以通过它来更新系统。
这是基于此 Ask Ubuntu 帖子,其中启动后设备丢失:
更新到 ubuntu 15.04 后出现 udev 问题。
下面我重现了 Shenolol 的回答,解释了这个问题。
昨天我遇到了同样的问题。我从 14.10 升级到 15.04,在升级过程中我遇到了与您相同的错误。幸运的是,我能够找出问题的原因。有两种方法可以解决这个问题:
第一种方式(简单)转到终端并执行命令
sudo groupdel input
。现在运行sudo apt-get update && sudo apt-get dist-upgrade
。
仅当您对问题的原因感兴趣或第一种方法不起作用时,才阅读第二种方法。
第二种方式(我发这个帖子只是为了解释这个问题)
dpkg 配置脚本中的某一行有问题,我们要删除这一行。首先通过终端打开该文件:
sudo nano /var/lib/dpkg/info/udev.postinst
现在搜索该行
addgroup --quiet --system input
并将其删除。此行是配置脚本的第一部分。它将组“输入”添加到您的系统中。奇怪的是,当该组已经存在时,它会使整个脚本崩溃。显然,该组的成员可以访问您的系统输入,但这不是必需的,因为输入在没有该组的情况下也可以工作。保存您编辑的文件并运行sudo apt-get update && sudo apt-get dist-upgrade
。
我希望这能为您解决问题,并在未来为其他用户提供帮助。在修复此问题之前,每次 udev 有更新时,我们都必须应用其中一个修复程序。我不知道如何报告此错误,否则我会这样做。