如何识别和替换损坏的 Ubuntu ISO 中损坏的文件?

Hai*_*ood 14 windows iso md5sum 12.04 12.10

所以,这不完全是运行 Ubuntu 的问题,而是安装它的问题。

每次我尝试下载 Ubuntu ISO(从任何来源)时,它似乎都以损坏告终。也就是说,MD5 总和永远不会正确。

Ubuntu ISO 文件附带一个文件,其中列出了 ISO 中的所有文件及其各自的 MD5SUM。

我希望做的是循环这个文件,并将它们与 ISO 中的文件进行比较,并找出哪些文件已损坏,希望我可以从其他 iso 文件之一中提取损坏的文件,以创建一个工作安装程序。

但是,我不知道该怎么做,当然,更糟的是,我必须在 Windows 7 中执行此操作。

有谁知道如何解决这一问题?

Eli*_*gan 34

实际上,我知道哪个文件已损坏

尝试将多个损坏的 ISO 映像中的文件合并为一个良好的 ISO 映像并不是解决此问题的好方法。这是为什么。

ISO 映像中的几乎所有数据都只属于一个文件casper/filesystem.squashfs.

在 Ubuntu 桌面 CD 或 DVD ISO 映像上,即。在服务器 CD 映像或备用 CD 映像上,情况就不同了。

Ubuntu 12.10 i386 桌面 CD 上 filesystem.squashfs 的 Nautilus 属性

所以我现在可以告诉你,在你下载的每个 ISO 上,哪个文件几乎肯定是损坏的:那个文件,所有这些文件。当 Ubuntu ISO 中的某些东西被损坏时,坏字节几乎总是在那里的某个地方。

filesystem.squashfs本身磁盘映像; 它作为引导系统的一部分安装在 live CD 上。您可以从 ISO 中提取它,然后提取内容,查看损坏的内容,并替换损坏的文件。虽然您可以在 Windows 上挂载或提取 squashfs 文件系统,但您可能会发现这样做并非易事。并且此映像是压缩的,因此不能保证包含 ISO 中的轻微损坏不会影响多个文件。

此外,如果你已经尝试下载了ISO映像几次,它总是腐败的,你可以确信它不只是轻微损坏。如果您尝试这样做,您可能需要替换成百上千个文件。

相反,您应该使用更可靠的方法下载 ISO 映像。

方便的是,其中之一 ( zsync) 与您的想法类似,不同之处在于它只会下载 ISO 文件的必要部分,而不仅仅是其中包含的必要文件。

确保您与正确的 MD5 哈希进行比较

当您的 MD5 总和错误时(尤其是在您再次下载文件后出错时),要做的第一件事是确保将其与正确文件的 MD5 哈希值进行比较。

我的猜测是

  • 您有一个 12.04 LTS 图像,并且您正在对 12.04.1 LTS 图像
    不是同一个文件)使用 MD5 哈希,或者
  • 您有一个 12.04.1 LTS 映像,并且您正在对 12.04 LTS 映像使用 MD5 哈希,或者
  • 您有一个 32 位(“i386”)图像,并且您正在对 64 位图像使用 MD5 哈希,或者
  • 您有一个 64 位(“amd64”)图像,并且您正在对 32 位图像使用 MD5 哈希。

每个文件的 MD5 哈希列表在这里。

一般来说,如果您的 MD5 哈希值错误但多次下载相同,通常

  • 您正在与错误的哈希进行比较,或者
  • 服务器上的文件已损坏(因此,如果情况确实如此,请从不同的镜像下载,并且,如果您愿意,请报告针对 ubuntu-website-content 的错误,以便解决问题),
  • 您正在使用缓存 Web 内容的代理或 VPN,并且它以某种方式缓存了损坏的副本(从另一个镜像下载也应该修复该问题),或者
  • 您正在通过 FTP 下载,并且服务器或 FTP 客户端的问题导致文件以文本模式而不是二进制模式传输(这会损坏它,并且通常每次都以相同的方式损坏它),
  • 您的连接被恶意的第三方故意拦截和更改,该第三方故意向您提供错误的文件(不过,这通常不太可能)。

您可以在本页底部手动选择(不同的)下载镜像。

