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/08/29 15:21] jypeter [Ubuntu packages installed] Updated |
other:win10wsl [2022/09/05 15:45] jypeter [Other WSL resources and links] Added link to Tips and Tricks |
||
---|---|---|---|
Line 3: | Line 3: | ||
[[other:index#windows_10_notes|Other Windows 10 related notes]] | [[other:index#windows_10_notes|Other Windows 10 related notes]] | ||
- | <note warning> | + | <WRAP center round important 60%> |
* What is described on this page was tested with [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions#whats-new-in-wsl-2|WSL 2]].\\ **WSL 2** is available in [[https://docs.microsoft.com/en-us/windows/wsl/install-manual#step-2---check-requirements-for-running-wsl-2|Windows 11 or Windows 10, Version 1903, Build 18362 or later]] | * What is described on this page was tested with [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions#whats-new-in-wsl-2|WSL 2]].\\ **WSL 2** is available in [[https://docs.microsoft.com/en-us/windows/wsl/install-manual#step-2---check-requirements-for-running-wsl-2|Windows 11 or Windows 10, Version 1903, Build 18362 or later]] | ||
- | * You can also check JYP's [[other:win10_wsl_1|original WSL 1 instructions]] | + | * You can also check JYP's [[other:win10_wsl_1|original WSL 1 instructions]] |
+ | * ...but even **if you need WSL 1, you should use this page for installing WSL, and then switch to WSL 1** with [[https://docs.microsoft.com/en-us/windows/wsl/basic-commands#set-default-wsl-version|--set-default-version]] or [[https://docs.microsoft.com/en-us/windows/wsl/basic-commands#set-wsl-version-to-1-or-2|--set-version]] | ||
* The user can choose to install Linux using **WSL 1 or WSL 2** | * The user can choose to install Linux using **WSL 1 or WSL 2** | ||
* **WSL 2 should be your default choice** | * **WSL 2 should be your default choice** | ||
* If you have doubts, check the [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions|differences between WSL1 and WSL2]] and read [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions#exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]] before choosing | * If you have doubts, check the [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions|differences between WSL1 and WSL2]] and read [[https://docs.microsoft.com/en-us/windows/wsl/compare-versions#exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]] before choosing | ||
- | </note> | + | </WRAP> |
+ | |||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | The commands on this page have to be typed: | ||
+ | * either in **Windows PowerShell terminals** | ||
+ | * or in **bash terminals running in WSL** | ||
+ | It should be clear enough which type of terminal you have to use | ||
+ | </WRAP> | ||
Line 35: | Line 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: | ||
- | * Install the [[other:win10apps#windows_terminal|Windows terminal]], because it will be one of the ways to open ''Ubuntu'' terminals, once ''Ubuntu'' is installed | + | * 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 |
- | * Know how to use copy-paste in a Powershell FIXME | + | * **Know how to use copy-paste** in: |
- | * It will be useful to be able to [[other:win10config#displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files]] | + | * a //Windows Terminal//: [[https://docs.microsoft.com/en-us/windows/terminal/selection|Selecting text in Windows Terminal]] |
- | * Have at least some basic knowledge of Linux... | + | * an old ''cmd'' command prompt or a //PowerShell//: FIXME |
+ | * It will be useful to **be able to [[other:win10config#displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files]]** | ||
+ | * **Have some basic knowledge of Linux**... | ||
* Get some [[other:newppl:starting#useful_documentation_for_beginners|basic Linux documentation]] if required | * Get some [[other:newppl:starting#useful_documentation_for_beginners|basic Linux documentation]] if required | ||
==== Computer CPU and memory ==== | ==== Computer CPU and memory ==== | ||
Line 127: | Line 139: | ||
* Disk size after upgrading to //Ubuntu 20.04.4 LTS// with ''sudo apt update && sudo apt upgrade''\\ ''-rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx'' | * Disk size after upgrading to //Ubuntu 20.04.4 LTS// with ''sudo apt update && sudo apt upgrade''\\ ''-rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx'' | ||
+ | * Size of the [[other:win10wsl#creating_a_backup_of_the_linux_running_in_wsl|backup tar file]] of this installation, generated with ''%%wsl --export%%'': ~1.4 Gb | ||
==== Hyper-V requirements ==== | ==== Hyper-V requirements ==== | ||
Line 538: | Line 551: | ||
en_US.UTF8 | en_US.UTF8 | ||
</code> | </code> | ||
+ | |||
+ | |||
==== Package management ==== | ==== Package management ==== | ||
Line 546: | Line 561: | ||
* Install the **synaptic** package manager: ''aptitude install synaptic'' | * Install the **synaptic** package manager: ''aptitude install synaptic'' | ||
* [[https://doc.ubuntu-fr.org/synaptic|details]] (fr) | * [[https://doc.ubuntu-fr.org/synaptic|details]] (fr) | ||
+ | |||
=== Useful commands === | === Useful commands === | ||
Line 552: | Line 568: | ||
* ''dpkg -L package_name'': list files installed from ''package_name'' | * ''dpkg -L package_name'': list files installed from ''package_name'' | ||
* ''dpkg -S path/command'': name of the package used to install ''path/command'' | * ''dpkg -S path/command'': name of the package used to install ''path/command'' | ||
+ | |||
=== Example === | === Example === | ||
Line 721: | Line 738: | ||
* [[https://linoxide.com/how-to-clear-apt-cache/|How to Clear Apt Cache]] | * [[https://linoxide.com/how-to-clear-apt-cache/|How to Clear Apt Cache]] | ||
+ | |||
+ | |||
===== Advanced configuration ===== | ===== Advanced configuration ===== | ||
Line 945: | Line 964: | ||
* [[https://github.com/Microsoft/WSL/issues/2636|Automount additonal filesystems from fstab]] | * [[https://github.com/Microsoft/WSL/issues/2636|Automount additonal filesystems from fstab]] | ||
* [[https://gist.github.com/sgtoj/f82990bcd9e89db49b84e2d2e70b281d|Ubuntu for Windows: Mounting C: Drive to WSL's Root]] | * [[https://gist.github.com/sgtoj/f82990bcd9e89db49b84e2d2e70b281d|Ubuntu for Windows: Mounting C: Drive to WSL's Root]] | ||
+ | |||
==== Rebooting WSL ==== | ==== Rebooting WSL ==== | ||
Line 963: | Line 983: | ||
- | ==== Creating a backup of the Linux running in WSL ==== | + | ===== Advanced usage ===== |
- | There are several types of WSL related directories that you may want to back up: | ||
- | * <wrap hi>Your Linux //home// directory</wrap> (''/home/<your_login>''), or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''): all these files are located in a [[other:win10wsl#location_of_the_files|hidden sub-directory of you Windows directory]], and the best way to save them is probably to **create a tar file from Linux**, and put this tar file in a specific Windows //WSL backup folder// (we will use below the directory ''/mnt/c/Scratch/<your_login>'' or ''c:\Scratch\<your_login>'') | + | ==== Creating a backup ==== |
+ | |||
+ | === Backup of a FULL Linux installation === | ||
+ | |||
+ | You can use ''wsl'' to [[https://docs.microsoft.com/en-us/windows/wsl/faq#how-can-i-back-up-my-wsl-distributions--or-move-them-from-one-drive-to-another-|save a full Linux installation]] to a //tar// file, that can be: | ||
+ | * used later for //restoring// the full installation | ||
+ | * used for //relocating// the full installation from ''C:\'' to another disk | ||
+ | |||
+ | Detailed [[https://docs.microsoft.com/en-us/windows/wsl/basic-commands#export-a-distribution-to-a-tar-file|--export]] example: | ||
+ | * Determine the name of the current Linux installation(s) used in WSL | ||
+ | * <code>> wsl --list --verbose | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Running 2</code> | ||
+ | * [[other:win10wsl#rebooting_wsl|Stop WSL+Linux]] | ||
+ | * <code>> wsl --shutdown | ||
+ | |||
+ | > wsl -l -v | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Stopped 2</code> | ||
+ | * 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 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%%'' | ||
+ | |||
+ | * If you are not going to use the backup tar file right away, you can optionally compress it in order to save some space | ||
+ | * <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 | ||
+ | |||
+ | $ ls -lh /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz | ||
+ | 549M Aug 29 17:49 /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz</code> | ||
+ | |||
+ | === Backup of specific directories === | ||
+ | |||
+ | You can also just create backups of specific directories: | ||
+ | |||
+ | * Your Linux //home// directory (''/home/<your_login>/''), or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''): the best way to save them is probably to **create a //tar// file from Linux**, and put this //tar// file in a specific Windows //WSL backup folder// (we will use below the directory ''/mnt/c/Scratch/<your_login>'' or ''c:\Scratch\<your_login>'') | ||
* <code bash>$ cd /home | * <code bash>$ cd /home | ||
Line 983: | Line 1039: | ||
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> | ||
- | * <wrap hi>Regular Windows folders</wrap> where you store data used by WSL: you can use ''tar'' in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:win10apps#backup_software|backup software]]) | + | * Regular Windows folders where you store data used by WSL: you can use ''tar'' in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:win10apps#backup_software|backup software]]) |
+ | * WARNING: there should not be performance issues using ''tar'' (from Linux) to make a backup of Windows files with WSL 1, but **WSL 2 is significantly slower than WSL 1 to access Windows files** ([[https://docs.microsoft.com/en-us/windows/wsl/compare-versions#exceptions-for-using-wsl-1-rather-than-wsl-2|Exceptions for using WSL 1 rather than WSL 2]]) | ||
- | * <wrap hi>The **full** Linux/Ubuntu installation</wrap> running in WSL (based on [[https://docs.microsoft.com/en-us/windows/wsl/faq#how-can-i-back-up-my-wsl-distros-or-move-them-from-one-drive-to-another|How can I back up my WSL distros?]]). The following steps will save the full installation in a tar file, that can be used later for restoring the full installation (//restoration// not tested yet) | ||
- | * Open a **Windows terminal** (preferably a //PowerShell// if you need easy copy/paste)\\ The //Windows// terminal is where you will type the ''wsl'' commands shown below | ||
- | * Determine the name of the current Linux installation used in WSL (and see if it is running, and using //WSL 1// or //WSL 2//) | ||
- | * <code>> wsl --list --all | ||
- | Distributions du sous-système Windows pour Linux : | ||
- | Ubuntu (par défaut) | ||
- | > wsl --list --verbose | + | ==== Restoring or relocating a Linux installation ==== |
- | NAME STATE VERSION | + | |
- | * Ubuntu Running 1</code> | + | |
- | * [[other:win10wsl#rebooting_wsl|Stop WSL+Linux]] | + | |
- | * <code>> wsl --list --verbose | + | |
- | NAME STATE VERSION | + | |
- | * Ubuntu Running 1 | + | |
- | > wsl --shutdown | + | 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. |
- | > wsl --list --verbose | + | Note: |
- | NAME STATE VERSION | + | * This is currently the only way of moving (relocating) a Linux installation to another disk than the default ''C:\'' location |
- | * Ubuntu Stopped 1</code> | + | * Importing will mostly put the ''ext4.vhdx'' file in the specified target location! |
- | * Export the current Linux to a //tar// file: | + | * 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 |
- | * <code> > wsl --export Ubuntu C:\Scratch\<your_login>\<your_login>_ubuntu-<ubuntu_version>-full_<some_date>.tar</code> | + | * 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. |
- | * You can optionally open a new terminal (this will start again WSL+Ubuntu) to get some information about the created file (size and number of saved files/directories), and compress it in order to save some disk space | + | |
- | * <code>$ cd /mnt/c/Scratch/<your_login> | + | |
- | $ ls -ltrh *ubuntu*tar* | + | Detailed [[https://docs.microsoft.com/en-us/windows/wsl/basic-commands#import-a-new-distribution|--import]] example: |
- | 976M Jan 21 2020 <your_login>_200121.tar.gz | + | |
- | 2.8G Aug 22 2020 <your_login>-16.04-full_200822.tar | + | |
- | 3.4G Feb 24 14:06 <your_login>-20-04-1-full_210224.tar | + | |
- | # Determine the number of files/directories in the backup | + | * We assume that we have an exported installation tar file available |
- | $ tar tvf <your_login>-20-04-1-full_210224.tar | wc -l | + | * 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'' |
- | 112711 | + | * 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'' | ||
+ | * Import the distribution, giving it a name that does not appear in ''wsl -l -v'' | ||
+ | * <code>> wsl -l -v | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Stopped 2 | ||
- | $ gzip *ubuntu*.tar | + | > wsl --import Ubuntu_custom D:\WSL_Distributions\Ubuntu_custom C:\Scratch\<your_login>\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz |
- | $ ls -ltrh *ubuntu*tar* | + | > wsl -l -v |
- | 976M Jan 21 2020 <your_login>_200121.tar.gz | + | NAME STATE VERSION |
- | 1.2G Aug 22 2020 <your_login>-16.04-full_200822.tar.gz | + | * Ubuntu Stopped 2 |
- | 1.8G Feb 24 14:06 <your_login>-20-04-1-full_210224.tar.gz | + | Ubuntu_custom Stopped 2</code> |
- | </code> | + | * After importing, there should be a new ''ext4.vhdx'' file in the previously empty ''D:\WSL_Distributions\Ubuntu_custom'' directory |
+ | * Start the imported ''Ubuntu_custom'' distribution | ||
+ | * Directly from the Windows Terminal pull-down menu | ||
+ | * Or from a PowerShell, using ''wsl --distribution Ubuntu_custom'' | ||
+ | * WARNING: even if the distribution we imported had an existing default ''stdu'' user, 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 | ||
+ | * 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 | ||
+ | * <code># cat /etc/wsl.conf | ||
+ | cat: /etc/wsl.conf: No such file or directory | ||
- | ==== Restoring a WSL backup ==== | + | # echo -e "[user]\ndefault=stdu" >> /etc/wsl.conf |
+ | |||
+ | # cat /etc/wsl.conf | ||
+ | [user] | ||
+ | default=stdu</code> | ||
+ | * Restart the Linux installation to take the new settings into account | ||
+ | * ''%%wsl --terminate Ubuntu_custom%%'' | ||
+ | * If you need the ''root'' account later, you will need to use the ''sudo'' command from the new default account | ||
+ | * <code>$ whoami | ||
+ | stdu | ||
+ | stdu@sadira034:~$ sudo su - | ||
+ | [sudo] password for stdu: | ||
+ | root@sadira034:~# whoami | ||
+ | root</code> | ||
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 | 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 | ||
Line 1043: | Line 1109: | ||
* Can we restore (//clone//) a backed up Linux distribution on another Windows 10 computer for another user? | * 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 | * 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 ==== | ==== Uninstalling WSL ==== | ||
- | Not too sure about this part... | + | 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 === | ||
+ | |||
+ | This process is called //unregistering// (based on [[https://docs.microsoft.com/en-us/windows/wsl/basic-commands#unregister-or-uninstall-a-linux-distribution|Unregister or uninstall a Linux distribution]]) | ||
+ | |||
+ | You just need to get the list of the currently installed Linux distributions, stop them and remove/unregister a specific distribution name | ||
+ | |||
+ | <code>> wsl -l -v | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Stopped 2 | ||
+ | Ubuntu_custom Running 2 | ||
+ | |||
+ | > wsl --terminate Ubuntu_custom | ||
+ | |||
+ | > wsl -l -v | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Stopped 2 | ||
+ | Ubuntu_custom Stopped 2 | ||
+ | |||
+ | > wsl --unregister Ubuntu_custom | ||
+ | Désinscription... | ||
+ | |||
+ | > wsl -l -v | ||
+ | NAME STATE VERSION | ||
+ | * Ubuntu Stopped 2</code> | ||
+ | |||
+ | |||
+ | === Removing WSL === | ||
+ | |||
+ | ''wsl'' is a part of the Windows system and probably can't be removed. | ||
+ | |||
+ | Anyway, when all existing Linux distributions are uninstalled, there should not be any big ''.vhdx'' files remaining (i.e. //no extra disk space used//), and there will not be any Linux processes running (i.e. //no extra CPU used//). | ||
- | * Make a backup of whatever you had in your Ubuntu home directory, and all the files and settings that are not in the ''/mnt'' directories | ||
- | * Find how to unregister Ubuntu on the [[https://docs.microsoft.com/en-us/windows/wsl/wsl-config|Manage and configure Windows Subsystem for Linux]] page | ||
- | * and then disable WSL??? | ||
===== Miscellaneous ===== | ===== Miscellaneous ===== | ||
Line 1101: | Line 1198: | ||
* [[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://craigloewen-msft.github.io/WSLTipsAndTricks/|WSL Tips and Tricks]] | ||
* [[https://docs.microsoft.com/en-us/windows/wsl/faq|Frequently Asked Questions]] | * [[https://docs.microsoft.com/en-us/windows/wsl/faq|Frequently Asked Questions]] | ||
* [[https://docs.microsoft.com/en-us/windows/wsl/troubleshooting|Troubleshooting]] | * [[https://docs.microsoft.com/en-us/windows/wsl/troubleshooting|Troubleshooting]] |