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/09/06 14:45]
jypeter [Base installation]
other:win10wsl [2023/12/06 13:24]
jypeter [Other WSL resources and links] Added phoronix benchmarks link
Line 2: Line 2:
  
 [[other:​index#​windows_10_notes|Other Windows 10 related notes]] [[other:​index#​windows_10_notes|Other Windows 10 related notes]]
 +
 +<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%> <WRAP center round important 60%>
Line 45: 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:
  
-  * Your should really ​**install ​the [[other:​win10apps#​windows_terminal|Windows terminal]]**, ​because it will be one of useful the ways to open ''​Ubuntu'' ​terminals, once ''​Ubuntu''​ is installed +  * **Install ​the [[other:​win10apps#​windows_terminal|Windows terminal]]** 
-  * **Know how to use copy-paste** in+    * Once //Ubuntu// is installedthere will be additional ​ways to open [[other:​win10wsl#​opening_a_terminal|Linux ​terminals]] 
-    * a //Windows Terminal//: [[https://docs.microsoft.com/en-us/windows/​terminal/​selection|Selecting text in Windows Terminal]] +  * **Know how to use copy-paste** in a //Windows Terminal//, a //PowerShell// or a ''​cmd'' ​interpreter 
-    * an old ''​cmd'' ​command prompt ​or a //​PowerShell//​FIXME +    * It should work more or less the same way everywhere as in [[other:win10apps#​windows_cmd_command_interpreter|cmd interpreter]] 
-  * It will be useful ​to **be able to [[other:​win10config#​displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files]]**+  * 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**...   * **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
Line 144: Line 149:
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-You can skip reading this WSL //​requirement//​ if you are installing WSL for the first time, and are therefor ​directly installing WSL 2+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 later if you have problems+Come back here later (only) ​if you have problems
 </​WRAP>​ </​WRAP>​
  
Line 167: Line 172:
     * <​code> ​                                           Virtualisation activée dans le microprogramme :​ Oui</​code>​     * <​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 206: 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\\ <wrap hi>Do not use an existing password!</​wrap> ​The security of the Linux running in WSL is weak by design, and somebody could easily extract your password information from a backup of your distribution+    * 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 234: 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 309: Line 316:
 Description: ​   Ubuntu 20.04.4 LTS Description: ​   Ubuntu 20.04.4 LTS
 Release: ​       20.04 Release: ​       20.04
-Codename: ​      focal +Codename: ​      ​focal</​code>​ 
- +    * [[other:​win10wsl#​linux_version_installed|More installed version information]]
-stdu@sadira034:/​usr/​lib/​wsl/​drivers$ cat /​etc/​*release* +
-DISTRIB_ID=Ubuntu +
-DISTRIB_RELEASE=20.04 +
-DISTRIB_CODENAME=focal +
-DISTRIB_DESCRIPTION="​Ubuntu 20.04.4 LTS" +
-NAME="​Ubuntu"​ +
-VERSION="​20.04.4 LTS (Focal Fossa)"​ +
-ID=ubuntu +
-ID_LIKE=debian +
-PRETTY_NAME="​Ubuntu 20.04.4 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>​+
     * [[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 363: 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 =====
  
Line 374: Line 367:
 ==== 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 ​==+
  
-  * Install with''​apt-get ​install ​xfce4-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!
-  ​Start from another terminal with''​xfce4-terminal &''​+
  
-==== Location of the files ====+  * ''​xterm''​ package 
 +  * ''​xfce4-terminal''​ package
  
-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.+==== Where are the files? ====
  
-=== Linux files seen from Windows ===+=== Accessing ​Linux files from 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]])+  * You can access the Linux files in ''/''​ from Windows by opening the //virtual// ''​\\wsl$''​ path in the Windows explorer
     * 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 466: 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 480: 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 ====
Line 513: Line 538:
  
  
-$ dpkg --list > /​mnt/​c/​Scratch/​jypeter/​Ubuntu_Installed_List_`date +"​%y-%m-%d"​`.txt +$ dpkg --list > /​mnt/​c/​Scratch/​your_login/​Ubuntu_Installed_List_`date +"​%y-%m-%d"​`.txt 
-$ wc -l /​mnt/​c/​Scratch/​jypeter/​Ubuntu_Installed_List_*.txt +$ wc -l /​mnt/​c/​Scratch/​your_login/​Ubuntu_Installed_List_*.txt 
-642 /​mnt/​c/​Scratch/​jypeter/​Ubuntu_Installed_List_22-08-29.txt</​code>​+642 /​mnt/​c/​Scratch/​your_login/​Ubuntu_Installed_List_22-08-29.txt</​code>​
  
 Full (example) list of installed packages: {{ :​other:​ubuntu_installed_list_22-08-29.txt |}} Full (example) list of installed packages: {{ :​other:​ubuntu_installed_list_22-08-29.txt |}}
Line 523: 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 539: 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)+
  
 +  * 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
  
-=== Useful ​commands ===+  * 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
Line 573: Line 664:
  
 <​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 588: 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 619: 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 676: 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 985: Line 1072:
 ===== Advanced usage ===== ===== Advanced usage =====
  
 +==== WSL security WARNING! ====
  
 +<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 ==== ==== Creating a backup ====
  
Line 997: Line 1110:
   * Determine the name of the current Linux installation(s) used in WSL   * Determine the name of the current Linux installation(s) used in WSL
     * <​code>>​ wsl --list --verbose     * <​code>>​ wsl --list --verbose
-  NAME      STATE           ​VERSION +  NAME             ​STATE           ​VERSION 
-Ubuntu ​   ​Running ​        ​2</​code>​ +Ubuntu_custom ​   ​Running ​        ​2</​code>​ 
-  * [[other:​win10wsl#​rebooting_wsl|Stop ​WSL+Linux]]+  * [[other:​win10wsl#​rebooting_wsl|Stop ​all running installations]]
       * <​code>>​ wsl --shutdown       * <​code>>​ wsl --shutdown
  
 > wsl -l -v > wsl -l -v
-  NAME      STATE           ​VERSION +  NAME             ​STATE           ​VERSION 
-Ubuntu ​   ​Stopped ​        ​2</​code>​+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:   * 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+    * 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     * 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-08-29.tar%%''​+    * Example: ''​%%wsl --export Ubuntu C:​\Scratch\your_login\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-10-27.tar%%''​
  
-    * If you are not going to use the backup ​tar file right away, you can optionally compress it in order to save some space +    * You can (probably) save a lot of space by compressing ​the backup 
-      * <​code>​$ ls -lh /​mnt/​c/​Scratch/​<your_login>/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar +      * 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! 
- 1.4G Aug 29 17:49 /​mnt/​c/​Scratch/​<your_login>/​WSL/​WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar+      * <​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-08-29.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_20.04.5_LTS_stdu_22-08-29.tar.gz +$ 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</​code>​+ 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 === === Backup of specific directories ===
Line 1023: Line 1142:
 You can also just create backups 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>''​ or ''​c:​\Scratch\<your_login>''​)+  * 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>​+
  
   * 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]])   * 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]])
Line 1045: Line 1162:
 ==== Restoring or relocating a Linux installation ==== ==== Restoring or relocating a Linux installation ====
  
-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.+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.
  
 Note:  Note: 
-  * This is currently the only way of moving (relocating) a Linux installation to another disk than the default ''​C:​\''​ location +  * This is currently the only way of **moving (//relocating//) a Linux installation** to another disk than the default ''​C:​\''​ location 
-  * Importing will mostly put the ''​ext4.vhdx''​ file in the specified target location! +  * //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 ''​vhdx''​ file will start growing (as needed) as soon as you use your installation +    * 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 
-  * This is an indirect way of reclaiming the unused space of a Linux installation, i.e the size of the ''​ext4.vhdx''​ file after importing can be smaller than the size of the originally exported ''​ext4.vhdx''​ file.+  * 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.
  
 Detailed [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​import-a-new-distribution|--import]] example: Detailed [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​basic-commands#​import-a-new-distribution|--import]] example:
  
-  * We assume that we have an exported installation tar file available+  * 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''​     * 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   * Create the directory where the Linux installation (mostly its ''​ext4.vhdx''​ file) will be restored
-    * Hint: use an explicit directory path and name using the name of the distribution that will be restored\\ e.g. ''​D:​\WSL_Distributions\Ubuntu_custom''​ +    * Hint: choose ​an explicit directory path and nameusing 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 name that does not appear in ''​wsl -l -v''​+  * Import the distribution,​ giving it a unique ​name (that does not appear ​already ​in ''​wsl -l -v''​)
     * <​code>>​ wsl -l -v     * <​code>>​ wsl -l -v
   NAME      STATE           ​VERSION   NAME      STATE           ​VERSION
Line 1072: Line 1190:
     * After importing, there should be a new ''​ext4.vhdx''​ file in the previously empty ''​D:​\WSL_Distributions\Ubuntu_custom''​ directory     * 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   * Start the imported ''​Ubuntu_custom''​ distribution
-    * Directly from the Windows Terminal pull-down menu +    * Select ''​Ubuntu_custom''​ in the Windows Terminal pull-down menu 
-    * Or from a PowerShell, using ''​wsl --distribution Ubuntu_custom''​ +    * Or specify ''​Ubuntu_custom''​ in a PowerShell, using:\\ ''​%%wsl --distribution ​Ubuntu_custom%%''​\\ or ''​wsl -d Ubuntu_custom''​ 
-    * WARNING: even if the distribution we imported had an existing default ''​stdu'' ​user, the //new// default user will be ''​root''​ ! +    * 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 default user\\ wsl --distribution Ubuntu_custom --user stdu +      * 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%%''​ 
-  * Specify ​a 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'' ​here) to the [[https://​docs.microsoft.com/​en-us/​windows/​wsl/​wsl-config#​user-settings|/​etc/​wsl.conf]] file+      * You can easily open a ''​root''​ session with\\ ''​%%wsl -d Ubuntu_custom -u root%%''​ 
 +  * Select ​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     * <​code>#​ cat /​etc/​wsl.conf
 cat: /​etc/​wsl.conf:​ No such file or directory cat: /​etc/​wsl.conf:​ No such file or directory
Line 1087: Line 1206:
     * Restart the Linux installation to take the new settings into account     * Restart the Linux installation to take the new settings into account
       * ''​%%wsl ​ --terminate Ubuntu_custom%%''​       * ''​%%wsl ​ --terminate Ubuntu_custom%%''​
-    * If you need the ''​root''​ account later, you will need to use the ''​sudo''​ command from the new default account+    * 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       * <​code>​$ whoami
 stdu stdu
Line 1094: Line 1213:
 root@sadira034:​~#​ whoami root@sadira034:​~#​ whoami
 root</​code>​ 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
  
-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+Questions ​FIXME 
 +  * Is it possible ​to restore ​to the default location (on ''​C:\''​) ? 
 +==== Uninstalling ​WSL or a distribution ====
  
-FIXME Check if [[https://wslhub.com/|WSL Manager]] is maintained and can be useful +Before uninstalling ​//something//, you probably want to [[other:win10wsl#creating_a_backup|create ​backup]], just to be safe...
- +
-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: +
-  * ''​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 ​distribution]])? +
-    * If we use a new distribution nameit 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 ==== +
- +
-Before starting, you may want to 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+
  
 === Removing a specific Linux installation === === Removing a specific Linux installation ===
Line 1140: Line 1246:
 * Ubuntu ​          ​Stopped ​        ​2</​code>​ * 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 === === Removing WSL ===
Line 1192: Line 1323:
  
   * 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://​craigloewen-msft.github.io/​WSLTipsAndTricks/​|WSL Tips and Tricks]]
other/win10wsl.txt · Last modified: 2023/12/06 13:24 by jypeter