Как определить и заменить испорченные файлы в поврежденном Ubuntu ISO?

14

Так что это не совсем проблема запуска Ubuntu, а скорее с его установкой.

Каждый раз, когда я пытаюсь загрузить Ubuntu ISO (из любого источника), он кажется поврежденным. То есть суммы MD5 никогда не бывают правильными.

Файлы ISO в Ubuntu поставляются с файлом, в котором перечислены все файлы в ISO и соответствующие MD5SUM.

То, что я хочу сделать, это зациклить этот файл, сравнить их с их файлами в ISO и выяснить, какие файлы повреждены, в надежде, что я смогу извлечь поврежденные файлы из одного из других файлов iso, чтобы создать рабочий установщик.

Но я не знаю, как это сделать, и, конечно, чтобы сделать это еще хуже, я должен сделать это из Windows 7.

Кто-нибудь знает, как это исправить?

Hailwood
источник
Разве Джигдо (предпочтительный путь Debian) не должен быть в состоянии сделать это? Сейчас его главная цель - сделать дельта-обновления для точечных выпусков в ISO посредством обновления пакетов в ISO. о ISO Debian и Jigdo
gertvdijk
@gertvdijk Не для ISO-образов настольных систем Ubuntu, потому что они в основном содержат только один файл (см. мой ответ ). Вот почему настольные ISO не имеют связанных .jigdoфайлов на серверах загрузки. Альтернативные CD и CD - сервер Стандартизации делать есть .jigdoфайлы. ISO-образы настольных компьютеров имеют установщик Ubiquity, который работает, записывая систему live CD на диск, а затем внося в нее изменения, чтобы подготовить ее к нормальному (установленному) использованию.
Элия ​​Каган
@EliahKagan Это имеет смысл. Хорошо, в таком случае, разве не должно быть файлов блоков четности PAR , чтобы исправить полные ISO? Это намного эффективнее, намного проще и универсальнее. «Parchive изначально был написан для решения проблемы надежной передачи файлов в Usenet, [1], но теперь он широко используется для защиты любого типа данных от повреждения данных, бит-гнили, случайного или злонамеренного повреждения».
gertvdijk
1
Почему PAR лучше zsync? Даже если PAR был официально поддержан проектом Ubuntu (как zsyncесть), есть ли заметные преимущества? О jigdo: Это применимо к альтернативным и серверным CD. Они используют debian-installer, создавая «голую» систему, загружая и устанавливая пакеты. Таким образом, у них есть все .debфайлы, расположенные в пуле пакетов (который содержит всего несколько файлов на настольных компакт-дисках). Они могут быть легко собраны .jigdo(или другими способами). Возможно, вы захотите опубликовать jigdoответ на основе сервера / альтернативы о том, как загрузить только испорченные файлы.
Элия ​​Каган
1
@EliahKagan Должен был упомянуть, что - PAR может делать вещи в автономном режиме , например, «вам нужно 3 блока четности, чтобы восстановить», кормить их, «хорошо, исправление вещи ... сделано!». Zsync фактически нуждается в его полной хорошей копии (в данном случае удаленной). Но да, принцип тот же. Кстати, я вижу, что Zsync может gzipочень хорошо обрабатывать архивы ed, но этот интеллект бесполезен в SquashFS, я полагаю? В любом случае, для ISO-образов Ubuntu zsync - это путь.
gertvdijk

Ответы:

34

На самом деле, я знаю, какой файл поврежден

Попытка объединить файлы из нескольких поврежденных ISO-образов в один хороший ISO-образ не является хорошим подходом к этой проблеме. Вот почему

Почти все данные в образе ISO принадлежат только одному файлу casper/filesystem.squashfs.

На ISO-образе рабочего стола Ubuntu CD или DVD, то есть. На образе компакт-диска сервера или альтернативном образе компакт-диска это другая история.

Свойства Nautilus для filesystem.squashfs на компакт-диске Ubuntu 12.10 i386 для настольных ПК

