Comprehensive guide for testing the CachyOS WSL distribution on Windows.
- Windows 10/11 with WSL 2 support
- WSL 2.4.4 or later (check with
wsl --version) - Administrator privileges (required for registry override)
- PowerShell 5.1 or later
dist/cachyos-v3.wsl- The distribution file (390MB)scripts/override-manifest.ps1- PowerShell test script
Transfer the following files to your Windows machine:
cachyos-wsl/
├── dist/cachyos-v3.wsl
└── scripts/override-manifest.ps1
Recommended location: C:\Users\<YourUser>\Downloads\cachyos-wsl\
Right-click PowerShell and select "Run as Administrator"
Verify WSL version:
wsl --versionExpected output should show WSL 2.4.4 or later.
Navigate to the directory containing the files:
cd C:\Users\<YourUser>\Downloads\cachyos-wslRun the override script:
.\scripts\override-manifest.ps1 -TarPath .\dist\cachyos-v3.wslExpected Output:
- SHA256 hash computed successfully
- Manifest file created
- Registry override set
- Distribution appears in output
Troubleshooting:
- If you get "script execution is disabled", run:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass - If you get "not running as Administrator", restart PowerShell as Administrator
Check that the distribution is listed:
wsl --list --onlineExpected Output:
NAME FRIENDLY NAME
cachyos-wsl-v1 CachyOS WSL Distribution
...
✅ Test Checkpoint 1: Distribution visible in WSL list
Install the distribution:
wsl --install cachyos-wsl-v1Expected Behavior:
- WSL downloads and extracts the rootfs
- Installation completes
- OOBE script launches automatically
Installation Log Check: Look for messages indicating:
- Extracting files
- Setting up distribution
- Running OOBE command
✅ Test Checkpoint 2: Installation completes without errors
The OOBE script should automatically run and display:
============================================
Welcome to CachyOS for WSL!
============================================
Please create a default user account.
This user will have administrative privileges via sudo.
For more information visit: https://wiki.cachyos.org/
Enter new UNIX username:
Test Actions:
- Enter a valid username (lowercase, start with letter)
- Set a password when prompted
- Confirm password
Expected Behavior:
- Username validation works (rejects invalid names)
- Password is set successfully
- Success message displays:
User <username> created successfully!
Verify User Creation:
- User created with UID 1000
- User added to wheel group
- Sudo access enabled
- Pacman keyring initialized
Troubleshooting:
- If OOBE fails, check
/var/log/for errors - Verify OOBE script exists:
ls -la /usr/lib/wsl/oobe.sh - Check permissions: should be 755
✅ Test Checkpoint 3: OOBE successfully creates user account
After OOBE completes, close and reopen the distribution:
wsl -d cachyos-wsl-v1Expected Behavior:
- Should log in as the user you created (not root)
- Prompt shows:
username@hostname:~$
Verify User Configuration:
# Check current user
whoami
# Should output: your_username
# Check UID
id -u
# Should output: 1000
# Check groups
groups
# Should include: wheel
# Test sudo access
sudo whoami
# Should output: root (after entering password)✅ Test Checkpoint 4: Default user configuration correct
- Press Windows key
- Search for "CachyOS"
- Verify shortcut appears with custom icon
Expected:
- Shortcut named "CachyOS WSL Distribution" (or similar)
- Custom CachyOS icon visible (teal/cyan logo)
- Clicking shortcut launches distribution
Troubleshooting:
- If no icon, verify
/usr/lib/wsl/cachyos.icoexists - Check
/etc/wsl-distribution.confhas correct icon path - Icon should be 107KB with multiple resolutions
✅ Test Checkpoint 5: Start Menu shortcut created with icon
Open Windows Terminal (if installed):
- Click dropdown arrow (⌄)
- Look for "CachyOS WSL Distribution" profile
- Select it to open
Expected:
- Profile appears in dropdown menu
- Opening profile shows CachyOS distribution
- Color scheme matches CachyOS branding:
- Dark background (#2E3440)
- Cyan cursor (#1dc7b5)
- Nord-based colors
Verify Profile Template: Inside WSL:
cat /usr/lib/wsl/terminal-profile.jsonShould show color scheme configuration.
Troubleshooting:
- If profile not generated, check Windows Terminal version (needs fragment extension support)
- Verify
/usr/lib/wsl/terminal-profile.jsonexists in rootfs
✅ Test Checkpoint 6: Windows Terminal profile generated correctly
Inside the CachyOS distribution:
# Update package databases
sudo pacman -Sy
# Search for a package
pacman -Ss neofetch
# Install a test package
sudo pacman -S neofetch
# Run the installed package
neofetch
# Remove the package
sudo pacman -R neofetchExpected Behavior:
- Database sync succeeds without signature errors
- Package search works
- Installation succeeds
- Package runs correctly
- Removal works
Troubleshooting:
- If signature errors, verify keyring was initialized in OOBE
- Check
/var/log/pacman.logfor errors - Manually run:
sudo pacman-key --init && sudo pacman-key --populate archlinux cachyos
✅ Test Checkpoint 7: Package manager functional
Check systemd status:
# Verify systemd is running
ps aux | grep systemd
# Check systemd status
systemctl status
# List failed units (should be minimal)
systemctl --failed
# Verify masked services
systemctl list-unit-files | grep maskedExpected:
- systemd is PID 1
systemctl statusshows "running"- Problematic services are masked:
- systemd-resolved.service
- systemd-networkd.service
- NetworkManager.service
- systemd-tmpfiles-* services
- tmp.mount
Verify WSL Config:
cat /etc/wsl.confShould show:
[boot]
systemd = true✅ Test Checkpoint 8: systemd configured correctly
# Test DNS resolution
ping -c 3 archlinux.org
# Test HTTPS
curl -I https://cachyos.org
# Check nameserver
cat /etc/resolv.confExpected:
- Ping succeeds
- HTTPS connection works
/etc/resolv.confis WSL-managed
✅ Test Checkpoint 9: Network connectivity works
# Run Windows command from Linux
cmd.exe /c ver
# Check Windows PATH integration
echo $PATH | grep -i windows
# Access Windows filesystem
ls /mnt/c/Users/Expected:
- Windows commands execute
- Windows paths in $PATH
/mnt/c/accessible
Verify WSL Config:
grep -A 5 "\[interop\]" /etc/wsl.confShould show:
[interop]
enabled = true
appendWindowsPath = true✅ Test Checkpoint 10: Windows interoperability functional
# Create test file
echo "test" > ~/test.txt
# Check ownership
ls -l ~/test.txt
# Should be owned by your user (UID 1000)
# Test sudo
sudo touch /root/test-root.txt
ls -l /root/test-root.txt
# Should be owned by root✅ Test Checkpoint 11: File permissions work correctly
# Check locale
locale
# Check timezone
timedatectl
# Test date
dateExpected:
- Locale configured (may default to C.UTF-8)
- Timezone syncs with Windows
- Date is correct
Install a larger package:
sudo pacman -S --noconfirm base-devel gitExpected:
- Installation completes successfully
- No dependency issues
- All tools functional
✅ Test Checkpoint 12: Complex package installation works
After testing is complete, clean up the registry override:
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss" -Name DistributionListUrlVerify:
wsl --list --onlineShould no longer show cachyos-wsl-v1 (reverts to Microsoft's official list).
Note: The installed distribution remains installed even after cleanup.
✅ Test Checkpoint 13: Registry cleanup successful
If you want to remove the test installation:
wsl --unregister cachyos-wsl-v1Warning: This deletes all data in the distribution.
Create a testing report documenting:
- All test checkpoints and results (✅ Pass / ❌ Fail)
- Any errors encountered
- Workarounds applied
- Performance observations
- Suggestions for improvements
| # | Checkpoint | Expected Result |
|---|---|---|
| 1 | Distribution visible in WSL list | ✅ Shows in wsl --list --online |
| 2 | Installation completes | ✅ No errors during install |
| 3 | OOBE creates user | ✅ User created with UID 1000 |
| 4 | Default user configured | ✅ Auto-login works, sudo enabled |
| 5 | Start Menu shortcut | ✅ Shortcut with custom icon |
| 6 | Terminal profile | ✅ Custom color scheme applied |
| 7 | Package manager | ✅ pacman works, no signature errors |
| 8 | systemd | ✅ systemd running, services masked |
| 9 | Network | ✅ DNS and internet access work |
| 10 | Windows interop | ✅ Can run Windows commands |
| 11 | File permissions | ✅ Ownership and sudo work |
| 12 | Complex packages | ✅ base-devel installs successfully |
| 13 | Registry cleanup | ✅ Override removed cleanly |
Cause: Registry override not set correctly Solution: Re-run override-manifest.ps1 as Administrator
Cause: Script permissions or path incorrect Solution:
sudo chmod +x /usr/lib/wsl/oobe.sh
sudo /usr/lib/wsl/oobe.shCause: Keyring not initialized Solution:
sudo pacman-key --init
sudo pacman-key --populate archlinux cachyosCause: Icon file missing or path incorrect
Solution: Verify in /etc/wsl-distribution.conf and check /usr/lib/wsl/cachyos.ico exists
Cause: Service not masked Solution:
sudo systemctl mask systemd-resolvedThe distribution is considered ready for release when:
✅ All 13 test checkpoints pass ✅ No critical errors during installation ✅ OOBE completes successfully ✅ Package manager fully functional ✅ systemd services properly configured ✅ Windows integration working ✅ No data corruption or permission issues
- Document any issues found and create tasks to fix them
- Update configuration files based on testing feedback
- Rebuild rootfs with fixes (if needed)
- Retest to verify fixes
- Prepare for distribution:
- Create release notes
- Document installation instructions for end users
- Consider publishing to GitHub Releases
- Optional: Create video demo
After testing, save these artifacts:
- Testing report (checklist results)
- Screenshots of:
- Start Menu shortcut with icon
- Windows Terminal with color scheme
- OOBE welcome screen
wsl --list --onlineoutput
- Log files from any errors
- Performance metrics (installation time, memory usage)
Consider automating tests with:
- PowerShell Pester tests for WSL CLI operations
- GitHub Actions with Windows runners
- Automated screenshot capture
- Integration testing framework
Testing completed by: _________________ Date: _________________ WSL Version: _________________ Windows Version: _________________ Overall Result: ✅ Pass / ❌ Fail