¿Cómo puedo preservar el entorno Linux de WSL mientras realizo un "restablecimiento" del sistema Windows 10?

¿Cómo puedo preservar el entorno Linux de WSL mientras realizo un "restablecimiento" del sistema Windows 10?

Esta publicaciónmenciona simplemente restaurar el directorio WSL WSL parcialmente restaurado, pero con algunos problemas de funcionalidad.Esta publicaciónbrinda información genérica sobre cómo realizar una copia de seguridad y recuperar una instalación de Linux.Esta publicacióndice que %appdata% de hecho se mueve a su carpeta Windows.old, que se crea después del reinicio y contiene sus archivos "antiguos". ) ¿Qué información podría haberse perdido en el experimento de los primeros carteles? ¿Existen algunas configuraciones de registro o archivos de configuración que permitirían simplemente restaurar el directorio raíz de Linux ( %USERPROFILE%/AppData/Local/lxss) para que funcione?

EDITAR

Mi pregunta fue marcada como un duplicado de¿Cómo hacer una copia de seguridad (WSL) del subsistema Linux para Windows 10, antes de reiniciar o reinstalar el sistema?.

Sin embargo, esa pregunta era sólo sobre cómo hacer una copia de seguridad de la instalación: básicamente, tarearla y guardarla en algún lugar. Pregunto explícitamente cómo restaurarlo.

Respuesta1

Una pregunta muy antigua que fue rechazada hoy y las cosas han cambiado mucho en los 4 años transcurridos desde que se formuló la pregunta. De hecho, hice un "Reinicio" en mi controlador diario hace unos años y tuve una situación similar.

En aquel entonces, lo mejor que podías hacer era copiar cualquierdatosfuera del antiguo sistema de archivos. Cuando se hizo esta pregunta, ese sistema de archivos normalmente estaba (como menciona en la pregunta) en algún lugar debajo de %USERPROFILE%\AppData\Local\lxss. Confío en tu palabra, ya que no lo recuerdo exactamente y ya no tengo instalaciones tan antiguas.

En algún momento, probablemente cuando WSL comenzó a admitir múltiples distribuciones, la carpeta WSL1 cambió a %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs. Cuando reinicié mi PC hace varios años, creé tarese directorio y luego restauré archivos individuales (pero no todo el sistema de archivos, como usted pregunta) después del reinicio y la reinstalación de WSL. No consideré el Windows.old, pero esa también habría sido una forma válida de acceder a esos archivos.

Hoy en día siantesAl realizar un reinicio, wsl --exportse puede realizar como se menciona en la otra respuesta aquí.

Pero si el usuario no piensa en hacer esto,puedeAún será posible restaurar completamente el sistema de archivos después del reinicio usando Windows.old. Hay dos escenarios:

  • WSL2 hace que esto sea bastante fácil, ya que todo el sistema de archivos se almacena en una unidad virtual en formato %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs\ext4.vhdx. Veresta respuestapara obtener más detalles, pero básicamente puedes copiarlo ext4.vhdxdentro Windows.oldy fuera de una nueva instalación.

  • Con WSL1, estoy90% confiadodesde el que puede recuperar una instalación WSL Windows.oldutilizando el siguiente método.

    1. Primero, instale una distribución de la Tienda. Lo sé, quieres recuperar tuviejoinstall, pero usaremos esta nueva instalación para hacerlo. Siempre puedes desinstalar la distribución de la Tienda cuando hayamos terminado.

    2. Lanza esa distribución.

    3. Crea /etc/wsl.confcon lo siguiente:

      [automount]
      options = "metadata"
      
    4. Próximo,

      cd /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/Packages/<PackageName>/LocalState/rootfs
      

      <PackageName>Dependerá de su distribución, pero comenzará con Canonical...las distribuciones de Ubuntu. Si su instalación de WSL es lo suficientemente antigua, es posible que sea /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/lxss. Cuando lo haga lsallí, querrá ver el /directorio de esa instalación.

    5. Desde dentro de ese directorio, tar cvf recovery.tar .. La instalación de WSL1 llevará un tiempo.

    6. sudo mv recovery.tar <somewhere>más en el C:camino; algo como /mnt/c/Users/<youruser>/Documents/wsl(está cerca de lo que uso para esto). Esta será la nueva ubicación de la distribución cuando hayamos terminado.

    7. Salir de WSL

    8. Desde PowerShell, navegue hasta el directorio donde colocó el archivo recovery.tar.

    9. mkdir OldUbuntu(O como sea que quieras llamarlo)

    10. wsl --import OldUbuntu .\OldUbuntu .\recovery.tar. El comando también toma opcionalmente un --version 1/2(al final) para forzar la versión WSL.

    11. Si lo desea, haga de esta su instalación WSL predeterminada con wsl --set-default OldUbuntu.

    12. Inicie la distribución con wsl ~ -d OldUbuntu. El -d/--distributionargumento sólo es necesario si no lo configuró como predeterminado anteriormente.

    13. Crea un /etc/wsl.confcon el siguiente contenido:

      [user]
      default=username
      

      Edite usernamepara que sea el nombre de usuario que tenía en la distribución antes de restablecer Windows.

    14. Opcionalmente, desinstale la distribución que instalamos y utilizamos para crear el tarball.

    Eso debería ser todo. De hecho, probé esto con un escenario ligeramente diferente. Instalé una instancia WSL1 y luego realicé el proceso anterior desde otra instancia. Pude hacerlo con éxito --importdespués de seguir los pasos anteriores. La propiedad y los permisos de archivos/directorios parecen ser correctos, al igual que los enlaces simbólicos. Mi única preocupación es si una distribución WSL realmente antigua puede utilizar metadatos diferentes.

    Advertencia: Intente esto solo en un sistema de archivos WSL1 si no tiene otra forma de recuperarlo. Acceder a archivos en un sistema de archivos WSL1 a través de %AppData%(o equivalente) esconocido por causar corrupción. Es por eso que creé una instancia desechable para probar esto.

    Nota al margen: Podría pensar en taringresar los archivos Windows.olddesde Windows, en lugar de pasar por la molestia de instalar otra instancia de WSL. Mi preocupación aquí es que esto no captará lalinuxpropiedad y permisos, lo que probablemente resultará en una instalación dañada al wsl --importejecutar.

información relacionada