Итак, я могу прямо сейчас сказать, какой файл почти наверняка поврежден на каждом из загруженных ISO-файлов: этот файл на всех них. Когда что-то повреждено в ISO Ubuntu, плохие байты почти всегда где-то там.

filesystem.squashfsэто само по себе образ диска; он монтируется как часть загрузки системы на live CD. Вы можете извлечь его из ISO, затем извлечь его содержимое, посмотреть, что повреждено, и заменить поврежденные файлы. Хотя вы можете монтировать или извлекать файловую систему squashfs в Windows, вы, скорее всего, найдете в этом нетривиальную задачу. И этот образ сжат, поэтому нет гарантии, что незначительное повреждение в содержащем 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, чтобы проблема была исправлена), или
  • вы используете прокси или VPN, который кэширует веб-контент, и он каким-то образом кэшировал поврежденную копию (загрузка из другого зеркала тоже должна это исправить), или
  • вы загружаете по FTP, и проблема с сервером или с вашим FTP-клиентом приводит к тому, что файл передается в текстовом режиме, а не в двоичном режиме (это может повредить его и обычно каждый раз повреждает его одинаково), или
  • ваше соединение намеренно перехватывается и изменяется злонамеренной третьей стороной, которая намеренно передает вам неправильный файл (хотя обычно это маловероятно).

Вы можете вручную выбрать (другое) загрузочное зеркало внизу этой страницы .

Если ваш ISO-образ действительно поврежден, вот несколько способов получить хороший файл.

ZSync

zsync(см. также здесь ) - это утилита, которая может превратить частично правильный файл в полностью правильный файл, загружая только те части, для которых у вас нет нужных версий. Его основное приложение предназначено для загрузки слегка обновленных изображений, например, из одной ночной сборки в другую.

Это zsyncработает так: кто-то, предлагающий файл (например, проект Ubuntu), создает .zsyncфайл, который содержит много контрольных сумм - контрольных сумм, соответствующих многим маленьким частям файла, а не только одну контрольную сумму для всего файла. Вы начинаете с чего угодно, от нуля до всего файла.

Ничего, весь файл загружается. С частью файла (то есть файлом с тем же именем, который имеет другой размер или тот же размер с любым количеством двоичных различий), он вычисляет, какие части необходимо загрузить, и просто загружает эти части. Со всем файлом ничего не скачивается.

Для очень ненадежных подключений к Интернету , zsyncне намного лучше , чем веб - браузер для загрузки всего файла с нуля, если вы не готовы запустить его два или более раз, и в этом случае, позже работает исправят проблемы в более ранних сериях . Для всех подключений к Интернету, кроме самой высокой частоты ошибок, достаточно выполнить zsync дважды или иногда три раза для файла.

Но вам не нужно беспокоиться о беге zsyncнесколько раз. Поскольку у вас уже есть, предположительно, большая часть файла, это не должно быть проблемой. И, как всегда, если zsyncвы получаете что-то испорченное, вы всегда можете запустить zsyncснова, чтобы это исправить.

Начало zsyncдля Windows

zsyncтрадиционно работает в Unix-подобной системе (которая на самом деле не включает Windows). Тем не менее, в последнее время родной порт Окна zsyncбыл создан , так что вы , вероятно , можете использовать это.

zsyncявляется программой командной строки, поэтому в Windows вы запускаете ее в командной строке. (Один из способов открыть командную строку - ввести cmd.exeтекстовое поле в меню «Пуск» и нажать Enter. Или в Windows XP и более ранних версиях: «Пуск»> «Выполнить» cmd.exe.)

Другой способ: получить zsyncдля Cygwin

