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

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

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

每次我尝试下载 Ubuntu ISO(无论从哪个来源),它似乎都会损坏。也就是说,MD5 总和永远不正确。

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

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

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

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

答案1

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

尝试将多个损坏的 ISO 映像中的文件合并为一个完整的 ISO 映像并不是解决此问题的好方法。原因如下。

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

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

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

因此我现在可以告诉你,你下载的每个 ISO 上哪个文件几乎肯定已损坏:所有 ISO 上都有这个文件。当 Ubuntu ISO 中出现损坏时,坏字节几乎总是在其中的某个地方。

filesystem.squashfs本身磁盘映像;它是作为启动实时 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 的错误,以便解决问题),或者
  • 你正在使用缓存网页内容的代理或 VPN,但它不知何故缓存了损坏的副本(从另一个镜像下载也应该可以解决这个问题),或者
  • 你正在通过 FTP 下载,但服务器或 FTP 客户端出现问题,导致文件以文本模式而不是二进制模式传输(这会损坏文件,并且通常每次都会以相同的方式损坏文件),或者
  • 您的连接被恶意第三方故意拦截和改变,并故意向您提供错误的文件(尽管这种情况通常不太可能发生)。

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

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

同步

zsync(也可以看看这里)是一种可以将部分正确文件放入完全正确只需下载您没有正确版本的部分即可。它的主要应用是下载稍微更新的图像,例如从一个夜间版本到另一个夜间版本的图像。

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

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

为了互联网连接非常不可靠zsync并不比从头开始下载整个文件的 Web 浏览器好多少,除非你愿意运行两次或更多次,在这种情况下,后续运行将纠正早期运行中的问题. 对于除错误率最高的 Internet 连接之外的所有连接,对文件运行两次 zsync 或偶尔三次就足够了。

但您几乎不必担心zsync多次运行。由于您已经(大概)拥有了大部分文件,因此这应该不是问题。并且,如果总是zsync显示损坏的内容,您可以随时zsync再次运行以进行修复。

获取zsyncWindows 版本

zsync传统上,它运行在类 Unix 系统上(实际上不包括 Windows)。然而,最近zsync已创建了Windows 原生端口,因此您很可能可以使用它。

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

另一种方法:获取zsyncCygwin

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

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

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

  6. 现在您可以选择要安装的软件包。有一个文本框用于按名称搜索软件包。zsync在那里输入(但不要按下Enter——如果你按下,就像点击下一个). 条目会出现。点击+左侧的 展开它,你会看到跳过setup.exe出现在其下方。这意味着如果你不做任何更改,不是安装zsync

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

  7. 点击一下,上面写着跳过zsync. 现在它将安装Cygwin的最新可用稳定版本。

    在此处输入图片描述

  8. 点击下一个再次完成安装。 Cygwin 环境和zsync将被下载并安装。 (如果系统要求您安装依赖项所需的软件包,请继续执行。)

安装完成后,打开 Cygwin shell。您可以zsync从那里运行。

参考

请注意,虽然您可以在Cygwin 邮件列表 对于 Cygwin 的问题(在阅读了它以及它告诉你阅读的材料之后),他们可以理解地不是支持非官方说明。cygwin有相当好的文档,因此像其他具有良好集中文档的项目(如 OpenBSD)一样,他们希望寻求帮助的人已经阅读过文档并且正在根据文档进行工作(或至少非常熟悉)。

(因此,如果你对我的指示有疑问,询问这些问题的最佳地点可能是这里

zsync在 Ubuntu 上

这并不适用于你的特定情况,但对于想要zsync在 Ubuntu 上使用的人来说,只需安装同步安装 zsync。这可以在软件中心完成,也可以通过在终端窗口 (++) 中运行以下命令来Ctrl完成:AltT

sudo apt-get update && sudo apt-get install zsync

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

有关的:如何使用 zsync 更新 ISO?

用于zsync修复损坏的 ISO 映像

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

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

  • 12.10,32位:

    zsync http://releases.ubuntu.com/quantal/ubuntu-12.10-desktop-i386.iso.zsync
    
  • 12.10,64 位:

    zsync http://releases.ubuntu.com/quantal/ubuntu-12.10-desktop-amd64.iso.zsync
    
  • 12.04.1 LTS,32 位:

    zsync http://releases.ubuntu.com/12.04.1/ubuntu-12.04.1-desktop-i386.iso.zsync
    
  • 12.04.1 LTS,64 位:

    zsync http://releases.ubuntu.com/12.04.1/ubuntu-12.04.1-desktop-amd64.iso.zsync
    
  • 12.04 LTS(12.04.1 点版本之前),32 位:

    zsync http://old-releases.ubuntu.com/releases/precise/ubuntu-12.04-desktop-i386.iso.zsync
    
  • 12.04 LTS(12.04.1 点版本之前),64 位:

    zsync http://old-releases.ubuntu.com/releases/precise/ubuntu-12.04-desktop-amd64.iso.zsync
    

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

用于zsync其他文件

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

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

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

用于“升级”

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

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

比特流

当你的互联网连接错误率很高时,比特流通常是可靠地下载文件的最佳方式之一。文件被分成许多小块,然后下载并检查每个块是否真实。(可以从不同的计算机下载各个部分,这使得 BitTorrent 避免对中央服务器施加负载,并且通常比基于 Web 的下载速度更快。)

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

您需要一个 BitTorrent“客户端”来下载它。如果您还没有喜欢的客户端,我建议使用 Windows比特龙卷风

下载后,我建议你尽可能地播种一些,以回馈社区。(使用 BitTorrent 可以从像你这样的人那里获得。)不过你不必立即这样做——你可以返回 BitTorrent 程序并稍后播种。你甚至可以在下载未完成时退出它,然后随时恢复。

使用 BitTorrent 修复文件

警告:本小节的研究不如其他答案那么充分。我最近没有测试过使用 BitTorrent 修复损坏的文件,也没有在 Windows 上或使用 BitTornado 进行测试。我希望这对您有用,但我不确定。

尽管 BitTorrent 不像 那样常用于此目的zsync,但 BitTorrent 协议本身却具有此功能。

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

将旧 ISO 映像放在与.torrent文件相同的文件夹中。确保您的 BitTorrent 程序会在那里下载 torrent。它会检查您当前的文件是否完好。当它发现某些部分有误时,它可以重新下载它们。

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

答案2

您可以使用ISO 主控如果您想在 ISO 中添加和删除文件。它适用于 Windows 和 Linux。

相关内容