Comparaison entre WSL 1 et WSL 2Comparing WSL 1 and WSL 2

La principale différence et les raisons de la mise à jour du sous-système Windows pour Linux de WSL 1 vers WSL 2 visent à :The primary difference and reasons for updating the Windows Subsystem for Linux from WSL 1 to WSL 2 are to:

  • augmenter les performances du système de fichiers,increase file system performance,
  • prendre en charge la compatibilité complète des appels système.support full system call compatibility.

WSL 2 utilise la technologie de virtualisation la plus récente et efficace pour exécuter un noyau Linux au sein d’une machine virtuelle utilitaire légère.WSL 2 uses the latest and greatest in virtualization technology to run a Linux kernel inside of a lightweight utility virtual machine (VM). Toutefois, WSL 2 n’est pas une expérience de machine virtuelle standard.However, WSL 2 is not a traditional VM experience.

Comparaison des fonctionnalitésComparing features

FonctionnalitéFeature WSL 1WSL 1 WSL 2WSL 2
Intégration entre Windows et LinuxIntegration between Windows and Linux
Temps de démarrage courtsFast boot times
Faible encombrement des ressourcesSmall resource foot print
Exécutions avec les versions actuelles de VMware et VirtualBoxRuns with current versions of VMware and VirtualBox
Machine virtuelle managéeManaged VM
Noyau Linux completFull Linux Kernel
Compatibilité complète des appels systèmeFull system call compatibility
Performances dans les systèmes de fichiers du système d’exploitationPerformance across OS file systems

Comme vous pouvez le constater dans le tableau de comparaison ci-dessus, l’architecture WSL 2 surpasse WSL 1 de plusieurs façons, à l’exception des performances dans les systèmes de fichiers du système d’exploitation.As you can tell from the comparison table above, the WSL 2 architecture outperforms WSL 1 in several ways, with the exception of performance across OS file systems.

Performances dans les systèmes de fichiers du système d’exploitationPerformance across OS file systems

Nous vous recommandons d’utiliser vos fichiers dans des systèmes d’exploitation, sauf si une raison particulière vous amène à ne pas le faire.We recommend against working across operating systems with your files, unless you have a specific reason for doing so. Pour des performances de vitesse optimales, stockez vos fichiers dans le système de fichiers WSL si vous utilisez une ligne de commande Linux (Ubuntu, OpenSUSE, etc.).For the fastest performance speed, store your files in the WSL file system if you are working in a Linux command line (Ubuntu, OpenSUSE, etc). Si vous utilisez une ligne de commande Windows (PowerShell, invite de commandes), stockez vos fichiers dans le système de fichiers Windows.If you're working in a Windows command line (PowerShell, Command Prompt), store your files in the Windows file system.

Par exemple, lors du stockage de vos fichiers de projet WSL :For example, when storing your WSL project files:

  • Utilisez le répertoire racine du système de fichiers Linux : \\wsl$\Ubuntu-18.04\home\<user name>\ProjectUse the Linux file system root directory: \\wsl$\Ubuntu-18.04\home\<user name>\Project
  • Et non pas le répertoire racine du système de fichiers Windows : C:\Users\<user name>\ProjectNot the Windows file system root directory: C:\Users\<user name>\Project

