wsl.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Wed, 08 Jun 2022 13:42:24 +0300
changeset 2533 3d0d8ed75cb5
parent 2532 67f29096ae1f
child 2534 f63a05c1ce4f
permissions -rw-r--r--
Custom WSL 2 Linux kernel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2365
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
==================================
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
 WSL, Windows subsystem for Linux
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
==================================
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
.. contents::
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
   :local:
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
2457
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
     8
Documentation
2493
e83847e718a0 Fixed RST section format.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2486
diff changeset
     9
=============
2457
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    10
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    11
https://docs.microsoft.com/en-us/windows/wsl/
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    12
  Windows Subsystem for Linux Documentation.
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    13
https://github.com/sirredbeard/Awesome-WSL
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    14
  Awesome list dedicated to Windows Subsystem for Linux.
2469
d6eb5318b6ff Automatically Configuring WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2459
diff changeset
    15
https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/
d6eb5318b6ff Automatically Configuring WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2459
diff changeset
    16
  Automatically Configuring WSL.
2532
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
    17
https://docs.microsoft.com/en-us/windows/wsl/troubleshooting
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
    18
  Troubleshooting Windows Subsystem for Linux.
2457
9e6abc83e5d6 Windows Subsystem for Linux Documentation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2423
diff changeset
    19
2528
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
    20
https://github.com/sirredbeard/Awesome-WSL
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
    21
  Awesome list dedicated to Windows Subsystem for Linux.
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
    22
2365
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
wsl utility
2493
e83847e718a0 Fixed RST section format.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2486
diff changeset
    24
===========
2365
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
Run Linux command from default distro::
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
  wsl ls
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
  wsl -e /bin/ls
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
  wsl --exec /bin/bash
d907310aeacf wsl utility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
2366
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    32
Run Linux command from specific distro::
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    33
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    34
  wsl -d ubuntu ls
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    35
  wsl -d debian -e /bin/ls
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    36
  wsl -d debian --exec /bin/bash
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    37
  wsl -distribution debian --exec /bin/bash
55f48026a610 Run Linux command from specific distro.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2365
diff changeset
    38
2367
f295973a87a5 Run Linux command from specific user.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2366
diff changeset
    39
Run Linux command from specific user::
f295973a87a5 Run Linux command from specific user.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2366
diff changeset
    40
f295973a87a5 Run Linux command from specific user.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2366
diff changeset
    41
  wsl -u user ls
f295973a87a5 Run Linux command from specific user.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2366
diff changeset
    42
  wsl --user root ls
f295973a87a5 Run Linux command from specific user.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2366
diff changeset
    43
2459
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    44
Combining user & distro::
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    45
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    46
  wsl -u root -d alpine -- ls
2532
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
    47
  wsl -u root -e sh -c "service apache status || service apache start"
2459
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    48
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    49
https://docs.microsoft.com/en-us/windows/wsl/wsl-config
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    50
  Ways to run WSL.
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    51
2368
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    52
wslconfig utility
2493
e83847e718a0 Fixed RST section format.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2486
diff changeset
    53
=================
2368
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    54
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    55
List distros::
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    56
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    57
  wslconfig /l
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    58
  wslconfig /list
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    59
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    60
Set default distro::
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    61
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    62
  wslconfig /s debian
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    63
  wslconfig /setdefault debian
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    64
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    65
Terminate any running parts of distro::
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    66
2486
796bbf279e20 Fixed typo.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2469
diff changeset
    67
  wslconfig /t debian
2368
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    68
  wslconfig /terminate debian
574d07ac6f55 wslconfig utility
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2367
diff changeset
    69
2508
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    70
Mounting Windows file systems
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    71
=============================
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    72
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    73
From January 2018 WSL 1 allows to mount external NTFS file systems as ``drvfs``. ``metadata`` option
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    74
allows ``chmod`` operation on NTFS volumes, metadata will be shared across all WSL distros though.
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    75
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    76
https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    77
  Chmod/Chown WSL Improvements.
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    78
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    79
To preserve customization between WSL reloads update ``/etc/wsl.conf`` with something like::
2423
6a4fd5ccb340 Mounting external drives.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2368
diff changeset
    80
2508
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    81
  [automount]
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    82
  enabled = true
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    83
  mountFsTab = false
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    84
  options = "metadata,noatime,uid=1000,gid=1000,umask=022,fmask=077"
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    85
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    86
Equivalent CLI call is::
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    87
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    88
  sudo mount -t drvfs 'C:\' /mnt/c -o metadata,noatime,uid=1000,gid=1000,umask=022,fmask=077
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    89
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    90
https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    91
  Automatically Configuring WSL.
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    92
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
    93
To mount attached USB stick::
2423
6a4fd5ccb340 Mounting external drives.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2368
diff changeset
    94
6a4fd5ccb340 Mounting external drives.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2368
diff changeset
    95
  sudo mkdir /mnt/f
6a4fd5ccb340 Mounting external drives.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2368
diff changeset
    96
  sudo mount -t drvfs f: /mnt/f
2459
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    97
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    98
https://docs.microsoft.com/en-us/windows/wsl/wsl-config
607f6d056e26 Added link to docs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2457
diff changeset
    99
  ``/etc/wsl.conf`` configuration options.
2508
fe9788ce44ba Mounting Windows file systems.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2493
diff changeset
   100
2528
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   101
Switching WSL version
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   102
=====================
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   103
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   104
Set default version for new containers::
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   105
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   106
  wsl --set-default-version 1
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   107
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   108
Convert a specific distro to WSL v1::
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   109
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   110
  wsl --set-version Debian 1
b86cd4fc873e Switching WSL version.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2508
diff changeset
   111
2532
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   112
Debugging WSL
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   113
=============
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   114
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   115
https://github.com/Microsoft/WSL/blob/master/CONTRIBUTING.md
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   116
https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/wsl.wprp
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   117
https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1
67f29096ae1f Debugging WSL.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2528
diff changeset
   118
2533
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   119
Custom WSL 2 Linux kernel
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   120
=========================
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   121
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   122
Register kernel in ``/etc/wsl.conf``::
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   123
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   124
  [wsl2]
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   125
  kernel=C:\\Users\\<USER>\\vmlinux
3d0d8ed75cb5 Custom WSL 2 Linux kernel
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2532
diff changeset
   126