This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
other:win10wsl [2022/09/07 15:13] jypeter [Base installation] Added screenshots of installed Ubuntu in MS Store and app list |
other:win10wsl [2022/09/16 09:20] jypeter [Package management] Started rewriting |
||
---|---|---|---|
Line 45: | Line 45: | ||
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 installed, there 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 a [[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 238: | Line 238: | ||
* {{ :other:ubuntu_applications.png?direct&400 |}} | * {{ :other:ubuntu_applications.png?direct&400 |}} | ||
- | * Get some basic information about your new ''Ubuntu'' installation | + | * Get some information about your new ''Ubuntu'' installation |
- | * <code>stdu@sadira034:~$ lsb_release -a | + | * <code>$ lsb_release -d |
- | No LSB modules are available. | + | Description: Ubuntu 20.04.5 LTS</code> |
- | Distributor ID: Ubuntu | + | * [[other:win10wsl#linux_version_installed|More information]] example |
- | Description: Ubuntu 20.04 LTS | + | * Disk usage example |
- | Release: 20.04 | + | * <code>$ df -h |
- | 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 | + | |
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 313: | Line 304: | ||
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 381: | Line 355: | ||
==== Opening a terminal ==== | ==== Opening a terminal ==== | ||
- | * Check the next sections to find out the different ways to open terminals | + | * Read the sub-sections below to find out the different ways to open //terminals// |
- | * Opening the first terminal will start WSL+Ubuntu | + | * 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 | ||
Line 389: | Line 364: | ||
=== 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 v2, get 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 a ''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 | + | [[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!** |
- | * ''U''=>''Ubuntu terminal'' and ''W''=>''WSL Terminal'' in the ''Start'' menu | + | |
- | * There is also a ''W''=>''WSLtty'' folder, than you don't really need | + | * 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.WSLtty] Version 3.6.0 | ||
+ | [...] | ||
+ | Installé correctement</code> | ||
+ | |||
+ | * After installing WSLtty, you will get **several new ways to open a terminal**: | ||
+ | * **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 | * 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 | * 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 | * 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) | + | * Extra [[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]] | + | === The Windows Terminal === |
- | 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 request: add xterm-style select/copy/paste options]] | + | 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]]) |
- | * [[https://aka.ms/terminal|Getting the Windows Terminal from the Microsoft Store]] | ||
- | * [[https://docs.microsoft.com/en-us/windows/terminal/|Documentation]] | ||
=== Terminals started from Linux === | === Terminals started from Linux === | ||
- | 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! | + | You can install additional //graphical// terminals inside the Linux running in WSL, 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! |
== xterm == | == xterm == | ||
Line 450: | Line 436: | ||
* Start from another terminal with: ''xfce4-terminal &'' | * Start from another terminal with: ''xfce4-terminal &'' | ||
- | ==== 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 473: | Line 454: | ||
<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 487: | Line 464: | ||
* 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.4 LTS | + | Description: Ubuntu 20.04.5 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 Binutils) 2.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 520: | Line 525: | ||
- | $ 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 530: | Line 535: | ||
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 546: | Line 554: | ||
===== 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 ==== | ||
+ | |||
+ | === How does it work ? === | ||
+ | |||
+ | * **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]] | ||
+ | |||
+ | * 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]] | ||
[[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 | [[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 | ||
Line 1032: | Line 1069: | ||
NAME STATE VERSION | NAME STATE VERSION | ||
* Ubuntu Running 2</code> | * Ubuntu Running 2</code> | ||
- | * [[other:win10wsl#rebooting_wsl|Stop WSL+Linux]] | + | * [[other:win10wsl#rebooting_wsl|Stop all running installations]] |
* <code>> wsl --shutdown | * <code>> wsl --shutdown | ||
Line 1038: | Line 1075: | ||
NAME STATE VERSION | NAME STATE VERSION | ||
* Ubuntu Stopped 2</code> | * Ubuntu 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 | ||
* 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-08-29.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 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-08-29.tar |
+ | 1.4G Aug 29 17:49 /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-08-29.tar | + | $ gzip /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.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</code> | ||
=== Backup of specific directories === | === Backup of specific directories === | ||
Line 1056: | Line 1097: | ||
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'' or ''c:\Scratch\your_login'') |
* <code bash>$ cd /home | * <code bash>$ cd /home | ||
$ du -sh $USER | $ du -sh $USER | ||
- | 232K <your_login> | + | 232K 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/ directory |
- | # It's a WINDOWS directory C:\Scratch\<your_login> | + | # It's a WINDOWS directory C:\Scratch\your_login |
$ tar cfz /mnt/c/Scratch/$USER/${USER}_home_`date +%y%m%d_%H%M`.tgz $USER | $ tar cfz /mnt/c/Scratch/$USER/${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 -ltr /mnt/c/Scratch/$USER/${USER}_*.tgz | ||
- | 81K Jan 21 2020 /mnt/c/Scratch/<your_login>/<your_login>_home_200121.tgz | + | 81K Jan 21 2020 /mnt/c/Scratch/your_login/your_login_home_200121.tgz |
- | 93K Aug 22 2020 /mnt/c/Scratch/<your_login>/<your_login>_home_200822_1151.tgz | + | 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> | + | 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 1239: | Line 1280: | ||
* 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]] |