其实我知道哪个文件损坏了
尝试将多个损坏的ISO映像中的文件合并为一个良好的ISO映像不是解决此问题的好方法。这就是为什么。
ISO映像中的几乎所有数据仅属于一个文件casper/filesystem.squashfs
。
即在Ubuntu桌面CD或DVD ISO映像上。在服务器CD映像或备用CD映像上,情况有所不同。
因此,我现在可以告诉您几乎确定在您下载的每个ISO上损坏了哪个文件:该文件,在所有文件上。当Ubuntu ISO中的某些内容损坏时,坏字节几乎总是在那里。
filesystem.squashfs
是本身磁盘映像; 它是在实时CD上引导系统时安装的。您可以潜在地从ISO中提取它,然后提取其内容,查看损坏的内容并替换损坏的文件。尽管您可以在Windows上挂载或提取squashfs文件系统,但您可能会发现这样做并非易事。而且此映像已压缩,因此无法保证包含的ISO中的轻微损坏不会影响多个文件。
此外,如果您尝试多次下载ISO映像,并且该映像始终损坏,则可以确定它不仅仅是轻微损坏。如果您尝试以这种方式进行操作,则可能必须替换成百上千个文件。
相反,您应该使用更可靠的方法下载ISO映像。
方便地,其中一个(zsync
)与您的想法类似,不同之处在于它只会下载必要的ISO文件,而不仅仅是下载其中包含的必要文件。
确保您正在与正确的MD5哈希进行比较
当您的MD5总和不正确时(尤其是在您再次下载文件后出错),第一件事就是要确保将其与正确文件的MD5哈希值进行比较。
我的猜测是
- 您有一个12.04 LTS映像,并且正在使用MD5哈希处理12.04.1 LTS映像
(这不是同一文件),或者
- 您有一个12.04.1 LTS映像,并且正在使用MD5散列用于12.04 LTS映像,或者
- 您有一个32位(“ i386”)图像,并且您正在使用MD5哈希作为64位图像,或者
- 您有一个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
再次运行以修复它。
获取zsync
Windows
zsync
传统上是在类似Unix的系统上运行(实际上不包括Windows)。但是,最近已创建了Windows的本机Windows端口zsync
,因此您可以使用它。
zsync
是一个命令行程序,因此在Windows中,您可以在命令提示符下运行它。(打开命令提示符的一种方法是cmd.exe
在“开始”菜单中键入文本框,然后按Enter。或者,在Windows XP和更早版本中,单击“开始”>“运行”> cmd.exe
。)
另一种方式:获取zsync
Cygwin
如果您的Windows端口有任何问题zsync
,可以随时使用Cygwin版本。Cygwin为Windows提供了一个类似Unix的环境。它不允许运行已编译的可执行文件(例如,您不能zsync
从Ubuntu软件包中使用),而是使用从源代码为其编译的程序的特殊版本。(在Cygwin中编译为类Unix操作系统编写的程序要容易得多,要比在Windows上本地运行要容易得多。)
- 首先,从此处获取Cygwin的安装程序(
setup.exe
)(或使用此直接链接)。
- 运行它,在第一个屏幕上单击“ 下一步 ”,然后选择“ 从Internet安装”,然后再次单击“ 下一步”。
- 在接下来的两个屏幕上,将Cygwin和本地软件包目录放在您喜欢的任何位置(默认情况下通常很好)。
- 选择您的Internet连接类型(通常使用Direct Connection是很好的选择),然后
setup.exe
将下载镜像列表。
选择任何镜像,它将下载可用软件包的列表。您可能会被警告该版本与上一个版本有何不同。除非您在同一台计算机上使用了以前版本的Cygwin,否则这不是问题。
现在,您可以选择要安装的软件包。有一个文本框,用于按名称搜索软件包。类型zsync
有(但不按Enter--IF你做什么,这就像单击下一步)。将出现一个Net条目。通过单击+左侧的展开它,您将看到“ 跳过”出现在其下方。这意味着,如果您不进行任何更改,setup.exe
将不会安装zsync
。
因此,单击一次,显示“ 跳过”。现在,它将安装zsync
Cygwin 的最新可用稳定版本。
- 再次单击“ 下一步”完成安装。Cygwin环境和
zsync
将会下载并安装。(如果要求您安装作为依赖项所需的软件包,请继续安装。)
安装完成后,打开Cygwin外壳。您可以zsync
从那里运行。
参考文献
请注意,尽管您可以在Cygwin邮件列表中发布有关Cygwin
的问题(在阅读了该内容以及它告诉您阅读的材料之后),但可以理解的是,他们不支持非官方的说明。cygwin
拥有非常好的文档,因此像其他具有良好的集中文档的项目(例如OpenBSD)一样,他们希望寻求帮助的人们将阅读该文档并正在使用(或至少非常熟悉)它。
(因此,如果您对我的说明有任何疑问,最好的询问地点可能在这里。)
zsync
在Ubuntu上
这不适用于您的特定情况,但是对于想zsync
在Ubuntu 上使用的人,只需安装zsync即可。可以在软件中心中执行此操作,也可以在终端窗口(Ctrl+ Alt+ T)中运行此操作:
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
该.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修复您拥有的文件
警告:本小节没有像其他答案那样得到充分的研究。我最近或在Windows上或使用BitTornado尚未测试使用BitTorrent修复损坏的文件。我希望这对您有用,但是我不确定。
虽然BitTorrent并不像该目的那样普遍使用zsync
,但BitTorrent协议本身也具有此功能。
某些BitTorrent程序会执行此操作-其他程序会拒绝或从头开始下载整个文件-除非您开始使用的文件大小完全相同。(通常,下载损坏的文件通常与正确的文件大小相同。)
将旧的ISO映像与文件放在同一文件夹中.torrent
。确保您的BitTorrent程序将种子下载到那里。它将检查您当前的文件是否良好。如果发现某些部分不正确,可以重新下载它们。
对于某些BitTorrent程序,您必须将其作为正在进行的种子导入,或将其打开以进行播种,以实现此目的。