如果您的 ISO 映像确实已损坏,这里有一些方法可以获得一个好的文件。

同步

zsync(另请参阅此处)是一种实用程序,它可以通过仅下载您没有正确版本的部分,将部分正确的文件转换为完全正确的文件。它的主要应用程序是下载稍微更新的图像,比如从一个每晚构建到另一个的图像。

zsync工作方式是这样的:提供文件的人(如 Ubuntu 项目)创建一个.zsync包含许多校验和的文件——校验和对应于文件的许多小部分,而不仅仅是整个文件的一个校验和。您可以从零开始到整个文件。

什么都没有,整个文件都被下载了。对于文件的一部分(即,大小不同的同名文件或大小相同但具有任意数量的二进制差异的文件),它会确定需要下载哪些部分,然后只下载这些部分。对于整个文件,它不会下载任何内容。

对于非常不可靠的 Internet 连接zsync从头开始下载整个文件并不比 Web 浏览器好多少,除非您愿意运行它两次或多次,在这种情况下,稍后运行将更正先前运行中的问题。对于除错误率最高的 Internet 连接之外的所有连接,在一个文件上运行 zsync 两次或偶尔运行 3 次就足够了。

但是您不必担心zsync多次运行。由于您已经——大概——拥有大部分文件,所以这应该不是问题。和往常一样,如果zsync给你一些损坏的东西,你总是可以zsync再次运行来修复它。

获取zsyncWindows

zsync传统上运行在类 Unix 系统上(实际上并不包括 Windows)。然而,最近的本地Windows端口zsync已经创建,那么你也许可以使用。

zsync是一个命令行程序,因此在 Windows 中您可以在命令提示符中运行它。(打开命令提示符的一种方法是cmd.exe在“开始”菜单的文本框中键入内容并按Enter。或者,在 Windows XP 及更早版本中,开始 > 运行 > cmd.exe。)

另一种方式:获取zsyncCygwin

如果您对 Windows 端口有任何问题zsync,您可以随时使用 Cygwin 版本。Cygwin 为 Windows 提供了一个类 Unix 环境。它不允许运行已编译的可执行文件(例如,您不能zsync从 Ubuntu 包中使用),而是使用从源代码为它编译的程序的特殊版本。(在 Cygwin 中编译为类 Unix 操作系统编写的程序比编译它以便它在 Windows 上本地运行要容易得多。)

  1. 首先,从此处获取 Cygwin 的安装程序 ( setup.exe)(或使用此直接链接)。
  2. 运行它,在第一个屏幕上单击下一步,然后选择从 Internet 安装并再次单击下一步
  3. 在接下来的两个屏幕上,将 Cygwin 和本地包目录放在您喜欢的任何位置(默认值通常很好)。
  4. 选择您的 Internet 连接类型(直接连接通常很好),然后setup.exe会下载镜像列表。
  5. 选择任何镜像,它将下载可用软件包列表。您可能会被警告此版本与前一个版本有何不同。这不是问题,除非您一直在同一台机器上使用先前版本的 Cygwin。

    设置警报消息,说明这是您第一次安装此特定版本的 Cygwin。 如果您以前没有使用过 Cygwin,则可以忽略它。 正如它所说,“如果这是您第一次在此系统上安装 Cygwin,那么您可以忽略此消息。”

  6. 现在您可以选择要安装的软件包。有一个用于按名称搜索包的文本框。类型zsync有(但Enter--IF你做什么,这就像单击下一步)。将出现一个Net条目。单击它+左侧的 展开它,您将看到Skip出现在它下方。这意味着如果您不更改任何内容,setup.exe不会安装zsync.

    Velma Dinkley 在 Cygwin 中安装 zsync,同时在“Siren's Song”中更新她的博客。

  7. 所以点击一次,它说Skip。现在它将安装zsyncCygwin的最新可用稳定版本。

    在此处输入图片说明

  8. 再次单击下一步完成安装。zsync将下载并安装Cygwin 环境和 。(如果您被要求安装作为依赖项所需的软件包,请继续这样做。)

安装完成后,打开 Cygwin shell。你可以zsync从那里跑。

参考

