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/25 15:05] jypeter [The basics before starting] |
other:win10wsl [2022/08/31 13:29] jypeter [Restoring or relocating a Linux installation] Started improving |
||
---|---|---|---|
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 |
- | * It will be useful to be able to [[other:win10config#displaying_hidden_folders_and_files_and_the_files_extension|see hidden folders and files]] | + | * **Know how to use copy-paste** in: |
- | * Have at least some basic knowledge of Linux... | + | * a //Windows Terminal//: [[https://docs.microsoft.com/en-us/windows/terminal/selection|Selecting text in Windows Terminal]] |
+ | * 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 58: | Line 71: | ||
* => We should **start with at least 10 Gb of free space on ''C:\''** (but more space is always better and safer) | * => We should **start with at least 10 Gb of free space on ''C:\''** (but more space is always better and safer) | ||
* The initial installation will not use much space (2-3 Gb), but we always need space on ''C:\'' for other applications and Windows maintenance (temporary files, updates, ...) | * The initial installation will not use much space (2-3 Gb), but we always need space on ''C:\'' for other applications and Windows maintenance (temporary files, updates, ...) | ||
+ | |||
+ | <WRAP center round alert 60%> | ||
+ | FIXME The rather technical //Disk usage// sections below should be moved somewhere else! | ||
+ | </WRAP> | ||
+ | |||
=== How does it work? === | === How does it work? === | ||
Line 69: | Line 87: | ||
* [[https://docs.microsoft.com/en-us/powershell/module/hyper-v/optimize-vhd?view=windowsserver2019-ps|Optimize-VHD]] | * [[https://docs.microsoft.com/en-us/powershell/module/hyper-v/optimize-vhd?view=windowsserver2019-ps|Optimize-VHD]] | ||
- | <code>stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx | + | === Disks seen from Linux === |
- | -rwxrwxrwx 1 root root 63M Aug 24 14:52 /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx | + | |
- | stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx | + | The disks and partitions usage, as seen from Linux, can be displayed with ''df -h'' |
- | -rwxrwxrwx 1 root root 1.2G Aug 24 15:20 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx | + | |
- | stdu@sadira034:~$ sudo apt update && sudo apt upgrade | + | <code>stdu@sadira034:~$ df -h |
- | [sudo] password for stdu: | + | Filesystem Size Used Avail Use% Mounted on |
- | Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] | + | /dev/sdb 251G 1.5G 237G 1% / |
- | Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB] | + | tmpfs 6.2G 0 6.2G 0% /mnt/wsl |
- | [...] | + | tools 472G 118G 355G 25% /init |
- | 278 upgraded, 32 newly installed, 0 to remove and 0 not upgraded. | + | none 6.2G 0 6.2G 0% /dev |
- | Need to get 174 MB of archives. | + | none 6.2G 8.0K 6.2G 1% /run |
- | After this operation, 305 MB of additional disk space will be used. | + | none 6.2G 0 6.2G 0% /run/lock |
- | Do you want to continue? [Y/n] Y | + | none 6.2G 0 6.2G 0% /run/shm |
- | [...] | + | none 6.2G 0 6.2G 0% /run/user |
- | + | tmpfs 6.2G 0 6.2G 0% /sys/fs/cgroup | |
- | stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx | + | drivers 472G 118G 355G 25% /usr/lib/wsl/drivers |
- | -rwxrwxrwx 1 root root 63M Aug 24 14:52 /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx | + | lib 472G 118G 355G 25% /usr/lib/wsl/lib |
+ | C:\ 472G 118G 355G 25% /mnt/c | ||
+ | D:\ 480G 2.6G 478G 1% /mnt/d</code> | ||
- | stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx | + | * The ''251G'' //Size// of ''/'' depends on the [[https://docs.microsoft.com/en-us/windows/wsl/vhd-size|256G default size]] of the growing virtual disk where Linux is installed |
- | -rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx | + | * The ''/mnt/c'' and ''/mnt/d'' are the way to access the Windows ''C:'' and ''D:'' disks from Linux, and their //Size// is the actual size of the Windows disks |
- | </code> | + | * Some //Filesystems// like ''drivers'' are actually Windows file systems! |
- | + | * <code>stdu@sadira034:/usr/lib/wsl/drivers$ du -sh /usr/lib/wsl/drivers | |
- | <code>stdu@sadira034:/usr/lib/wsl/drivers$ df -h | grep drivers | + | |
- | drivers 472G 116G 356G 25% /usr/lib/wsl/drivers | + | |
- | + | ||
- | stdu@sadira034:/usr/lib/wsl/drivers$ du -sh /usr/lib/wsl/drivers | + | |
9.1G /usr/lib/wsl/drivers | 9.1G /usr/lib/wsl/drivers | ||
Line 102: | Line 116: | ||
9.1G /mnt/c/Windows/System32/DriverStore/</code> | 9.1G /mnt/c/Windows/System32/DriverStore/</code> | ||
- | FIXME | ||
- | * //Enough// space on ''C:\''. Microsoft instructions say //The Windows Subsystem for Linux only runs on your system drive (usually this is your C: drive)// | + | === Some important disk locations === |
- | * Exporting a //simple// Ubuntu configuration (after doing everything from //Base installation// to //Advanced configuration// below) with the [[other:win10wsl#creating_a_backup_of_the_linux_running_in_wsl|wsl --export]] command generated a 2.7 Gb tar file (uncompressed), so it's probably good to **start with at least 3 Gb of free space on ''C:\''** (and you always need to keep enough free space on ''C:\'' for regular Windows operation) | + | |
- | * The Linux ''/'' and ''/home'' partitions will always be on ''C:'', but the data files can be on any Windows disk/partition (or external drive) of the computer | + | * Accessing **Windows files from Linux**: ''/mnt/''\\ e.g ''C:\'' is available in ''/mnt/c'' |
- | * the Windows partitions will be available and accessible in ''/mnt/'', so you can store data on other partitions (e.g. the content of the Windows ''D:\'' partition will be available in ''/mnt/d'' in Linux) | + | |
- | * The files will be installed in **hidden partitions of the current user's directory on ''C:\''**: e.g. ''C:\Users\<your_login>''. Other users of the same Windows 10 computer would have to install Ubuntu again, in their own user directory | + | * Accessing **Linux files from the Windows Explorer**: ''\\wsl$'' |
- | * Checking the properties of ''C:\Users\<your_login>'' will **not** report an accurate size and number of files, because lots of files and directories are hidden! On the test laptop, the reported size of the user backed up directory (with [[other:win10apps#syncbackfree|SyncBackFree]]) was ~20 Gb (user data, WSL+Ubuntu, custom install of the CDAT 8.1 python distribution) | + | |
- | * Be sure to monitor the remaining free space on ''C:''! | + | * WSL+Ubuntu installation: |
- | * Note: it seems that [[other:win10wsl#restoring_a_wsl_backup|wsl --import]] can restore a backed-up Linux to a user specified location. Maybe this can be used for moving Ubuntu... | + | * Main directory: ''C:\Users\your_login\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc'' |
- | * Check [[https://github.com/MicrosoftDocs/WSL/issues/412|how to move the vhdx of wsl2 to other disk]] and [[https://github.com/microsoft/WSL/issues/4320|[WSL 2] move VHD File]] for relocating a WSL (1 or 2) installation if you don't have enough space on ''C:'' | + | * //vhdx// file: ''C:\Users\jypeter\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx'' |
+ | * <code>stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx | ||
+ | -rwxrwxrwx 1 root root 1.2G Aug 24 15:20 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx</code> | ||
+ | |||
+ | * Linux //swap// (virtual memory) file: | ||
+ | * <code>stdu@sadira034:~$ ls -lh /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx | ||
+ | -rwxrwxrwx 1 root root 63M Aug 24 14:52 /mnt/c/Users/jypeter/AppData/Local/Temp/swap.vhdx</code> | ||
+ | |||
+ | |||
+ | === Sample disk usage === | ||
+ | |||
+ | * Disk size after the initial installation of //Ubuntu 20.04 LTS//\\ ''-rwxrwxrwx 1 root root 1.2G Aug 24 15:20 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx'' | ||
+ | |||
+ | * Disk size after upgrading to //Ubuntu 20.04.4 LTS// with ''sudo apt update && sudo apt upgrade''\\ ''-rwxrwxrwx 1 root root 2.6G Aug 24 15:24 /mnt/c/Users/jypeter/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/ext4.vhdx'' | ||
+ | * Size of the [[other:win10wsl#creating_a_backup_of_the_linux_running_in_wsl|backup tar file]] of this installation, generated with ''%%wsl --export%%'': ~1.4 Gb | ||
+ | |||
+ | ==== Hyper-V requirements ==== | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | You can skip reading this WSL //requirement// if you are installing WSL for the first time, and are therefor directly installing WSL 2 | ||
+ | |||
+ | Come back later if you have problems | ||
+ | </WRAP> | ||
+ | |||
+ | |||
+ | WSL 2 needs the //Virtual Machine Platform// to be enabled on your computer. If you have never used WSL before, you can probably go directly to the [[other:win10wsl#base_installation|Base installation]] section and ''wsl'' should install everything correctly | ||
+ | |||
+ | If you have problems (e.g. [[https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#error-0x80370102-the-virtual-machine-could-not-be-started-because-a-required-feature-is-not-installed|The virtual machine could not be started because a required feature is not installed]]), or if you are updating WSL 1 to WSL 2, type ''systeminfo'' in a PowerShell to check if your machine meets the [[https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-requirements?source=recommendations#verify-hardware-compatibility|Hyper-V requirements]] | ||
+ | |||
+ | If you get a ''No'' for one of the ''Hyper-V requirements'', check the //virtualization// settings in your [[other:bios#entering_the_bios|computer BIOS]].\\ You can have a look at the [[https://en.wikipedia.org/wiki/X86_virtualization|x86 virtualization]] wikipedia page if you are wondering what ''VT-x'' and ''VT-d'' means for //Intel// processors (''AMD-v'' and ''AMD IOMMU'' for //AMD//) | ||
+ | |||
+ | Example: HP laptop with an **Intel** CPU, and **virtualization not activated in the BIOS** | ||
+ | * //Hyper-V// section of the ''systeminfo'' output | ||
+ | * <code>Configuration requise pour Hyper-V: Extensions de mode du moniteur d’ordinateur virtuel : Oui | ||
+ | Virtualisation activée dans le microprogramme : Non | ||
+ | Traduction d’adresse de second niveau : Oui | ||
+ | Prévention de l’exécution des données disponible : Oui</code> | ||
+ | * //Virtualization// section of the [[other:bios#entering_the_bios|HP BIOS]]: you need to **enable ''Virtualization Technology (VTx)'' and ''Virtualization Technology for Directed I/O (VTd)''** in the BIOS, save the settings and finish booting | ||
+ | * {{ :other:hp_bios_vtx_vtd.png?direct&600 |}} | ||
+ | * //Hyper-V// section of the ''systeminfo'' output with **virtualization activated in the BIOS** (after activation and reboot) | ||
+ | * <code> Virtualisation activée dans le microprogramme : Oui</code> | ||
===== Base installation ===== | ===== Base installation ===== | ||
Line 256: | Line 309: | ||
Description: Ubuntu 20.04.4 LTS | Description: Ubuntu 20.04.4 LTS | ||
Release: 20.04 | Release: 20.04 | ||
- | Codename: focal</code> | + | Codename: focal |
+ | |||
+ | 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 294: | Line 365: | ||
===== After the base installation ===== | ===== After the base installation ===== | ||
- | Once you have completed the base installation steps, you'll get a Ubuntu machine, with a //root// and user account (pre-configured to use ''sudo'' for commands that need root access) and lots of pre-installed applications (but no graphics). | + | After completing the base installation steps, you get a //Ubuntu// machine with: |
+ | * a //root// and //user// account | ||
+ | * the //user// account is pre-configured to use ''sudo'' for commands that need root access | ||
+ | * pre-installed base Linux applications | ||
+ | * **no** graphics | ||
+ | * enough to play a bit with a Linux computer and test that the installation is working, but not enough to do some real work | ||
==== Opening a terminal ==== | ==== Opening a terminal ==== | ||
Line 424: | Line 500: | ||
==== Ubuntu packages installed ==== | ==== Ubuntu packages installed ==== | ||
- | <code>$ dpkg --list | + | <code>$ dpkg --list | head -n 10 |
Desired=Unknown/Install/Remove/Purge/Hold | Desired=Unknown/Install/Remove/Purge/Hold | ||
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend | | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend | ||
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) | |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) | ||
- | ||/ Name Version Architecture Description | + | ||/ Name Version Architecture Description |
- | +++-=====================-===============-===============-================================================ | + | +++-==============================-=================================-============-=============================================================================== |
- | ii accountsservice 0.6.45-1ubuntu1 amd64 query and manipulate user account information | + | ii accountsservice 0.6.55-0ubuntu12~20.04.5 amd64 query and manipulate user account information |
- | ii acl 2.2.52-3build1 amd64 Access control list utilities | + | ii adduser 3.118ubuntu2 all add and remove users and groups |
- | ii acpid 1:2.0.28-1ubunt amd64 Advanced Configuration and Power Interface event | + | ii alsa-topology-conf 1.2.2-1 all ALSA topology configuration files |
- | ii adduser 3.116ubuntu1 all add and remove users and groups | + | ii alsa-ucm-conf 1.2.2-1ubuntu0.13 all ALSA Use Case Manager configuration files |
- | + | ii apparmor 2.13.3-7ubuntu5.1 amd64 user-space parser utility for AppArmor | |
- | [...] | + | |
- | ii xterm 330-1ubuntu2 amd64 X terminal emulator | + | |
- | ii xxd 2:8.0.1453-1ubu amd64 tool to make (or reverse) a hex dump | + | |
- | ii xz-utils 5.2.2-1.3 amd64 XZ-format compression utilities | + | |
- | ii zerofree 1.0.4-1 amd64 zero free blocks from ext2, ext3 and ext4 file-s | + | |
- | ii zlib1g:amd64 1:1.2.11.dfsg-0 amd64 compression library - runtime | + | |
- | $ dpkg --list > /mnt/c/Scratch/jyp/pkg_initial_201601.txt | + | $ dpkg --list > /mnt/c/Scratch/jypeter/Ubuntu_Installed_List_`date +"%y-%m-%d"`.txt |
- | $ wc -l /mnt/c/Scratch/jyp/pkg_initial_201601.txt | + | $ wc -l /mnt/c/Scratch/jypeter/Ubuntu_Installed_List_*.txt |
- | 628 /mnt/c/Scratch/jypeter/pkg_initial_201601.txt</code> | + | 642 /mnt/c/Scratch/jypeter/Ubuntu_Installed_List_22-08-29.txt</code> |
- | Full (example) list of installed packages: {{:other:pkg_initial_201601.txt|pkg_initial_201601.txt}} | + | Full (example) list of installed packages: {{ :other:ubuntu_installed_list_22-08-29.txt |}} |
==== Update ubuntu ==== | ==== Update ubuntu ==== | ||
Line 481: | Line 551: | ||
en_US.UTF8 | en_US.UTF8 | ||
</code> | </code> | ||
+ | |||
+ | |||
==== Package management ==== | ==== Package management ==== | ||
Line 489: | 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 495: | 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 664: | 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 888: | 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 906: | 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>Add compression example here</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 926: | Line 1033: | ||
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* | ||
- | 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 | ||
- | $ tar tvf <your_login>-20-04-1-full_210224.tar | wc -l | ||
- | 112711 | ||
- | |||
- | $ gzip *ubuntu*.tar | ||
- | |||
- | $ ls -ltrh *ubuntu*tar* | ||
- | 976M Jan 21 2020 <your_login>_200121.tar.gz | ||
- | 1.2G Aug 22 2020 <your_login>-16.04-full_200822.tar.gz | ||
- | 1.8G Feb 24 14:06 <your_login>-20-04-1-full_210224.tar.gz | ||
- | </code> | ||
- | |||
- | ==== Restoring a WSL backup ==== | ||
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 986: | Line 1062: | ||
* 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 ===== | ||
+ | |||
+ | ==== Upgrading WSL 1 to WSL 2 ==== | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | You will be able to run existing WSL 1 installations with WSL 2, so upgrading should not be a problem! | ||
+ | </WRAP> | ||
+ | |||
+ | |||
+ | === Determining which version of WSL is installed === | ||
+ | |||
+ | If you have never used WSL on a computer, WSL 2 will be installed directly when you follow the [[other:win10wsl#base_installation|Base installation]] steps | ||
+ | |||
+ | You can determine if your installed Linux distributions are running on WSL 1 or WSL 2 by typing ''wsl -l -v'' in a PowerShell, but if you are not sure if you are currently using WSL 1 or WSL 2 for running Linux, you can check if [[https://github.com/MicrosoftDocs/WSL/issues/1599|Is there an easy (PowerShell?) way to get more information about WSL?]] has been answered, or make the following checks | ||
+ | |||
+ | * ''wsl --update'' will give the same output (i.e. the installed Linux kernel version) for both WSL 1 and WSL 2 | ||
+ | * <code>PS C:\Users\jypeter> wsl --update | ||
+ | Recherche de mises à jour en cours... Veuillez patienter | ||
+ | Aucune mise à jour n’est disponible. | ||
+ | Version du noyau : 5.10.102.1</code> | ||
+ | |||
+ | * ''wsl --status'' will display again the kernel version if you already have WSL 2, but **will display a link to the WSL installation page if you are running WSL 1**: https://aka.ms/wsl2-install | ||
+ | * <code>PS C:\Users\jypeter> wsl --status | ||
+ | Distribution par défaut : Ubuntu | ||
+ | Version par défaut : 2 | ||
+ | Activez la fonctionnalité Windows de plateforme de machine virtuelle et assurez-vous que la virtualisation est activée dans le BIOS. | ||
+ | Pour plus d’informations, rendez-vous sur https://aka.ms/wsl2-install</code> | ||
+ | |||
+ | |||
+ | === Prerequisites === | ||
+ | |||
+ | * If WSL 1 is already running, you should have no problem with the [[other:win10wsl#prerequisites|disk and memory requirements]] | ||
+ | * For WSL 2, you also need to meet the [[other:win10wsl#hyper-v_requirements|Hyper-V requirements]] | ||
+ | |||
+ | === Upgrading WSL === | ||
+ | |||
+ | |||
+ | [[https://docs.microsoft.com/en-us/windows/wsl/install-manual#step-3---enable-virtual-machine-feature|Activate the Virtual Machine Platform]] (just the //Step 3// instructions) and **reboot the computer** | ||
+ | |||
+ | After rebooting, go back to the [[other:win10wsl#determining_which_version_of_wsl_is_installed|Determining which version of WSL is installed]] section above, and check that you are now using WSL 2 | ||
+ | |||
+ | ==== Potentially useful stuff ==== | ||
* Determining from **inside** the running Linux if you are using WSL (or another type of virtual machine)\\ <code>$ systemd-detect-virt | * Determining from **inside** the running Linux if you are using WSL (or another type of virtual machine)\\ <code>$ systemd-detect-virt |