Vous pouvez accéder à votre système de fichiers racine Linux à l’aide d’outils et d’applications Windows, tels que l’Explorateur de fichiers.You can access your Linux root file system with Windows apps and tools like File Explorer. Essayez d’ouvrir une distribution Linux (comme Ubuntu), assurez-vous d’être dans le répertoire racine de Linux en entrant la commande suivante : cd ~.Try opening a Linux distribution (like Ubuntu), be sure that you are in the Linux home directory by entering this command: cd ~. Ouvrez ensuite votre système de fichiers Linux dans l’Explorateur de fichiers en entrant (n’oubliez pas le point final)  : explorer.exe .Then open your Linux file system in File Explorer by entering (don't forget the period at the end): explorer.exe .

WSL 2 est disponible uniquement dans Windows 10, version 1903, build 18362 ou ultérieure.WSL 2 is only available in Windows 10, Version 1903, Build 18362 or higher. Vérifiez votre version de Windows en sélectionnant la touche Windows + R, tapez winver et sélectionnez OK.Check your Windows version by selecting the Windows logo key + R, type winver, select OK. (Ou entrez la commande ver dans l’invite de commandes Windows).(Or enter the ver command in Windows Command Prompt). Vous devrez peut-être effectuer une mise à jour vers la dernière version de Windows.You may need to update to the latest Windows version. Pour les builds inférieures à 18362, WSL n’est pas pris en charge du tout.For builds lower than 18362, WSL is not supported at all.

Notes

WSL 2 fonctionne avec VMware 15.5.5+ et VirtualBox 6+.WSL 2 will work with VMware 15.5.5+ and VirtualBox 6+. Apprenez-en davantage dans notre FAQ WSL 2.Learn more in our WSL 2 FAQs.

Nouveautés de WSL 2What's new in WSL 2

WSL 2 est une révision majeure de l’architecture sous-jacente qui utilise la technologie de virtualisation et un noyau Linux pour activer de nouvelles fonctionnalités.WSL 2 is a major overhaul of the underlying architecture and uses virtualization technology and a Linux kernel to enable new features. Les principaux objectifs de cette mise à jour consistent à augmenter les performances du système de fichiers et à ajouter la compatibilité complète des appels système.The primary goals of this update are to increase file system performance and add full system call compatibility.

Architecture WSL 2WSL 2 architecture

Une expérience de machine virtuelle traditionnelle peut être lente à démarrer, est isolée, consomme beaucoup de ressources et vous prend du temps pour la gérer.A traditional VM experience can be slow to boot up, is isolated, consumes a lot of resources, and requires your time to manage it. WSL 2 n’a pas ces attributs,WSL 2 does not have these attributes.

WSL 2 offre les avantages de WSL 1, y compris une intégration transparente entre Windows et Linux, des temps de démarrage courts et un faible encombrement des ressources. De plus, il ne nécessite aucune configuration ni gestion de machine virtuelle.WSL 2 provides the benefits of WSL 1, including seamless integration between Windows and Linux, fast boot times, a small resource footprint, and requires no VM configuration or management. WSL 2 utilise une machine virtuelle. Celle-ci est gérée et exécutée en arrière-plan, ce qui vous permet de jouir de la même expérience utilisateur qu’avec WSL 1.While WSL 2 does use a VM, it is managed and run behind the scenes, leaving you with the same user experience as WSL 1.

Noyau Linux completFull Linux kernel

Le noyau Linux dans WSL 2 est élaboré par Microsoft à partir de la dernière branche stable, en fonction de la source disponible sur kernel.org. Ce noyau a été spécialement réglé pour WSL 2, afin d’optimiser la taille et les performances pour offrir une expérience Linux exceptionnelle sur Windows.The Linux kernel in WSL 2 is built by Microsoft from the latest stable branch, based on the source available at kernel.org. This kernel has been specially tuned for WSL 2, optimizing for size and performance to provide an amazing Linux experience on Windows. Le noyau sera géré par le biais des mises à jour Windows, ce qui signifie que vous obtiendrez les derniers correctifs de sécurité et les dernières améliorations du noyau sans avoir à gérer cela vous-même.The kernel will be serviced by Windows updates, which means you will get the latest security fixes and kernel improvements without needing to manage it yourself.

Le noyau Linux WSL 2 est disponible en open source.The WSL 2 Linux kernel is open source. Si vous souhaitez en savoir plus, consultez le billet de blog Shipping a Linux Kernel with Windows rédigé par l’équipe qui l’a créé.If you'd like to learn more, check out the blog post Shipping a Linux Kernel with Windows written by the team that built it.

Amélioration des performances d’E/S de fichierIncreased file IO performance

Les opérations gourmandes en fichiers, comme par exemple git clone, npm install, apt update, apt upgrade, sont nettement plus rapides avec WSL 2.File intensive operations like git clone, npm install, apt update, apt upgrade, and more are all noticeably faster with WSL 2.

L’augmentation de la vitesse réelle dépend de l’application que vous exécutez et de la manière dont elle interagit avec le système de fichiers.The actual speed increase will depend on which app you're running and how it is interacting with the file system. Les versions initiales de WSL 2 s’exécutent jusqu’à 20 fois plus vite que WSL 1 lors de la décompression d’un tarball compressé, et environ 2 à 5 fois plus vite lors de l’utilisation de git clone, npm install et cmake sur divers projets.Initial versions of WSL 2 run up to 20x faster compared to WSL 1 when unpacking a zipped tarball, and around 2-5x faster when using git clone, npm install and cmake on various projects.

Compatibilité complète des appels systèmeFull system call compatibility

Les binaires Linux utilisent des appels système pour exécuter des fonctions, telles que l’accès aux fichiers, la demande de mémoire, la création de processus et bien plus encore.Linux binaries use system calls to perform functions such as accessing files, requesting memory, creating processes, and more. Alors que WSL 1 utilisait une couche de traduction créée par l’équipe WSL, WSL 2 inclut son propre noyau Linux avec compatibilité complète des appels système.Whereas WSL 1 used a translation layer that was built by the WSL team, WSL 2 includes its own Linux kernel with full system call compatibility. Les avantages sont les suivants :Benefits include:

  • Un tout nouvel ensemble d’applications que vous pouvez exécuter au sein de WSL, telles que Docker et plus encore.A whole new set of apps that you can run inside of WSL, such as Docker and more.

  • Les mises à jour du noyau Linux sont toutes immédiatement prêtes à l’emploi.Any updates to the Linux kernel are immediately ready for use. (Vous n’avez pas besoin d’attendre que l’équipe WSL implémente les mises à jour et ajoute les modifications).(You don't have to wait for the WSL team to implement updates and add the changes).

WSL 2 utilise une plus petite quantité de mémoire au démarrage.WSL 2 uses a smaller amount of memory on startup

WSL 2 utilise une machine virtuelle utilitaire légère sur un noyau Linux réel avec un faible encombrement mémoire.WSL 2 uses a lightweight utility VM on a real Linux kernel with a small memory footprint. L’utilitaire alloue la mémoire stockée à l’adresse virtuelle au démarrage.The utility will allocate Virtual Address backed memory on startup. Il est configuré pour démarrer avec une plus petite proportion de votre mémoire totale que celle requise pour WSL 1.It is configured to start with a smaller proportion of your total memory that what was required for WSL 1.

Exceptions pour l’utilisation de WSL 1 à la place de WSL 2Exceptions for using WSL 1 rather than WSL 2

Nous vous recommandons d’utiliser WSL 2 parce qu’il offre de meilleures performances et une compatibilité à 100 % des appels système.We recommend that you use WSL 2 as it offers faster performance and 100% system call compatibility. Toutefois, il existe quelques scénarios spécifiques où vous préférerez peut-être utiliser WSL 1.However, there are a few specific scenarios where you might prefer using WSL 1. Envisagez d’utiliser WSL 1 dans les cas suivants :Consider using WSL 1 if:

  • Vos fichiers de projet doivent être stockés dans le système de fichiers Windows.Your project files must be stored in the Windows file system. WSL 1 offre un accès plus rapide aux fichiers montés à partir de Windows.WSL 1 offers faster access to files mounted from Windows.
    • Si vous souhaitez utiliser votre distribution WSL Linux pour accéder aux fichiers de projet dans le système de fichiers Windows et que ces fichiers ne peuvent pas être stockés dans le système de fichiers Linux, vous obtiendrez de meilleures performances dans les systèmes de fichiers du système d’exploitation en utilisant WSL 1.If you will be using your WSL Linux distribution to access project files on the Windows file system, and these files cannot be stored on the Linux file system, you will achieve faster performance across the OS files systems by using WSL 1.
  • Un projet qui requiert une compilation croisée avec des outils Windows et Linux sur les mêmes fichiers.A project which requires cross-compilation using both Windows and Linux tools on the same files.
    • Les performances des fichiers sur les systèmes d’exploitation Windows et Linux sont plus rapides dans WSL 1 que WSL 2. Par conséquent, si vous utilisez des applications Windows pour accéder à des fichiers Linux, vous obtiendrez actuellement de meilleures performances en termes de rapidité avec WSL 1.File performance across the Windows and Linux operating systems is faster in WSL 1 than WSL 2, so if you are using Windows applications to access Linux files, you will currently achieve faster performance with WSL 1.

Notes

Envisagez de tester l’extension Remote WSL de VS Code pour pouvoir stocker vos fichiers de projet dans le système de fichiers Linux en utilisant les outils en ligne de commande Linux, mais également VS Code sur Windows pour créer, modifier, déboguer et exécuter votre projet dans un navigateur Internet sans les ralentissements de performances associés à l’utilisation des systèmes de fichiers Linux et Windows.Consider trying the VS Code Remote WSL Extension to enable you to store your project files on the Linux file system, using Linux command line tools, but also using VS Code on Windows to author, edit, debug, or run your project in an internet browser without any of the performance slow-downs associated with working across the Linux and Windows file systems. En savoir plusLearn more.

Accès aux applications réseauAccessing network applications

Accès aux applications réseau Linux à partir de Windows (localhost)Accessing Linux networking apps from Windows (localhost)

Si vous créez une application réseau (par exemple, une application qui s’exécute sur un serveur SQL ou NodeJS) dans votre distribution Linux, vous pouvez y accéder à partir d’une application Windows (comme votre navigateur Internet Edge ou Chrome) à l’aide de localhost (comme vous le feriez normalement).If you are building a networking app (for example an app running on a NodeJS or SQL server) in your Linux distribution, you can access it from a Windows app (like your Edge or Chrome internet browser) using localhost (just like you normally would).

Toutefois, si vous exécutez une version antérieure de Windows (build 18945 ou inférieure), vous devez récupérer l’adresse IP de la machine virtuelle hôte Linux (ou effectuer une mise à jour vers la dernière version de Windows).However, if you are running an older version of Windows (Build 18945 or less), you will need to get the IP address of the Linux host VM (or update to the latest Windows version).

Pour trouver l’adresse IP de la machine virtuelle qui alimente votre distribution Linux :To find the IP address of the virtual machine powering your Linux distribution:

  • À partir de votre distribution WSL (p. ex. Ubuntu), exécutez la commande : ip addrFrom your WSL distribution (ie Ubuntu), run the command: ip addr
  • Recherchez et copiez l’adresse sous la valeur inet de l’interface eth0.Find and copy the address under the inet value of the eth0 interface.
  • Si vous avez installé l’outil grep, trouvez-la plus facilement en filtrant la sortie à l’aide de la commande : ip addr | grep eth0If you have the grep tool installed, find this more easily by filtering the output with the command: ip addr | grep eth0
  • Connectez-vous à votre serveur Linux à l’aide de cette adresse IP.Connect to your Linux server using this IP address.

L’image ci-dessous illustre un exemple de cela avec la connexion à un serveur Node.js à l’aide du navigateur Edge.The picture below shows an example of this by connecting to a Node.js server using the Edge browser.

Se connecter au serveur NodeJS avec Edge

Accès aux applications réseau Windows à partir de Linux (adresse IP de l’hôte)Accessing Windows networking apps from Linux (host IP)

Si vous souhaitez accéder à une application réseau qui s’exécute sur Windows (par exemple, une application s’exécutant sur un serveur SQL ou NodeJS) à partir de votre distribution Linux (p. ex. Ubuntu), vous devez utiliser l’adresse IP de votre ordinateur hôte.If you want to access a networking app running on Windows (for example an app running on a NodeJS or SQL server) from your Linux distribution (ie Ubuntu), then you need to use the IP address of your host machine. Il ne s’agit pas d’un scénario courant, mais vous pouvez suivre ces étapes pour le faire fonctionner.While this is not a common scenario, you can follow these steps to make it work. - Obtenez l’adresse IP de votre ordinateur hôte en exécutant cette commande à partir de votre distribution Linux : cat /etc/resolv.confObtain the IP address of your host machine by running this command from your Linux distribution: cat /etc/resolv.conf - Copiez l’adresse IP qui suit le terme : nameserver.Copy the IP address following the term: nameserver. - Connectez-vous à n’importe quel serveur Windows à l’aide de l’adresse IP copiée.Connect to any Windows server using the copied IP address.

L’image ci-dessous présente un exemple de cela avec la connexion à un serveur Node.js en cours d’exécution dans Windows via curl.The picture below shows an example of this by connecting to a Node.js server running in Windows via curl.

Se connecter au serveur NodeJS dans Windows via Curl

Autres considérations relatives aux réseauxAdditional networking considerations

Connexion via des adresses IP distantesConnecting via remote IP addresses

Lorsque vous utilisez des adresses IP distantes pour vous connecter à vos applications, celles-ci sont traitées comme des connexions à partir du réseau local (LAN).When using remote IP addresses to connect to your applications, they will be treated as connections from the Local Area Network (LAN). Cela signifie que vous devez vous assurer que votre application peut accepter les connexions LAN.This means that you will need to make sure your application can accept LAN connections.

Par exemple, vous devrez peut-être lier votre application à 0.0.0.0 au lieu de 127.0.0.1.For example, you may need to bind your application to 0.0.0.0 instead of 127.0.0.1. Dans l’exemple d’une application Python utilisant Flask, vous pouvez procéder à l’aide de la commande : app.run(host='0.0.0.0').In the example of a Python app using Flask, this can be done with the command: app.run(host='0.0.0.0'). Gardez à l’esprit la sécurité lorsque vous apportez ces changements, car cela permettra d’établir des connexions à partir de votre réseau local.Please keep security in mind when making these changes as this will allow connections from your LAN.

Accès à une distribution WSL 2 à partir de votre réseau local (LAN)Accessing a WSL 2 distribution from your local area network (LAN)

Lorsque vous utilisez une distribution WSL 1, si votre ordinateur était configuré pour être accessible via votre réseau local, les applications qui s’exécutent dans WSL sont également accessibles sur votre réseau local.When using a WSL 1 distribution, if your computer was set up to be accessed by your LAN, then applications run in WSL could be accessed on your LAN as well.

Ce n’est pas le cas par défaut dans WSL 2.This isn't the default case in WSL 2. WSL 2 a une carte Ethernet virtualisée avec sa propre adresse IP unique.WSL 2 has a virtualized ethernet adapter with its own unique IP address. Actuellement, pour activer ce flux de travail, vous devez suivre les mêmes étapes que pour une machine virtuelle standard.Currently, to enable this workflow you will need to go through the same steps as you would for a regular virtual machine. (Nous recherchons des moyens d’améliorer cette expérience.)(We are looking into ways to improve this experience.)

Voici un exemple de commande PowerShell pour ajouter un proxy de port qui écoute sur le port 4000 sur l’hôte et le connecte au port 4000 à la machine virtuelle WSL 2 avec l’adresse IP 192.168.101.100.Here's an example PowerShell command to add a port proxy that listens on port 4000 on the host and connects it to port 4000 to the WSL 2 VM with IP address 192.168.101.100.

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Accès IPv6IPv6 access

Les distributions WSL 2 ne peuvent actuellement pas atteindre les adresses IPv6 uniquement.WSL 2 distributions currently cannot reach IPv6-only addresses. Nous travaillons à l’ajout de cette fonctionnalité.We are working on adding this feature.

Augmentation de la taille de votre disque dur virtuel WSL 2Expanding the size of your WSL 2 Virtual Hard Disk

WSL 2 utilise un disque dur virtuel (VHD) pour stocker vos fichiers Linux.WSL 2 uses a Virtual Hard Disk (VHD) to store your Linux files. Dans WSL 2, un disque dur virtuel se présente sous la forme d’un fichier .vhdx sur votre disque dur Windows.In WSL 2, a VHD is represented on your Windows hard drive as a .vhdx file.

Le disque dur virtuel WSL 2 utilise le système de fichiers ext4.The WSL 2 VHD uses the ext4 file system. Ce disque dur virtuel est redimensionné automatiquement en fonction de vos besoins de stockage et a une taille maximale initiale de 256 Go.This VHD automatically resizes to meet your storage needs and has an initial maximum size of 256GB. Si l’espace de stockage exigé par vos fichiers Linux dépasse cette taille, vous devrez peut-être l’étendre.If the storage space required by your Linux files exceeds this size you may need to expand it. Si la taille de votre distribution vient à dépasser 256 Go, vous verrez des erreurs indiquant que l’espace disque est insuffisant.If your distribution grows in size to be greater than 256GB, you will see errors stating that you've run out of disk space. Vous pouvez corriger cette erreur en augmentant la taille du disque dur virtuel.You can fix this error by expanding the VHD size.

Pour augmenter la taille maximale du disque dur virtuel au-delà de 256 Go :To expand your maximum VHD size beyond 256GB:

  1. Arrêtez toutes les instances WSL à l’aide de la commande : wsl --shutdownTerminate all WSL instances using the command: wsl --shutdown

  2. Recherchez le nom du package d’installation de votre distribution ('PackageFamilyName')Find your distribution installation package name ('PackageFamilyName')

    • Dans PowerShell ('distro' étant le nom de votre distribution), entrez la commande :Using PowerShell (where 'distro' is your distribution name) enter the command:
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
  3. Localisez le paramètre fullpath du fichier sur le disque dur virtuel, utilisé par votre installation WSL 2. Il s’agit de votre pathToVHD :Locate the VHD file fullpath used by your WSL 2 installation, this will be your pathToVHD:

    • %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
  4. Redimensionnez votre disque dur virtuel WSL 2 en exécutant les commandes suivantes :Resize your WSL 2 VHD by completing the following commands:

    • Ouvrez l’invite de commandes Windows avec des privilèges d’administrateur et entrez :Open Windows Command Prompt with admin privileges and enter:

      diskpart
      DISKPART> Select vdisk file="<pathToVHD>"
      DISKPART> detail vdisk
      
    • Examinez la sortie de la commande detail.Examine the output of the detail command. La sortie inclut une valeur pour la taille virtuelle.The output will include a value for Virtual size. Il s’agit de la valeur maximale actuelle.This is the current maximum. Convertissez cette valeur en mégaoctets.Convert this value to megabytes. Après le redimensionnement, la nouvelle valeur doit être supérieure à cette valeur.The new value after resizing must be greater than this value. Par exemple, si la sortie detail indique Taille virtuelle : 256 Go, vous devez spécifier une valeur supérieure à 256000.For example, if the detail output shows Virtual size: 256 GB, then you must specify a value greater than 256000. Une fois que vous avez votre nouvelle taille en mégaoctets, entrez la commande suivante dans diskpart :Once you have your new size in megabytes, enter the following command in diskpart:

      DISKPART> expand vdisk maximum=<sizeInMegaBytes>
      
    • Quittez diskpart.Exit diskpart

      DISKPART> exit
      
  5. Lancez votre distribution WSL (Ubuntu, par exemple).Launch your WSL distribution (Ubuntu, for example).

  6. Indiquez à WSL qu’il peut augmenter la taille de son système de fichiers en exécutant les commandes suivantes à partir de votre ligne de commande de distribution Linux.Make WSL aware that it can expand its file system's size by running these commands from your Linux distribution command line.

    Notes

    Vous pouvez voir ce message en réponse à la première commande mount : /dev: none already mounted on /dev.You may see this message in response to the first mount command: /dev: none already mounted on /dev. Vous pouvez ignorer ce message.This message can safely be ignored.

       sudo mount -t devtmpfs none /dev
       mount | grep ext4
    

    Copiez le nom de cette entrée, qui ressemble à ceci : /dev/sdX (X représentant tout autre caractère).Copy the name of this entry, which will look like: /dev/sdX (with the X representing any other character). Dans l’exemple suivant, la valeur de X est b :In the following example the value of X is b:

       sudo resize2fs /dev/sdb <sizeInMegabytes>M
    

    Notes

    Vous devrez peut-être installer resize2fs.You may need to install resize2fs. Dans ce cas, vous pouvez utiliser cette commande pour l’installer : sudo apt install resize2fs.If so, you can use this command to install it: sudo apt install resize2fs.

    La sortie ressemble à l'exemple suivant :The output will look similar to the following:

       resize2fs 1.44.1 (24-Mar-2018)
       Filesystem at /dev/sdb is mounted on /; on-line resizing required
       old_desc_blocks = 32, new_desc_blocks = 38
       The filesystem on /dev/sdb is now 78643200 (4k) blocks long.
    

Notes

En général, vous ne devez pas modifier, déplacer ni accéder aux fichiers associés à WSL, situés dans votre dossier AppData, à l’aide d’outils ou d’éditeurs Windows.In general do not modify, move, or access the WSL related files located inside of your AppData folder using Windows tools or editors. Cela pourrait entraîner la corruption de votre distribution Linux.Doing so could cause your Linux distribution to become corrupted.