User Tools

Site Tools


other:win10wsl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
other:win10wsl [2022/08/25 15:57]
jypeter [Disk usage]
other:win10wsl [2023/12/06 13:24]
jypeter [Other WSL resources and links] Added phoronix benchmarks link
Line 3: Line 3:
 [[other:​index#​windows_10_notes|Other Windows 10 related notes]] [[other:​index#​windows_10_notes|Other Windows 10 related notes]]
  
-<note warning>+<WRAP center round alert 60%> 
 +JYP is still working on this page! Some content may be out of date, or still related to WSL 1 
 +</​WRAP>​ 
 + 
 + 
 +<WRAP center round important 60%>
   * What is described on this page was tested with [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions#​whats-new-in-wsl-2|WSL 2]].\\ **WSL 2** is available in [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​install-manual#​step-2---check-requirements-for-running-wsl-2|Windows 11 or Windows 10, Version 1903, Build 18362 or later]]   * What is described on this page was tested with [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions#​whats-new-in-wsl-2|WSL 2]].\\ **WSL 2** is available in [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​install-manual#​step-2---check-requirements-for-running-wsl-2|Windows 11 or Windows 10, Version 1903, Build 18362 or later]]
  
-  * You can also check JYP's [[other:​win10_wsl_1|original WSL 1 instructions]] ​+  * You can also check JYP's [[other:​win10_wsl_1|original WSL 1 instructions]] 
 +    * ...but even **if you need WSL 1, you should use this page for installing WSL, and then switch to WSL 1** with [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​set-default-wsl-version|--set-default-version]] or [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​set-wsl-version-to-1-or-2|--set-version]]
  
   * The user can choose to install Linux using **WSL 1 or WSL 2**   * The user can choose to install Linux using **WSL 1 or WSL 2**
     * **WSL 2 should be your default choice**     * **WSL 2 should be your default choice**
     * If you have doubts, check the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions|differences between WSL1 and WSL2]] and read [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions#​exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]] before choosing     * If you have doubts, check the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions|differences between WSL1 and WSL2]] and read [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions#​exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]] before choosing
-</note>+</WRAP> 
 + 
 + 
 +<WRAP center round tip 60%> 
 +The commands on this page have to be typed: 
 +  * either in **Windows PowerShell terminals** 
 +  * or in **bash terminals running in WSL** 
 +It should be clear enough which type of terminal you have to use 
 +</​WRAP>​ 
  
  
Line 35: Line 50:
 Once you have verified that your Windows is recent enough, you should also: Once you have verified that your Windows is recent enough, you should also:
  
-  * Install the [[other:​win10apps#​windows_terminal|Windows terminal]], ​because it will be one of the ways to open ''​Ubuntu'' ​terminals, ​once ''​Ubuntu'' ​is installed +  ​* **Install the [[other:​win10apps#​windows_terminal|Windows terminal]]** 
-  * It will be useful ​to be able to [[other:​win10config#​displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files]] +    * Once //Ubuntu// is installedthere will be additional ​ways to open [[other:​win10wsl#​opening_a_terminal|Linux ​terminals]] 
-  * Have at least some basic knowledge of Linux...+  * **Know how to use copy-paste** in a //Windows Terminal//a //​PowerShell//​ or a ''​cmd'' ​interpreter 
 +    * It should work more or less the same way everywhere as in a [[other:​win10apps#​windows_cmd_command_interpreter|cmd interpreter]] 
 +  * Follow the instructions ​to **be able to [[other:​win10config#​displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files i n the Windows explorer]]** 
 +  ​* **Have some basic knowledge of Linux**...
     * Get some [[other:​newppl:​starting#​useful_documentation_for_beginners|basic Linux documentation]] if required     * Get some [[other:​newppl:​starting#​useful_documentation_for_beginners|basic Linux documentation]] if required
 ==== Computer CPU and memory ==== ==== Computer CPU and memory ====
Line 126: Line 144:
  
   * Disk size after upgrading to //Ubuntu 20.04.4 LTS// with ''​sudo apt update && sudo apt upgrade''​\\ ''​-rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /​mnt/​c/​Users/​jypeter/​AppData/​Local/​Packages/​CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/​LocalState/​ext4.vhdx''​   * Disk size after upgrading to //Ubuntu 20.04.4 LTS// with ''​sudo apt update && sudo apt upgrade''​\\ ''​-rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /​mnt/​c/​Users/​jypeter/​AppData/​Local/​Packages/​CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/​LocalState/​ext4.vhdx''​
 +    * Size of the [[other:​win10wsl#​creating_a_backup_of_the_linux_running_in_wsl|backup tar file]] of this installation,​ generated with ''​%%wsl --export%%'':​ ~1.4 Gb
  
 +==== Hyper-V requirements ====
  
 +<WRAP center round tip 60%>
 +You can skip reading this WSL //​requirement//​ if you are installing WSL for the first time, and are therefore directly installing WSL 2
 +
 +Come back here later (only) if you have problems
 +</​WRAP>​
 +
 +
 +WSL 2 needs the //Virtual Machine Platform// to be enabled on your computer. If you have never used WSL before, you can probably go directly to the [[other:​win10wsl#​base_installation|Base installation]] section and ''​wsl''​ should install everything correctly
 +
 +If you have problems (e.g. [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​troubleshooting#​error-0x80370102-the-virtual-machine-could-not-be-started-because-a-required-feature-is-not-installed|The virtual machine could not be started because a required feature is not installed]]),​ or if you are updating WSL 1 to WSL 2, type ''​systeminfo''​ in a PowerShell to check if your machine meets the [[https://​docs.microsoft.com/​en-us/​virtualization/​hyper-v-on-windows/​reference/​hyper-v-requirements?​source=recommendations#​verify-hardware-compatibility|Hyper-V requirements]]
 +
 +If you get a ''​No''​ for one of the ''​Hyper-V requirements'',​ check the //​virtualization//​ settings in your [[other:​bios#​entering_the_bios|computer BIOS]].\\ You can have a look at the [[https://​en.wikipedia.org/​wiki/​X86_virtualization|x86 virtualization]] wikipedia page if you are wondering what ''​VT-x''​ and ''​VT-d''​ means for //Intel// processors (''​AMD-v''​ and ''​AMD IOMMU''​ for //AMD//)
 +
 +Example: HP laptop with an **Intel** CPU, and **virtualization not activated in the BIOS**
 +  * //Hyper-V// section of the ''​systeminfo''​ output
 +    * <​code>​Configuration requise pour Hyper-V: ​        ​Extensions de mode du moniteur d’ordinateur virtuel : Oui
 +                                            Virtualisation activée dans le microprogramme :​ Non
 +                                            Traduction d’adresse de second niveau : Oui
 +                                            Prévention de l’exécution des données disponible :​ Oui</​code>​
 +  * //​Virtualization//​ section of the [[other:​bios#​entering_the_bios|HP BIOS]]: you need to **enable ''​Virtualization Technology (VTx)''​ and ''​Virtualization Technology for Directed I/O (VTd)''​** in the BIOS, save the settings and finish booting
 +    * {{ :​other:​hp_bios_vtx_vtd.png?​direct&​600 |}}
 +  * //Hyper-V// section of the ''​systeminfo''​ output with **virtualization activated in the BIOS** (after activation and reboot)
 +    * <​code> ​                                           Virtualisation activée dans le microprogramme :​ Oui</​code>​
 +
 +=== Hyper-V related information ===
 +
 +Miscellaneous technical links and information,​ in case we need this later...
 +
 +  * [[https://​learn.microsoft.com/​en-us/​virtualization/​|Virtualization documentation]]
 +    * [[https://​learn.microsoft.com/​en-us/​virtualization/​api/​|Hyper-V APIs]]
 +  * ''​hcsdiag list''​ and ''​hcsdiag kill <​ID>''​
 ===== Base installation ===== ===== Base installation =====
  
Line 135: Line 186:
     * If you have an older Windows version (at least //Version 1903, Build 18362//), follow the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​install-manual|Manual installation steps for older versions of WSL]]     * If you have an older Windows version (at least //Version 1903, Build 18362//), follow the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​install-manual|Manual installation steps for older versions of WSL]]
  
-  * Open a ''​Powershell''​ in //​administrator//​ mode+  * Open a ''​PowerShell''​ in //​administrator//​ mode
     * ''​Start''​=>''​W''​=>''​Windows PowerShell''​ then right-click on ''​Windows PowerShell''​ and select //Run as Administrator//​     * ''​Start''​=>''​W''​=>''​Windows PowerShell''​ then right-click on ''​Windows PowerShell''​ and select //Run as Administrator//​
     * Use a [[https://​wiki.lsce.ipsl.fr/​pmip3/​doku.php/​other:​win10apps#​windows_terminal|Windows Terminal]], if you have already installed it. Use ''​CTRL''​+<​left click> on ''​Windows Powershell''​ in the pull-down menu to get a ''​Powershell''​ in //​administrator//​ mode     * Use a [[https://​wiki.lsce.ipsl.fr/​pmip3/​doku.php/​other:​win10apps#​windows_terminal|Windows Terminal]], if you have already installed it. Use ''​CTRL''​+<​left click> on ''​Windows Powershell''​ in the pull-down menu to get a ''​Powershell''​ in //​administrator//​ mode
Line 167: Line 218:
   * Reboot the computer and be patient   * Reboot the computer and be patient
     * This step will take some time (make sure you have 15-30 mn available). Windows will install and configure what it needs for running //​WSL+Ubuntu//,​ reboot, and install some more //stuff//     * This step will take some time (make sure you have 15-30 mn available). Windows will install and configure what it needs for running //​WSL+Ubuntu//,​ reboot, and install some more //stuff//
-    * The final installation step will take place when you open your Windows session. A terminal opens, displaying the final installation of Ubuntu, and asking you for a username and password, and giving you access to a ''​bash''​ prompt+    * The final installation step will take place when you open your Windows session. A terminal opens, displaying the final installation of Ubuntu, and asking you for a username and password, and giving you access to a ''​bash''​ prompt\\ <wrap hi>​[[other:​win10wsl#​wsl_security_warning|Do not use an existing password for the Linux installation]]</​wrap>​
     * <​code>​Installing,​ this may take a few minutes...     * <​code>​Installing,​ this may take a few minutes...
 Please create a default UNIX user account. The username does not need to match your Windows username. Please create a default UNIX user account. The username does not need to match your Windows username.
Line 195: Line 246:
 /​bin/​bash</​code>​ /​bin/​bash</​code>​
  
-  * Get some basic information about your new ''​Ubuntu''​ installation +  * Note: after installing (even from the PowerShell command line), ​Ubuntu ​will appear as a regular installed application in the //Microsoft Store// and the list of applications 
-    * <​code>​stdu@sadira034:~$ lsb_release ​-+    * {{ :other:​ubuntu_ms-store.png?​direct&​400 |}} 
-No LSB modules are available+    ​* {{ :other:ubuntu_applications.png?​direct&​400 |}}
-Distributor ID: Ubuntu +
-Description: ​   Ubuntu 20.04 LTS +
-Release       ​20.04 +
-Codename      focal +
- +
-stdu@sadira034:​~$ uname -a +
-Linux sadira034 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux +
- +
-stdu@sadira034:​~$ cat /​proc/​version +
-Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021+
  
-stdu@sadira034:~$ df -h+  * Get some information about your new ''​Ubuntu''​ installation 
 +    * <​code>​$ lsb_release -d 
 +Description   ​Ubuntu 20.04.5 LTS</​code>​ 
 +      * [[other:​win10wsl#​linux_version_installed|More information]] example 
 +    * Disk usage example 
 +    * <​code>​$ df -h
 Filesystem ​     Size  Used Avail Use% Mounted on Filesystem ​     Size  Used Avail Use% Mounted on
 /​dev/​sdb ​       251G  1.1G  238G   1% / /​dev/​sdb ​       251G  1.1G  238G   1% /
Line 271: Line 317:
 Release: ​       20.04 Release: ​       20.04
 Codename: ​      ​focal</​code>​ Codename: ​      ​focal</​code>​
 +    * [[other:​win10wsl#​linux_version_installed|More installed version information]]
     * [[other:​win10wsl#​updating_wsl_and_ubuntu|More details about updating WSL and/or Ubuntu]] (you can safely skip this for now)     * [[other:​win10wsl#​updating_wsl_and_ubuntu|More details about updating WSL and/or Ubuntu]] (you can safely skip this for now)
  
Line 306: Line 353:
 PS C:\> wsl cat /​proc/​version PS C:\> wsl cat /​proc/​version
 Linux version 5.10.102.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Wed Mar 2 00:30:59 UTC 2022</​code>​ Linux version 5.10.102.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Wed Mar 2 00:30:59 UTC 2022</​code>​
 +
 +  * Create a [[other:​win10wsl#​backup_of_a_full_linux_installation|backup of the newly installed distribution]]
 +    * This will allow you to easily [[other:​win10wsl#​restoring_or_relocating_a_linux_installation|restore or relocate your distribution later]]
 ===== After the base installation ===== ===== After the base installation =====
  
-Once you have completed ​the base installation steps, you'​ll ​get a Ubuntu machinewith a //root// and user account ​(pre-configured to use ''​sudo''​ for commands that need root access) and lots of pre-installed applications ​(but no graphics).+After completing ​the base installation steps, you get a //Ubuntu// machine with
 +  * a //root// and //user// account 
 +    * the //​user// ​account ​is pre-configured to use ''​sudo''​ for commands that need root access 
 +  * pre-installed ​base Linux applications 
 +    * **no** graphics 
 +    * enough to play a bit with a Linux computer and test that the installation is working, but not enough to do some real work
  
 ==== Opening a terminal ==== ==== Opening a terminal ====
  
-  ​Check the next sections to find out the different ways to open terminals +<WRAP center round tip 60%> 
-  * Opening the first terminal will start WSL+Ubuntu+Having a terminal you can efficiently interact with is the basis of your future work with WSL+Ubuntu! 
 +</​WRAP>​ 
 + 
 +  ​Read the sub-sections ​below to find out the different ways to open //terminals// 
 +  * Opening the first terminal ​(after opening a regular Windows session) ​will start WSL+Ubuntu 
 +    * The next terminals will open instantly (because Ubuntu is already running)
   * Closing all terminals will not stop WSL+Ubuntu. Read the [[#​rebooting_wsl|rebooting WSL section]] if you need a clean start of WSL without rebooting Windows   * Closing all terminals will not stop WSL+Ubuntu. Read the [[#​rebooting_wsl|rebooting WSL section]] if you need a clean start of WSL without rebooting Windows
  
-Having ​a terminal ​you can efficiently interact with is the basis of your future work with WSL+Ubuntu! You can **optionally** read the [[https://​nickjanetakis.com/​blog/​conemu-vs-hyper-vs-terminus-vs-mobaxterm-terminator-vs-ubuntu-wsl|ConEmu vs Hyper vs Terminus vs MobaXTerm Terminator vs Ubuntu WSL]] blog if you really want more details+Optional reading (if you really have time): 
 +  * [[https://​unix.stackexchange.com/​questions/​4126/​what-is-the-exact-difference-between-a-terminal-a-shell-a-tty-and-a-con|What ​is the exact difference between a '​terminal',​ a '​shell',​ a '​tty'​ and a '​console'?​]] 
 +  ​* [[https://​nickjanetakis.com/​blog/​conemu-vs-hyper-vs-terminus-vs-mobaxterm-terminator-vs-ubuntu-wsl|ConEmu vs Hyper vs Terminus vs MobaXTerm Terminator vs Ubuntu WSL]] for more details ​about terminals 
  
 === The default terminal === === The default terminal ===
  
-The **Default WSL+Ubuntu //​terminal//​** is basically a //bash// shell running inside a regular Windows ''​cmd''​ text console. You do not need to have an //X server// running to use it!+<WRAP center round tip 60%> 
 +The default terminal will be available without installing extra applications like ''​WSLtty''​ or the ''​Windows Terminal''​. It will work for testing WSL, but it is **not recommended** if you want to work comfortably 
 +</​WRAP>​ 
 + 
 +The **Default WSL+Ubuntu //​terminal//​** is basically a //bash// shell running inside a regular Windows ''​cmd''​ text console. You do not need to have an [[other:​x_conf#​using_an_x_server_on_windows|X server]] running to use it!
  
 There are several ways to open a default terminal: There are several ways to open a default terminal:
-  * Select //Ubuntu// from the ''​Start''​ menu +  ​* Type ''​wsl''​+''<​Enter>''​ in the (Cortana) Search field on the task bar 
-  * Click on the //Ubuntu// icon on the task bar +  * The other ways listed below **will only work as supposed if you have not [[other:​win10wsl#​restoring_or_relocating_a_linux_installation|restored or relocated a Linux installation]]!**\\ If you are using a restored/​relocated installation,​ this will trigger a re-installation of the default Ubuntu on ''​C:​\''​. Not a major problem, but it will use some unwanted space on ''​C:​\''​ and you will need to [[other:​win10wsl#​uninstalling_wsl_or_a_distribution|use 'wsl --unregister Ubuntu'​]] to remove this unwanted version 
-    * if you don't have a //Ubuntu// icon on the task bar yet: right-click on the //Ubuntu// icon (in the ''​Start''​ menu) -> More -> Pin to the task bar +    * Type ''​ubuntu''​+<​Enter>​ in the (Cortana) Search field on the task bar 
-    * to open more terminals: right-click on the //Ubuntu// icon on the task bar -> Ubuntu +    ​* Select //Ubuntu// from the ''​Start''​ menu 
-  * Type ''​ubuntu''​+<​Enter>​ or ''​wsl''​+''<​Enter>''​ in the (Cortana) Search field on the task bar+    * Click on the //Ubuntu// icon on the task bar 
 +      * if you don't have a //Ubuntu// icon on the task bar yet: right-click on the //Ubuntu// icon (in the ''​Start''​ menu) -> More -> Pin to the task bar 
 +      * to open more terminals: right-click on the //Ubuntu// icon on the task bar -> Ubuntu
  
 == Copy/paste in the default terminal == == Copy/paste in the default terminal ==
  
-Follow the steps in [[https://​blogs.msdn.microsoft.com/​commandline/​2018/​04/​13/​copy-and-paste-arrives-for-linuxwsl-consoles/​|Copy and Paste arrives for Linux/WSL Consoles]] and you will then be able to **copy/​paste by using ''​Shift+Ctrl+C/​V''​**+Check this [[other:win10apps#​windows_terminal|Windows Terminal]] section
  
-  * The //QuickEdit mode// should already be selected by default and you can also: 
-    * **select** text with the left mouse button 
-    * **paste** the selected text with the right mouse button (click **twice** after a new selection) 
-  * Use ''​Alt''​+''<​Enter>''​ to toggle the terminal to full screen (maybe more useful options [[https://​docs.microsoft.com/​en-us/​previous-versions/​orphan-topics/​ws.11/​mt427362(v=ws.11)|here?​]]) 
  
 === The WSLtty terminal === === The WSLtty terminal ===
  
-<note tip> +<WRAP center round tip 60%>
-  * This is the recommended (by JYP) option for now+
  
-  * If you can't open a terminal after Windows upgrades from WSL to WSL v2get and install ​the latest version of WSLtty ! +  * This is **the recommended (by JYP) option for now**until we can use regular Linux select-copy/​paste in the Windows Terminal ([[https://​github.com/​microsoft/​terminal/​issues/​7646|Feature request: add xterm-style select/copy/paste options]])
-</note>+
  
-[[https://​github.com/​mintty/​wsltty|WSLtty]] allows ​you to use the efficient //Mintty// as a terminal ​for WSL. **You do not need to have an //X server// running to use it!**+  * If you can't open ''​WSLtty'' ​terminal ​after upgrading from ''​WSL'' ​to ''​WSL 2'',​ install the latest version of WSLtty ! 
 +</WRAP>
  
-  * Download and execute the latest [[https://​github.com/​mintty/​wsltty/​releases|64bit installer]] (the most recent ''​wsltty-*-install-x86_64.exe''​ file) 
-  * After installing, you will get several ways to open a terminal: 
-    * Double-click on the ''​WSL terminal''​ icon on the desktop 
-    * ''​U''​=>''​Ubuntu terminal''​ and ''​W''​=>''​WSL Terminal''​ in the ''​Start''​ menu 
-      * There is also a ''​W''​=>''​WSLtty''​ folder, than you don't really need 
-  * Open a terminal and right-click in it to check the available options 
-    * You can access even more options with CTRL+right-click 
-    * You can cycle between the open WSLtty terminals with CTRL+Tab and Shift+CTRL+Tab 
-  *  [[https://​github.com/​mintty/​mintty/​wiki|Technical stuff]] (on the Mintty wiki) 
  
-=== The new Windows Terminal === 
  
-Microsoft is working on a powerful replacement of the old ''​cmd''​ terminal! Check [[https://​github.com/​microsoft/terminal|Windows Terminal, Console and Command-Line @ github]]+[[https://​github.com/​mintty/wsltty|WSLtty]] allows you to use the efficient //Mintty// as a terminal ​for WSL. **You do not need to have an [[other:​x_conf#​using_an_x_server_on_windows|X server]] running to use it!**
  
-Note: the //Windows Terminal// looks really promising, but will be nice when there is a GUI for editing the options (rather the editing a //json// file with a text editor...) and a way to select //​xterm-style//​ copy-pasting. See [[https://​github.com/​microsoft/terminal/​issues/​7646|Feature requestadd xterm-style select/​copy/​paste options]]+  * Use [[https://​github.com/​mintty/wsltty#​windows-package-manager|winget]] (in a PowerShell) to install WSLtty 
 +    * <​code>​PS C:\Users\your_login>​ winget install wsltty 
 +Trouvé WSLtty [Mintty.WSLttyVersion 3.6.0 
 +[...] 
 +Installé correctement</​code>​
  
-  * [[https://aka.ms/terminal|Getting ​the Windows Terminal ​from the Microsoft Store]] +  * After installing WSLtty, you will get **several new ways to open a terminal**:​ 
-  * [[https://docs.microsoft.com/en-us/windows/​terminal/|Documentation]]+    * **A ''​WSL terminal''​ icon on the desktop, that will be //The Way to open a terminal//​** 
 +    * ''​Start''​ => ''​U''​ => ''​Ubuntu terminal''​ (or ''​Ubuntu_custom terminal''​ or something similar if you have [[other:​win10wsl#​restoring_or_relocating_a_linux_installation|restored/​relocated a Linux installation]])  
 +    * ''​Start''​ => ''​W''​ => ''​WSL Terminal''​ in the ''​Start''​ menu 
 +      * There is also a ''​W''​ => ''​WSLtty''​ folder, than you probably will not need (more details in [[https://github.com/mintty/​wsltty#​configuration|Configuration]]),​ except possibly ''​configure WSL shortcuts''​ (//run after adding or removing WSL distributions,​ in order to create ​the respective set of shortcuts in the Start menu//) 
 +  * Open a terminal and right-click in it to check the available options 
 +    * **Recommended //text// options**:​ 
 +      * use the ''​Text''​ option to select the nice //Cascadia Code// font bundled with the [[other:​win10apps#​windows_terminal|Windows Terminal]] 
 +      * if you don't automatically get the ''​en_US.UTF8''​ localization in WSLtty when trying to [[other:​win10wsl#​specifying_a_correct_system_language|specify a correct system language]], explicitly force //​Locale//​=''​en_US''​ and //Character set//​=''​UTF-8''​ in the text options 
 +      * {{ :​other:​wsltty_text_options.png?​direct&​250 |}} 
 +    * You can access even more options with CTRL+right-click 
 +    * Note: the WSLtty (non-default) settings are stored in: ''​C:​\Users\jypeter\AppData\Roaming\wsltty\config''​ 
 +  * You can cycle between the open WSLtty terminals with CTRL+Tab and Shift+CTRL+Tab 
 +  * Extra [[https://github.com/mintty/mintty/wiki|technical stuff]] (on the Mintty wiki)
  
-=== Terminals started from Linux ===+=== The Windows Terminal ​===
  
-You can install additional //​graphical//​ terminals inside the Linux running in WSL, but **you will need to have a running ​//X server// if you want to open them**In these terminals, the //usual// Linux copy/​paste ​rules will apply!+The [[other:​win10apps#​windows_terminal|Windows Terminal]] is really nice and powerful, and will become the recommended (by JYP) option as soon as we can use regular ​Linux select-copy/paste ([[https://github.com/microsoft/terminal/issues/​7646|Feature request: add xterm-style select/​copy/​paste ​options]])
  
-== xterm == 
  
-  * Install with: ''​apt-get install xterm''​ +=== Terminals started ​from Linux ===
-  * Start from another terminal with: ''​xterm &''​+
  
-== xfce-terminal ==+You can [[other:​win10wsl#​adding_useful_packages|install additional graphical terminals in the Linux installation]],​ but **you will need to have a running [[other:​x_conf#​using_an_x_server_on_windows|X server]] if you want to open them**. In these terminals, the //usual// Linux copy/paste rules will apply!
  
-  * Install with: ''​apt-get install xfce4-terminal''​ +  * ''​xterm'' ​package 
-  * Start from another terminal with: ''​xfce4-terminal ​&''​+  * ''​xfce4-terminal'' ​package
  
-==== Location of the files ====+==== Where are the files====
  
-You can optionally read the detailed [[https://​blogs.msdn.microsoft.com/​wsl/​2016/​06/​15/​wsl-file-system-support/​|WSL File System Support]] page if you want to (try to) understand how things work and how both systems can share files.+=== Accessing Linux files from the Windows Explorer ===
  
-=== Linux files seen from Windows === +  ​* You can access the Linux files in ''/''​ from Windows by opening the //virtual// ''​\\wsl$''​ path in the Windows explorer
- +
-  ​* You can access the Linux files in ''/''​ from Windows by opening the //virtual// ''​\\wsl$''​ path in the Windows explorer ​(since [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​release-notes#​build-18342|Windows build 18342]])+
     * Your Linux //home// directory is located in ''​\\wsl$\Ubuntu\home\<​your_login>''​     * Your Linux //home// directory is located in ''​\\wsl$\Ubuntu\home\<​your_login>''​
 +    * There will be some content in ''​\\wsl$''​ only if a Linux installation is running (i.e. it shows as //Running// in ''​wsl -l -v''​)
 +    * It's useful to [[[other:​win10config#​local_linux_folders|create a shortcut to wsl$ on the desktop]]
  
-  * The content of the Ubuntu ''/''​ directory is actually located in the following //hidden// sub-directory of the user'​s ​Windows ​//home// directory: ''​C:​\Users\<​your_login>​\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs''​+=== Accessing ​Windows ​files from Linux ===
  
-<note important>[[https://​blogs.msdn.microsoft.com/​commandline/​2016/​11/​17/​do-not-change-linux-files-using-windows-apps-and-tools/​|Do not change Linux files in '/'​ from Windows!]] (it's safe **only** if you use the ''​\\wsl$''​ path) +<WRAP center round tip 60%
- +When you are in a Windows //explorer// window, you can directly ​open a Linux terminal ​in a specific directory ​by holding Shift and right-clicking on a directory and selecting //Ouvrir l'​interpréteur de commandes ​Linux ici// (//Open the Linux command line here//?​) ​in the context menu.</​WRAP>​
-If you need to easily update files from both Linux and Windows, put them in a regular ​Windows ​directory (not in the hidden directory mentioned above, where the Linux system is installed)<​/note> +
- +
-=== Windows files seen from Linux === +
- +
-Note: When you are in an explorer window, you can open a Windows ​terminal ​with Linux by holding Shift and right-clicking on a directory and choosing ​Linux in the context menu.+
  
 The Windows partitions are mounted under ''/​mnt''​ in Linux: The Windows partitions are mounted under ''/​mnt''​ in Linux:
Line 404: Line 467:
 <​code>​$ df -h <​code>​$ df -h
 Filesystem ​     Size  Used Avail Use% Mounted on Filesystem ​     Size  Used Avail Use% Mounted on
-rootfs ​         111G   ​30G ​  ​82G ​ 27% / +/dev/sdb        251G  1.5G  237G   ​1% / 
-none            111G   ​30G ​  ​82G ​ 27% /dev +[...] 
-none            111G   ​30G ​  ​82G ​ 27% /run +C:\             ​472G ​ 121G  351G  26% /mnt/c 
-none            111G   ​30G ​  ​82G ​ 27% /run/lock +D:\             ​480G ​ 4.2G  476G   1% /mnt/d</​code>​
-none            111G   ​30G ​  ​82G ​ 27% /run/shm +
-none            111G   ​30G   ​82G ​ 27% /run/user +
-C:              ​111G ​  ​30G ​  ​82G ​ 27% /mnt/c +
-H             ​366G ​ 138M  366G   1% /mnt/h</​code>​+
  
 Read the [[#​mounting_disks_and_network_drives|Mounting disks and network drives]] section if you want to access remote server disks on your local network, or just want to access USB disks/​sticks on your local computer. Read the [[#​mounting_disks_and_network_drives|Mounting disks and network drives]] section if you want to access remote server disks on your local network, or just want to access USB disks/​sticks on your local computer.
Line 418: Line 477:
  
   * The ''​wslpath''​ command can be used to make Windows<​->​Linux path conversion   * The ''​wslpath''​ command can be used to make Windows<​->​Linux path conversion
 +  * FIXME More technical WSL disks information (move the disk technical information to the advanced usage section, and link to it)
 ==== Linux version installed ==== ==== Linux version installed ====
 +
 +You can use the following commands to get some information about WSL and the currently installed Linux
  
 <​code>​$ date <​code>​$ date
-Thu Feb 20 11:18:57 CET 2020+Tue Sep 13 16:48:10 CEST 2022 
 + 
 +$ env | grep WSL 
 +WSL_DISTRO_NAME=Ubuntu_custom 
 +WSL_INTEROP=/​run/​WSL/​12_interop 
 +WSL_GUEST_IP=192.168.113.203 
 +WSLENV= 
 +WSL_HOST_IP=192.168.112.1
  
 $ lsb_release -a $ lsb_release -a
 No LSB modules are available. No LSB modules are available.
 Distributor ID: Ubuntu Distributor ID: Ubuntu
-Description: ​   Ubuntu ​18.04.LTS +Description: ​   Ubuntu ​20.04.LTS 
-Release: ​       ​18.04 +Release: ​       ​20.04 
-Codename: ​      bionic+Codename: ​      focal
  
 $ cat /​proc/​version $ cat /​proc/​version
-Linux version ​4.4.0-18362-Microsoft ​(Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #476-Microsoft Fri Nov 01 16:53:00 PST 2019+Linux version ​5.10.102.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils2.34.0.20200220) #1 SMP Wed Mar 2 00:30:59 UTC 2022
  
 $ uname -a $ uname -a
-Linux some_machine_name 4.4.0-18362-Microsoft #476-Microsoft Fri Nov 01 16:53:00 PST 2019 x86_64 x86_64 x86_64 GNU/​Linux</​code>​+Linux sadira034 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 
 + 
 +$ cat /​etc/​*release* 
 +DISTRIB_ID=Ubuntu 
 +DISTRIB_RELEASE=20.04 
 +DISTRIB_CODENAME=focal 
 +DISTRIB_DESCRIPTION="​Ubuntu 20.04.5 LTS" 
 +NAME="​Ubuntu"​ 
 +VERSION="​20.04.5 LTS (Focal Fossa)"​ 
 +ID=ubuntu 
 +ID_LIKE=debian 
 +PRETTY_NAME="​Ubuntu 20.04.5 LTS" 
 +VERSION_ID="​20.04"​ 
 +HOME_URL="​https://​www.ubuntu.com/"​ 
 +SUPPORT_URL="​https://​help.ubuntu.com/"​ 
 +BUG_REPORT_URL="​https://​bugs.launchpad.net/​ubuntu/"​ 
 +PRIVACY_POLICY_URL="​https://​www.ubuntu.com/​legal/​terms-and-policies/​privacy-policy"​ 
 +VERSION_CODENAME=focal 
 +UBUNTU_CODENAME=focal</​code>​
  
 ==== Ubuntu packages installed ==== ==== Ubuntu packages installed ====
  
-<​code>​$ dpkg --list+<​code>​$ dpkg --list ​| head -n 10
 Desired=Unknown/​Install/​Remove/​Purge/​Hold Desired=Unknown/​Install/​Remove/​Purge/​Hold
 | Status=Not/​Inst/​Conf-files/​Unpacked/​halF-conf/​Half-inst/​trig-aWait/​Trig-pend | Status=Not/​Inst/​Conf-files/​Unpacked/​halF-conf/​Half-inst/​trig-aWait/​Trig-pend
 |/ Err?​=(none)/​Reinst-required (Status,​Err:​ uppercase=bad) |/ Err?​=(none)/​Reinst-required (Status,​Err:​ uppercase=bad)
-||/ Name                  Version ​        ​Architecture ​   Description +||/ Name                           ​Version ​                          ​Architecture Description 
-+++-=====================-===============-===============-================================================ ++++-==============================-=================================-============-=============================================================================== 
-ii  accountsservice ​      ​0.6.45-1ubuntu1 ​amd64           ​query and manipulate user account information +ii  accountsservice ​               0.6.55-0ubuntu12~20.04.5 ​         ​amd64        query and manipulate user account information 
-ii  acl                   ​2.2.52-3build1 ​ amd64           ​Access control list utilities +ii  adduser ​                       3.118ubuntu2 ​                     ​all          add and remove users and groups 
-ii  acpid                 ​1:​2.0.28-1ubunt amd64           ​Advanced Configuration and Power Interface event +ii  ​alsa-topology-conf             1.2.2-1 ​                          all          ALSA topology configuration files 
-ii  adduser ​              ​3.116ubuntu1 ​   ​all             ​add and remove users and groups +ii  ​alsa-ucm-conf ​                 ​1.2.2-1ubuntu0.13 ​                ​all ​         ALSA Use Case Manager configuration files 
- +ii  ​apparmor ​                      2.13.3-7ubuntu5.1 ​                amd64        user-space parser utility for AppArmor
-[...] +
-ii  ​xterm                 330-1ubuntu2 ​   amd64           X terminal emulator +
-ii  xxd                   ​2:​8.0.1453-1ubu amd64           tool to make (or reverse) a hex dump +
-ii  xz-utils ​             5.2.2-1.3       ​amd64 ​          ​XZ-format compression utilities +
-ii  ​zerofree ​             ​1.0.4-1         ​amd64 ​          zero free blocks from ext2, ext3 and ext4 file-s +
-ii  ​zlib1g:​amd64 ​         1:1.2.11.dfsg-amd64           compression library ​runtime+
  
  
-$ dpkg --list > /​mnt/​c/​Scratch/​jyp/pkg_initial_201601.txt +$ dpkg --list > /​mnt/​c/​Scratch/​your_login/Ubuntu_Installed_List_`date +"​%y-%m-%d"​`.txt 
-$ wc -l /​mnt/​c/​Scratch/​jyp/pkg_initial_201601.txt +$ wc -l /​mnt/​c/​Scratch/​your_login/Ubuntu_Installed_List_*.txt 
-628 /​mnt/​c/​Scratch/​jypeter/pkg_initial_201601.txt</​code>​+642 /​mnt/​c/​Scratch/​your_login/Ubuntu_Installed_List_22-08-29.txt</​code>​
  
-Full (example) list of installed packages: {{:other:pkg_initial_201601.txt|pkg_initial_201601.txt}}+Full (example) list of installed packages: {{ :other:ubuntu_installed_list_22-08-29.txt |}}
  
 ==== Update ubuntu ==== ==== Update ubuntu ====
Line 467: Line 548:
 Use the following to update your ubuntu installation:​ Use the following to update your ubuntu installation:​
  
-<​code>​$ sudo -s+''​$ sudo apt update && sudo apt upgrade''​ 
 + 
 +or <​code>​$ sudo -s 
 $ apt-get update $ apt-get update
 $ apt-get upgrade</​code>​ $ apt-get upgrade</​code>​
Line 483: Line 567:
 ===== Getting ready for some real work ===== ===== Getting ready for some real work =====
  
-<​note ​important>We often assume below that you are using the **root** account (''​sudo -s''​), or ''​sudo''​ when executing the ''​apt*''​ installation commands, and othe admin commands</​note>​+<​note>​We often assume below that you are using the **root** account (with ''​sudo -s'',​ or ''​sudo''​when executing the ''​apt*''​ installation commands, and other //admin// commands</​note>​
  
-==== Specifying correctly the display language ​====+==== Create a backup before starting ​====
  
-WSL will automatically try to use in the terminals the same language as the one used by the Windows 10 computer ([[https://​docs.microsoft.com/​en-us/​windows/​wsl/​troubleshooting#changing-the-display-language|ref]])but this could lead later to some difficult to debug **side-effects** when you connect to remote Linux servers (e.g. the ''​sort''​ command may give different ​results !).+Nothing ​will go wrong, but it does not hurt to [[other:win10wsl#backup_of_a_full_linux_installation|save an image of your full installation]], in case you want to try some really ​different ​settings later. 
 +==== Specifying a correct system language ====
  
-It is **safer** to force the system ​to use a //standard// ​English version+WSL will automatically try to use in the terminals the same language as the one used by the Windows computer, but this could lead later to some difficult to debug **side-effects** when you connect to remote Linux servers (e.g. the ''​sort''​ command may give different results !). 
 + 
 +It is **safer** to [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​troubleshooting#​changing-the-display-language|force the Linux installation ​to use a standard ​English localization]]. The ''​update-locale''​ command will change the content of the ''​/etc/default/​locale''​ file
  
 <​code>​$ sudo update-locale LANG=en_US.UTF8 <​code>​$ sudo update-locale LANG=en_US.UTF8
 $ echo $LANG $ echo $LANG
 en_US.UTF8 en_US.UTF8
 +
 +$ locale -v
 +LANG=en_US.UTF8
 +LANGUAGE=
 +LC_CTYPE="​en_US.UTF8"​
 +[...]
 +LC_ALL=
 </​code>​ </​code>​
 +
 +After updating the system //​localization//​ (and possibly restarting ''​wsl''​ with ''​%%wsl --shutdown%%''​),​ open the [[other:​win10wsl#​opening_a_terminal|available terminals]] and type ''​echo $LANG''​ in order to check that are indeed getting ''​en_US.UTF8''​
 +
 +If you are still not getting ''​en_US.UTF8''​ in some terminals (e.g. you are still getting ''​C.UTF-8''​),​ you can check if you can override the //​localization//​ options in the terminals settings. Check the [[other:​win10wsl#​the_wsltty_terminal|Text options of the WSLtty terminals]]
 +
 +
 +
 ==== Package management ==== ==== Package management ====
  
-[[https://​www.howtogeek.com/​63997/​how-to-install-programs-in-ubuntu-in-the-command-line/​|apt-get tutorial]] if you are more used to Fedora/​RedHat ''​yum''/''​dnf''​ and //rpm// packages+=== How does it work ? ===
  
-  * Install the **aptitude** package ​manager: ''​apt-get install aptitude''​ +  * **Ubuntu applications** are distributed through ​package ​files in **//Debian// format** (''​.deb'' ​files) that are found in [[https://help.ubuntu.com/community/​Applications#​Software_repositories|software repositories]]
-    ​[[https://doc.ubuntu-fr.org/aptitude|details]] (fr) +
-  ​Install the **synaptic** package manager: ​''​aptitude install synaptic''​ +
-    * [[https://doc.ubuntu-fr.org/synaptic|details]] (fr)+
  
-=== Useful ​commands ===+  * High level package management tools such as ''​aptitude''​ or ''​synaptic''​ rely on ''​apt''​ which, itself, relies on ''​dpkg''​ to manage the packages in the system 
 +    * The ''​apt''​ tool merges functionality of ''​apt-get''​ and ''​apt-cache''​ and by default has a fancier colored output format, making it more pleasant for humans. For usage in scripts or advanced use cases, ''​apt-get''​ is still preferable or needed 
 +    * ''​apt*''​ tools and ''​dpkg''​ are pre-installed on Ubuntu 
 +    * [[https://​www.debian.org/​doc/​manuals/​debian-faq/​pkgtools.en.html#​aptitude|aptitude]] can be used on the command-line or through a **text-based interface** 
 +      * You do not need to have an [[other:​x_conf|X server]] running to use ''​aptitude'',​ therefore aptitude can be used in the early stages of a Linux installation,​ or on a remote Linux computer 
 +    * [[https://​www.debian.org/​doc/​manuals/​debian-faq/​pkgtools.en.html#​synaptic|synaptic]] is a graphical package manager 
 +      * You need to have an [[other:​x_conf|X server]] running in order to use it 
 + 
 +  * All the details can be found in [[https://​www.debian.org/​doc/​manuals/​debian-faq/​pkgtools.en.html|The Debian package management tools]] 
 + 
 +=== What about snap ? === 
 + 
 +FIXME [[https://​snapcraft.io/​docs|Snap documentation]] 
 + 
 + 
 +=== Installing extra package managers === 
 + 
 +  * Installation:​ ''​sudo apt install aptitude synaptic''​ 
 +    * It may install lots of dependencies,​ but that's to be expected if no other packages have been installed yet\\ <​code>​$ sudo apt install aptitude synaptic 
 +Reading package lists... Done 
 +Building dependency tree 
 +Reading state information... Done 
 +[...] 
 +The following NEW packages will be installed:​ 
 +  adwaita-icon-theme aptitude aptitude-common at-spi2-core cpp cpp-9 fontconfig gcc-9-base 
 +[...] 
 +  x11-xserver-utils xdg-utils 
 +0 upgraded, 129 newly installed, 0 to remove and 0 not upgraded. 
 +Need to get 31.2 MB of archives. 
 +After this operation, 137 MB of additional disk space will be used. 
 +Do you want to continue? [Y/n] 
 +</​code>​ 
 + 
 +  * Documentation:​ 
 +    * ''​apt'':​  
 +      * EN: [[https://​www.debian.org/​doc/​manuals/​debian-faq/​pkgtools.en.html#​apt-get|apt @ Debian]]\\ [[https://​help.ubuntu.com/​community/​AptGet/​Howto|Package management with APT @ Ubuntu]] 
 +      * FR: [[https://​doc.ubuntu-fr.org/​apt-cli|apt @ ubuntu-fr]] 
 +    * ''​aptitude'':​ 
 +      * EN: [[https://​help.ubuntu.com/​community/​AptitudeSurvivalGuide|Aptitude Survival Guide @ Ubuntu]] 
 +      * FR: [[https://​doc.ubuntu-fr.org/​aptitude|aptitude @ ubuntu-fr]] 
 +    * ''​synaptic'':​ 
 +      * EN: [[https://​help.ubuntu.com/​community/​SynapticHowto|synaptic Howto @ Ubuntu]] 
 +      * FR: [[https://​doc.ubuntu-fr.org/​synaptic|synaptic @ ubuntu-fr]] 
 + 
 + 
 +=== Some useful ​commands === 
 + 
 +  * ''​apt update'':​ update the list of packages known by your system 
 +  * ''​apt upgrade'':​ upgrade all the packages on your system 
 +  * ''​apt search word'':​ find packages whose description contain ''​word''​ 
 +  * ''​apt install foo'':​ install the ''​foo''​ package and all its dependencies 
 +  * ''​apt show package'':​ print the detailed information of a package 
 +  * ''​apt remove foo'':​ remove the foo package from your system
  
   * ''​dpkg -l'':​ list installed packages   * ''​dpkg -l'':​ list installed packages
   * ''​dpkg -L package_name'':​ list files installed from ''​package_name''​   * ''​dpkg -L package_name'':​ list files installed from ''​package_name''​
   * ''​dpkg -S path/​command'':​ name of the package used to install ''​path/​command''​   * ''​dpkg -S path/​command'':​ name of the package used to install ''​path/​command''​
 +
  
 === Example === === Example ===
  
 <​code>​$ dpkg -l | grep -i wsl <​code>​$ dpkg -l | grep -i wsl
-ii  ubuntu-wsl ​                     1.417.3                            ​amd64        Ubuntu on Windows tools - Windows Subsystem for Linux integration +ii  ubuntu-wsl ​                       1.450.2                           amd64        Ubuntu on Windows tools - Windows Subsystem for Linux integration 
-ii  wslu                            2.3.2-0ubuntu2~18.04.3             all          collection of utilities for the Windows 10 Linux Subsystem+ii  wslu                              2.3.6-0ubuntu2~20.04.0            ​all          collection of utilities for the Windows 10 Linux Subsystem
  
 $ dpkg -L wslu $ dpkg -L wslu
 /. /.
-/etc 
-/​etc/​profile.d 
 /usr /usr
 /usr/bin /usr/bin
Line 528: Line 677:
 /​usr/​bin/​wslvar /​usr/​bin/​wslvar
 /​usr/​bin/​wslview /​usr/​bin/​wslview
 +[...]
 +
 +$ apt show wslu
 +Package: wslu
 +Version: 2.3.6-0ubuntu2~20.04.0
 +[...]
 +Description:​ collection of utilities for the Windows 10 Linux Subsystem
 [...]</​code>​ [...]</​code>​
  
 +
 +=== Adding useful packages ===
 +
 +There is not that much installed by default in Ubuntu, and we use ''​apt insall''​ to get ready for some real work!
 +
 +<​code>​$ sudo apt install gcc libglu1-mesa mesa-utils x11-apps xterm xfce4-terminal emacs evince eog imagemagick nco cdo netcdf-bin ncview</​code>​
 +
 +Notes:
 +  * Some of the installed packages (''​nco cdo netcdf-bin ncview''​) are used for handling data files in //NetCDF format// may not be useful to people outside LSCE
 +  * Adding lots of extra packages requires **much more disk space**, and the size of the ''​.vhdx''​ will increase significantly!
 +    * <​code>​$ ls -lh /​mnt/​d/​WSL_Distributions/​Ubuntu_custom/​ext4.vhdx
 +4.7G Sep 16 18:02 /​mnt/​d/​WSL_Distributions/​Ubuntu_custom/​ext4.vhdx</​code>​
 +    * Size of the [[other:​win10wsl#​creating_a_backup|backup]] after adding the extra packages: we go from 549 Mb to 1.2 Gb!\\ 1.2G Sep 19 13:52 WSL_Ubuntu_20.04.5_LTS_stdu_22-09-19.tar.gz
 ==== Using an X server ==== ==== Using an X server ====
  
Line 559: Line 728:
   * FIXME **//X server// and WSL2** : check ''​export DISPLAY=$(cat /​etc/​resolv.conf | grep nameserver | awk '​{print $2}'​):​0.0''​ in [[https://​solvercube.com/​how-to-install-ubuntu-20-04-on-windows-using-wsl/​|How to install Ubuntu 20.04 on Windows using WSL]]   * FIXME **//X server// and WSL2** : check ''​export DISPLAY=$(cat /​etc/​resolv.conf | grep nameserver | awk '​{print $2}'​):​0.0''​ in [[https://​solvercube.com/​how-to-install-ubuntu-20-04-on-windows-using-wsl/​|How to install Ubuntu 20.04 on Windows using WSL]]
  
- 
-==== Adding useful packages ==== 
- 
-Reminder: you need to use the ''​root''​ account (with ''​sudo -s''​) in order to use the following commands 
- 
-<​code>​$ apt-get install gcc libglu1-mesa mesa-utils libsm6 x11-apps 
- 
-# Check the "​Terminals started from Linux" section 
-# if you need to install extra terminals 
- 
-# Install emacs 
-$ apt-get install emacs 
- 
-# Install pdf (evince) and image (eog) viewers 
-$ apt-get install evince eog 
- 
-# Install wslu to improve the Windows<​->​Linux communication 
-$ apt-get install wslu 
- 
-# The packages below are useful for dealing with climate data 
-# in netCDF files (and are also requirements of CLIMAF) 
-$ aptitude install imagemagick nco cdo netcdf-bin ncview exiv2</​code>​ 
  
  
Line 616: Line 763:
 578 /​mnt/​h/​Scratch/​jyp/​pkg_190221.txt</​code>​ 578 /​mnt/​h/​Scratch/​jyp/​pkg_190221.txt</​code>​
  
-==== Upgrading ​ubuntu ​====+==== Upgrading ​Ubuntu ​====
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-You can skip this section if you have just installed ​ubuntu, since you are already running the latest stable release available+You can skip this section if you have just installed ​Ubuntu, since you are already running the latest stable release available
 </​WRAP>​ </​WRAP>​
  
  
-The **updates** are for maintaining the same version of ubuntu ​(e.g. you go from version ''​18.04.2''​ to ''​18.04.5''​),​ while **upgrades** are for going from one major version to the next (e.g ''​16.xx''​ => ''​18.xx''​ => ''​20.xx''​). We try to only use the stable major releases, that have an even version number.+The **updates** are for maintaining the same version of Ubuntu ​(e.g. you go from version ''​18.04.2''​ to ''​18.04.5''​),​ while **upgrades** are for going from one major version to the next (e.g ''​16.xx''​ => ''​18.xx''​ => ''​20.xx''​). We try to only use the stable major releases, that have an even version number.
  
-We use the **LTS versions** (//Long Time Support//) to ensure even more stability, which means that we will get updates of a given major release for quite some time after the next major release is available, so it is not mandatory to updgrade ubuntu ​if you are still receiving updates for the release you use+We use the **LTS versions** (//Long Time Support//) to ensure even more stability, which means that we will get updates of a given major release for quite some time after the next major release is available, so it is not mandatory to upgrade Ubuntu ​if you are still receiving updates for the (major) ​release you are using
  
-There should not be any risk, but it may be a good idea to [[other:​win10wsl#​creating_a_backup_of_the_linux_running_in_wsl|create a backup]] of your current ​ubuntu ​before upgrading it!+There should not be any risk, but it may be a good idea to [[other:​win10wsl#​creating_a_backup_of_the_linux_running_in_wsl|create a backup]] of your current ​Ubuntu ​before upgrading it!
  
 Use ''​sudo''​ for each command below, or just become root by using ''​sudo su -''​ Use ''​sudo''​ for each command below, or just become root by using ''​sudo su -''​
Line 678: Line 825:
  
  * [[https://​linoxide.com/​how-to-clear-apt-cache/​|How to Clear Apt Cache]]  * [[https://​linoxide.com/​how-to-clear-apt-cache/​|How to Clear Apt Cache]]
 +
 +
 ===== Advanced configuration ===== ===== Advanced configuration =====
  
Line 902: Line 1051:
   * [[https://​github.com/​Microsoft/​WSL/​issues/​2636|Automount additonal filesystems from fstab]]   * [[https://​github.com/​Microsoft/​WSL/​issues/​2636|Automount additonal filesystems from fstab]]
   * [[https://​gist.github.com/​sgtoj/​f82990bcd9e89db49b84e2d2e70b281d|Ubuntu for Windows: Mounting C: Drive to WSL's Root]]   * [[https://​gist.github.com/​sgtoj/​f82990bcd9e89db49b84e2d2e70b281d|Ubuntu for Windows: Mounting C: Drive to WSL's Root]]
 +
  
 ==== Rebooting WSL ==== ==== Rebooting WSL ====
Line 920: Line 1070:
  
  
-==== Creating a backup of the Linux running in WSL ====+===== Advanced usage =====
  
-There are several types of WSL related directories that you may want to back up:+==== WSL security WARNING! ====
  
-  ​* <wrap hi>Your Linux //home// directory</wrap> (''/​home/<​your_login>''​),​ or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''​): ​all these files are located in a [[other:​win10wsl#​location_of_the_files|hidden sub-directory of you Windows directory]],​ and the best way to save them is probably to **create a tar file from Linux**, and put this tar file in a specific Windows //WSL backup folder// (we will use below the directory ''/​mnt/​c/​Scratch/​<your_login>''​ or ''​c:​\Scratch\<your_login>''​)+<WRAP center round important 60%> 
 +A regular Linux installation (on a Linux-only computer) is fairly secure,\\ but a Linux installation on WSL is not secure at all, **by design** 
 +</​WRAP>​ 
 + 
 +WSL+Linux is designed to allow you to easily use Linux on Windows, including **very easily using the Linux root account without knowing any password** of the Linux installation! 
 + 
 +<​code>​PS C:​\Users\your_login>​ wsl 
 +wsl_default_user@your_machine:/​mnt/​c/​Users/​your_login$ whoami 
 +wsl_default_user 
 + 
 +PS C:​\Users\your_login>​ wsl -u root 
 +root@your_machine:/​mnt/​c/​Users/​your_login#​ whoami 
 +root</​code>​ 
 + 
 +This is **a feature and not a security issue**, because your installation is protected by your Windows account security 
 + 
 +You should be aware (and act accordingly) that: 
 +  * Somebody gaining access to your Windows account will also have full access to the Linux installation 
 +    ​* <wrap hi>Do not use an existing password for the WSL Linux account</​wrap>​\\ Somebody could easily extract your password information... 
 +    * Storing data in the Linux part of your computer does not add any extra security 
 +    * Always **make sure that only you can access your Windows account** 
 +    * Your LSCE Windows laptop (not your desktop) is encrypted with [[https://​docs.microsoft.com/​en-us/​windows/​security/​information-protection/​Bitlocker/​bitlocker-overview|BitLocker]],​ which adds some extra security 
 + 
 +  * Somebody gaining access to a backup of your Linux installation will easily have access to the Linux installation itself 
 +    * You can store your Linux installation backup to [[https://docs.microsoft.com/en-us/windows/​security/​information-protection/​bitlocker/​bitlocker-to-go-faq|an external disk encrypted with BitLocker]] 
 +==== Creating a backup ==== 
 + 
 +=== Backup of a FULL Linux installation === 
 + 
 +You can use ''​wsl''​ to [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​faq#​how-can-i-back-up-my-wsl-distributions--or-move-them-from-one-drive-to-another-|save a full Linux installation]] to a //tar// file, that can be: 
 +  * used later for //​restoring//​ the full installation 
 +  * used for //​relocating//​ the full installation from ''​C:​\''​ to another disk 
 + 
 +Detailed [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​export-a-distribution-to-a-tar-file|--export]] example: 
 +  * Determine the name of the current Linux installation(s) used in WSL 
 +    * <​code>>​ wsl --list --verbose 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu_custom ​   Running ​        2</code> 
 +  * [[other:​win10wsl#​rebooting_wsl|Stop all running installations]] 
 +      * <​code>>​ wsl --shutdown 
 + 
 +> wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu_custom ​   Stopped ​        ​2</​code>​ 
 +      * ... or stop just the specific installation that you want to save:\\ ''​%%>​ wsl --terminate Ubuntu_custom%%''​ 
 + 
 +  * Export the specified Linux installation to a //tar// file: 
 +    * You should export to a directory or external disk where you have //enough// space\\ e.g. The tar file for a [[other:​win10wsl#​base_installation|newly installed and updated]] //Ubuntu 20.04.5 LTS// is ~1.4 Gb (550 Mb after compression) 
 +    * You should use a detailed enough file name for the tar file\\ e.g. WSL_<​Linux_Distribution>​_<​Distribution_Version>​_<​User>​_<​Date>​.tar 
 +    * Example: ​''​%%wsl --export Ubuntu C:​\Scratch\your_login\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar%%''​ 
 + 
 +    * You can (probably) save a lot of space by compressing the backup 
 +      * It is not documented (yet), but the [[https://github.com/​MicrosoftDocs/​WSL/​issues/​1607|wsl --import]] command (if you need to use it later) can directly import ''​tar.gz''​ files! 
 +      * <code>$ ls -lh /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar 
 + 3.3G Oct 27 18:01 /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar 
 + 
 +$ gzip /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar 
 + 
 +$ ls -lh /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_* 
 + 549M Aug 29 17:49 /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz 
 + 548M Sep 14 16:18 /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-09-14.tar.gz 
 + 1.2G Sep 19 13:52 /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-09-19.tar.gz 
 + 1.3G Oct 27 18:01 /​mnt/​c/​Scratch/​your_login/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar.gz</​code> 
 + 
 +=== Backup of specific directories === 
 + 
 +You can also just create backups of specific directories:​ 
 + 
 +  * Your Linux //home// directory (''/​home/​your_login/​''​),​ or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''​):​ the best way to save them is probably to **create a //tar// file from Linux**, and put this //tar// file in a specific Windows //WSL backup folder// (we will use below the directory ''/​mnt/​c/​Scratch/​your_login/WSL''​ or ''​c:​\Scratch\your_login\WSL''​)
     * <code bash>$ cd /home     * <code bash>$ cd /home
  
 $ du -sh $USER $ du -sh $USER
-232K    <your_login>+88K    ​your_login
  
-# We assume below that there is an existing /​mnt/​c/​Scratch/​<your_login>/ directory +# We assume below that there is an existing /​mnt/​c/​Scratch/​your_login/WSL/ directory 
-It's a WINDOWS ​directory C:\Scratch\<your_login> +Same directory ​(seen from WINDOWS) ​C:​\Scratch\your_login\WSL\ 
-$ tar cfz /​mnt/​c/​Scratch/​$USER/​${USER}_home_`date +%y%m%d_%H%M`.tgz $USER+$ tar cfz /​mnt/​c/​Scratch/​$USER/WSL/​${USER}_home_`date +%y-%m-%d_%H%M`.tgz $USER
  
 # Check the size of the new (and existing old) backup(s) # Check the size of the new (and existing old) backup(s)
-$ ls -ltr /​mnt/​c/​Scratch/​$USER/​${USER}_*.tgz +$ ls -ltrh /​mnt/​c/​Scratch/​your_login/​WSL/​${USER}_*.tgz 
-81K Jan 21  2020 /​mnt/​c/​Scratch/<​your_login>/<​your_login>​_home_200121.tgz + 5.0K Oct 28 16:09 /​mnt/​c/​Scratch/​your_login/​WSL/​stdu_home_22-10-28_1609.tgz</​code>​
-93K Aug 22  2020 /​mnt/​c/​Scratch/<​your_login>/<​your_login>​_home_200822_1151.tgz +
-95K Feb 24 12:09 /​mnt/​c/​Scratch/​<your_login>/<​your_login>​_home_210224_1209.tgz</​code>​+
  
-  * <wrap hi>Regular Windows folders</​wrap> ​where you store data used by WSL: you can use ''​tar''​ in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:​win10apps#​backup_software|backup software]])+  * Regular Windows folders where you store data used by WSL: you can use ''​tar''​ in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:​win10apps#​backup_software|backup software]]) 
 +    * WARNING: there should not be performance issues using ''​tar''​ (from Linux) to make a backup of Windows files with WSL 1, but **WSL 2 is significantly slower than WSL 1 to access Windows files** ([[https://​docs.microsoft.com/​en-us/​windows/​wsl/​compare-versions#​exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]])
  
-  * <wrap hi>The **full** Linux/​Ubuntu installation</​wrap>​ running in WSL (based on [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​faq#​how-can-i-back-up-my-wsl-distros-or-move-them-from-one-drive-to-another|How can I back up my WSL distros?​]]). The following steps will save the full installation in a tar file, that can be used later for restoring the full installation (//​restoration//​ not tested yet) 
-    * Open a **Windows terminal** (preferably a //​PowerShell//​ if you need easy copy/​paste)\\ The //Windows// terminal is where you will type the ''​wsl''​ commands shown below 
-    * Determine the name of the current Linux installation used in WSL (and see if it is running, and using //WSL 1// or //WSL 2//) 
-      * <​code>>​ wsl --list --all 
-Distributions du sous-système Windows pour Linux : 
-Ubuntu (par défaut) 
  
-wsl --list --verbose +==== Restoring or relocating a Linux installation ==== 
-  ​NAME      STATE           ​VERSION + 
-Ubuntu ​   Running ​        1</code> +When we have the ''​tar''​ file of a [[other:​win10wsl#​creating_a_backup|FULL backup]], we can use [[https://​docs.microsoft.com/​en-us/​windows/​wsl/basic-commands#​import-a-new-distribution|--import]] to install or restore it to a specific location. 
-    * [[other:​win10wsl#​rebooting_wsl|Stop WSL+Linux]] + 
-      <​code>>​ wsl --list --verbose +Note:  
-  NAME      STATE           ​VERSION +  ​* This is currently the only way of **moving (//​relocating//​) a Linux installation** to another disk than the default ''​C:​\''​ location 
-Ubuntu ​   Running ​        1+  * //​Importing//​ will mostly put the ''​ext4.vhdx''​ file in the specified target location 
 +    * You need [[other:​win10wsl#​disk_usage|enough disk space]] in the new disk location, knowing that the size of the //​restored//​ ''​vhdx''​ file will start growing (as needed) as soon as you use your installation 
 +  Creating a backup and restoring it is an indirect way of **reclaiming the unused space of a Linux installation ​ ''​vhdx''​ file**: the size of the ''​ext4.vhdx''​ file after importing can be smaller than the size of the originally exported ''​ext4.vhdx''​ file.
  
-wsl --shutdown+Detailed [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​import-a-new-distribution|--import]] example:
  
-> wsl --list --verbose+  * We assume that we have an exported installation ''​tar''​ file available 
 +    * In this example, we use the compressed backup file created in [[other:​win10wsl#​backup_of_a_full_linux_installation|Backup of a FULL Linux installation]]\\ ''​C:​\Scratch\<​your_login>\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz''​ 
 +    * ''​%%--import%%''​ can directly use a ''​.tar.gz''​ file! ([[https://​github.com/​MicrosoftDocs/​WSL/​issues/​1607|wsl --import should mention '​tar.gz'​ support !]]) 
 +  * Create the directory where the Linux installation (mostly its ''​ext4.vhdx''​ file) will be restored 
 +    * Hint: choose an explicit directory path and name, using the name of the distribution that will be restored, because the name of the restored file itself will always be the same (''​ext4.vhdx''​)\\ e.g. ''​D:​\WSL_Distributions\Ubuntu_custom''​ 
 +  * Import the distribution,​ giving it a unique name (that does not appear already in ''​wsl -l -v''​) 
 +    * <​code>>​ wsl --v
   NAME      STATE           ​VERSION   NAME      STATE           ​VERSION
-* Ubuntu ​   Stopped ​        1</​code>​ +* Ubuntu ​   Stopped ​        2
-    * Export the current Linux to a //tar// file: +
-      * <​code>​ > wsl --export Ubuntu C:​\Scratch\<​your_login>​\<​your_login>​_ubuntu-<​ubuntu_version>​-full_<​some_date>​.tar</​code>​ +
-    * You can optionally open a new terminal (this will start again WSL+Ubuntu) to get some information about the created file (size and number of saved files/​directories),​ and compress it in order to save some disk space +
-      * <​code>​$ cd /​mnt/​c/​Scratch/<​your_login>​+
  
-$ ls -ltrh *ubuntu*tar* +wsl --import Ubuntu_custom D:​\WSL_Distributions\Ubuntu_custom C:\Scratch\<​your_login>​\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz
-976M Jan 21  2020 <​your_login>​_200121.tar.gz +
-2.8G Aug 22  2020 <​your_login>-16.04-full_200822.tar +
-3.4G Feb 24 14:06 <​your_login>​-20-04-1-full_210224.tar+
  
-# Determine the number of files/directories ​in the backup +> wsl -l -v 
-$ tar tvf <​your_login>​-20-04-1-full_210224.tar wc -l +  NAME             ​STATE ​          ​VERSION 
-112711+* Ubuntu ​          ​Stopped ​        2 
 +  Ubuntu_custom ​   Stopped ​        2</code> 
 +    * After importing, there should be a new ''​ext4.vhdx''​ file in the previously empty ''​D:​\WSL_Distributions\Ubuntu_custom''​ directory 
 +  * Start the imported ''​Ubuntu_custom''​ distribution 
 +    * Select ''​Ubuntu_custom''​ in the Windows Terminal pull-down menu 
 +    * Or specify ''​Ubuntu_custom''​ in a PowerShell, using:\\ ''​%%wsl ​--distribution Ubuntu_custom%%''​\\ or ''​wsl ​-d Ubuntu_custom''​ 
 +    * WARNING: even if the imported distribution had an existing default user (''​stdu''​ in our example), the //new// default user will be ''​root''​ ! 
 +      * It is possible to explicitly specify the requested user each time we start a terminal, but it will be more convenient to specify a new default user\\ ''​%%wsl --distribution Ubuntu_custom --user stdu%%''​ 
 +      * You can easily open a ''​root''​ session with\\ ''​%%wsl -d Ubuntu_custom -u root%%''​ 
 +  * Select a new (non ''​root''​) default user (note: [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​use-custom-distro#​add-wsl-specific-components-like-a-default-user|Add WSL a default user]] also shows how to //create a new user//). We just have to use the ''​root''​ account to add a default user (user ''​stdu''​ in this example) to the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​wsl-config#​user-settings|/​etc/​wsl.conf]] file 
 +    * <​code>#​ cat /​etc/​wsl.conf 
 +cat: /​etc/​wsl.conf:​ No such file or directory
  
-$ gzip *ubuntu*.tar+# echo -e "​[user]\ndefault=stdu"​ >> /etc/wsl.conf
  
-$ ls -ltrh *ubuntu*tar* +# cat /​etc/​wsl.conf 
-976M Jan 21  2020 <your_login>_200121.tar.gz +[user] 
-1.2G Aug 22  2020 <​your_login>​-16.04-full_200822.tar.gz +default=stdu</code
-1.8G Feb 24 14:06 <your_login>-20-04-1-full_210224.tar.gz +    * Restart the Linux installation to take the new settings into account 
-</​code>​+      * ''​%%wsl ​ --terminate Ubuntu_custom%%''​ 
 +    * If you need the ''​root''​ account later, you will need to use the ''​sudo''​ command from the new default account (or use ''​wsl -d Ubuntu_custom -u root''​ in a PowerShell) 
 +      * <code>$ whoami 
 +stdu 
 +stdu@sadira034:​~$ sudo su 
 +[sudo] password for stdu: 
 +root@sadira034:​~#​ whoami 
 +root</​code>​ 
 +  * If the //​relocation//​ goal was to free up some space on ''​C:'',​ it is possible to [[other:​win10wsl#​removing_the_main_linux_installation|Remove the main installation]],​ once the relocated installation has been successfully tested
  
-==== Restoring a WSL backup ​====+Questions FIXME 
 +  * Is it possible to restore to the default location (on ''​C:​\''​) ? 
 +==== Uninstalling ​WSL or a distribution ​====
  
-FIXME Read [[https://www.howtogeek.com/426562/how-to-export-and-import-your-linux-systems-on-windows-10/​|How to Export and Import Your Linux Systems on Windows 10]] and [[https://​winaero.com/​blog/​export-import-wsl-linux-distro-windows-10/​|Export and Import WSL Linux Distro in Windows 10]] and similar threads+Before uninstalling ​//something//, you probably want to [[other:win10wsl#​creating_a_backup|create a backup]], just to be safe...
  
-FIXME Check if [[https://​wslhub.com/​|WSL Manager]] is maintained and can be useful+=== Removing a specific Linux installation ===
  
-This assumes that you have followed the steps above to create a full backup of your Linux distribution in a ''​ubuntu_<​your_login>​_<​some_date>​.tar''​ file. This file can theoretically be restored with: +This process is called //​unregistering// ​(based on [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​unregister-or-uninstall-a-linux-distribution|Unregister ​or uninstall ​Linux distribution]])
-  * ''​wsl %%--%%import <​DistributionName>​ <​InstallLocation>​ ubuntu_<​your_login>​_<​some_date>​.tar''​ +
-    * Note: found a page mentioning that you should be in a terminal with admin rights when using ''​%%--%%import''​ +
-    * Can we use the same ''<​DistributionName>''​ (e.g. ''​Ubuntu''​) as the one we are trying to restore without first removing it with ''​unregister'' ​([[https://​docs.microsoft.com/​en-us/​windows/​wsl/​wsl-config#​unregister-and-reinstall-a-distribution|Unregister ​and reinstall ​a distribution]])+
-    * If we use a new distribution name, it will probably not appear anymore in the Microsoft Store and will not be updated. Is this a problem? +
-    * It seems we can use ''<​InstallLocation>''​ to install anywhere! What should we do if we want to restore to the default location (in the hidden directory)?​ +
-      * Can we install out of the current user's Windows folder? +
-      * Can we install out of ''​C:​\''?​ +
-    * Can we restore (//clone//) a backed up Linux distribution on another Windows 10 computer for another user? +
-      * if the default user (and its password) has to be changed, you probably have to follow the steps to [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​user-support#​for-fall-creators-update-and-later|reset the Linux password]] and find a way to create a new account when the ''​root''​ password is activated +
-==== Uninstalling WSL ====+
  
-Not too sure about this part...+You just need to get the list of the currently installed Linux distributions,​ stop them and remove/​unregister a specific distribution name 
 + 
 +<​code>>​ wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu ​          ​Stopped ​        2 
 +  Ubuntu_custom ​   Running ​        2 
 + 
 +> wsl --terminate Ubuntu_custom 
 + 
 +> wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu ​          ​Stopped ​        2 
 +  Ubuntu_custom ​   Stopped ​        2 
 + 
 +> wsl --unregister Ubuntu_custom 
 +Désinscription... 
 + 
 +> wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu ​          ​Stopped ​        ​2</​code>​ 
 + 
 + 
 +=== Removing the main Linux installation === 
 + 
 +If you remove the main installation (on ''​C:​\''​):​ 
 +  * Another //​relocated//​ installation will become the new default installation (if present) 
 +    * <​code>​PS C:​\Users\your_login>​ wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +  Ubuntu_custom ​   Running ​        2 
 +* Ubuntu ​          ​Running ​        2 
 + 
 +PS C:​\Users\your_login>​ wsl --unregister Ubuntu 
 +Désinscription... 
 + 
 +PS C:​\Users\your_login>​ wsl -l -v 
 +  NAME             ​STATE ​          ​VERSION 
 +* Ubuntu_custom ​   Running ​        ​2</​code>​ 
 + 
 +  * The initial installation directory will still be present on ''​C:​\'',​ and should probably be left untouched:​ 
 +    * ''​C:​\Users\your_login\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\''​ 
 +    * ...with a very low disk usage (the big ''​ext4.vhdx''​ is removed during the ''​unregister''​ step) 
 + 
 +  * ''​Ubuntu''​ will still appear in the Microsoft store, and clicking on ''​Launch''​ will trigger a re-installation on ''​C:​\''​ 
 +    * If you end up with an installation error message and a new //orphan// ''​ext4.vhdx''​ file on ''​C'',​ click on ''​Launch''​ to restart and complete the installation 
 + 
 +  * ''​Ubuntu''​ will still appear in the list of installed applications (''​Windows''​ + ''​I''​ => ''​Applications''​) but with a smaller disk usage, probably just the size of the //Linux kernel// installed and updated independently of the Linux installations) 
 + 
 +=== Removing WSL === 
 + 
 +''​wsl''​ is a part of the Windows system and probably can't be removed. 
 + 
 +Anyway, when all existing Linux distributions are uninstalled,​ there should not be any big ''​.vhdx''​ files remaining (i.e. //no extra disk space used//), and there will not be any Linux processes running (i.e//no extra CPU used//).
  
-  * Make a backup of whatever you had in your Ubuntu home directory, and all the files and settings that are not in the ''/​mnt''​ directories 
-  * Find how to unregister Ubuntu on the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​wsl-config|Manage and configure Windows Subsystem for Linux]] page 
-  * and then disable WSL??? 
  
 ===== Miscellaneous ===== ===== Miscellaneous =====
 +
 +==== Upgrading WSL 1 to WSL 2 ====
 +
 +<WRAP center round tip 60%>
 +You will be able to run existing WSL 1 installations with WSL 2, so upgrading should not be a problem!
 +</​WRAP>​
 +
 +
 +=== Determining which version of WSL is installed ===
 +
 +If you have never used WSL on a computer, WSL 2 will be installed directly when you follow the [[other:​win10wsl#​base_installation|Base installation]] steps
 +
 +You can determine if your installed Linux distributions are running on WSL 1 or WSL 2 by typing ''​wsl -l -v''​ in a PowerShell, but if you are not sure if you are currently using WSL 1 or WSL 2 for running Linux, you can check if [[https://​github.com/​MicrosoftDocs/​WSL/​issues/​1599|Is there an easy (PowerShell?​) way to get more information about WSL?]] has been answered, or make the following checks
 +
 +  * ''​wsl --update''​ will give the same output (i.e. the installed Linux kernel version) for both WSL 1 and WSL 2
 +    * <​code>​PS C:​\Users\jypeter>​ wsl --update
 +Recherche de mises à jour en cours... Veuillez patienter
 +Aucune mise à jour n’est disponible.
 +Version du noyau : 5.10.102.1</​code>​
 +
 +  * ''​wsl --status''​ will display again the kernel version if you already have WSL 2, but **will display a link to the WSL installation page if you are running WSL 1**: https://​aka.ms/​wsl2-install
 +    * <​code>​PS C:​\Users\jypeter>​ wsl --status
 +Distribution par défaut : Ubuntu
 +Version par défaut : 2
 +Activez la fonctionnalité Windows de plateforme de machine virtuelle et assurez-vous que la virtualisation est activée dans le BIOS.
 +Pour plus d’informations,​ rendez-vous sur https://​aka.ms/​wsl2-install</​code>​
 +
 +
 +=== Prerequisites ===
 +
 +  * If WSL 1 is already running, you should have no problem with the [[other:​win10wsl#​prerequisites|disk and memory requirements]]
 +  * For WSL 2, you also need to meet the [[other:​win10wsl#​hyper-v_requirements|Hyper-V requirements]]
 +
 +=== Upgrading WSL ===
 +
 +
 +[[https://​docs.microsoft.com/​en-us/​windows/​wsl/​install-manual#​step-3---enable-virtual-machine-feature|Activate the Virtual Machine Platform]] (just the //Step 3// instructions) and **reboot the computer**
 +
 +After rebooting, go back to the [[other:​win10wsl#​determining_which_version_of_wsl_is_installed|Determining which version of WSL is installed]] section above, and check that you are now using WSL 2
 +
 +==== Potentially useful stuff ====
  
   * Determining from **inside** the running Linux if you are using WSL (or another type of virtual machine)\\ <​code>​$ systemd-detect-virt   * Determining from **inside** the running Linux if you are using WSL (or another type of virtual machine)\\ <​code>​$ systemd-detect-virt
-wsl</​code>​+wsl 
 + 
 +$ env | grep -i wsl 
 +WSL_DISTRO_NAME=Ubuntu 
 +WSLENV= 
 +</​code>​
  
 ===== Other WSL resources and links ===== ===== Other WSL resources and links =====
 +
 +  * Possibly useful things to sort
 +    * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​networking|Accessing network applications with WSL]]
 +    * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​faq#​how-do-i-run-an-openssh-server-|How do I run an OpenSSH server?]]
  
   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​release-notes|Release Notes for Windows Subsystem for Linux]]   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​release-notes|Release Notes for Windows Subsystem for Linux]]
  
 +  * [[https://​www.phoronix.com/​search/​WSL|WSL performance benchmarks @ phoronix]]
 +
 +  * [[https://​craigloewen-msft.github.io/​WSLTipsAndTricks/​|WSL Tips and Tricks]]
   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​faq|Frequently Asked Questions]]   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​faq|Frequently Asked Questions]]
   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​troubleshooting|Troubleshooting]]   * [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​troubleshooting|Troubleshooting]]
other/win10wsl.txt · Last modified: 2023/12/06 13:24 by jypeter