Если у вас есть какие-либо проблемы с портом Windows zsync, вы всегда можете использовать версию Cygwin. Cygwin предоставляет Unix-подобную среду для Windows. Он не позволяет запускать скомпилированные исполняемые файлы (например, вы не можете использовать его zsyncиз пакета Ubuntu), но использует специальные версии программ, скомпилированных для него из исходного кода. (Гораздо проще скомпилировать программу, написанную для Unix-подобных операционных систем в Cygwin, чем скомпилировать ее, чтобы она работала изначально в Windows.)

  1. Сначала получите установщик Cygwin ( setup.exe) отсюда (или воспользуйтесь этой прямой ссылкой ).
  2. Запустите его, нажмите Next на первом экране, затем выберите Install from Internet и снова нажмите Next .
  3. На следующих двух экранах поместите Cygwin и локальный каталог пакетов там, где они вам нравятся (значения по умолчанию обычно хороши).
  4. Выберите тип подключения к Интернету ( прямое подключение обычно хорошо) и setup.exeзагрузит список зеркал.
  5. Выберите любое зеркало, и оно загрузит список доступных пакетов. Вы, вероятно, будете предупреждены о том, как эта версия отличается от предыдущей. Это не проблема, если вы не использовали предыдущую версию Cygwin на той же машине.

    Настроить предупреждающее сообщение о том, как вы впервые устанавливаете именно эту версию Cygwin.  Если вы раньше не пользовались Cygwin, это можно игнорировать.  Как говорится: «Если вы впервые устанавливаете Cygwin в этой системе, вы можете проигнорировать это сообщение».

  6. Теперь вы можете выбрать, какие пакеты установить. Есть текстовое поле для поиска пакетов по имени. Напечатайте zsyncтам (но не нажимайте - Enterесли вы это делаете, это все равно что нажать Далее ). Появится запись для Net . Разверните его, щелкнув +слева от него, и вы увидите Пропустить под ним. Это означает, что если вы ничего не измените, неsetup.exe будете устанавливать .zsync

    Велма Динкли устанавливает zsync в Cygwin, обновляя свой блог в «Песне сирены».

  7. Так что нажмите один раз, где написано Пропустить . Теперь будет установлена ​​последняя доступная стабильная версия zsyncCygwin.

    введите описание изображения здесь

  8. Нажмите Next еще раз, чтобы завершить установку. Среда Cygwin, и zsync, будет загружена и установлена. (Если вас попросят установить пакеты, которые требуются как зависимости, продолжайте и сделайте это.)

После установки откройте оболочку Cygwin. Вы можете бежать zsyncоттуда.

Ссылки

Обратите внимание, что, хотя вы можете публиковать сообщения в списке рассылки Cygwin о проблемах с Cygwin (после прочтения этого и материалов, которые он советует вам прочитать), они по понятным причинам не поддерживают неофициальные инструкции. cygwinУ него довольно хорошая документация, поэтому, как и другие проекты с хорошей централизованной документацией (например, OpenBSD), они ожидают, что люди, обращающиеся за помощью, прочтут документацию и будут работать (или, по крайней мере, очень хорошо знакомы) с ней.

(Поэтому, если у вас есть проблемы с моими инструкциями, лучшее место, чтобы спросить о них, вероятно, здесь .)

zsync на Ubuntu

Это не относится к вашему конкретному случаю, но для людей, которые хотят использовать zsyncв Ubuntu, просто установите zsyncУстановите zsync . Это можно сделать в Центре программного обеспечения или запустив это в окне терминала ( Ctrl+ Alt+ T):

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

Теперь вы можете запустить его из терминала.

Связанный: Как я могу обновить ISO с zsync?

Использование zsyncдля исправления поврежденных ISO-образов

В командной строке перейдите в каталог, содержащий поврежденный файл ISO. (Вы можете использовать, cdчтобы изменить каталог, так же, как Ubuntu. Используйте dirдля просмотра содержимого каталога.) Убедитесь, что у файла есть то же имя файла, что и при его получении.

