wsl.exe [-u user-name]
wsl -u root
passwd
wslconfig /l
wslconfig /u [Distribution Name]
wsl --list --verbose
wsl -l -v
wsl.exe -list --online
wsl.exe -l -o
wsl --install -d [Distribution Name]
wsl --shutdown
wsl --unregister [Distribution Name]
wsl --set-default-version [num]
wsl --set-version [distro-name] [num]
[Linunx-Distro][XXXX].exe config --default-user [user]
Bsp.: ubuntu2004.exe config --default-user root
Mit netsh per Powerscitpt verschiedene Prots des 'localhost' auf WSL umleiten
und die Friewal für die Ports öffnen
Invoke-Expression "netsh interface portproxy add v4tov4 listenport=[$port] connectport= [port] connectaddress= [remote-port]"
Invoke-Expression "netsh advfirewall firewall add rule name=[$port] dir=in action=allow protocol=TCP localport=[$port]";
Invoke-Expression "netsh interface portproxy show v4tov4";
netsh interface portproxy show v4tov4
Invoke-Expression "netsh interface portproxy show v4tov4";
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 192.168.0.1
init ist der root Prozess der Wsl-Anwndeung und resultiert in der PID 1 was mit
pgrep init
abgefragt werden kann.
init ist verantworlich für folgende Dinge
/etc/wsl.conf
/etc/resolv.conf
, wenn es nicht in /etc/wsl.conf
mit '[network] generateResolvConf = false' deaktiviert wurde.
/mnt/[laufwerk]
, so dass sie mit /mnt/c
aufgerufen werden können.
/etc/wsl.conf
gesucht und in der Windows Registry nach der Benuzerinstanz, Wenn dort nichts gefunden wurde wird der Benutzer [root] gewählt.
Beispiel einer /etc/wsl.conf
# Automatically mount Windows drive when the distribution is launched
[automount]
# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true
# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c.
root = /
# DrvFs-specific options can be specified.
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"
# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true
# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = [hostname]
generateHosts = false
generateResolvConf = false
# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false
# Set the user when launching a distribution with WSL.
[user]
default=[user-name]
# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command="echo WSL booted at $(/bin/date/ + '%Y-%m-%d %H:%M:%S) >> /home/uli/wsl-boot.log"
sudo /etc/wsl.conf
wsl.exe --shutdown
systemctl list-unit-files --type=service
[boot]
systemd=true
command = service docker start
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false
$User = ["username"]
$Password = ["password"] | ConvertTo-SecureString -asPlainText -Force
$MyCredential = New-Object System.Management.Automation.PSCredential($User,$Password)
# Die ganze Sache muss als Admin ausgeführt werden
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments -Credential $MyCredential
Break
}
# Die akuelle IP vom WSL mus rausgefuden werden
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if ($found) {
$remoteport = $matches[0];
echo "Ip: $found"
echo "Port: $remoteport"
}
else {
Write-Output "IP address could not be found";
exit;
}
# Array mit umzuschreibenden Ports erstellen
$ports = @(80, 8080, 443);
$listener=127.0.0.1
# Die alten Daten löschen
Invoke-Expression "netsh interface portproxy reset";
# ueber das Array iterieren und die abzuhoerenden Ports auf die aktuelle IP setzen
for ($i = 0; $i -lt $ports.length; $i++) {
$port = $ports[$i];
#Invoke-Expression "netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=$port connectport=$port connectaddress=$remoteport";
Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port connectport=$port
connectaddress=$remoteport";
Invoke-Expression "netsh advfirewall firewall add rule name=$port dir=in action=allow protocol=TCP localport=$port";
}
# Invoke-Expression "netsh interface portproxy show v4tov4";