AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 8540
Accepted
Colin Pickard
Colin Pickard
Asked: 2009-05-16 00:57:45 +0800 CST2009-05-16 00:57:45 +0800 CST 2009-05-16 00:57:45 +0800 CST

在 Ubuntu 发行版升级期间从关机中恢复

  • 772

我有一台计算机在发行版升级期间意外关闭(Ubuntu 8.10 -> 9.04)。它现在无法完成启动 - 各种 X 错误,然后进入登录屏幕,但不允许登录。

我有它的备份,驱动器上的 /home 数据仍然正常,所以它不是紧急情况,但完全重建仍然是一个烦人且耗时的过程。有什么办法可以从中恢复吗?我有一张 9.04 的 CD,我正在讨论是否尝试在顶部安装 - 这是个好主意吗?

如果做不到这一点,是否有任何好的方法来检查驱动器并生成已安装软件的列表,甚至最好是来自外部 /home(如 /etc)的设置?


如果我必须从头开始,有什么建议可以与负责意外关机的人打交道吗?:)


编辑:非常感谢您的所有答案,我真的需要接受所有答案,因为我需要使用每个答案。我能够使用以下方法完全修复安装:

sudo dpkg --configure -a
sudo apt-get update
sudo dpkg --configure -a
sudo dpkg --configure -a --abort-after=99999
sudo apt-get dist-upgrade
sudo apt-get -f install
sudo apt-get dist-upgrade
ubuntu upgrade
  • 5 5 个回答
  • 34893 Views

5 个回答

  • Voted
  1. Best Answer
    Oli
    2009-05-16T01:22:14+08:002009-05-16T01:22:14+08:00

    如果您可以到达可以以 root 身份使用 dpkg 的地方,则可以运行dpkg --configure -a

    但是,您可能会发现升级失败会爆炸,因此您可能需要:

    dpkg --configure -a --abort-after=99999
    
    • 14
  2. Zoredache
    2009-05-16T01:06:57+08:002009-05-16T01:06:57+08:00

    尝试按 CTRL-ALT-F1 并查看是否出现命令提示符。看看您是否可以登录,然后尝试运行sudo apt-get dist-upgrade。这应该允许您完成升级。您可能会收到错误,因此您可能还需要尝试使用sudo dpkg --configure -a。


    要获取已安装软件的列表,您可以运行命令dpkg --get-selections。如果将该命令的输出保存到文件中,则可以使用命令cat selections | sudo dpkg --set-selections然后使用命令sudo apt-get dselect-upgrade实际安装所有软件包。

    如果您确实走这条路,您可能应该将 /etc 和 /home 文件夹备份到另一台设备。

    • 9
  3. Avery Payne
    2009-05-16T15:00:07+08:002009-05-16T15:00:07+08:00
    sudo apt-get update
    sudo dpkg --configure -a
    sudo apt-get update
    sudo apt-get dist-upgrade
    

    第一行刷新您正在下载的 repo 的当前级别

    第二行重新配置任何处于“坏”状态的包

    第 3 行在那里,以防存储库在第 2 行的过程中“移动”到新版本。

    第四行应该完成这项工作。

    • 6
  4. Chris
    2009-11-03T16:55:22+08:002009-11-03T16:55:22+08:00

    我能够从升级期间断电后 Xubuntu 无法启动的灾难性情况中恢复过来。POST 大约 10 秒后,Xubuntu 会因出现大量错误而停止(尝试在 grub 中加载“恢复”选项甚至也不起作用)。

    因此,如果有人偶然发现这一点,我将从 Ubuntu 论坛发布一些信息,这些信息帮助我进入终端窗口,以便我可以使用上面发布的 Colin 和 Avery 命令。

    ---------- 剪断 ---------- 剪断 ---------- 剪断 ---------- 剪断 ------ ----

    ubuntuforums.org/showthread.php?t=157250

    假设您的系统在升级后刚刚崩溃,或者您的新内核无法启动。你不能用 apt-get 解决这个问题,因为你甚至不能进入命令行;内核只是吐出错误并在启动时挂起。值得庆幸的是,使用 live cd,您可以修复系统并使其启动并运行。Live cd 有 2 个选项:Knoppix 或 Ubuntu live cd。由于 Knoppix 通常具有更好的硬件检测,因此这里将用作示例。

    1. 首先,从http://www.knoppix.org/下载 iso并将其刻录到磁盘。
    2. 将您的 BIOS 设置为从 cd 启动,插入 Knoppix 磁盘,然后启动。
    3. 根据您的系统,您的硬盘应该在 KDE 桌面上显示为 hda1 或 sdb2 之类的。
    4. 单击它以安装它,然后右键单击,操作 -> 更改为读写模式。它会弹出一个对话框;单击是。
    5. 现在,打开一个根终端,在 Knoppix 菜单中找到(面板上 K 旁边的那个)。输入:chroot /mnt/hda1 或桌面上显示的硬盘图标。

    您现在可以使用硬盘驱动器上的所有命令,包括 apt-get。如果您遇到此错误:“/dev/null: Permission denied”,请执行以下操作:“sudo rm /dev/null”,它应该会消失。现在,使用 apt-get 升级您的内核、udev 或其他任何破坏系统的东西。

    ---------- 剪断 ---------- 剪断 ---------- 剪断 ---------- 剪断 ------ ----

    它也很完美!我按照说明安装了我的硬盘,打开一个终端窗口,输入“sudo chroot /media/hda1”,终于可以访问我的硬盘了。然后,我可以使用该线程前面发布的命令来重新启动升级过程。:)

    难怪 Ubuntu Live/Installation CD 没有内置“恢复控制台”来促进整个恢复过程。

    • 5
  5. Chris Suszyński
    2012-02-03T13:25:58+08:002012-02-03T13:25:58+08:00

    对我来说,另一个命令也有助于在 chroot 环境中正确配置所有包(在此之前运行dpkg ,dist等):

    Upstart 作业无法在 chroot 中启动,因为 upstart 充当服务监督者,并且 chroot 内的进程无法与在 chroot 之外运行的 upstart 通信(错误:430224)。这将导致某些已转换为使用 upstart 作业而不是 init 脚本的软件包无法在 chroot 中升级。建议用户使用 /sbin/initctl 指向 /bin/true 来配置他们的 chroot,并在 chroot 中运行以下命令:

    代码:

    dpkg-divert --local --rename --add /sbin/initctl
    ln -s /bin/true /sbin/initct
    
    • 1

相关问题

  • 如何在 Ubuntu 上设置简单的防火墙?

  • 设置没有密码的用户

  • 在 Ubuntu 上设置电子邮件服务器

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve