如何在损坏的Ubuntu ISO中识别和替换损坏的文件?
所以,这不是运行Ubuntu的问题,而是安装它。
每次我尝试下载Ubuntu ISO(从任何来源)它似乎最终腐败。 也就是说,MD5总和永远不会正确。
Ubuntu ISO文件附带一个文件,列出ISO中的所有文件及其各自的MD5SUM。
我想做的是遍历这个文件,并将它们与ISO中的文件进行比较,找出哪些文件已损坏,希望我能从其他iso文件中提取损坏的文件,创建一个工作安装人员
但是,我不知道如何做到这一点,当然,更糟糕的是,我必须从Windows 7做到这一点。
有谁知道如何解决这一问题?
实际上,我知道哪个文件已损坏
尝试将来自多个损坏的ISO映像的文件合并为一个良好的ISO映像并不是解决此问题的好方法。 这就是原因。
ISO映像中的几乎所有数据casper/filesystem.squashfs
属于一个文件casper/filesystem.squashfs
。
在Ubuntu桌面CD或DVD ISO映像上,即。 在服务器CD映像或备用CD映像上,这是一个不同的故事。
所以我现在可以告诉你,你下载的每个ISO上的文件几乎肯定都是腐败的:所有这些文件。 当某个东西在Ubuntu ISO中被破坏时,坏字节几乎总是在那里的某个地方。
filesystem.squashfs
本身就是一个磁盘映像; 它是作为在Live 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”)图像,你正在使用MD5哈希表示32位图像。
每个文件的MD5哈希列表都在这里。
通常,如果您的MD5哈希错误,但通常是多次下载相同
- 你正在与错误的哈希进行比较, 或者
- 该文件在服务器上已损坏(如果情况确实如此,请从其他镜像下载,如果您愿意,请报告针对ubuntu-website-content的错误,以便解决问题), 或者
- 您正在使用缓存Web内容的代理或VPN,并且它已经以某种方式缓存了损坏的副本(从另一个镜像下载也应该修复它), 或者
- 你是通过FTP下载的,服务器或你的FTP客户端的问题导致文件以文本模式而不是二进制模式传输(这会破坏它,并且通常每次都以相同的方式损坏它), 或者
- 你的连接是故意被恶意的第三方截获和更改的,他们故意向你提供错误的文件(但这通常不太可能)。
您可以在本页底部手动选择(不同的)下载镜像。
如果您的ISO映像确实已损坏,这里有一些方法可以获得一个好的文件。
zsync
zsync
(另请参见此处 )是一个实用程序,可以通过仅下载没有正确版本的部分将部分正确的文件转换为完全正确的文件。 它的主要应用是下载稍微更新的图像,例如从一个夜间版本到另一个版本的图像。
zsync
工作方式是:提供文件的人(如Ubuntu项目)创建一个.zsync
文件,其中包含许多校验和 – 与文件的许多小部分对应的校验和,而不是整个文件的一个校验和。 你可以从任何地方开始到整个文件。
什么都没有,整个文件都下载了。 对于文件的一部分(即,具有不同大小或相同大小且具有任意数量的二进制差异的同名文件),它会确定需要下载哪些部分,并且只下载这些部分。 使用整个文件,它不会下载任何内容。
对于非常不可靠的Internet连接 , zsync
并不比Web浏览器更好地从头开始下载整个文件, 除非您愿意运行它两次或更多次,在这种情况下,以后的运行将纠正早期运行中的问题 。 对于除最高错误率Internet连接之外的所有连接,在文件上运行zsync两次或偶尔运行三次就足够了。
但是你不必担心多次运行zsync
。 因为你已经 – 大概是 – 拥有大部分文件,所以这应该不是问题。 和往常一样,如果zsync
给你一些损坏的东西,你可以再次运行zsync
来修复它。
获取Windows的zsync
zsync
传统上运行在类Unix系统上(实际上并不包括Windows)。 但是,最近创建了一个zsync
的本机Windows端口 ,因此您可以使用它。
zsync
是一个命令行程序,因此在Windows中,您可以在命令提示符下运行它。 (打开命令提示符的一种方法是在“开始”菜单的文本框中键入cmd.exe
,然后按Enter键 。或者,在Windows XP和更早版本中,单击“开始”>“运行”>“ cmd.exe
。)
另一种方式:为Cygwin获取zsync
如果zsync
的Windows端口有任何问题,您可以随时使用Cygwin版本。 Cygwin为Windows提供类Unix环境。 它不允许运行已编译的可执行文件(例如,您不能使用Ubuntu软件包中的zsync
),而是使用从源代码编译的特殊版本的程序。 (编译为Cygwin中类Unix操作系统编写的程序比编译它更容易,因为它在Windows上本地工作。)
- 首先, 从这里获取Cygwin的安装程序(
setup.exe
) (或使用此直接链接 )。 - 运行它,在第一个屏幕上单击“ 下一步 ”,然后选择“ 从Internet安装”并再次单击“ 下一步” 。
- 在接下来的两个屏幕上,将Cygwin和本地软件包目录放在任何你喜欢的位置(默认值通常都很好)。
- 选择您的Internet连接类型( 直接连接通常很好),
setup.exe
将下载镜像列表。 -
选择任何镜像,它将下载可用包的列表。 您可能会被警告此版本与前一版本的不同之处。 这不是问题,除非您在同一台机器上使用过以前版本的Cygwin。
-
现在您可以选择要安装的软件包。 有一个用于按名称搜索包的文本框。 在那里键入
zsync
(但不要按Enter键 -如果你这样做,就像点击Next一样 )。 将出现Net的条目。 通过单击它左侧的+展开它,您将看到跳过其下方的跳过 。 这意味着如果您不进行任何更改,setup.exe
将不会安装zsync
。 -
所以点击一下,它说Skip 。 现在它将为Cygwin安装最新的稳定版
zsync
。 - 再次单击“ 下一步”完成安装。 将下载并安装Cygwin环境和
zsync
。 (如果要求您安装作为依赖项所需的软件包,请继续执行此操作。)
安装完成后,打开Cygwin shell。 你可以从那里运行zsync
。
参考
- 安装和更新Cygwin (官方网站,非常一般的说明)
- 如何在Windows中使用zsync更新到最新的Ubuntu 11.04 ISO (旧的和非官方的,但仍然有帮助)
请注意,虽然您可以在Cygwin邮件列表上发布Cygwin的问题(在阅读了它以及它告诉您阅读的材料之后),但可以理解的是它们不支持非官方指令。
cygwin
有很好的文档,所以像其他具有良好集中文档的项目(如OpenBSD)一样,他们希望寻求帮助的人能够阅读文档,并且正在开展工作(或者至少非常熟悉)。(因此,如果您的指示有问题, 可以在这里询问最好的地方 。)
Ubuntu上的zsync
这不适用于您的特定情况,但对于想要在Ubuntu上使用zsync
,只需安装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
文件所在的规则位于:
-
包含当前支持的安装程序的ISO映像,包括用于LTS版本的最新版本的ISO和用于当前支持的LTS版本的所有ISO,位于:
http://releases.ubuntu.com/
-
生命周期终止版本(无论如何不应使用)或支持的LTS版本的先前版本的ISO映像位于:
http://old-releases.ubuntu.com/releases/
只需单击您的版本链接,然后向下滚动即可查看完整文件列表(或搜索.zsync
页面)。 然后复制URL并将其粘贴到zsync
命令中。
用于“升级”
您还可以使用zsync
将一个ISO“升级”到另一个ISO。 如果您从一个Ubuntu版本升级到另一个版本,它可能必须重新下载大部分文件。 但是如果你要升级点发布(例如12.04 LTS到12.04.1 LTS),它就不必下载那么多了。 这是快速有效地获得新点发布的绝佳方式。
只需重命名旧文件,使其与新文件具有相同的名称,然后按上述方式运行zsync
。
BitTorrent的
当您的Internet连接具有高错误率时, BitTorrent通常是可靠地下载文件的最佳方式之一。 文件被分成许多小块,每一块都被下载并检查以查看它是否真实。 (可以从不同的计算机下载各个部分,这使得BitTorrent可以避免将负载放在中央服务器上,并且通常比基于Web的下载更快地实现速度。)
可以在这里获得Ubuntu 12.10和Ubuntu 12.04.1的Torrent。
你需要一个BitTorrent“客户端”来下载它。 如果您还没有自己喜欢的,我建议使用BitTornado 。
下载后,如果可以,我建议播种一些,以回馈社区。 (使用BitTorrent来自像你这样的人。)你不必马上做 – 你可以回到你的BitTorrent程序并稍后播种。 您甚至可以在下载未完成时退出,并随时恢复。
使用BitTorrent修复您拥有的文件
警告:本小节的研究不如其他答案那么好。 我最近没有测试过使用BitTorrent来修复损坏的文件,还是在Windows上,或者使用BitTornado。 我希望这对你有用,但我不能确定。
虽然BitTorrent并不像zsync
那样常用于此目的,但BitTorrent协议本身就能胜任它。
一些BitTorrent程序将执行此操作 – 其他人将拒绝或从头开始下载整个文件 – 除非您开始使用的文件大小完全相同。 (方便的是,损坏的下载通常与正确的文件大小相同。)
将旧ISO映像放在.torrent
文件所在的文件夹中。 确保你的BitTorrent程序在那里下载torrent。 它将检查您当前的文件是否良好。 当它看到某些部分出错时,可以重新下载它们。
对于某些BitTorrent程序,您必须将该文件作为正在进行的torrent导入,或者将其打开以进行种子设定,以便执行此操作。
如果要向ISO添加和删除文件,可以使用ISO Master 。 它适用于Windows和Linux。