Comment identifier et remplacer des fichiers cassés dans une ISO Ubuntu corrompue?

14

Donc, ce n'est pas exactement un problème avec Ubuntu, mais plutôt avec son installation.

Chaque fois que j'essaie de télécharger l'ISO Ubuntu (à partir de n'importe quelle source), il semble se retrouver corrompu. Autrement dit, les sommes MD5 ne sont jamais correctes.

Les fichiers ISO Ubuntu sont livrés avec un fichier qui répertorie tous les fichiers dans l'ISO et leurs MD5SUM respectifs.

Ce que je souhaite faire est de parcourir ce fichier, de les comparer à leurs fichiers dans l'ISO et de déterminer quels fichiers sont corrompus, dans l'espoir de pouvoir extraire les fichiers corrompus de l'un des autres fichiers iso, pour créer un installateur de travail.

Mais, je ne sais pas comment faire cela, et bien sûr, pour aggraver les choses, je dois le faire à partir de Windows 7.

Est-ce que quelqu'un sait comment réparer ceci?

Hailwood
la source
Jigdo (la méthode préférée de Debian) ne devrait-il pas être capable de faire cela? Son objectif principal est maintenant de faire des mises à jour delta pour les versions ponctuelles sur les ISO via la mise à jour des packages dans les ISO. sur les ISO Debian et Jigdo
gertvdijk
@gertvdijk Pas pour les ISO de bureau d'Ubuntu, car ils ne contiennent pour la plupart qu'un seul fichier (voir ma réponse ). C'est pourquoi les ISO de bureau n'ont pas de .jigdofichiers associés sur les serveurs de téléchargement. Le CD et le serveur de remplacement CD ISO n'ont des fichiers. Les ISO de bureau ont le programme d'installation Ubiquity, qui fonctionne en écrivant le système de CD live sur le disque, puis en y apportant des modifications afin qu'il soit prêt pour une utilisation normale (installée). .jigdo
Eliah Kagan
@EliahKagan Cela a du sens. D'accord, dans ce cas, ne devrait-il pas y avoir de fichiers de blocs de parité PAR pour corriger les ISO complets? C'est beaucoup plus efficace, beaucoup plus facile et plus universel. "Parchive a été initialement écrit pour résoudre le problème du transfert fiable de fichiers sur Usenet, [1] mais il est maintenant couramment utilisé pour protéger tout type de données contre la corruption de données, la pourriture des bits et les dommages accidentels ou malveillants."
gertvdijk
1
Pourquoi le PAR serait-il meilleur que zsync? Même si PAR était officiellement soutenu par le projet Ubuntu (comme zsyncc'est le cas), y a-t-il des avantages notables? À propos de jigdo: il s'applique aux CD alternatifs et serveur. Ils utilisent debian-installer, créent un système de base, chrootent et installent des packages. Ils ont donc tous les .debfichiers, situés dans le pool de packages (qui ne contient que quelques petits fichiers sur les CD de bureau). Ils peuvent facilement être assemblés avec .jigdo(ou d'autres méthodes). Vous voudrez peut-être publier une jigdoréponse basée sur le serveur / alternatif sur la façon de télécharger uniquement les fichiers cassés.
Eliah Kagan
1
@EliahKagan Aurait dû mentionner que - PAR peut faire des choses hors ligne , par exemple "vous avez besoin de 3 blocs de parité pour réparer", les nourrir, "okay, réparer des trucs ... fait!". Zsync en a effectivement besoin d'une bonne copie complète (à distance dans ce cas). Mais oui, le principe est le même. BTW, je vois que Zsync peut gziptrès bien gérer les archives ed, mais cette intelligence est inutile sur SquashFS, je suppose? Quoi qu'il en soit, pour Ubuntu ISOs, zsync est la voie à suivre, en effet.
gertvdijk

Réponses:

34

En fait, je sais quel fichier est corrompu

Essayer de combiner des fichiers de plusieurs images ISO corrompues en une seule image ISO bonne n'est pas une bonne approche à ce problème. Voici pourquoi.

La quasi - totalité des données dans l'image ISO appartient à un seul fichier, casper/filesystem.squashfs.

Sur une image ISO de CD ou DVD de bureau Ubuntu, c'est-à-dire. Sur une image de CD de serveur ou une autre image de CD, c'est une autre histoire.

Propriétés Nautilus pour filesystem.squashfs sur un CD de bureau Ubuntu 12.10 i386

Je peux donc vous dire dès maintenant quel fichier est presque certainement corrompu sur chacun des ISO que vous avez téléchargés: ce fichier, sur chacun d'eux. Quand quelque chose est corrompu dans un ISO Ubuntu, les mauvais octets sont presque toujours quelque part là-dedans.

filesystem.squashfsest en soi une image disque; il est monté dans le cadre du démarrage du système sur le CD live. Vous pouvez potentiellement l'extraire de l'ISO, puis extraire son contenu, voir ce qui est corrompu et remplacer les fichiers corrompus. Bien que vous puissiez monter ou extraire un système de fichiers squashfs sous Windows, vous trouverez probablement que cela n'est pas une tâche triviale. Et cette image est compressée, il n'y a donc aucune garantie qu'une corruption mineure dans l'ISO contenant n'affectera pas plusieurs fichiers.

De plus, si vous avez essayé de télécharger l'image ISO plusieurs fois et qu'elle est toujours corrompue, vous pouvez être sûr que ce n'est pas seulement une corruption mineure . Vous devrez peut-être remplacer des centaines ou des milliers de fichiers si vous tentez de le faire de cette façon.

Au lieu de cela, vous devez télécharger l'image ISO en utilisant une méthode plus fiable.

Idéalement, l'un d'entre eux ( zsync) est similaire à ce que vous pensez, sauf qu'il téléchargera uniquement les pièces nécessaires des fichiers ISO, plutôt que les fichiers nécessaires qu'il contient.

Assurez-vous de comparer avec le bon hachage MD5

La première chose à faire lorsque votre somme MD5 est incorrecte - surtout si elle est erronée après avoir téléchargé à nouveau le fichier - est de vous assurer que vous le comparez avec le hachage MD5 pour le fichier correct.

Je suppose que

  • vous avez une image 12.04 LTS et vous utilisez un hachage MD5 pour une image 12.04.1 LTS
    (qui n'est pas le même fichier ), ou
  • vous avez une image 12.04.1 LTS et vous utilisez un hachage MD5 pour une image 12.04 LTS, ou
  • vous disposez d'une image 32 bits ("i386") et vous utilisez un hachage MD5 pour une image 64 bits, ou
  • vous disposez d'une image 64 bits ("amd64") et vous utilisez un hachage MD5 pour une image 32 bits.

La liste des hachages MD5 pour chaque fichier est ici.

En général, si votre hachage MD5 est incorrect mais identique pour plus d'un téléchargement, généralement

  • vous comparez avec le mauvais hachage, ou
  • le fichier est corrompu sur le serveur (donc si cela semble être le cas, téléchargez-le à partir d'un autre miroir et, si vous le souhaitez, signalez un bogue contre ubuntu-website-content pour que le problème soit résolu), ou
  • vous utilisez un proxy ou un VPN qui met en cache le contenu Web, et il a en quelque sorte mis en cache une copie corrompue (le téléchargement à partir d'un autre miroir devrait également résoudre ce problème), ou
  • vous téléchargez via FTP et un problème avec le serveur ou avec votre client FTP provoque le transfert du fichier en mode texte plutôt qu'en mode binaire (cela le corrompra et le corrompra généralement de la même manière à chaque fois), ou
  • votre connexion est délibérément interceptée et modifiée par un tiers malveillant qui vous fournit délibérément le mauvais fichier (ce qui est généralement peu probable, cependant).

Vous pouvez sélectionner manuellement un miroir de téléchargement (différent) au bas de cette page .

Si votre image ISO est vraiment corrompue, voici quelques façons d'obtenir un bon fichier.

zsync

zsync(voir également ici ) est un utilitaire qui peut transformer un fichier partiellement correct en un fichier totalement correct en téléchargeant uniquement les parties dont vous n'avez pas les bonnes versions. Son application principale est de télécharger des images légèrement mises à jour, comme celles d'une version nocturne à l'autre.

La façon dont cela zsyncfonctionne est la suivante: une personne proposant le fichier (comme le projet Ubuntu) crée un .zsyncfichier qui contient de nombreuses sommes de contrôle - des sommes de contrôle correspondant à de nombreuses petites parties du fichier, plutôt qu'une seule somme de contrôle pour l'ensemble du fichier. Vous commencez avec n'importe où de rien au fichier entier.

Avec rien, le fichier entier est téléchargé. Avec une partie du fichier (c'est-à-dire un fichier du même nom de taille différente ou de la même taille avec un nombre quelconque de différences binaires), il détermine quelles parties doivent être téléchargées et télécharge simplement ces parties. Avec tout le fichier, il ne télécharge rien.

Pour les connexions Internet très peu fiables , ce zsyncn'est pas beaucoup mieux qu'un navigateur Web pour télécharger un fichier entier à partir de zéro, sauf si vous êtes prêt à l'exécuter deux fois ou plus, auquel cas, les exécutions ultérieures corrigeront les problèmes des exécutions précédentes . Pour toutes les connexions Internet à l'exception du taux d'erreur le plus élevé, l'exécution de zsync deux fois ou, parfois, trois fois sur un fichier devrait suffire.

Mais vous n'avez pas à vous soucier autant de courir zsyncplusieurs fois. Puisque vous possédez déjà - sans doute - la plupart du fichier, cela ne devrait donc pas être un problème. Et comme toujours si zsyncvous donne quelque chose de corrompu, vous pouvez toujours exécuter à zsyncnouveau pour le réparer.

Obtenir zsyncpour Windows

zsyncfonctionne traditionnellement sur un système de type Unix (qui n'inclut pas vraiment Windows). Cependant, récemment, un port natif de Windows zsynca été créé , vous pouvez donc probablement l'utiliser.

zsyncest un programme en ligne de commande, donc dans Windows vous l'exécutez dans l'invite de commande. (Une façon d'ouvrir l'invite de commande consiste à taper cmd.exedans la zone de texte du menu Démarrer et à appuyer sur Enter. Ou, dans Windows XP et versions antérieures, Démarrer> Exécuter> cmd.exe.)

Une autre façon: obtenir zsyncpour Cygwin

Si vous rencontrez des problèmes avec le port Windows de zsync, vous pouvez toujours utiliser la version Cygwin. Cygwin fournit un environnement de type Unix pour Windows. Il ne permet pas d'exécuter des exécutables compilés (par exemple, vous ne pouvez pas utiliser à zsyncpartir du package Ubuntu), mais utilise des versions spéciales de programmes compilés pour lui à partir de la source. (Il est beaucoup plus facile de compiler un programme écrit pour les systèmes d'exploitation de type Unix dans Cygwin, que de le compiler pour qu'il fonctionne nativement sous Windows.)

  1. Commencez par obtenir le programme d'installation de Cygwin ( setup.exe) à partir d'ici (ou utilisez ce lien direct ).
  2. Exécutez-le, cliquez sur Suivant dans le premier écran, puis sélectionnez Installer à partir d'Internet et cliquez à nouveau sur Suivant .
  3. Sur les deux écrans suivants, placez Cygwin et le répertoire du package local où vous le souhaitez (les valeurs par défaut sont généralement bonnes).
  4. Sélectionnez votre type de connexion Internet ( la connexion directe est généralement bonne) et setup.exetéléchargera une liste de miroirs.
  5. Choisissez n'importe quel miroir et il téléchargera une liste des packages disponibles. Vous serez probablement averti de la différence entre cette version et la précédente. Ce n'est pas un problème, sauf si vous avez utilisé une version précédente de Cygwin sur la même machine.

    Message d'alerte d'installation expliquant comment c'est la première fois que vous installez cette version particulière de Cygwin.  Si vous n'avez jamais utilisé Cygwin auparavant, cela peut être ignoré.  Comme il est dit: "Si c'est la première fois que vous installez Cygwin sur ce système, vous pouvez ignorer ce message."

  6. Vous pouvez maintenant sélectionner les packages à installer. Il y a une zone de texte pour rechercher des packages par nom. Tapez- zsyncy (mais n'appuyez pas sur Enter- si vous le faites, c'est comme cliquer sur Suivant ). Une entrée pour Net apparaîtra. Développez-le en cliquant sur +à gauche de celui-ci et vous verrez Skip apparaître en dessous. Cela signifie que si vous ne changez rien, nesetup.exe sera pas installé zsync.

    Velma Dinkley installe zsync dans Cygwin tout en mettant à jour son blog dans "Siren's Song".

  7. Alors cliquez une fois, où il est dit Skip . Il va maintenant installer la dernière version stable disponible de zsyncCygwin.

    entrez la description de l'image ici

  8. Cliquez à nouveau sur Suivant pour terminer l'installation. L'environnement Cygwin, et zsync, sera téléchargé et installé. (Si vous êtes invité à installer les packages requis comme dépendances, continuez et faites-le.)

Une fois installé, ouvrez le shell Cygwin. Vous pouvez courir à zsyncpartir de là.

Les références

Veuillez noter que bien que vous puissiez publier sur la liste de diffusion Cygwin pour des problèmes avec Cygwin (après avoir lu cela et le matériel qu'il vous dit de lire), ils ne prennent naturellement pas en charge les instructions non officielles. cygwina une assez bonne documentation, donc comme d'autres projets avec une bonne documentation centralisée (comme OpenBSD), ils s'attendent à ce que les personnes qui demandent de l'aide aient lu la documentation et y travaillent (ou du moins très familières).

(Par conséquent, si vous avez des problèmes avec mes instructions, le meilleur endroit pour en savoir plus est probablement ici .)

zsync sur Ubuntu

Cela ne s'applique pas dans votre cas spécifique, mais pour les personnes qui souhaitent utiliser zsyncsur Ubuntu, installez simplement zsyncInstaller zsync . Cela peut être fait dans le Centre logiciel ou en l'exécutant dans une fenêtre de terminal ( Ctrl+ Alt+ T):

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

Vous pouvez maintenant l'exécuter à partir du terminal.

Connexe: Comment mettre à jour un ISO avec zsync?

Utilisation zsyncpour réparer vos images ISO corrompues

Dans l'invite de commandes, accédez au répertoire qui contient votre fichier ISO corrompu. (Vous pouvez utiliser cdpour changer de répertoire, comme Ubuntu. Utilisez dirpour lister le contenu d'un répertoire.) Assurez-vous que le fichier que vous avez a le même nom de fichier que lorsque vous l'avez obtenu.

Maintenant, exécutez l' zsyncune de ces façons, en fonction de l'image ISO Ubuntu qu'il s'agit:

  • 12.10, 32 bits:

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

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

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

    zsync http://releases.ubuntu.com/12.04.1/ubuntu-12.04.1-desktop-amd64.iso.zsync
    
  • 12.04 LTS (avant la version 12.04.1), 32 bits:

    zsync http://old-releases.ubuntu.com/releases/precise/ubuntu-12.04-desktop-i386.iso.zsync
    
  • 12.04 LTS (avant la version 12.04.1), 64 bits:

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

Une fois que vous exécutez l'une de ces commandes, zsynccorrigera automatiquement votre ISO jusqu'à la version correcte, et vous êtes prêt à partir.

Utilisation zsyncpour d'autres fichiers

La syntaxe générale est que vous exécutez zsyncsuivi d'une URL complète pour le .zsyncfichier sur le serveur qui a le même nom que le fichier dont vous avez une version et que vous souhaitez télécharger (sauf avec .zsyncà la fin du cours).

Dans le cas où quelqu'un souhaite le faire pour d'autres versions d'Ubuntu (ou d'autres fichiers ISO pour la même version, comme la version optimisée pour démarrer correctement sur Mac ou la version pour les appareils mobiles ARM), voici la règle pour l'emplacement des .zsyncfichiers :

  • Les images ISO contenant les programmes d'installation actuellement pris en charge, y compris les images ISO pour la dernière version ponctuelle des versions LTS et toutes les images ISO pour les versions LTS actuellement prises en charge, sont situées dans:

    http://releases.ubuntu.com/

  • Les images ISO pour les versions de fin de vie (que vous ne devriez pas utiliser de toute façon) ou les versions précédentes des versions LTS prises en charge sont situées dans:

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

Cliquez simplement sur le lien de votre version et faites défiler vers le bas pour voir la liste complète des fichiers (ou recherchez la page .zsync). Copiez ensuite l'URL et collez-la dans la zsynccommande.

Utilisation dans "Mise à niveau"

Vous pouvez également utiliser zsyncpour «mettre à niveau» un ISO vers un autre. Il devra probablement retélécharger la plupart du fichier si vous effectuez une mise à niveau d'une version d'Ubuntu vers une autre. Mais si vous mettez à niveau des versions ponctuelles (comme 12.04 LTS vers 12.04.1 LTS), il n'a pas besoin d'être téléchargé autant. C'est un excellent moyen d'obtenir une nouvelle version ponctuelle rapidement et efficacement.

Renommez simplement l'ancien fichier pour qu'il ait le même nom que le nouveau fichier, puis exécutez zsynccomme ci-dessus.

BitTorrent

Lorsque votre connexion Internet présente un taux d'erreur élevé, BitTorrent est souvent l'un des meilleurs moyens de télécharger des fichiers de manière fiable. Les fichiers sont divisés en plusieurs petits morceaux, et chaque morceau est téléchargé et vérifié pour voir si c'est la vraie chose. (Les pièces individuelles peuvent être téléchargées à partir de différents ordinateurs, ce qui permet à BitTorrent d'éviter de charger sur un serveur central et d'atteindre des vitesses souvent plus rapides que celles possibles avec les téléchargements basés sur le Web.)

Les torrents pour Ubuntu 12.10 et Ubuntu 12.04.1 peuvent être obtenus ici.

Vous aurez besoin d'un "client" BitTorrent pour le télécharger. Si vous n'en avez pas déjà un que vous préférez, pour Windows, je recommande BitTornado .

Après avoir téléchargé, je recommande d'en semer si vous le pouvez, pour redonner à la communauté. (Avec BitTorrent, il provient de personnes comme vous.) Cependant, vous n'avez pas à le faire immédiatement - vous pouvez revenir dans votre programme BitTorrent et amorcer plus tard. Vous pouvez même le quitter tant que le téléchargement n'est pas terminé et le reprendre à tout moment.

Utiliser BitTorrent pour réparer le fichier que vous avez

Avertissement: cette sous-section n'est pas aussi bien documentée que le reste de la réponse. Je n'ai pas testé l'utilisation de BitTorrent pour corriger des fichiers corrompus récemment, ni sur Windows, ni avec BitTornado. J'espère que cela fonctionnerait pour vous, mais je ne peux pas en être sûr.

Bien que BitTorrent ne soit pas aussi couramment utilisé à cette fin zsync, le protocole BitTorrent lui-même en est tout aussi capable.

Certains programmes BitTorrent le feront - d'autres refuseront ou téléchargeront le fichier entier à partir de zéro - à moins que le fichier avec lequel vous commencez ait exactement la même taille. (Idéalement, un téléchargement corrompu a souvent la même taille que le fichier correct.)

Placez l'ancienne image ISO dans le même dossier que le .torrentfichier. Assurez-vous que votre programme BitTorrent y télécharge le torrent. Il vérifiera si votre fichier actuel est bon. Lorsqu'il constate que certaines parties sont incorrectes, il peut les télécharger à nouveau.

Pour certains programmes BitTorrent, vous devez importer le fichier en tant que torrent en cours, ou l'ouvrir pour l'amorçage, pour ce faire.

Eliah Kagan
la source
15
C'est une réponse plutôt épique.
Nanne
@Nanne Merci! De plus, s'il vous arrive de connaître plus de détails que ceux que j'ai fournis sur l'utilisation de BitTorrent pour réparer des fichiers préexistants, veuillez modifier ceci pour fournir de meilleures informations à ce sujet (si vous le souhaitez).
Eliah Kagan
Wow ... Maintenant, c'est environ 10 fois la réponse que j'attendais! Merci! Je vais essayer, et accepter ou mettre à jour la question avec plus de détails!
Hailwood
-1

Vous pouvez utiliser ISO Master si vous souhaitez ajouter et supprimer des fichiers dans l'ISO. Il est disponible pour Windows et Linux.

Mukund
la source