Windows
Installation
Installations-USB erstellen
Du kannst Windows 10 direkt von der Microsoft-Website herunterladen. Wähle einen USB‑Stick mit mindestens 8 GB, den das Tool formatiert und zu einem bootfähigen Installer macht.
Falls der Fehler 715-123130 erscheint, probiere einen anderen Browser oder lade über ein VPN in den USA herunter.
Wenn du die ISO herunterlädst, prüfe den Hash:
PS > Get-FileHash .\Win11_22H2_EnglishInternational_x64v1.iso
Algorithm Hash
--------- ----
SHA256 F115CD6B31734BC091BC94B964D5AD43984285BF229503481E2F7EF94AB7140E
Zum Schreiben des Images empfehle ich Rufus. Es bietet einige sehr praktische Funktionen.
Partitionierung
Eine typische Windows-Installation erstellt 4 Partitionen:
- EFI: 100 MB
- MSR: 16 MB
- Windows
- Recovery: 500 MB bis 650 MB
Den Wert, den du im grafischen Installer eingibst, ist die Summe all dieser Partitionen. Wenn dein
C: exakt 250 GB anzeigen soll, musst du etwas mehr als 256616 MB verwenden (100 + 16 + 250 *
1024 + 500).
Für mehr Kontrolle über die Größen kannst du per Kommandozeile partitionieren. Drücke Shift + F10
und nutze diskpart:
diskpart
list disk
select disk 0
clean
convert gpt
create partition efi size=1024
format quick fs=fat32 label="System"
assign letter="S"
create partition msr size=16
create partition primary size=256000 -> 512000 para 500GB
format quick fs=ntfs label="Windows"
assign letter="W"
create partition primary size=1024
format quick fs=ntfs label="Recovery"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit
In diesem Beispiel werden eine EFI-Partition mit 1 GB und eine Recovery-Partition mit 1 GB erzeugt.
Für Dual‑Boot wird eine EFI von mindestens 300 MB empfohlen. Linux bindet diese Partition als
/boot ein und speichert dort die Dateien für den Bootloader, einschließlich komprimierter Kernel‑
und Treiberdateien (vmlinuz).
Wenn bereits vor der Installation eine FAT32‑formatierte EFI‑Partition vorhanden ist, verwendet Windows diese anstelle einer neuen.
Wenn du feststellst, dass die EFI‑Partition nach der Windows‑Installation vergrößert werden muss, schau dir den Partition Expert von Macrorit an. Die kostenlose Portable‑Version kann Partitionen einfach verschieben und in der Größe ändern.
Die 16‑MB‑MSR‑Partition (Microsoft Reserved) kann vom Windows‑Installer selbst
(create partition msr) oder mit dem Code 0c01 in cgdisk wiederhergestellt werden.
Datenschutzoptionen
Beim ersten Start erscheint ein Datenschutz‑Bildschirm. Deaktiviere Find my device,
Inking & Typing, Advertising ID, Diagnostic data, Tailored experiences und alles Weitere,
was sich deaktivieren lässt.
Nach dem Start: Settings » Privacy. Ich deaktiviere fast alles. Die einzige App, die meine Kamera
(die ohnehin abgedeckt ist) nutzen darf, ist Skype.
Group Policy Editor
Führe gpedit.msc aus.
Websuche
Gehe zu
Local Computer Policy » Computer Configuration » Administrative Templates » Windows Components » Searchund setze „Do not allow web search“ auf Enabled.BitLocker mit PIN
Navigiere zu
Computer Configuration»Administrative Templates»Windows Components»BitLocker Drive Encryption»Operating System Drivesund aktiviereRequire Additional Authentication at StartupundAllow enhanced PINs for startup.Meet Now (Skype) deaktivieren
Gehe zu
User Configuration»Administrative templates»Start Menu and Taskbarund aktiviere die RichtlinieRemove the Meet Now icon.
Regedit
Cortana und Bing deaktivieren
Navigiere zu
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Searchund lege eine neue DWORD mit dem NamenConnectedSearchUseWebund dem Wert 0 an.Navigiere zu
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Searchund lege zwei DWORDs mit Wert 0 an:AllowSearchToUseLocationundBingSearchEnabled.UTC für die Uhr verwenden (nützlich für Dual‑Boot)
Navigiere zu
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformationund lege eine neue DWORDRealTimeIsUniversalmit dem Wert 1 an.Desktop‑Symbole anzeigen/ausblenden
Das geht über die grafische Oberfläche; ich empfehle nicht, es im Regedit zu tun.
Computer: {20D04FE0-3AEA-1069-A2D8-08002B30309D} User Files: {59031a47-3f72-44a7-89c5-5595fe6b30ee} Control Panel: {5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0} Network: {F02C1A0D-BE21-4350-88B0-7367FC96EF3C} Recycle Bin: {645FF040-5081-101B-9F08-00AA002F954E}Beispiel:
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /V {20D04FE0-3AEA-1069-A2D8-08002B30309D} /T REG_DWORD /D 0x0 /Freg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu /V {20D04FE0-3AEA-1069-A2D8-08002B30309D} /T REG_DWORD /D 0x0 /Freg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /V {20D04FE0-3AEA-1069-A2D8-08002B30309D} /T REG_DWORD /D 0x0 /Freg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu /V {20D04FE0-3AEA-1069-A2D8-08002B30309D} /T REG_DWORD /D 0x0 /FKeine zuletzt verwendeten Dateien anzeigen
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /V ShowRecent /T REG_DWORD /D 0x0 /FBenutzerordner in der Schnellzugriff‑Navigation des Explorers anzeigen (Quick Access)
reg add HKCU\SOFTWARE\Classes\CLSID\{59031a47-3f72-44a7-89c5-5595fe6b30ee} /V System.IsPinnedToNameSpaceTree /T REG_DWORD /D 0x1 /F
Computername
Navigiere zu Control Panel\System and Security\System. Klicke in der Zeile mit dem Computernamen
auf „Change settings“ und ändere den Namen.
Windows Update
Alles aktualisieren und den Rechner neu starten.
Manchmal ist das neueste Update noch nicht über Windows Update verfügbar, kann aber manuell installiert werden: https://www.microsoft.com/en-us/software-download/windows10.
Treiber
- Kensington Works
- Nvidia
- Hersteller‑Website
Verschlüsselung
BitLocker
Nach dem Aktualisieren von Windows: BitLocker auf Laufwerk C:/ aktivieren. Den Recovery‑Key an einem sicheren Ort speichern (nicht auf dem betroffenen Rechner, klar).
VeraCrypt
Eine Open‑Source‑Alternative zum Verschlüsseln ganzer Partitionen oder zum Erstellen von Containern. Später zeige ich, wie man es mit Chocolatey installiert.
Windows Features
Gehe zu Control Panel\Programs » Turn Windows features on or off.
- „Virtual Machine Platform“ aktivieren
- „Windows Hypervisor Platform“ aktivieren (wird für Docker benötigt)
- „Windows Sandbox“ aktivieren
- „Windows Subsystem for Linux“ aktivieren
- „Hyper‑V“ aktivieren (für VMs)
Energieeinstellungen
Gehe zu Control Panel\Hardware and Sound\Power Options\Create a Power Plan und erstelle einen Plan
auf Basis von „High Performance“ mit folgenden Optionen (Advanced Power Settings):
- Turn off hard disk after
- On battery: 30 Minutes
- Plugged in: Never
- Sleep
- Sleep after
- On battery: 300 Minutes
- Plugged in: Never
- Sleep after
- Power buttons and lid
- Lid close action
- On battery: Do nothing
- Plugged in: Do nothing
- Power button action
- On battery: Sleep
- Plugged in: Do nothing
- Lid close action
- Display
- Turn off display after
- On battery: 20 Minutes
- Plugged in: 30 Minutes
- Turn off display after
Unter Control Panel\Hardware and Sound\Power Options\System Settings die Option
Turn on fast start-up deaktivieren.
Sperre bei Inaktivität
- Screen Saver settings » Blank » 3 min » On resume, display log-on screen
Unnötige Programme deinstallieren
In „Add or Remove programs“ alles deinstallieren, was nicht benötigt wird.
Nervige Meldungen deaktivieren
Gehe zu
Control Panel\System and Security\Security and Maintenance\Change Security and Maintenance settings.
Deaktiviere die Meldungen zu Windows Backup.
Paketmanager
Die drei bekanntesten Paketmanager für Windows sind: Chocolatey, Scoop und Winget.
Winget
Das ist der offizielle Paketmanager von Microsoft; es gibt ihn seit Ende 2019. Schriften, Skripte u. a. lassen sich damit nicht installieren.
winget install `
7zip.7zip `
Bambulab.Bambustudio `
DBBrowserForSQLite.DBBrowserForSQLite `
dbeaver.dbeaver `
Discord.Discord `
Ditto.Ditto `
Elgato.StreamDeck `
Git.Git `
Google.Chrome `
Greenshot.Greenshot `
Insomnia.Insomnia `
Kensington.KensingtonWorks `
MediaArea.MediaInfo.GUI `
Microsoft.PowerShell `
Microsoft.PowerToys `
Microsoft.VisualStudioCode `
Microsoft.WindowsTerminal `
Mozilla.Firefox `
OBSProject.OBSStudio `
PeterDaveHello.TransmissionRemoteGUI `
Plex.Plex `
SlackTechnologies.Slack `
Spotify.Spotify `
tailscale.tailscale `
Telegram.TelegramDesktop `
Valve.Steam `
Vivaldi.Vivaldi `
VB-Audio.Voicemeeter.Banana `
VideoLAN.VLC `
WireGuard.WireGuard `
Zen-Team.Zen-Browser
Winget upgrade
Alle Programme aktualisieren:
winget upgrade --all --silent --accept-source-agreements --accept-package-agreements --include-unknown --disable-interactivity --force
Ich führe das einmal in einer Administrator‑Eingabeaufforderung und einmal als normaler Benutzer aus.
Als Admin musst du nur ein Pop‑up bestätigen, aber es aktualisiert nur systemweit installierte Programme. Als normaler Benutzer kannst du benutzerweit installierte Programme aktualisieren.
Verlauf bereinigen
Im PowerShell ausführen:
# File Explorer Home
Remove-Item -Path "$env:APPDATA\Microsoft\Windows\Recent\*" -Force
Remove-Item -Path "$env:APPDATA\Microsoft\Windows\Recent\AutomaticDestinations\*" -Force
Remove-Item -Path "$env:APPDATA\Microsoft\Windows\Recent\CustomDestinations\*" -Force
# File Explorer address bar
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths" -Force -ErrorAction SilentlyContinue
# Clear typed history in Run dialog
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -Force -ErrorAction SilentlyContinue
Chocolatey
Update: Chocolatey enthält mehr Pakete als Winget, aber der Unterschied schrumpft. Heutzutage nutze ich Chocolatey nicht mehr; diesen Abschnitt halte ich daher nicht aktuell.
Installiere gemäß der aktuellen Anleitung auf https://chocolatey.org/install.
In PowerShell als Administrator:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install -y `
7zip `
calibre `
discord `
ditto `
Firefox `
git `
GoogleChrome `
greenshot `
jellyfin-media-player `
nerd-fonts-Hack `
obs-studio `
slack `
spotify `
steam `
telegram `
transgui `
vlc `
vscode `
wireguard
choco install -y `
ack `
bleachbit `
clonespy `
Cmder `
curl `
darktable `
dbeaver `
digikam `
docker-desktop `
eartrumpet `
Everything `
FreeDownloadManager `
gimp `
gnupg `
google-drive-file-stream `
imagemagick `
irfanview `
jre8 `
mariadb `
microsoft-teams `
miniconda3 `
neovim `
nerd-fonts-CascadiaCode `
nerd-fonts-FiraCode `
nodejs `
notepadplusplus `
okular `
postman `
powershell-core `
powertoys `
restic `
rsync `
sourcetree `
sql-server-management-studio `
thunderbird `
transmission `
treesizefree `
vb-cable `
vcxsrv `
veracrypt `
voicemeeter-banana `
winscp
Chocolatey aktualisieren
Veraltete Pakete auflisten:
choco outdatedChocolatey zuerst aktualisieren:
choco upgrade chocolateyAlle Pakete aktualisieren:
choco upgrade all -y
PowerShell
Windows 10 und 11 kommen mit Version 5.1; die neueste Version ist auf GitHub verfügbar und kann über Chocolatey oder Winget installiert werden.
Mit Winget:
winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget
> $PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 4 1
Execution Policy
PowerShell hat folgende Optionen, um die Ausführung von Skripten einzuschränken:
Restricted: Führt keine Skripte aus. Nur interaktiver Modus.AllSigned: Führt nur Skripte aus, die von einem vertrauenswürdigen Herausgeber signiert sind.RemoteSigned: Heruntergeladene Skripte müssen signiert sein.Unrestricted: Alle Skripte können ausgeführt werden.
Ich konfiguriere RemoteSigned:
Set-ExecutionPolicy RemoteSigned
Oh My Posh
Oh My Posh ist ein Theme für das Terminal – besonders gut mit PowerShell.
Am einfachsten per Winget installieren:
winget install JanDeDobbeleer.OhMyPosh -s winget
Dann PowerShell so konfigurieren, dass Oh My Posh beim Start geladen wird:
notepad $PROFILE
Und Folgendes einfügen:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/powerlevel10k_lean.omp.json" | Invoke-Expression
Set-PSReadlineOption -EditMode vi -BellStyle None
Diese Befehle konfigurieren PowerShell mit dem Theme powerlevel10k_lean im Vi‑Modus. Weitere
Themes mit Get-PoshThemes und auf der offiziellen Seite.
Der Befehl notepad $PROFILE bearbeitet $profile.currentusercurrenthost. Wenn du für andere Hosts
und Benutzer konfigurieren willst, bearbeite die passenden Dateien:
$profile.currentusercurrenthost
C:\Users\Julio\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
$profile.currentuserallhosts
C:\Users\Julio\Documents\PowerShell\profile.ps1
$profile.alluserscurrenthost
C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
$profile.allusersallhosts
C:\Program Files\PowerShell\7\profile.ps1
Office
Ich teile mir ein Microsoft 365 Family‑Abo mit fünf weiteren Personen. Es lohnt sich, denn neben dem
Office‑Paket bekommt jede Person 1 TB OneDrive‑Speicher.
Außerdem gibt es oft Aktionen für 1 Jahr „Personal“ im Voraus, das man in 9 Monate „Family“
umwandeln kann.
Den Installer mit allen Office‑Programmen kannst du in deinem Microsoft‑Konto herunterladen. Dort wählst du Sprache und Version (32 oder 64‑Bit).
Alternativ kann man die Programme einzeln über den Microsoft Store installieren; ich empfehle das allerdings nicht.
E‑Mails
Ich nutze Thunderbird als E‑Mail‑Client.
- Um Platz zu sparen, deaktiviere die Ordner‑Synchronisation. Dann werden nur die Header geladen;
- Konfiguriere minimieren in die Taskleiste;
- Hinterlege deinen PGP‑Schlüssel zum Signieren von E‑Mails;
- Verwende ein Master‑Passwort, um die im Thunderbird gespeicherten Passwörter und Schlüssel zu
schützen (Datei
key4.db):Tools » Options » Privacy & Security » use a master password.
Für Konten mit Zwei‑Faktor‑Authentifizierung kannst du ein app‑spezifisches Passwort nutzen oder die Erstkonfiguration ohne Passwort machen und danach auf OAuth2 umstellen.
Kalender
Für die meisten genügt es, den E‑Mail‑Tab im Browser offen zu lassen und Benachrichtigungen zu aktivieren. Ich nutze mehrere Kalender und sehe sie gerne zentral mit Desktop‑Benachrichtigungen.
Die Windows‑Standard‑App ist tief ins System integriert und zeigt Ereignisse direkt in der Taskleiste an und nutzt native Benachrichtigungen. Da ich aber ohnehin Thunderbird für E‑Mails verwende, konfiguriere ich dort auch meine Kalender.
Nur anzeigen (View only)
Den Link zu deinem Google‑Kalender erhältst du so:
- Öffne die Google‑Kalender‑Einstellungen (https://calendar.google.com/calendar/u/0/r/settings);
- „Settings for my calendars“;
- Kalender auswählen;
- „Integrate calendar“;
- „Secret address in iCal format“.
Füge den Link in Thunderbird ein: File » New » Calendar » On the Network » iCalendar (ICS).
Der Kalender ist dann schreibgeschützt.
Um Ereignisse im Hauptfenster zu sehen: View » Today Pane » Show Today Pane.
Bidirektional synchronisieren (View & Edit)
Die Add‑ons Lightning und Provider for Google können das, aber du kannst Thunderbird auch via CalDav konfigurieren:
- Google: Erzeuge ein app‑spezifisches Passwort unter https://myaccount.google.com/apppasswords.
- Zoho: 1. App‑Passwort unter Zoho Accounts » Security » App Passwords » Application-Specific
Passwords » Generate New Password erzeugen. 2. CalDav unter Settings » Calendar » Synchronize »
CalDAV aktivieren. 3. Calendar ID unter Settings » Calendars » My Calendars holen. In
Thunderbird:
File » New » Calendar » On the Network » CalDAV. - Username: deine@email.com
- Location Google:
https://www.google.com/calendar/dav/deine@email.com/events - Location Zoho:
https://calendar.zoho.com/caldav/**Calendar ID**/events
Sprachen
Ich lasse mein Notebook gerne auf Englisch, aber zusätzliche Sprachen wie Portugiesisch sind nützlich.
Settings » Languages » Preferred Languages » Add a preferred language.
Sprachen per PowerShell hinzufügen/entfernen
PS > $langs = Get-WinUserLanguageList
PS > $langs
LanguageTag : en-GB
Autonym : English (United Kingdom)
EnglishName : English
LocalizedName : English (United Kingdom)
ScriptName : Latin
InputMethodTips : {0809:00020409}
Spellchecking : True
Handwriting : False
PS > $langs.Add('de-DE')
PS > $langs
LanguageTag : en-GB
Autonym : English (United Kingdom)
EnglishName : English
LocalizedName : English (United Kingdom)
ScriptName : Latin
InputMethodTips : {0809:00020409}
Spellchecking : True
Handwriting : False
LanguageTag : de-DE
Autonym : Deutsch (Deutschland)
EnglishName : German
LocalizedName : German (Germany)
ScriptName : Latin
InputMethodTips : {0407:00000407}
Spellchecking : True
Handwriting : False
PS > Set-WinUserLanguageList $langs -Force
PS > $langs.Remove(($langs | Where-Object LanguageTag -like 'de-DE'))
True
PS > $langs
LanguageTag : en-GB
Autonym : English (United Kingdom)
EnglishName : English
LocalizedName : English (United Kingdom)
ScriptName : Latin
InputMethodTips : {0809:00020409}
Spellchecking : True
Handwriting : False
PS > Set-WinUserLanguageList $langs -Force
„Geister‑Tastatur“‑Bug
Auch in Deutschland nutze ich English (United Kingdom) als System‑ und Format‑Sprache. Aus
irgendeinem Grund fügt Windows hartnäckig die deutsche Tastatur hinzu.
Schlimmer noch: Sie erscheint weder im Regedit
(Computer\HKEY_USERS\.DEFAULT\Keyboard Layout\Preload) noch in den Sprach‑/Regionseinstellungen.
Man muss die deutsche Tastatur manuell hinzufügen, nur um sie wieder entfernen zu können.
Das geht auch per PowerShell:
$langs = Get-WinUserLanguageList
$langs[0].InputMethodTips.Add('0809:00000407')
Set-WinUserLanguageList $langs -Force
$langs[0].InputMethodTips.Remove('0809:00000407')
Set-WinUserLanguageList $langs -Force
Prüfe den Code im Regedit
(Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language).
| ID | Tag | Sprache | Region |
|---|---|---|---|
| 0x0416 | pt-BR | Portugiesisch | Brasilien |
| 0x0816 | pt-PT | Portugiesisch | Portugal |
| 0x0409 | en-US | Englisch | Vereinigte Staaten |
| 0x0809 | en-GB | Englisch | Vereinigtes Königreich |
| 0x0c0A | es-ES | Spanisch | Spanien |
| 0x0407 | de-DE | Deutsch | Deutschland |
| 0x1000 | en-150 | Englisch | Europa |
| 0x1000 | en-DE | Englisch | Deutschland |
Komplette Tabelle: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c
Zusätzliche Uhr
Ich kommuniziere viel mit Australien und Norwegen. Wegen der großen Zeitverschiebung habe ich gerne eine zusätzliche Uhr.
Gehe zu Date & Time » Add clocks for different time zones und konfiguriere die zusätzliche Uhr.
Personalisierung
Hintergrundbild
Unter
Settings » Personalizationein Hintergrundbild auswählen. Ich nutze meist „Solid colour“ Schwarz.Farben
Default app mode: Dark
Sperrbildschirm
Anzeigen von Apps auf dem Sperrbildschirm und das Hintergrundbild im Anmeldebildschirm deaktivieren.
Schriften
Installiere eine Nerd Font.
Ich empfehle Hack NF. Paket entpacken, alle „Windows Compatible“‑Schriften markieren, Rechtsklick und „Install“ oder „Install for all users“.Alternativ per
oh-my-posh. In einer PowerShell als Admin:oh-my-posh font install hackEbenfalls gut: JetBrains Mono.
Installiere die Google Noto Fonts, um Darstellungsprobleme mit fehlenden Zeichen zu vermeiden (sonst Kästchen). Bevorzuge die „hinted“-Variante.
Desktop‑Symbole anzeigen/ausblenden
Themes » Desktop Icon Settings. Ich lasse „This PC“, „Recycle Bin“ und den Benutzerordner aktiv.Taskleiste
Entferne alles Überflüssige. Die Suchleiste ausblenden.
Autostart‑Programme deaktivieren
Task‑Manager öffnen und unerwünschte Autostarts deaktivieren.
File Explorer
File Explorer öffnen.
View » Options » Change folder and search options. In der Registerkarte „View“ ein/aus:- Always show menus
- Display the full path in the title bar
- Show hidden files, folders, and drives
- Hide extensions for known file types
- Hide protected operating system files
OneDrive aus dem Quick Access entfernen
[HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}] "System.IsPinnedToNameSpaceTree"=dword:00000000[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}] "System.IsPinnedToNameSpaceTree"=dword:00000000Standard‑Apps
- Music player: VLC
- Photo viewer: IrfanView
- Video player: VLC
- Web browser: Firefox
Außerdem ordne ich Dateiendungen zu:
.txt→ Notepad++
Chrome und Firefox
Browser synchronisieren. Erweiterungs‑Konfigurationen (z. B. uMatrix) übernehmen.
Esc und CapsLock tauschen
Möglich per Regedit, SharpKeys, PowerToys u. a.
Regedit
Den folgenden Code als
caps_swapescape.regspeichern und ausführen:Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,01,00,01,00,3a,00,00,00,00,00Ein Mapping besteht aus einem 32‑Bit‑Integer (zwei 16‑Bit‑Scancodes) im Little‑Endian‑Format.
(03,00,00,00)→ Es folgen 3 Integers (96 Bits = 24 Hex‑Ziffern)(01,00)→ Escape(3a,00)→ CapsLockSharpKeys
Caps Lock (00_3A) → Escape (00_01) | Escape (00_01) → Caps Lock (00_3A)
PowerToys
Enable Keyboard Manager » remap a key
Desktops
Mit vier Fingern nach oben wischen, um neue Desktops anzulegen. Ich nutze meist 2 Desktops.
Terminal
Ich mag Cmder und Windows Terminal (im Microsoft Store). Beide sind gut anpassbar. Eine wichtige Änderung ist die Schriftart; ich empfehle Hack NF.
Im Terminal (settings.json):
…
"actions": [
{
"command": {
"action": "copy",
"singleLine": false
},
"keys": "ctrl+c"
},
{
"command": "paste",
"keys": "ctrl+shift+v"
},
{
"command": "find",
"keys": "ctrl+shift+f"
},
{
"command": {
"action": "splitPane",
"split": "auto",
"splitMode": "duplicate"
},
"keys": "alt+shift+d"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"keys": "shift+enter"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[13;5u"
},
"keys": "ctrl+enter"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[13;6u"
},
"keys": "ctrl+shift+enter"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[32;2u"
},
"keys": "shift+space"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[32;5u"
},
"keys": "ctrl+space"
},
{
"command": {
"action": "sendInput",
"input": "\u001b[32;6u"
},
"keys": "ctrl+shift+space"
}
]
…
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
…
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"fontFace": "Hack NF",
"source": "Windows.Terminal.Wsl"
},
…
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"fontFace": "Hack NF",
"source": "Windows.Terminal.PowershellCore"
}
Ich ändere die „paste“-Taste von ctrl+v auf ctrl+shift+v, um den Visual‑Mode im Vim nicht zu
stören.
Sandbox
Fürs Testen von Anwendungen – vor allem aus unsicherer Quelle – empfiehlt sich ein isoliertes System: Sandboxes oder virtuelle Maschinen.
Wenn Installationen/Konfigurationen nicht persistiert werden müssen und die aktuelle Windows‑Version ausreicht, ist eine Sandbox praktischer als VMs: kein Images‑Download, schnellerer Start, weniger Platzbedarf usw.
Sandboxing geht mit Tools wie Sandboxie, aber Windows 10 Professional hat das Feature nativ; es muss nur aktiviert werden.
Die Konfiguration ist simpel und die Performance gut. Windows Sandbox nutzt Windows Containers und damit Hyper‑V.
Die Sandbox lässt sich in den Windows Features aktivieren oder per PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName "Containers-DisposableClientVM"
Die Konfiguration erfolgt über XML‑Dateien mit der Endung .wsb, z. B.:
<Configuration>
<VGpu>Disable</VGpu>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Share</HostFolder>
<SandboxFolder>C:\Share</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<AudioInput>Disable</AudioInput>
<VideoInput>Disable</VideoInput>
<ProtectedClient>Enable</ProtectedClient>
<PrinterRedirection>Disable</PrinterRedirection>
<ClipboardRedirection>Disable</ClipboardRedirection>
<MemoryInMB>8192</MemoryInMB>
<LogonCommand>
<Command>explorer.exe C:\Share</Command>
</LogonCommand>
</Configuration>
Dieses Beispiel startet eine geschützte Sandbox mit 8 GB RAM, Lesezugriff auf C:\Share und ohne
Netzwerk, Mikrofon, Webcam, Drucker oder Zwischenablage.
Virtualisierung: Hyper‑V
Microsoft Sandbox eignet sich für schnelle Tests und portable Apps; sie deckt jedoch nicht den Fall ab, in dem Systemänderungen persistent sein sollen. Dafür nutzt man VMs.
Wenn du einen starken Server hast, lohnt sich evtl. ein VM‑Manager wie Proxmox VE und Remote‑Zugriff. Je nach Fall ist auch eine VM in der Cloud sinnvoll.
Für lokale Installationen unter Windows gibt es mehrere Hypervisor‑Optionen, die in zwei Typen eingeteilt werden:
- Hypervisor Typ 1:
- Bare‑Metal, native
- Greift direkt auf die Hardware zu
- Beste Performance
- Beispiele: VMware ESXi (VMware vSphere), Microsoft Hyper‑V, Oracle VM, Citrix Hypervisor
- Hypervisor Typ 2:
- Hosted
- Läuft auf dem Betriebssystem
- Einfacher zu verwalten
- Beispiele: VMware Fusion, VMware Workstation Pro, Oracle VM VirtualBox
VMware gilt als funktionsreich, aber ich nutze derzeit Hyper‑V (Windows Pro) – vor allem wegen der Kosten.
Unter Hyper‑V lassen sich Linux, FreeBSD und Windows installieren. Beachte: Auch virtualisiertes Windows benötigt eine Lizenz.
Tipps:
- Nach Möglichkeit „Generation 2“ verwenden.
- TPM aktivieren: Security » Enable Trusted Platform Module
- Vor Änderungen Checkpoints (Snapshots) anlegen
- Offline‑Installation (Windows 11):
Shift+F10für TerminalC:\Windows\System32\oobe\BypassNRO.cmdausführen- „I don’t have internet“ wählen
- „Continue with limited setup“ wählen
- Im „enhanced session mode“ lassen sich Dateien zwischen Host und VM kopieren/einfügen
- Virtuelle „.vhdx“-Disks können zum Dateiaustausch gemountet werden. Vor dem Start der VMs wieder aushängen.
- Guest Services aktivieren
Nvidia‑Grafikkarte unter Hyper‑V
Aufgrund einer Sicherheitslücke hat Microsoft die „RemoteFX vGPU“-Option entfernt, die mehreren VMs das Teilen einer GPU erlaubte.
Unter Windows Server kann man eine GPU exklusiv an eine VM durchreichen (GPU Passthrough via Discrete Device Assignment, DDA). Das funktioniert allerdings nur mit Enterprise‑GPUs wie Nvidia Quadro.
Die einzige aktuelle Lösung ist GPU Paravirtualization/GPU Partitioning. Mehr Infos:
- Easy-GPU-PV: https://github.com/jamesstringerparsec/Easy-GPU-PV
- https://www.youtube.com/watch?v=XLLcc29EZ_8
Get-VMHostPartitionableGpu
WSL2
Nachdem „Windows Subsystem for Linux“ in den Windows Features aktiviert wurde, muss die Umgebung noch konfiguriert werden.
Tipp: Vieles aus meinem Arch‑Artikel gilt auch für Ubuntu unter WSL.
Tipp 2: Wenn du eine Einstellung für alle Distros anwenden willst, verwende
C:\Users\<UserName>\.wslconfig statt /etc/wsl.conf.
Kernel‑Update installieren: Link
WSL ggf. updaten
wsl --updateWSL2 als Standard setzen:
wsl --set-default-version 2Verfügbare Distros auflisten
wsl --list --onlineEine Distro installieren (Ubuntu 22.04 oder 24.04)
Option 1:
wsl --install -d Ubuntu-24.04Option 2: über den Microsoft Store
Option 3: per Kommandozeile
cd ~\Downloads curl.exe -L -o ubuntu-2204.appx https://aka.ms/wslubuntu2204 Add-AppxPackage .\ubuntu-2204.appxFühre
~\Downloads\ubuntu-2204.appxaus. Es erscheint die Meldung, dass Ubuntu bereits installiert ist, sowie einlaunch‑Button zum Starten.
Prüfen, ob die WSL‑Version 2 ist:
wsl --list --verboseWenn 1:
wsl --set-version Ubuntu 2.Standard‑Distro setzen (bei mehreren Installationen)
wslconfig /setdefault Ubuntu-24.04[Optional] Abbild von
C:nachZ:verschiebenDie VHDs (Virtual Hard Disks) von WSL2 liegen unter
C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName].
Beispiel:C:\Users\Julio\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx.Man kann den Pfad via Regedit umbiegen; sicherer ist Export/Import:
Z: mkdir Z:\WSL wsl --export Ubuntu Z:\WSL\Ubuntu.tar wsl --unregister Ubuntu wsl --import Ubuntu Z:\WSL\ Z:\WSL\Ubuntu.tar ubuntu.exe config --default-user julio rm Z:\WSL\Ubuntu.tarUpdate (2024): Es gibt
wsl --import-in-place:wsl --import-in-place Ubuntu-24.04 Z:\WSL\Ubuntu-24.04\ext4.vhdxUbuntu‑Version prüfen
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.1 LTS Release: 24.04 Codename: nobleLocales anpassen
sudo nvim /etc/locale.gen sudo locale-genWindows‑Pfade nicht ins
$PATHaufnehmenIn
/etc/wsl.conffolgende Zeilen hinzufügen:[interop] appendWindowsPath = falseDas verbessert die Autovervollständigung spürbar, da der Zugriff auf das Windows‑Dateisystem langsam ist.
Programme lassen sich weiterhin starten – mit vollem Pfad oder via Symlink in einem Verzeichnis, das bereits im
$PATHliegt.Siehe https://learn.microsoft.com/en-us/windows/wsl/wsl-config#interop-settings
Systemd aktivieren
Einige Programme ([Snap], [Flatpak], [microk8s]) benötigen Systemd.
[Snap]: https://snapcraft.io/
[Flatpak]: https://flatpak.org/
[microk8s]: https://microk8s.io/
In `/etc/wsl.conf` ergänzen:
```bash
[boot]
systemd=true
```
WSL neu starten: `wsl.exe --shutdown`.
Speicher konfigurieren
WSL2 läuft in Hyper‑V. Standardmäßig wird die Hälfte (neuere Builds: 80%) des RAM zugewiesen. Anpassen via
C:\Users\julio\.wslconfig:wsl --shutdown notepad "$env:USERPROFILE/.wslconfig"[wsl2] memory=16GB swap=0 processors=4Mit
freein Linux prüfen.Hinweise:
- Nicht zu hoch ansetzen – RAM für Linux steht Windows nicht zur Verfügung.
- Speicher freigeben: als root
echo 1 >> /proc/sys/vm/drop_caches. .wslconfigals „UTF‑8 without BOM“ speichern.- Swap liegt unter
%USERPROFILE%\AppData\Local\Temp\swap.vhdx.
Zusätzliche Repositories (PPAs) hinzufügen:
PPAs (Personal Package Archives) ergänzen die offiziellen Ubuntu‑Repos; viele stammen von den Maintainer:innen selbst.
- Neovim:
sudo add-apt-repository ppa:neovim-ppa/unstable sudo apt update- Git:
sudo add-apt-repository ppa:git-core/ppa sudo apt updateSystem aktualisieren
sudo apt update && sudo apt upgradePakete aus Repositories installieren
Basics:
sudo apt install \ ack \ curl \ ffmpeg \ git \ gitk\ jq \ make \ neovim \ p7zip-full \ renameutils \ rsync \ sshfs \ tree \ unzip \ wget \ xclip \ zsh \LaTeX:
sudo apt install \ latexmk \ texlive-lang-portuguese \ texlive-xetexUtilities:
sudo apt install \ ripgrep \ fd-find \ oathtoolDotfiles klonen (https://github.com/jbsilva/dotfiles) und Symlinks anlegen
cd ~ ln -s dotfiles/.zsh ln -s dotfiles/.zshrc ln -s dotfiles/.gitconfig-wsl .gitconfig ln -s dotfiles/.p10k.zsh ln -s dotfiles/.configProgramme aus anderen Quellen installieren:
Die Ubuntu‑Repos haben nicht immer die neuesten Versionen. Alternativen:
- PPAs
- Snap
- Flatpak
- AppImage
.deb‑Pakete- Vorgebaute Binärdateien
- Asdf
- Cargo
- pipx
- uvx
- Selbst kompilieren
Asdf
Update (2025):
asdf wurde in v0.16.0 in Go neu geschrieben. Du kannst nun ein einzelnes Binary laden:
curl -sL https://api.github.com/repos/asdf-vm/asdf/releases/latest | \ jq -r '.assets[] | select(.name | test("^asdf-v.*-linux-amd64.tar.gz$"))\.browser_download_url' | \ xargs curl -sL | \ tar xz -C ~/bin/Die Befehle
asdf globalundasdf localwurden durchasdf setersetzt.Konfiguriere gemäß der Dokumentation, meiner .zshrc oder dem Plugin.
Alter Modus:
git clone https://github.com/asdf-vm/asdf.git ~/.asdfuv
curl -LsSf https://astral.sh/uv/install.sh | shPython
(Aktualisiert 2025)
Es gibt mehrere Möglichkeiten, Python zu installieren:
Offizielles Ubuntu‑Repo
sudo apt install python3Am einfachsten, aber ohne freie Versionswahl und ohne mehrere parallele Versionen.
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.11Gute Alternative; mehrere Versionen ohne Kompilieren.
curl https://pyenv.run | bash pyenv versions pyenv install "3.13"Pyenv kompiliert die gewünschten Versionen. Abhängigkeiten installieren:
sudo apt install \ build-essential \ libbz2-dev \ libffi-dev \ liblzma-dev \ libncursesw5-dev \ libreadline-dev \ libsqlite3-dev \ libssl-dev \ libxml2-dev \ libxmlsec1-dev \ llvm \ tk-dev \ xz-utils \ zlib1g-devasdf install python latest:3.10 # asdf local python latest:3.10 asdf set python latest:3.10asdf-python ist ein asdf-Plugin, das Pyenv zum Bauen/Installieren nutzt – sinnvoll, wenn du asdf auch für andere Sprachen wie nodejs oder ruby nutzt.
uv python install 3.12uvlädt eine vorgebaute Python‑Version von python-build-standalone.Beachte: Manche Programme sind mit diesen Builds inkompatibel, da sie nicht gegen Systemlibs linken.
Leider bietet
uvnoch kein--buildfür solche Fälle. Für alle anderen nehme ichuv: gut optimierte Builds ohne Kompilier‑Zeit.[pixi]
???
Mambaforge
wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh bash Mambaforge-Linux-x86_64.shFlatpak (Systemd vorher aktivieren)
sudo apt install flatpak gnome-software-plugin-flatpak gnome-softwareflatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepoflatpak updateCompiler und Build‑Tools
Stelle sicher, dass Compiler und Linker installiert sind:
sudo apt install \ build-essential \ cmake \ ninja-build \ clang \ -yRust
Installation:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shGo
Am bequemsten mit asdf.
asdf ...Wenn du nur die neueste Version willst:
sudo rm -rf /usr/local/go && \ wget -qO- "https://go.dev/dl/$(curl -s 'https://go.dev/dl/?mode=json' | \ jq -r '.[0].files[] | select(.os=="linux" and .arch=="amd64") | .filename')" | \ sudo tar -C /usr/local -xzf - && \ go versionNur für den lokalen Benutzer:
mkdir -p $HOME/.local && \ wget -qO- "https://go.dev/dl/$(curl -s 'https://go.dev/dl/?mode=json' | \ jq -r '.[0].files[] | select(.os=="linux" and .arch=="amd64") | .filename')" | \ tar -C $HOME/.local -xzf - && \ export PATH=$PATH:$HOME/.local/go/bin && \ go versionHugo
curl -sL https://api.github.com/repos/gohugoio/hugo/releases/latest | \ jq -r '.assets[] | select(.name | test("^hugo_extended_withdeploy_.*_linux-amd64\\.deb$"))\.browser_download_url' | \ xargs wget -q --show-progress -O hugo.deb && \ sudo dpkg -i --force-overwrite hugo.deb && \ sudo apt-get install -f && \ rm -f hugo.deb && \ hugo versionoder
CGO_ENABLED=1 go install --tags extended github.com/gohugoio/hugo@latestoder
HUGO_LATEST="0.121.1" wget -qO- https://github.com/gohugoio/hugo/releases/download/v${HUGO_LATEST}/hugo_extended_${HUGO_LATEST}_linux-amd64.tar.gz | tar xvz hugo -C ~/bin/oder
asdf plugin add hugo HUGO_LATEST=$(asdf list-all hugo | tail -1) asdf install hugo extended_$HUGO_LATEST asdf global hugo extended_$HUGO_LATESTZellij:
curl -sL https://api.github.com/repos/zellij-org/zellij/releases/latest | \ jq -r '.assets[] | select(.name | test("^zellij-x86_64-.*-linux-.*.tar.gz$"))\.browser_download_url' | \ xargs curl -sL | \ tar -xz -C ~/bin/ "zellij"Yt-dlp:
uv tool install yt-dlpoder
python -m pip install -U --pre yt-dlpoder
mkdir -p ~/bin wget -O ~/bin/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux yt-dlp --update-to nightlyExifTool:
ExifTool ist sehr nützlich, um meine Fotosammlung ordentlich zu halten.
mkdir -p ~/bin EXIFTOOL_LATEST=12.70 wget -qO- https://exiftool.org/Image-ExifTool-${EXIFTOOL_LATEST}.tar.gz | tar xvzf - -C ~/bin/ mv ~/bin/Image-ExifTool* ~/bin/ExifTool ln -s ~/bin/ExifTool/exiftool ~/bin/exiftoolAWS CLI
sudo snap install aws-cli --classic aws --versionoder
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/installoder mit
asdf:asdf plugin add awscli asdf install awscli latest asdf global awscli latestgit-filter-repo
uv tool install git-filter-repoTailwind
curl -sL "https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64" -o ~/bin/tailwindcss chmod +x ~/bin/tailwindcssWatchman
Siehe https://facebook.github.io/watchman/docs/install
curl -sL https://api.github.com/repos/facebook/watchman/releases/latest | \ jq -r '.assets[] | select(.name | test("^watchman-.*-linux\\.zip$"))\.browser_download_url'Standard‑Shell setzen:
chsh -s $(which zsh)
GNOME Keyring
Es gibt diverse Programme zum sicheren Speichern von Passwörtern, Schlüsseln und Zertifikaten. GNOME Keyring ist sehr verbreitet und kompatibel mit Docker, Git, Chromium und GnuPG.
Es ist für GUIs gedacht, aber ich konnte es auch unter Ubuntu (headless) nutzen.
Per apt installieren
sudo apt install gnome-keyringgnome-keyring-daemonwird nach dem Login automatisch per systemd gestartet, ist aber gesperrt.GNOME Keyring beim Öffnen eines Terminals entsperren (Zsh)
echo 'eval $(echo -n db | gnome-keyring-daemon --unlock --replace 2> /dev/null)' >> ~/.zshrcTest
uvx keyring set system username uvx keyring get system username
Alternativen: pass, HashiCorp Vault, kwallet
Dateien zwischen Distros im WSL2 teilen
Führe folgenden Befehl aus, um dem systemd mitzuteilen, das Wurzelverzeichnis / der aktuellen
Distribution unter /mnt/wsl/instances/$DISTRO zu mounten. Der Ordner /mnt/wsl/ (oder der in
[automount].root konfigurierte) wird von allen laufenden Distributionen geteilt.
cat <<EOF | sudo tee /etc/systemd/system/mnt-wsl-instances-${WSL_DISTRO_NAME/-/}.mount
[Unit]
Description=WSL Instances
[Mount]
What=/
Where=/mnt/wsl/instances/${WSL_DISTRO_NAME/-/}
Type=none
Options=defaults,bind,X-mount.mkdir
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable mnt-wsl-instances-${WSL_DISTRO_NAME/-/}.mount --now
WSL2‑Image komprimieren
Das Komprimieren des Images kann ein paar MB sparen.
In WSL2:
# apt autoremove && apt autoclean && apt clean # fstrim /In PowerShell:
> Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName PackageFamilyName ----------------- CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc> wsl --shutdown > optimize-vhd -Path "C:\Users\Julio\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx" -Mode full
X‑Server
Installiere VcXsrv und erlaube es in der Firewall
(Windows Defender).
Aktiviere „Disable access control“.
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
Hinweis: Die beste Clipboard‑Integration für Neovim gelingt mit win32yank.exe. Es wird mit Neovim für Windows mitinstalliert, kann aber auch manuell installiert werden:
mkdir ~/bin
export PATH=$HOME/bin:$PATH
wget https://github.com/equalsraf/win32yank/releases/latest/download/win32yank-x64.zip
unzip -p win32yank-x64.zip win32yank.exe > ~/bin/win32yank.exe
chmod +x ~/bin/win32yank.exe
rm -f win32yank-x64.zip
In den Register + mit "+y kopieren. Alternativ :set clipboard=unnamedplus im Neovim.
Docker Desktop mit WSL2
Diese Option ist am einfachsten, aber nur kostenlos für privaten, akademischen, Open‑Source‑Gebrauch oder kleine Unternehmen (weniger als 250 Mitarbeiter UND weniger als 10 Mio. USD Jahresumsatz).
Lade Docker Desktop herunter (z. B. via Chocolatey).
Aktiviere Use the WSL 2 based engine und Expose daemon on tcp://localhost:2375 without TLS.
Das reicht, um Docker im Ubuntu‑Terminal normal zu benutzen.
Docker mit WSL2 ohne Docker Desktop
Docker Desktop ist in großen Unternehmen kostenpflichtig, aber zum Betreiben von Docker nicht nötig.
Alternativen:
- Docker direkt in der Distro unter WSL2 installieren (mit Systemd oder containerd)
- Podman
- Rancher Desktop
Docker im WSL2 mit Systemd
An anderer Stelle dieses Artikels erläutere ich das Aktivieren von Systemd via /etc/wsl.conf.
Am einfachsten installierst du Docker mit folgendem Script:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
Es druckt die auszuführenden Kommandos. Entferne --dry-run, um sie auszuführen.
Wenn du Schritt für Schritt ohne Script vorgehen willst:
Alte Pakete entfernen
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; donesudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extrassudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd rm ~/.docker/config.jsonOffizielles Docker‑Apt‑Repository hinzufügen
# Offiziellen GPG‑Key hinzufügen sudo apt update sudo apt install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg# Repository eintragen echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$([ -r /etc/os-release ] && . /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullDocker und docker‑compose‑Plugin installieren
sudo apt update && \ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginHinweis: docker-compose v1 ist die alte Python‑Version, seit Mai 2021 ohne Updates. Das Plugin wurde in Go neu geschrieben; der Befehl lautet
docker compose(mit Leerzeichen).Optional: Benutzer zur Gruppe
dockerhinzufügen, umsudozu vermeiden:sudo usermod -aG docker $USERAktuelle Hinweise in der offiziellen Dokumentation.
Achtung: Das kann ein Sicherheitsrisiko sein. Eine sicherere (aber eingeschränkte) Alternative ist der Daemon im rootless mode.
Installation testen
sudo docker run hello-worldSpeicherort für Anmeldedaten (Credential Helper) konfigurieren
Nützlich, wenn du
docker loginnutzt (Docker Hub oder private Registry). Ohne Credential Helper wird das Passwort im Klartext (base64) in~/.docker/config.jsongespeichert.Alternative 1: Pass
sudo apt install gnupg2 pass sudo apt install golang-docker-credential-helperswget -q -O ~/bin/docker-credential-pass $(wget -q -O - https://api.github.com/repos/docker/docker-credential-helpers/releases | \ jq -r '.[0].assets[] | select(.name | test("^docker-credential-pass-.*linux-amd64$")) | .browser_download_url') && chmod +x ~/bin/docker-credential-passIn
~/.docker/config.json:{ "credsStore": "pass" }Alternative 2: gnome-keyring
Installiere und konfiguriere wie in Gnome Keyring beschrieben.
wget -q -O ~/bin/docker-credential-secretservice $(wget -q -O - https://api.github.com/repos/docker/docker-credential-helpers/releases | \ jq -r '.[0].assets[] | select(.name | test("^docker-credential-secretservice-.*linux-amd64$")) | .browser_download_url') && chmod +x ~/bin/docker-credential-secretserviceIn
~/.docker/config.json:{ "credsStore": "secretservice" }
Docker mit Rancher Desktop
Rancher ist ein guter Ersatz für Docker Desktop – besonders für Kubernetes. Installation per Chocolatey:
choco install rancher-desktop
NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
$ cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
sudo systemctl restart docker
Mit folgendem Befehl testen:
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
Visual Studio Code mit WSL2
VS Code, das unter Windows installiert ist, hat native Integration mit WSL2. Du musst die Erweiterungen auch im WSL2 installieren.
GUI für Git
Git auf der Kommandozeile ist großartig, aber manches geht visuell einfacher.
Unter Windows installierte Tools sind oft langsam beim Zugriff auf das WSL‑Dateisystem – ich empfehle die Installation direkt unter Linux. Das schließt einige GUIs aus, z. B. Sourcetree.
Tools, die ich mag:
- Bereits mit guter Versionskontrolle. Es gibt Erweiterungen mit mehr Funktionen, die ich aber nicht nutze.
- Die erste Git‑GUI. Nutze ich oft, um Änderungen in einer einzelnen Datei zu sichten.
- Sehr umfangreich und hübsch, aber kostenpflichtig.
sudo apt update sudo apt install -y libgbm-dev libnotify4 wget https://release.gitkraken.com/linux/gitkraken-amd64.deb sudo dpkg -i ./gitkraken-amd64.deb sudo apt install -fÜber Flatpak:
$ flatpak search gittyup Name Description Application ID Version Branch Remotes Gittyup Graphical Git client com.github.Murmele.Gittyup v1.3.0 stable flathubflatpak install flathub com.github.Murmele.Gittyupflatpak run --nosocket=fallback-x11 --socket=x11 com.github.Murmele.GittyupAppImage:
wget -q -O ~/bin/gittyup \ $(wget -q -O - https://api.github.com/repos/Murmele/Gittyup/releases | \ jq -r '.[0].assets[] | select(.name | test("^Gittyup.*AppImage$")) | .browser_download_url') && \ chmod +x ~/bin/gittyup && \ gittyup --version
Zugriff per SSH
WSL2 ist eine VM mit eigener IP‑Adresse.
Die Adresse erhältst du so:
OpenSSH installieren
sudo apt install openssh-serverEinstellungen in
/etc/ssh/sshd_configanpassenPort 2255 ListenAddress 0.0.0.0 PasswordAuthentication yesIP‑Adresse der VM ermitteln
Mit iproute2 in WSL2:
$ ip addr show eth0 … inet 172.21.145.176/20 brd 172.21.159.255 scope global eth0 …Oder per PowerShell:
❯ $wsl_ip = wsl -- ip -o -4 -j addr s eth0 | ConvertFrom-Json | %{ $_.addr_info.local } | ?{ $_ } ❯ $host_ip = (Get-NetIPAddress).IPAddress | ?{ $_ -match ($wsl_ip -replace '^((\d+\.){2}).*$','^$1') } ❯ $wsl_ip,$host_ip 172.30.121.114 172.30.112.1Prüfen, ob der Dienst läuft
Vorher den Abschnitt zum Aktivieren von Systemd beachten.
$ sudo systemctl status sshd.service ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) since…Portproxy zwischen VM und Host anlegen
In einer PowerShell als Admin:
netsh interface portproxy add v4tov4 listenport=2255 listenaddress=0.0.0.0 connectport=2255 connectaddress=$wsl_ipPort 2255 in der Firewall freigeben
netsh advfirewall firewall add rule name="Open Port 2255 for WSL2" dir=in action=allow protocol=TCP localport=2255$ netsh interface portproxy show v4tov4 Listen on ipv4: Connect to ipv4: Address Port Address Port --------------- ---------- --------------- ---------- 0.0.0.0 2255 172.30.121.114 2255Rückgängig machen
Port‑Weiterleitung entfernen:
netsh interface portproxy delete v4tov4 listenport=2255 listenaddress=0.0.0.0Änderung prüfen:
netsh interface portproxy show v4tov4Alle Einstellungen löschen:
netsh interface portproxy resetFirewall‑Regel entfernen:
netsh advfirewall firewall delete rule name="Open Port 2255 for WSL2" protocol=TCP localport=2255Prüfen:
$ netsh advfirewall firewall show rule name="Open Port 2255 for WSL2" No rules match the specified criteria.netsh advfirewall firewall show rule name=all | Select-String -Pattern "WSL" -Context 0,4
Scanner
Es gibt viele Scanner‑Programme, aber das beste, das ich kenne, ist XSane – ein Frontend für SANE.
sudo apt install xsane
Ich habe ein Canon Pixma MG5450 Multifunktionsgerät. Der volle Name erscheint nicht in der Liste der unterstützten Geräte, aber es gehört zur „PIXMA MG5400 Series“, die im Backend sane-pixma enthalten ist.
scanimage -L sendet einen Broadcast, um Scanner zu entdecken. Canon‑Geräte werden standardmäßig
über das BJNP‑Protokoll auf UDP‑Port 8612 gefunden.
Leider erkannte der Befehl meinen Scanner nicht auf Anhieb.
Ich wusste, dass es kein Verbindungsproblem war, denn curl http://192.168.15.7 lieferte die Seite
des Geräts (die IP ist auf meinem DHCP‑Server fixiert).
Die Lösung war, die IP im pixma.conf zu hinterlegen:
echo "bjnp://192.168.15.7" | sudo tee -a /etc/sane.d/pixma.conf
Danach funktionierte der Befehl problemlos:
$ scanimage -L
device `pixma:MG5400_192.168.15.7' is a CANON Canon PIXMA MG5400 Series multi-function peripheral
Der Parameter --all listet mögliche Optionen des verwendeten Backends auf:
$ scanimage --device "pixma:MG5400_192.168.15.7" --all
Output format is not set, using pnm as a default.
All options specific to device `pixma:MG5400_192.168.15.7':
Scan mode:
--resolution auto||75|150|300|600|1200|2400dpi [75]
Sets the resolution of the scanned image.
--mode auto|Color|Gray|Lineart [Color]
Selects the scan mode (e.g., lineart, monochrome, or color).
--source Flatbed [Flatbed]
Selects the scan source (such as a document-feeder). Set source before
mode and resolution. Resets mode and resolution to auto values.
…
So könnte ich ein Dokument mit 150 dpi direkt per Kommandozeile mit scanimage scannen:
scanimage \
--device "pixma:MG5400_192.168.15.7" \
--format=png \
--output-file scan.png \
--resolution 150 \
--progress
Mit XSane geht es aber deutlich komfortabler.
Audio
Programme wie Virtual Audio Cable und Voicemeeter sind hilfreich für Setups mit mehreren Lautsprechern und fürs Streaming. Die kostenlosen Versionen beider lassen sich über Chocolatey installieren.
Control Panel\Hardware and Sound » Soundöffnen;- Unter „Playback“
_VoiceMeeter Input_als Standardgerät und_VoiceMeeter Aux Input_als Standardkommunikationsgerät einstellen; - Unter „Recording“
_VoiceMeeter Output_als Standardgerät und_VoiceMeeter Aux Output_als Standardkommunikationsgerät einstellen; - In den Eigenschaften jedes Geräts unter „Advanced“ die Abtastrate setzen (z. B. 24 Bit, 48000 Hz). Der gleiche Wert muss in Voicemeeter gesetzt sein (Menu » System settings » Preferred Main SampleRate).
- Beispielkonfiguration Voicemeeter Banana:
- Hardware Input 1: Notebook‑Mikrofon
- Hardware Input 2: Headset‑Mikrofon
- Hardware Input 3: CABLE Output (VB‑Audio Virtual Cable)
- Voicemeeter VAIO: Desktop‑Ausgang » A1, B1
- Voicemeeter AUX: Calls‑Ausgang » A1
- A1: WDM: Speakers / Headphones
- A2: WDM: Headset
- A3: WDM: TV via HDMI
Hinweis 1: Ich aktiviere das Bluetooth‑Headset‑Mikrofon nur bei Bedarf – spart Akku und erlaubt den qualitativ besseren Wiedergabemodus.
Hinweis 2: Nach der Voicemeeter‑Installation hatte ich Probleme mit Spotify; Neuinstallation von Spotify hat geholfen.
Ebenfalls nützlich: EarTrumpet – pro Programm Ausgabegerät und Lautstärke einstellen.
Streaming
Für Videocalls, in denen ich neben dem Mikrofon auch den Systemton teilen möchte, aber ohne den Ton des Calls (Stimmen der anderen):
- In Meets/Teams/Discord/Skype:
- Microphone: VoiceMeeter Output
- Speaker: VoiceMeeter Aux Input
- In VoiceMeeter:
- Mic PC: B1
- Desktop (Voicemeeter VAIO): A1, B1
- Calls (Voicemeeter AUX): A1
Links
- https://github.com/bitsadmin/winconfig/tree/master/CleanWindows
- https://www.dedoimedo.com/computers/windows-10-essential-post-install-tweaks.html
- https://nickymeuleman.netlify.app/blog/linux-on-windows-wsl2-zsh-docker
- https://github.com/neovim/neovim/wiki/FAQ#how-to-use-the-windows-clipboard-from-wsl
- https://vb-audio.com/Voicemeeter/VoicemeeterBanana_UserManual.pdf
- https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file
- https://aka.ms/wslsystemd
- https://learn.microsoft.com/en-us/windows/wsl/wsl-config
- https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html