每次我尝试从任何来源下载Ubuntu ISO文件时,似乎都会出现损坏的情况。也就是说,MD5校验和从来都不正确。
Ubuntu ISO文件附带了一个列出ISO中所有文件及其相应MD5校验和的文件。
我想要做的是循环遍历这个文件,并将其与ISO中的文件进行比较,找出哪些文件是损坏的,希望能够从其他ISO文件中提取损坏的文件,以创建一个可用的安装程序。
但是,我不知道如何做到这一点,而且更糟糕的是,我必须在Windows 7上完成这个任务。
有人知道如何解决这个问题吗?
试图将多个损坏的ISO镜像文件合并成一个完好的ISO镜像文件,并不是解决这个问题的好方法。原因如下。
几乎所有的数据都属于同一个文件,即casper/filesystem.squashfs
。
在Ubuntu桌面CD或DVD ISO镜像中是这样的。而在服务器CD镜像或备选CD镜像中,则是另外一回事。
filesystem.squashfs
本身就是一个磁盘映像;它作为启动Live CD系统的一部分被挂载。你可以从ISO文件中提取它,然后提取它的内容,查看哪些文件损坏了,并替换这些损坏的文件。虽然你可以在Windows上挂载或提取squashfs文件系统,但你可能会发现这样做并不容易。而且这个映像是压缩的,所以不能保证包含ISO文件中的轻微损坏不会影响多个文件。zsync
)与您所考虑的类似,不同之处在于它只会下载ISO文件中必要的部分,而不仅仅是其中包含的必要文件。
当您的MD5校验和错误时,尤其是在您重新下载文件后仍然错误时,首先要做的是确保将其与正确文件的MD5哈希值进行比较。
我猜想的是
一般来说,如果你的MD5哈希值错误,但对于多个下载是相同的,通常情况下
你可以手动选择一个(不同的)下载镜像在本页面底部。
如果你的ISO镜像确实损坏了,以下是一些获取良好文件的方法。
zsync
(另请参见此处)是一个实用工具,可以通过仅下载您没有正确版本的部分来将部分正确的文件转换为完全正确的文件。它的主要应用是下载稍微更新的图像,例如从一个每夜构建到另一个。
zsync
的工作原理如下:提供文件的人(例如Ubuntu项目)创建一个包含许多校验和的.zsync
文件,这些校验和对应于文件的许多小部分,而不仅仅是整个文件的一个校验和。您开始时可能什么都没有,也可能有整个文件。
如果没有任何内容,将下载整个文件。如果只有部分文件(即与同名文件大小不同或具有任意数量的二进制差异的文件),它会确定需要下载哪些部分,并仅下载这些部分。如果已经有整个文件,它将不会下载任何内容。
对于网络连接非常不可靠的情况,zsync
并不比使用Web浏览器从头开始下载整个文件更好,除非你愿意运行两次或更多次,这样后续的运行将纠正之前运行中的问题。对于除了最高错误率的互联网连接,对一个文件运行两次或偶尔三次的zsync应该足够。
但是你不必担心运行zsync
多次。因为你已经——可以预期地——拥有大部分文件,所以这不应该成为问题。而且一如既往,如果zsync
给出的内容损坏,你总是可以再次运行zsync
来修复它。
zsync
zsync
传统上在类Unix系统上运行(实际上不包括Windows)。然而,最近已经创建了适用于Windows的原生zsync
端口,所以你可能可以使用它。
zsync
是一个命令行程序,所以在Windows中你可以在命令提示符中运行它。(打开命令提示符的一种方法是在开始菜单的文本框中输入cmd.exe
并按下Enter键。或者,在Windows XP及更早版本中,开始 > 运行 > cmd.exe
。)
zsync
如果你在Windows上使用zsync
时遇到任何问题,你可以使用Cygwin版本。Cygwin为Windows提供了一个类Unix环境。它不允许运行编译后的可执行文件(例如,你不能使用来自Ubuntu软件包的zsync
),但是使用从源代码编译的特殊版本的程序。在Cygwin中,将一个为类Unix操作系统编写的程序编译成可以在Windows上原生运行的形式要比直接编译要容易得多。
setup.exe
)(或使用此直链)。setup.exe
将下载镜像列表。zsync
(但是不要按下Enter - 如果这样做,就相当于点击了下一步)。会出现一个Net的条目。通过点击其左侧的+来展开它,你会看到它下面出现了Skip。这意味着如果您不做任何更改,setup.exe
将不会安装zsync
。zsync
。zsync
将被下载和安装。(如果要求安装作为依赖项所需的软件包,请继续执行)。zsync
。
参考资料
- 安装和更新Cygwin(官方网站,非常通用的指南)
- 如何在Windows中使用zsync更新到最新的Ubuntu 11.04 ISO(旧的非官方指南,但仍然有帮助)
请注意,在遇到Cygwin相关问题时,您可以在Cygwin邮件列表上发布问题(在阅读了相应的文档之后),但他们理所当然地不支持非官方的指导。cygwin有非常好的文档,就像其他集中式文档的项目一样(比如OpenBSD),他们期望寻求帮助的人已经阅读了文档,并且对文档非常熟悉,或者至少非常熟悉。
(因此,如果您在按照我的指示操作时遇到困难,最好的询问地点可能就是这里。)
zsync
在Ubuntu上的使用这并不适用于您的特定情况,但对于想在Ubuntu上使用zsync
的人来说,只需安装zsync 即可。可以在软件中心进行安装,或者在终端窗口中运行以下命令(Ctrl+Alt+T):
sudo apt-get update && sudo apt-get install zsync
zsync
修复损坏的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
包含当前支持的安装程序的ISO镜像,包括最新LTS版本的点发布的ISO以及所有当前支持的LTS版本的ISO,位于:
已停止维护的版本(您不应该使用)或支持的LTS版本的先前点发布的ISO镜像位于:
只需点击您的版本链接并向下滚动以查看完整的文件列表(或在页面上搜索.zsync
)。然后复制URL并粘贴到zsync
命令中。
zsync
那样常用于此目的,但BitTorrent协议本身同样具备这个能力。如果你想向ISO中添加和删除文件,可以使用ISO Master。它适用于Windows和Linux。
.jigdo
文件的原因。备选CD和服务器CD ISO文件则有.jigdo
文件。桌面ISO文件具有Ubiquity安装程序,该程序通过将Live CD系统写入磁盘然后对其进行更改以准备正常(已安装)使用。 - Eliah Kaganzsync
更好呢?即使PAR得到Ubuntu项目的官方支持(就像zsync
一样),是否有明显的优势呢?关于jigdo:它适用于备选和服务器CD。它们使用debian-installer
创建一个基本系统,进入chroot并安装软件包。因此,它们拥有所有位于软件包池中的.deb
文件(桌面CD上只有很少的几个文件)。可以使用.jigdo
(或其他方法)轻松组装它们。您可能希望针对服务器/备选发布一个基于jigdo
的答案,说明如何仅下载损坏的文件。 - Eliah Kagangzip
压缩的存档,但是对于 SquashFS 来说,这种智能是无用的,我猜测?不管怎样,对于 Ubuntu ISOs 来说,确实应该使用 zsync。 - gertvdijk