wsl

integrate beyond compare in wsl

Inside ~/.gitconfig:

ini
[diff] tool = bcomp [difftool] prompt = false [difftool "bcomp"] path = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" cmd = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" "$(wslpath -aw $LOCAL)" "$(wslpath -aw $REMOTE)" [merge] tool = bcomp [mergetool] prompt = false [mergetool "bcomp"] path = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" cmd = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" "$(wslpath -aw $LOCAL)" "$(wslpath -aw $REMOTE)" "$(wslpath -aw $BASE)" "$(wslpath -aw $MERGED)"

filesystem performance is slow

workaround

Prefer ~/ over /mnt when filesystem performance is needed

wsl uses all the ram

yolo

Force linux to drop the page cache

bash
echo 1 | sudo tee /proc/sys/vm/drop_caches

limit memory assigned to WSL2 VM

Create a %UserProfile%\.wslconfig file

ini
[wsl2] memory=6GB swap=0 localhostForwarding=true

port-forward for external connections

In powershell, to port-forward:

kotlin
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=$ipAddress

To release:

go
netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0

To show all currently configured:

kotlin
netsh interface portproxy show all

fix clock drift

WSL2 clock drifts if left open when Windows sleeps. Fix with:

undefined
sudo hwclock -s

fixing ubuntu 0x80040326

Ubuntu failing to start, even after reinstall, with:

vbnet
Error: 0x80040326 Error code: WSL/Service/0x80040326 Press any key to continue... [process exited with code 4294967295 (0xffffffff)]

Run the following, and then restart:

css
wsl --update

More

excluding ports from hyper-v

I was having an intermittent problem where a web app running in visual studio would throw an iisexpress error that the port was already in use. The fix was to exclude a range of ports from being grabbed by hyper-v.

sql
netsh int ipv4 set dynamicport tcp start=55000 num=10535

more info

increase number of open files

Running into EMFILE errors because too many files open? (looking at you npm i):

powershell
mylimit=8000 sudo prlimit --nofile=$mylimit --pid $$; ulimit -n $mylimit su $USER

or

bash
sudo prlimit -p "$$" --nofile=10000:10000 exec $SHELL ulimit -n 10000

running windows applications in wsl

Controlled via /etc/wsl.conf:

ini
[interop] enabled=true appendWindowsPath=false

More info