请注意,虽然您可以在Cygwin 邮件列表上发布有关Cygwin 的问题(在阅读该内容以及它告诉您的材料之后),但可以理解的是,它们支持非官方说明。cygwin有很好的文档,所以像其他具有良好集中文档的项目(如 OpenBSD)一样,他们希望寻求帮助的人会阅读文档并使用(或至少非常熟悉)它。

(因此,如果您对我的指示有疑问,询问它们的最佳地点可能是这里。)

zsync 在 Ubuntu 上

这不适用于您的特定情况,但对于想要zsync在 Ubuntu上使用的人,只需安装zsync安装 zsync. 这可以在软件中心或者通过在终端窗口中运行这个(做Ctrl+ Alt+ T):

sudo apt-get update && sudo apt-get install zsync
Run Code Online (Sandbox Code Playgroud)

现在您可以从终端运行它。

相关:如何使用 zsync 更新 ISO?

使用zsync修复已损坏的ISO映像

在命令提示符中,转到包含损坏的 ISO 文件的目录。(您可以使用cd更改目录,与 Ubuntu 相同。dir用于列出目录的内容。)确保您拥有的文件与您获得时具有相同的文件名。

现在zsync以其中一种方式运行,具体取决于它是哪个 Ubuntu ISO 映像:

一旦您运行其中一个命令,zsync就会自动将您的 ISO 修补到正确的版本,您就可以开始了。

使用zsync其它文件

一般语法是您运行zsync后跟.zsync服务器上文件的完整 URL,该文件与您拥有并希望下载的文件的版本相同(.zsync当然最后除外)。

如果有人想为任何其他 Ubuntu 版本(或同一版本的其他 ISO 文件,例如为在 Mac 上正确引导而优化的版本或基于 ARM 的移动设备的版本)执行此操作,这里是.zsync文件所在位置的规则:

只需单击您的版本的链接并向下滚动即可查看完整的文件列表(或在页面中搜索.zsync)。然后复制 URL 并将其粘贴到zsync命令中。

在“升级”中使用

您还可以使用zsync将一个 ISO“升级”到另一个。如果您从一个 Ubuntu 版本升级到另一个版本,它可能需要重新下载大部分文件。但是,如果您要升级点版本(例如 12.04 LTS 到 12.04.1 LTS),则不必下载太多。这是快速有效地获得新点发布的绝佳方式。

只需重命名旧文件,使其与新文件具有相同的名称,然后zsync按上述方式运行。

比特流

当您的 Internet 连接出错率很高时,BitTorrent通常是可靠下载文件的最佳方式之一。文件被分成许多小块,每个小块都被下载并检查它是否是真实的。(单个片段可以从不同的计算机下载,这让 BitTorrent 避免在中央服务器上加载负载,并且实现的速度通常比基于 Web 的下载速度更快。)

可以在此处获取 Ubuntu 12.10 和 Ubuntu 12.04.1 的 Torrent。

你需要一个 BitTorrent“客户端”来下载它。如果你还没有你喜欢的,对于 Windows 我推荐BitTornado

下载后,如果可以,我建议您播种一些,以回馈社区。(使用像您这样的人提供的 BitTorrent。)不过您不必立即执行此操作——您可以稍后返回到您的 BitTorrent 程序并进行播种。您甚至可以在下载未完成时退出,并随时恢复。

使用 BitTorrent 修复您拥有的文件

警告:本小节不像其他答案那样深入研究。我最近没有测试过使用 BitTorrent 修复损坏的文件,或者在 Windows 上,或者使用 BitTornado。我希望这对你有用,但我不能确定。

虽然 BitTorrent 不像 那样常用于此目的zsync,但 BitTorrent 协议本身也有同样的能力。

一些 BitTorrent 程序会这样做——其他人会拒绝,或者从头开始下载整个文件——除非你开始的文件大小完全相同。(方便的是,损坏的下载通常与正确文件的大小相同。)

将旧的 ISO 映像与文件放在同一文件夹中.torrent。确保您的 BitTorrent 程序在那里下载 torrent。它将检查您当前的文件是否良好。当它看到某些部分有问题时,它可以重新下载它们。

对于某些 BitTorrent 程序,您必须将文件作为正在运行的 Torrent 文件导入,或打开它进行播种,才能执行此操作。

  • 这是一个相当史诗般的答案。 (15认同)