Теперь запустите zsyncодним из следующих способов, в зависимости от того, какой образ ISO Ubuntu это:

  • 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файлов :

  • Образы ISO, содержащие в настоящее время поддерживаемые установщики, в том числе ISO для последнего выпуска LTS и все ISO для поддерживаемых в настоящее время выпусков LTS, находятся в:

    http://releases.ubuntu.com/

  • Образы ISO для выпусков с истекшим сроком эксплуатации (которые вы не должны использовать в любом случае) или предыдущих точечных выпусков поддерживаемых выпусков LTS находятся в:

    http://old-releases.ubuntu.com/releases/

Просто нажмите на ссылку для вашей версии и прокрутите вниз, чтобы увидеть полный список файлов (или поиск на странице для .zsync ). Затем скопируйте URL-адрес и вставьте его в zsyncкоманду.

Используйте в "Обновление"

Вы также можете использовать zsync для «обновления» одного ISO на другой. Вероятно, придется перезагружать большую часть файла, если вы переходите с одного выпуска Ubuntu на другой. Но если вы обновляете точечные релизы (например, с 12.04 LTS до 12.04.1 LTS), вам не нужно загружать их слишком много. Это отличный способ быстро и эффективно получить новую версию.

Просто переименуйте старый файл, чтобы он имел то же имя, что и новый файл, затем запустите zsync как указано выше.

BitTorrent

Когда ваше интернет-соединение имеет высокий уровень ошибок, BitTorrent часто является одним из лучших способов надежной загрузки файлов. Файлы делятся на множество маленьких кусочков, и каждый кусочек загружается и проверяется, чтобы убедиться, что это реально. (Отдельные фрагменты могут быть загружены с разных компьютеров, что позволяет BitTorrent избегать нагрузки на центральный сервер и достигать скоростей, часто превышающих скорости, доступные при загрузке через Интернет.)

Торренты для Ubuntu 12.10 и Ubuntu 12.04.1 можно получить здесь.

Вам понадобится BitTorrent "клиент", чтобы загрузить его. Если у вас еще нет того, что вы предпочитаете, для Windows я рекомендую BitTornado .

После того, как вы загрузите, я рекомендую посеять некоторые, если вы можете, чтобы вернуть сообществу. (С BitTorrent это от таких людей, как вы.) Вам не нужно делать это сразу же - вы можете вернуться в свою программу BitTorrent и начать сеанс позже. Вы можете даже выйти из нее, пока загрузка не завершена, и возобновить ее в любое время.

Использование BitTorrent для исправления вашего файла

Предупреждение: этот подраздел не так хорошо изучен, как остальная часть ответа. Я не проверял использование BitTorrent для исправления поврежденных файлов в последнее время, ни в Windows, ни в BitTornado. Я ожидаю, что это сработает для вас, но я не уверен.

Хотя BitTorrent не так часто используется для этой цели, как zsyncи сам протокол BitTorrent, он способен на это.

Некоторые программы BitTorrent будут делать это - другие откажутся или загрузят весь файл с нуля - если только файл, с которого вы начинаете, не имеет точно такой же размер. (Удобно, поврежденная загрузка часто имеет тот же размер, что и правильный файл.)

Поместите старый ISO-образ в ту же папку, что и .torrentфайл. Убедитесь, что ваша программа BitTorrent загружает туда торрент. Он проверит, подходит ли ваш текущий файл. Когда он видит некоторые части не так, он может повторно загрузить их.

Для некоторых программ BitTorrent вы должны импортировать файл как текущий поток или открыть его для заполнения, чтобы сделать это.

Элия ​​Каган
источник
15
Это довольно эпичный ответ.
Нанн
@ Нанн Спасибо! Кстати, если вам известно больше, чем я предоставил, информации об использовании BitTorrent для восстановления уже существующих файлов, отредактируйте это, чтобы предоставить более подробную информацию об этом (если вы хотите).
Элия ​​Каган
Вау ... Теперь это примерно в 10 раз больше, чем я ожидал! Благодарность! Попробуйте, и либо примите, либо обновите вопрос с более подробной информацией!
Hailwood
-1

Вы можете использовать ISO Master, если вы хотите добавлять и удалять файлы в ISO. Он доступен как для Windows, так и для Linux.

Mukund
источник