mirror of
https://github.com/microsoft/WSL.git
synced 2025-12-10 00:44:55 -06:00
Compare commits
152 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49864b525e | ||
|
|
7741740f87 | ||
|
|
caf38dcad2 | ||
|
|
1390e644fb | ||
|
|
c64eb180d8 | ||
|
|
2844e4a862 | ||
|
|
8f744fc188 | ||
|
|
4637f3758f | ||
|
|
0f6f3c1e02 | ||
|
|
82e54b12a8 | ||
|
|
0f07dae96d | ||
|
|
d23025b575 | ||
|
|
71c87c211f | ||
|
|
be82716c40 | ||
|
|
ba90ee11fa | ||
|
|
4207cc80bd | ||
|
|
b0df225c51 | ||
|
|
722eecafba | ||
|
|
66904342a5 | ||
|
|
d9c69a50ab | ||
|
|
c3d369df90 | ||
|
|
1b7e27ef6f | ||
|
|
c38230d1f1 | ||
|
|
1ea3a8e18b | ||
|
|
f75997128d | ||
|
|
dbf49f1ae9 | ||
|
|
b73897e88a | ||
|
|
7226b05100 | ||
|
|
b6cc29eefc | ||
|
|
87c1100620 | ||
|
|
7c010a1e93 | ||
|
|
9fad2a1b59 | ||
|
|
b2c28b92fe | ||
|
|
ea5c29eae7 | ||
|
|
09c17eb6c6 | ||
|
|
bafd381aec | ||
|
|
d48ece45a4 | ||
|
|
ae4347d9df | ||
|
|
64160a40f0 | ||
|
|
fdfe1eb843 | ||
|
|
296fe805b9 | ||
|
|
a231b6b5f9 | ||
|
|
2715a79fb4 | ||
|
|
3361736a3a | ||
|
|
cccae113d7 | ||
|
|
9e9ef6f145 | ||
|
|
c1b77b125d | ||
|
|
dab574ebc1 | ||
|
|
a445eaa89f | ||
|
|
b3a7b7d395 | ||
|
|
0974c302c0 | ||
|
|
c7aad61611 | ||
|
|
5d097195fa | ||
|
|
8540b2b6f5 | ||
|
|
05d6129c4f | ||
|
|
491d8d5707 | ||
|
|
babf0c24f1 | ||
|
|
9f77522f64 | ||
|
|
9b5659d4b9 | ||
|
|
d4e64b658f | ||
|
|
65eea7b31c | ||
|
|
98f4960118 | ||
|
|
e0c6196cd5 | ||
|
|
8313d50f2e | ||
|
|
582e15e4e0 | ||
|
|
004bb36f9e | ||
|
|
5c5fd4a1b4 | ||
|
|
332efe1a8d | ||
|
|
4bba074bd2 | ||
|
|
c8cd16a169 | ||
|
|
95fcc56983 | ||
|
|
2d976b2ef9 | ||
|
|
f8c26f7c32 | ||
|
|
7b17a7a7ab | ||
|
|
259ec4e5a9 | ||
|
|
04eb4d4e8f | ||
|
|
b9e74a3361 | ||
|
|
146a7511a5 | ||
|
|
2eac1dafec | ||
|
|
25f7a7b38c | ||
|
|
d43b725b3d | ||
|
|
36c077bd69 | ||
|
|
3e322b719c | ||
|
|
94f44b692c | ||
|
|
513fc5c0c1 | ||
|
|
feb9ad97a4 | ||
|
|
8de7016905 | ||
|
|
39b4cd8873 | ||
|
|
dc34ebfd8c | ||
|
|
fd3b858064 | ||
|
|
6121b56152 | ||
|
|
17bd3716b4 | ||
|
|
267bbb7426 | ||
|
|
ca1f883dd0 | ||
|
|
3794ba3496 | ||
|
|
4b237351a9 | ||
|
|
642331364d | ||
|
|
b89e1f58c9 | ||
|
|
8106556cec | ||
|
|
3524feba77 | ||
|
|
0c0ca04ab0 | ||
|
|
bba5af9aea | ||
|
|
6d18bf5074 | ||
|
|
4867250d11 | ||
|
|
3c800c8661 | ||
|
|
494808d308 | ||
|
|
41f97bbc81 | ||
|
|
d83c1b552a | ||
|
|
abce91d14b | ||
|
|
cefe0cdcc1 | ||
|
|
e8145a7ee9 | ||
|
|
2bdd6b999d | ||
|
|
ae77467ec8 | ||
|
|
ca1ed5d5ff | ||
|
|
ae323a4e9b | ||
|
|
227dc68783 | ||
|
|
ec54df6362 | ||
|
|
5f34d17955 | ||
|
|
4547e2a6f2 | ||
|
|
e563689b88 | ||
|
|
5e88d9acbf | ||
|
|
1b7620a4f8 | ||
|
|
17319988a6 | ||
|
|
4aa472255d | ||
|
|
c4b6a6b392 | ||
|
|
c1d6ad1d15 | ||
|
|
902848b76b | ||
|
|
9e09fe791c | ||
|
|
e391e7854a | ||
|
|
dedf36169d | ||
|
|
6319b02687 | ||
|
|
c34a361330 | ||
|
|
3be5af4b38 | ||
|
|
cc113d7c38 | ||
|
|
dd5dc89bc7 | ||
|
|
ece64c8b14 | ||
|
|
407bfda099 | ||
|
|
c7964ead5b | ||
|
|
6e2cb1d94b | ||
|
|
c3f59f8b12 | ||
|
|
02ca6d3d2d | ||
|
|
1f0e66d25c | ||
|
|
b9a52e96c7 | ||
|
|
dbb68a23e4 | ||
|
|
5d20b44bc6 | ||
|
|
71daaef7bb | ||
|
|
3164dc425a | ||
|
|
5fd4ffb064 | ||
|
|
456b68125f | ||
|
|
63d1396714 | ||
|
|
94ecb86067 | ||
|
|
4b6b3884ba |
@ -58,6 +58,7 @@ IncludeCategories:
|
||||
- Regex: '^"(stdafx.h|pch.h|precomp.h)"$'
|
||||
Priority: -1
|
||||
IndentCaseLabels: false
|
||||
InsertBraces: true
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
|
||||
218
.github/copilot-instructions.md
vendored
Normal file
218
.github/copilot-instructions.md
vendored
Normal file
@ -0,0 +1,218 @@
|
||||
# Windows Subsystem for Linux (WSL)
|
||||
|
||||
**ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.**
|
||||
|
||||
WSL is the Windows Subsystem for Linux - a compatibility layer for running Linux binary executables natively on Windows. This repository contains the core Windows components that enable WSL functionality.
|
||||
|
||||
## Working Effectively
|
||||
|
||||
### Critical Platform Requirements
|
||||
- **Full builds ONLY work on Windows** with Visual Studio and Windows SDK 26100
|
||||
- **DO NOT attempt to build the main WSL components on Linux** - they require Windows-specific APIs, MSBuild, and Visual Studio toolchain
|
||||
- Many validation and development tasks CAN be performed on Linux (documentation, formatting, Python validation scripts)
|
||||
|
||||
### Windows Build Requirements (Required for Full Development)
|
||||
- CMake >= 3.25 (`winget install Kitware.CMake`)
|
||||
- Visual Studio with these components:
|
||||
- Windows SDK 26100
|
||||
- MSBuild
|
||||
- Universal Windows platform support for v143 build tools (X64 and ARM64)
|
||||
- MSVC v143 - VS 2022 C++ ARM64 build tools (Latest + Spectre) (X64 and ARM64)
|
||||
- C++ core features
|
||||
- C++ ATL for latest v143 tools (X64 and ARM64)
|
||||
- C++ Clang compiler for Windows
|
||||
- .NET desktop development
|
||||
- .NET WinUI app development tools
|
||||
- Enable Developer Mode in Windows Settings OR run with Administrator privileges (required for symbolic link support)
|
||||
|
||||
### Building WSL (Windows Only)
|
||||
1. Clone the repository
|
||||
2. Generate Visual Studio solution: `cmake .`
|
||||
3. Build: `cmake --build . -- -m` OR open `wsl.sln` in Visual Studio
|
||||
4. **NEVER CANCEL: Build takes 20-45 minutes on typical hardware. Set timeout to 60+ minutes.**
|
||||
|
||||
Build parameters:
|
||||
- `cmake . -A arm64` - Build for ARM64
|
||||
- `cmake . -DCMAKE_BUILD_TYPE=Release` - Release build
|
||||
- `cmake . -DBUILD_BUNDLE=TRUE` - Build bundle msix package (requires ARM64 built first)
|
||||
|
||||
### Deploying WSL (Windows Only)
|
||||
- Install MSI: `bin\<platform>\<target>\wsl.msi`
|
||||
- OR use script: `powershell tools\deploy\deploy-to-host.ps1`
|
||||
- For Hyper-V VM: `powershell tools\deploy\deploy-to-vm.ps1 -VmName <vm> -Username <user> -Password <pass>`
|
||||
|
||||
## Cross-Platform Development Tasks
|
||||
|
||||
### Documentation (Works on Linux/Windows)
|
||||
- Install tools: `pip install mkdocs-mermaid2-plugin mkdocs --break-system-packages`
|
||||
- Build docs: `mkdocs build -f doc/mkdocs.yml`
|
||||
- **Build time: ~0.5 seconds. Set timeout to 5+ minutes for safety.**
|
||||
- Output location: `doc/site/`
|
||||
- **Note**: May show warnings about mermaid CDN access on restricted networks
|
||||
|
||||
### Code Formatting and Validation (Works on Linux/Windows)
|
||||
- Format check: `clang-format --dry-run --style=file <files>`
|
||||
- Apply formatting: `clang-format -i --style=file <files>`
|
||||
- Format all source: `powershell formatsource.ps1` (available at repo root after running `cmake .`)
|
||||
- Validate copyright headers: `python3 tools/devops/validate-copyright-headers.py`
|
||||
- **Note**: Will report missing headers in generated/dependency files (_deps/), which is expected
|
||||
- Validate localization: `python3 tools/devops/validate-localization.py`
|
||||
- **Note**: Only works after Windows build (requires localization/strings/en-us/Resources.resw)
|
||||
|
||||
### Distribution Validation (Limited on Linux)
|
||||
- Validate distribution info: `python3 distributions/validate.py distributions/DistributionInfo.json`
|
||||
- **Note**: May fail on Linux due to network restrictions accessing distribution URLs
|
||||
|
||||
## Testing
|
||||
|
||||
### Unit Tests (Windows Only - TAEF Framework)
|
||||
- Run all tests: `bin\<platform>\<target>\test.bat`
|
||||
- **NEVER CANCEL: Full test suite takes 30-60 minutes. Set timeout to 90+ minutes.**
|
||||
- Run subset: `bin\<platform>\<target>\test.bat /name:*UnitTest*`
|
||||
- Run specific test: `bin\<platform>\<target>\test.bat /name:<class>::<test>`
|
||||
- WSL1 tests: Add `-Version 1` flag
|
||||
- Fast mode (after first run): Add `-f` flag (requires `wsl --set-default test_distro`)
|
||||
|
||||
Test debugging:
|
||||
- Wait for debugger: `/waitfordebugger`
|
||||
- Break on failure: `/breakonfailure`
|
||||
- Run in-process: `/inproc`
|
||||
|
||||
### Linux Unit Tests (Linux Only)
|
||||
- Location: `test/linux/unit_tests/`
|
||||
- Build script: `test/linux/unit_tests/build_tests.sh`
|
||||
- **Note**: Requires specific Linux build environment setup not covered in main build process
|
||||
|
||||
## Validation Scenarios
|
||||
|
||||
### Always Test These After Changes:
|
||||
1. **Documentation Build**: Run `mkdocs build -f doc/mkdocs.yml` and verify no errors
|
||||
2. **Code Formatting**: Run `clang-format --dry-run --style=file` on changed files
|
||||
3. **Windows Build** (if on Windows): Full cmake build cycle
|
||||
4. **Distribution Validation**: Run Python validation scripts on any distribution changes
|
||||
|
||||
### Manual Validation Requirements
|
||||
- **Windows builds**: Install MSI and test basic WSL functionality (`wsl --version`, `wsl -l`)
|
||||
- **Documentation changes**: Review generated HTML in `doc/site/`
|
||||
- **Distribution changes**: Test with actual WSL distribution installation
|
||||
|
||||
## Repository Navigation
|
||||
|
||||
### Key Directories
|
||||
- `src/windows/` - Main Windows WSL service components
|
||||
- `src/linux/` - Linux-side WSL components
|
||||
- `src/shared/` - Shared code between Windows and Linux
|
||||
- `test/windows/` - Windows-based tests (TAEF framework)
|
||||
- `test/linux/unit_tests/` - Linux unit test suite
|
||||
- `doc/` - Documentation source (MkDocs)
|
||||
- `tools/` - Build and deployment scripts
|
||||
- `distributions/` - Distribution validation and metadata
|
||||
|
||||
### Key Files
|
||||
- `CMakeLists.txt` - Main build configuration
|
||||
- `doc/docs/dev-loop.md` - Developer build instructions
|
||||
- `test/README.md` - Testing framework documentation
|
||||
- `CONTRIBUTING.md` - Contribution guidelines
|
||||
- `.clang-format` - Code formatting rules
|
||||
- `UserConfig.cmake.sample` - Optional build customizations
|
||||
|
||||
### Frequently Used Commands (Platform-Specific)
|
||||
|
||||
#### Windows Development:
|
||||
```bash
|
||||
# Initial setup
|
||||
cmake .
|
||||
cmake --build . -- -m # 20-45 minutes, NEVER CANCEL
|
||||
|
||||
# Deploy and test
|
||||
powershell tools\deploy\deploy-to-host.ps1
|
||||
wsl --version
|
||||
|
||||
# Run tests
|
||||
bin\x64\debug\test.bat # 30-60 minutes, NEVER CANCEL
|
||||
```
|
||||
|
||||
#### Cross-Platform Validation:
|
||||
```bash
|
||||
# Documentation (0.5 seconds)
|
||||
mkdocs build -f doc/mkdocs.yml
|
||||
|
||||
# Code formatting
|
||||
find src -name "*.cpp" -o -name "*.h" | xargs clang-format --dry-run --style=file
|
||||
|
||||
# Copyright header validation (reports expected issues in _deps/)
|
||||
python3 tools/devops/validate-copyright-headers.py
|
||||
|
||||
# Distribution validation (may fail on networks without external access)
|
||||
python3 distributions/validate.py distributions/DistributionInfo.json
|
||||
```
|
||||
|
||||
## Debugging and Logging
|
||||
|
||||
### ETL Tracing (Windows Only)
|
||||
```powershell
|
||||
# Collect traces
|
||||
wpr -start diagnostics\wsl.wprp -filemode
|
||||
# [reproduce issue]
|
||||
wpr -stop logs.ETL
|
||||
```
|
||||
|
||||
### Log Analysis Tools
|
||||
- Use WPA (Windows Performance Analyzer) for ETL traces
|
||||
- Key providers: `Microsoft.Windows.Lxss.Manager`, `Microsoft.Windows.Subsystem.Lxss`
|
||||
|
||||
### Debug Console (Linux)
|
||||
Add to `%USERPROFILE%\.wslconfig`:
|
||||
```ini
|
||||
[wsl2]
|
||||
debugConsole=true
|
||||
```
|
||||
|
||||
### Common Debugging Commands
|
||||
- Debug shell: `wsl --debug-shell`
|
||||
- Collect WSL logs: `powershell diagnostics\collect-wsl-logs.ps1`
|
||||
- Network logs: `powershell diagnostics\collect-networking-logs.ps1`
|
||||
|
||||
## Critical Timing and Timeout Guidelines
|
||||
|
||||
**NEVER CANCEL these operations - always wait for completion:**
|
||||
|
||||
- **Full Windows build**: 20-45 minutes (set timeout: 60+ minutes)
|
||||
- **Full test suite**: 30-60 minutes (set timeout: 90+ minutes)
|
||||
- **Unit test subset**: 5-15 minutes (set timeout: 30+ minutes)
|
||||
- **Documentation build**: ~0.5 seconds (set timeout: 5+ minutes)
|
||||
- **Distribution validation**: 2-5 minutes (set timeout: 15+ minutes)
|
||||
|
||||
## CI/CD Integration
|
||||
|
||||
### GitHub Actions
|
||||
- **distributions.yml**: Validates distribution metadata (Linux)
|
||||
- **documentation.yml**: Builds and deploys docs (Linux)
|
||||
- **modern-distributions.yml**: Tests modern distribution support
|
||||
|
||||
### Pre-commit Validation
|
||||
Always run before committing:
|
||||
1. `clang-format --dry-run --style=file` on changed C++ files
|
||||
2. `python3 tools/devops/validate-copyright-headers.py` (ignore _deps/ warnings)
|
||||
3. `mkdocs build -f doc/mkdocs.yml` if documentation changed
|
||||
4. Full Windows build if core components changed
|
||||
|
||||
**Note**: The `.gitignore` file properly excludes build artifacts (*.sln, *.dll, *.pdb, obj/, bin/, etc.) - do not commit these files.
|
||||
|
||||
## Development Environment Setup
|
||||
|
||||
### Windows (Full Development)
|
||||
1. Install Visual Studio with required components (listed above)
|
||||
2. Install CMake 3.25+
|
||||
3. Enable Developer Mode
|
||||
4. Clone repository
|
||||
5. Run `cmake .` to generate solution
|
||||
|
||||
### Linux (Documentation/Validation Only)
|
||||
1. Install Python 3.8+
|
||||
2. Install clang-format
|
||||
3. Install docs tools: `pip install mkdocs-mermaid2-plugin mkdocs`
|
||||
4. Clone repository
|
||||
5. Run validation commands as needed
|
||||
|
||||
Remember: **This is a Windows-focused project**. While some tasks can be performed on Linux, full WSL development requires Windows with Visual Studio.
|
||||
14
.github/policies/resourceManagement.yml
vendored
14
.github/policies/resourceManagement.yml
vendored
@ -181,16 +181,16 @@ configuration:
|
||||
|
||||
```
|
||||
|
||||
The scipt will output the path of the log file once done.
|
||||
The script will output the path of the log file once done.
|
||||
|
||||
|
||||
Once completed please upload the output files to this Github issue.
|
||||
Once completed please upload the output files to this GitHub issue.
|
||||
|
||||
|
||||
[Click here](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method) for more info on logging
|
||||
See [Collect WSL logs (recommended method)](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method).
|
||||
|
||||
|
||||
If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue.
|
||||
If you choose to email these logs instead of attaching them to the bug, please send them to wsl-gh-logs@microsoft.com with the GitHub issue number in the subject, and include a link to your GitHub issue comment in the message body.
|
||||
|
||||
|
||||
Thank you!
|
||||
@ -226,13 +226,13 @@ configuration:
|
||||
|
||||
```
|
||||
|
||||
The scipt will output the path of the log file once done.
|
||||
The script will output the path of the log file once done.
|
||||
|
||||
|
||||
Once completed please upload the output files to this Github issue.
|
||||
Once completed please upload the output files to this GitHub issue.
|
||||
|
||||
|
||||
[Click here](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method) for more info on logging
|
||||
See [Collect WSL logs (recommended method)](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method).
|
||||
|
||||
|
||||
Thank you!
|
||||
|
||||
2
.github/workflows/winget.yml
vendored
2
.github/workflows/winget.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: Publish to Winget
|
||||
name: Publish to WinGet
|
||||
|
||||
on:
|
||||
release:
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,6 +6,7 @@ tmp
|
||||
/.vs/
|
||||
/.vscode/
|
||||
*.sln
|
||||
*.slnx
|
||||
*.user
|
||||
*.csproj
|
||||
*.vcxproj
|
||||
|
||||
@ -24,7 +24,7 @@ parameters:
|
||||
type: object
|
||||
default:
|
||||
- target: "wsl;libwsl;wslg;wslservice;wslhost;wslrelay;wslinstaller;wslinstall;initramfs;wslserviceproxystub;wslsettings;wslinstallerproxystub;testplugin"
|
||||
pattern: "wsl.exe,libwsl.dll,wslg.exe,wslservice.exe,wslhost.exe,wslrelay.exe,wslinstaller.exe,wslinstall.dll,wslserviceproxystub.dll,wslsettings.dll,wslsettings.exe,wslinstallerproxystub.dll,wsldevicehost.dll,lxutil.dll,WSLDVCPlugin.dll,testplugin.dll,wsldeps.dll"
|
||||
pattern: "wsl.exe,libwsl.dll,wslg.exe,wslservice.exe,wslhost.exe,wslrelay.exe,wslinstaller.exe,wslinstall.dll,wslserviceproxystub.dll,wslsettings.dll,wslsettings.exe,wslinstallerproxystub.dll,wsldevicehost.dll,WSLDVCPlugin.dll,testplugin.dll,wsldeps.dll"
|
||||
- target: "msixgluepackage"
|
||||
pattern: "gluepackage.msix"
|
||||
- target: "msipackage"
|
||||
@ -166,9 +166,9 @@ stages:
|
||||
displayName: "CMake ${{ platform }}"
|
||||
inputs:
|
||||
workingDirectory: "."
|
||||
cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId) -DVSO_ORG=${{ parameters.vsoOrg }} -DVSO_PROJECT=${{ parameters.vsoProject }}
|
||||
cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId) -DVSO_ORG=${{ parameters.vsoOrg }} -DVSO_PROJECT=${{ parameters.vsoProject }} -DWSL_BUILD_WSL_SETTINGS=true
|
||||
|
||||
# This additional Restore NuGet package task is added as a workaround for WSL Settings to have its' packages restored properly.
|
||||
# This additional Restore NuGet package task is added as a workaround for WSL Settings to have its packages restored properly.
|
||||
# Without this, building wsl settings may encounter the following error:
|
||||
#
|
||||
# The plugin credential provider could not acquire credentials. Authentication may require manual action.
|
||||
|
||||
@ -67,7 +67,7 @@ stages:
|
||||
displayName: Copy AppxUpload artifact
|
||||
|
||||
# creates a submission package that is published to the store; containers store page information and the WSL appxupload
|
||||
- task: MS-RDX-MRO.windows-store-publish-dev.package-task.store-package@3
|
||||
- task: MS-RDX-MRO.windows-store-publish.package-task.store-package@3
|
||||
displayName: 'Creating StoreBroker Payload'
|
||||
inputs:
|
||||
serviceEndpoint: 'AzureConnection-StoreBroker-WIF'
|
||||
@ -88,7 +88,7 @@ stages:
|
||||
displayName: Copy StoreBrokerPayload to drop
|
||||
|
||||
# submit the package flight to the WSL SelfHost Flight Group
|
||||
- task: MS-RDX-MRO.windows-store-publish-dev.flight-task.store-flight@3
|
||||
- task: MS-RDX-MRO.windows-store-publish.flight-task.store-flight@3
|
||||
displayName: 'Flight StoreBroker Package to Partner Center - WSL SelfHost Flight Group'
|
||||
condition: and(succeeded(), eq('${{ parameters.publishPackage }}', true))
|
||||
inputs:
|
||||
@ -100,7 +100,7 @@ stages:
|
||||
zipPath: $(StoreBrokerPayloadPath)\WindowsSubsystemForLinux.zip
|
||||
force: true
|
||||
skipPolling: true # skips polling Partner Centre/store API for the state of the package; skipping will mean that errors in the process will only show up in Partner Center
|
||||
targetPublishMode: Immediate # on completion of this task, the package will be published to the WSL SelfHost flight once ceritified (no manual clicking of any buttons in Partner Center)
|
||||
targetPublishMode: Immediate # on completion of this task, the package will be published to the WSL SelfHost flight once certified (no manual clicking of any buttons in Partner Center)
|
||||
preserveSubmissionId: false
|
||||
deletePackages: true
|
||||
numberOfPackagesToKeep: 0
|
||||
@ -113,8 +113,8 @@ stages:
|
||||
# Create a draft github release
|
||||
- powershell: |
|
||||
pip install --user -r tools/devops/requirements.txt
|
||||
python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish', '--use-current-ref') }}
|
||||
python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish --auto-release-notes', '--use-current-ref') }}
|
||||
|
||||
displayName: Create Github release
|
||||
displayName: Create GitHub release
|
||||
env:
|
||||
token: $(GITHUB_RELEASE_TOKEN)
|
||||
@ -24,7 +24,7 @@ steps:
|
||||
- checkout : self
|
||||
persistCredentials: true
|
||||
|
||||
- task: TouchdownBuildTask@4
|
||||
- task: TouchdownBuildTask@5
|
||||
displayName: Touchdown Build Localization
|
||||
inputs:
|
||||
environment: 'PRODEXT'
|
||||
|
||||
@ -34,8 +34,8 @@ FetchContent_GetProperties(GSL SOURCE_DIR GSL_SOURCE_DIR)
|
||||
|
||||
|
||||
FetchContent_Declare(nlohmannjson
|
||||
URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
|
||||
URL_HASH SHA256=d6c65aca6b1ed68e7a182f4757257b107ae403032760ed6ef121c9d55e81757d)
|
||||
URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz
|
||||
URL_HASH SHA256=42f6e95cad6ec532fd372391373363b62a14af6d771056dbfc86160e6dfff7aa )
|
||||
|
||||
FetchContent_MakeAvailable(nlohmannjson)
|
||||
FetchContent_GetProperties(nlohmannjson SOURCE_DIR NLOHMAN_JSON_SOURCE_DIR)
|
||||
@ -74,13 +74,11 @@ find_nuget_package(Wix WIX /tools/net6.0/any)
|
||||
if (${TARGET_PLATFORM} STREQUAL "x64")
|
||||
find_nuget_package(Microsoft.DXCore.Linux.amd64fre DXCORE /build/native)
|
||||
find_nuget_package(Microsoft.WSL.Dependencies.amd64fre WSLDEPS /build/native)
|
||||
find_nuget_package(Microsoft.WSL.LxUtil.amd64fre LXUTIL /build/native)
|
||||
endif()
|
||||
|
||||
if (${TARGET_PLATFORM} STREQUAL "arm64")
|
||||
find_nuget_package(Microsoft.DXCore.Linux.arm64fre DXCORE /build/native)
|
||||
find_nuget_package(Microsoft.WSL.Dependencies.arm64fre WSLDEPS /build/native)
|
||||
find_nuget_package(Microsoft.WSL.LxUtil.arm64fre LXUTIL /build/native)
|
||||
endif()
|
||||
|
||||
# Wsl Settings packages
|
||||
@ -111,7 +109,7 @@ endif()
|
||||
# Optional target configuration
|
||||
|
||||
if (NOT DEFINED WSL_BUILD_WSL_SETTINGS)
|
||||
set(WSL_BUILD_WSL_SETTINGS true)
|
||||
set(WSL_BUILD_WSL_SETTINGS false)
|
||||
endif ()
|
||||
|
||||
# Only generate the build configuration that CMake is configured for
|
||||
@ -152,7 +150,6 @@ file(MAKE_DIRECTORY ${GENERATED_DIR})
|
||||
|
||||
set(PACKAGE_CERTIFICATE ${GENERATED_DIR}/dev-cert.pfx)
|
||||
file(CREATE_LINK ${WSL_DEVICE_HOST_SOURCE_DIR}/bin/${TARGET_PLATFORM}/wsldevicehost.dll ${BIN}/wsldevicehost.dll)
|
||||
file(CREATE_LINK ${LXUTIL_SOURCE_DIR}/bin/lxutil.dll ${BIN}/lxutil.dll)
|
||||
file(CREATE_LINK ${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/${WSLG_TS_PLUGIN_DLL} ${BIN}/${WSLG_TS_PLUGIN_DLL})
|
||||
file(CREATE_LINK ${WSLDEPS_SOURCE_DIR}/bin/wsldeps.dll ${BIN}/wsldeps.dll)
|
||||
|
||||
@ -203,7 +200,6 @@ add_compile_definitions(UNICODE
|
||||
WSL_DEVICE_HOST_VERSION="${WSL_DEVICE_HOST_VERSION}"
|
||||
COMMIT_HASH="${COMMIT_HASH}"
|
||||
WSL_PACKAGE_VERSION="${PACKAGE_VERSION}"
|
||||
LXUTIL_VERSION="${LXUTIL_VERSION}"
|
||||
MSRDC_VERSION="${MSRDC_VERSION}"
|
||||
DIRECT3D_VERSION="${DIRECT3D_VERSION}"
|
||||
DXCORE_VERSION="${DXCORE_VERSION}"
|
||||
@ -235,7 +231,6 @@ endif()
|
||||
|
||||
# Common link libraries
|
||||
link_directories(${WSLDEPS_SOURCE_DIR}/lib/)
|
||||
link_directories(${LXUTIL_SOURCE_DIR}/lib/)
|
||||
set(COMMON_LINK_LIBRARIES
|
||||
ws2_32.lib
|
||||
Userenv.lib
|
||||
@ -266,15 +261,16 @@ else()
|
||||
endif()
|
||||
|
||||
# Determine the Visual Studio installation directory which contains LLVM tools
|
||||
# N.B. The version is set to VS2022 to ensure local runs match pipeline behavior
|
||||
execute_process(
|
||||
COMMAND "${VSWHERE_SOURCE_DIR}/vswhere.exe" -latest -products * -property installationPath
|
||||
COMMAND "${VSWHERE_SOURCE_DIR}/vswhere.exe" -version "[17.0,18.0)" -products * -property installationPath
|
||||
OUTPUT_VARIABLE VS_INSTALL_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
COMMAND_ERROR_IS_FATAL ANY
|
||||
)
|
||||
|
||||
if (NOT VS_INSTALL_DIR)
|
||||
message(FATAL_ERROR "Could not determine Visual Studio installation directory.")
|
||||
message(FATAL_ERROR "Could not determine Visual Studio 2022 installation directory.")
|
||||
endif()
|
||||
|
||||
if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
||||
|
||||
@ -19,7 +19,7 @@ You can file issues for WSL at the WSL repository, or linked repositories. Befor
|
||||
|
||||
1. If your issue is related to WSL documentation, please file it at [microsoftdocs/wsl](https://github.com/microsoftdocs/WSL/issues)
|
||||
2. If your issue is related to a Linux GUI app, please file it at [microsoft/wslg](https://github.com/microsoft/wslg/issues)
|
||||
3. Otherwise if you have a technical issue related to WSL in general, such as start up issues, etc., please file it at [microsoft/wsl](https://github.com/microsoft/WSL/issues)
|
||||
3. Otherwise, if you have a technical issue related to WSL in general, such as start up issues, etc., please file it at [microsoft/wsl](https://github.com/microsoft/WSL/issues)
|
||||
|
||||
Please provide as much information as possible when reporting a bug or filing an issue on the Windows Subsystem for Linux, and be sure to include logs as necessary!
|
||||
|
||||
@ -68,7 +68,7 @@ The script will output the path of the log file once done.
|
||||
|
||||
### Collect WSL logs (recommended method)
|
||||
|
||||
If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue.
|
||||
If you choose to email these logs instead of attaching them to the bug, please send them to wsl-gh-logs@microsoft.com with the GitHub issue number in the subject, and include a link to your GitHub issue comment in the message body.
|
||||
|
||||
To collect WSL logs, download and execute [collect-wsl-logs.ps1](https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1) in an administrative powershell prompt:
|
||||
|
||||
@ -94,7 +94,7 @@ After reboot, the kernel dump will be in `%SystemRoot%\MEMORY.DMP` (unless this
|
||||
Please send this dump to: secure@microsoft.com .
|
||||
Make sure that the email body contains:
|
||||
|
||||
- The Github issue number, if any
|
||||
- The GitHub issue number, if any
|
||||
- That this dump is intended for the WSL team
|
||||
|
||||
### 11) Reporting a WSL process crash
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 KiB |
1361
NOTICE.txt
1361
NOTICE.txt
File diff suppressed because it is too large
Load Diff
@ -10,11 +10,11 @@ If you believe you have found a security vulnerability in any Microsoft-owned re
|
||||
|
||||
**Please do not report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
|
||||
Instead, please [report them to the Microsoft Security Response Center (MSRC)](https://aka.ms/opensource/security/create-report).
|
||||
|
||||
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
|
||||
|
||||
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
|
||||
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [Microsoft Security Response Center](https://aka.ms/opensource/security/msrc).
|
||||
|
||||
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ message(STATUS "Loading user configuration")
|
||||
# set(WSL_BUILD_THIN_PACKAGE true)
|
||||
|
||||
# # Uncomment to install the package as part of the build
|
||||
# set(WSL_POST_BUILD_COMMAND "powershell;./tools/deploy/deploy-to-host.ps1")
|
||||
# set(WSL_POST_BUILD_COMMAND "powershell;-ExecutionPolicy;Bypass;-NoProfile;-NonInteractive;./tools/deploy/deploy-to-host.ps1")
|
||||
|
||||
# # Uncomment to reduce the verbosity of the appx package build
|
||||
# set(WSL_SILENT_APPX_BUILD true)
|
||||
@ -9,7 +9,7 @@ if (${TARGET_PLATFORM} STREQUAL x64)
|
||||
"wsl-test-image-win10-22h2-ent-g2-2024-09-10")
|
||||
|
||||
|
||||
set(CLOUDTEST_TEST_PACKAGES "Test_Packages_2024_02_27")
|
||||
set(CLOUDTEST_TEST_PACKAGES "Test_Packages_2025_07_28")
|
||||
set(DUMPTOOL_DROP "DumpTool_X64_2025-01-27")
|
||||
elseif (${TARGET_PLATFORM} STREQUAL arm64)
|
||||
set(CLOUDTEST_IMAGES)
|
||||
|
||||
@ -12,21 +12,21 @@
|
||||
<Provider Type="VSODrop">
|
||||
<Properties>
|
||||
<Add Name="CloudTest.ProviderCustomName" Value="[test_distro]" />
|
||||
<!-- When updating the drops for this make sure the rentention is set to never expire -->
|
||||
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
||||
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_DISTRO_DROP}"/>
|
||||
</Properties>
|
||||
</Provider>
|
||||
<Provider Type="VSODrop">
|
||||
<Properties>
|
||||
<Add Name="CloudTest.ProviderCustomName" Value="[test_packages]" />
|
||||
<!-- When updating the drops for this make sure the rentention is set to never expire -->
|
||||
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
||||
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_PACKAGES}"/>
|
||||
</Properties>
|
||||
</Provider>
|
||||
<Provider Type="VSODrop">
|
||||
<Properties>
|
||||
<Add Name="CloudTest.ProviderCustomName" Value="[dump_tool]" />
|
||||
<!-- When updating the drops for this make sure the rentention is set to never expire -->
|
||||
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
||||
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${DUMPTOOL_DROP}"/>
|
||||
</Properties>
|
||||
</Provider>
|
||||
|
||||
@ -21,6 +21,10 @@ if ($LogProfile -eq $null -Or ![System.IO.File]::Exists($LogProfile))
|
||||
{
|
||||
$url = "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/wsl_storage.wprp"
|
||||
}
|
||||
elseif ($LogProfile -eq "hvsocket")
|
||||
{
|
||||
$url = "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/wsl_hvsocket.wprp"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Error "Unknown log profile: $LogProfile"
|
||||
@ -52,6 +56,8 @@ if (Test-Path $wslconfig)
|
||||
Copy-Item $wslconfig $folder | Out-Null
|
||||
}
|
||||
|
||||
Copy-Item "C:\Windows\temp\wsl-install-log.txt" $folder -ErrorAction ignore
|
||||
|
||||
get-appxpackage MicrosoftCorporationII.WindowsSubsystemforLinux -ErrorAction Ignore > $folder/appxpackage.txt
|
||||
get-acl "C:\ProgramData\Microsoft\Windows\WindowsApps" -ErrorAction Ignore | Format-List > $folder/acl.txt
|
||||
Get-WindowsOptionalFeature -Online > $folder/optional-components.txt
|
||||
|
||||
@ -3,35 +3,71 @@
|
||||
set -ue
|
||||
|
||||
if [ $(whoami) != "root" ]; then
|
||||
echo "This script must be run as root in the system distro (via wsl.exe -u root --system)"
|
||||
echo "This script must be run as root in the debug shell (via wsl.exe -u root --debug-shell)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ts=$(date +%F_%H-%M-%S)
|
||||
target="/mnt/c/wsl-init-dump-$ts"
|
||||
dmesg
|
||||
|
||||
mkdir -p "$target"
|
||||
# Try to install gdb
|
||||
|
||||
tdnf install -y gdb
|
||||
if [ "${dump:-0}" == 1 ]; then
|
||||
tdnf install -y gdb || true
|
||||
fi
|
||||
|
||||
bash -c "cd $target && gcore -a \$(pgrep init)"
|
||||
declare -a pids_to_dump
|
||||
|
||||
for proc in /proc/[0-9]*; do
|
||||
read -a stats < "$proc/stat" # Skip kernel threads to make the output easier to read
|
||||
flags=${stats[8]}
|
||||
|
||||
if (( ("$flags" & 0x00200000) == 0x00200000 )); then
|
||||
continue
|
||||
fi
|
||||
|
||||
pid=$(basename "$proc")
|
||||
|
||||
if [ "${dump:-0}" == 1 ]; then
|
||||
pids_to_dump+=("$pid")
|
||||
fi
|
||||
|
||||
parent=$(ps -o ppid= -p "$pid")
|
||||
|
||||
echo -e "\nProcess: $pid (parent: $parent) "
|
||||
echo -en "cmd: "
|
||||
cat "/proc/$pid/cmdline" || true
|
||||
echo -e "\nstat: "
|
||||
cat "/proc/$pid/stat" || true
|
||||
|
||||
stack_log="$target/stacks.txt"
|
||||
fd_log="$target/fd.txt"
|
||||
for pid in $(pgrep init); do
|
||||
echo -e "\nProcess: $pid" >> "$stack_log"
|
||||
echo -e "\nProcess: $pid" >> "$fd_log"
|
||||
for tid in $(ls "/proc/$pid/task" || true); do
|
||||
echo "tid: $tid" >> "$stack_log"
|
||||
cat "/proc/$pid/task/$tid/stack" >> "$stack_log" || true
|
||||
echo -n "tid: $tid - "
|
||||
cat "/proc/$pid/task/$tid/comm" || true
|
||||
cat "/proc/$pid/task/$tid/stack" || true
|
||||
done
|
||||
|
||||
ls -la "/proc/$pid/fd" >> "$fd_log" || true
|
||||
echo "fds: "
|
||||
ls -la "/proc/$pid/fd" || true
|
||||
done
|
||||
|
||||
for pid in "${pids_to_dump[@]}" ; do
|
||||
name=$(ps -p "$pid" -o comm=)
|
||||
if [[ "$name" =~ ^(bash|login)$ ]]; then
|
||||
echo "Skipping dump for process: $name"
|
||||
continue
|
||||
fi
|
||||
|
||||
ss -lap --vsock > "/$target/sockets.txt"
|
||||
dmesg > "/$target/dmesg.txt"
|
||||
cat /proc/meminfo > "/$target/meminfo.txt"
|
||||
echo "Dumping process: $name ($pid) "
|
||||
if gcore -a -o core "$pid" ; then
|
||||
if ! /wsl-capture-crash 0 "$name" "$pid" 0 < "core.$pid" ; then
|
||||
echo "Failed to dump process $pid"
|
||||
fi
|
||||
|
||||
echo "Logs and dumps written in $target"
|
||||
rm "core.$pid"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "hvsockets: "
|
||||
ss -lap --vsock
|
||||
|
||||
echo "meminfo: "
|
||||
cat /proc/meminfo
|
||||
|
||||
@ -43,6 +43,8 @@
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.ProvLaunch" Name="08FACCFA-125D-4ED6-B0B7-B4A1A912E693" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.EMPS.Enrollment" Name="E74EFD1A-B62D-4B83-AB00-66F4A166A2D3" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.EnterpriseManagement.Enrollment" Name="F9E3B648-9AF1-4DC3-9A8E-BF42C0FBCE9A" />
|
||||
<EventProvider Id="Microsoft.Windows.HyperV.Vid" Name="1111450B-DACC-40A3-84AB-F7DBA4A6E63A" NonPagedMemory="true"/>
|
||||
<EventProvider Id="Microsoft-Windows-HyperV-Vid" Name="5931D877-4860-4ee7-A95C-610A5F0D1407" NonPagedMemory="true" />
|
||||
<EventProvider Id="virtdisk_wpp" Name="e14dcdd9-d1ec-4dc3-8395-a606df8ef115" Level="4">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
@ -143,6 +145,8 @@
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.ProvLaunch"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.EMPS.Enrollment"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.EnterpriseManagement.Enrollment"/>
|
||||
<EventProviderId Value="Microsoft.Windows.HyperV.Vid"/>
|
||||
<EventProviderId Value="Microsoft-Windows-HyperV-Vid"/>
|
||||
<EventProviderId Value="virtdisk"/>
|
||||
<EventProviderId Value="virtdisk_wpp"/>
|
||||
<EventProviderId Value="vhdmp"/>
|
||||
|
||||
172
diagnostics/wsl_hvsocket.wprp
Normal file
172
diagnostics/wsl_hvsocket.wprp
Normal file
@ -0,0 +1,172 @@
|
||||
<?xml version="1.0"?>
|
||||
<WindowsPerformanceRecorder Version="1">
|
||||
<Profiles>
|
||||
<EventCollector Id="Collector" Name="Collector">
|
||||
<BufferSize Value="512" />
|
||||
<Buffers Value="10" PercentageOfTotalMemory="true"/>
|
||||
</EventCollector>
|
||||
|
||||
<EventProvider Id="EventProvider_HvSocketTraceProvider" Name="B2ED3BDB-CD74-5B2C-F660-85079CA074B3" NonPagedMemory="true">
|
||||
<Keywords>
|
||||
<Keyword Value="0x0"/>
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
|
||||
<EventProvider Id="lxcore_kernel" Name="0CD1C309-0878-4515-83DB-749843B3F5C9"/>
|
||||
<EventProvider Id="lxcore_user" Name="D90B9468-67F0-5B3B-42CC-82AC81FFD960"/>
|
||||
<EventProvider Id="lxcore_service" Name="B99CDB5A-039C-5046-E672-1A0DE0A40211"/>
|
||||
<EventProvider Id="wsl_devicehost" Name="9d6c7b9e-2581-4d8a-b8c5-b90b4a17094a"/>
|
||||
<EventProvider Id="wslclient" Name="8cbb7724-7223-5d6f-8137-564dac45104d"/>
|
||||
<EventProvider Id="wslapi" Name="beb94edf-1a7b-5058-0696-ff9e6b1798d1"/>
|
||||
<EventProvider Id="vm_chipset" Name="de9ba731-7f33-4f44-98c9-6cac856b9f83"/>
|
||||
<EventProvider Id="vmcompute_dll" Name="AF7FD3A7-B248-460C-A9F5-FEC39EF8468C"/>
|
||||
<EventProvider Id="vmcompute" Name="17103E3F-3C6E-4677-BB17-3B267EB5BE57"/>
|
||||
<EventProvider Id="vmmm" Name="6066F867-7CA1-4418-85FD-36E3F9C0600C"/>
|
||||
<EventProvider Id="vmwp" Name="51DDFA29-D5C8-4803-BE4B-2ECB715570FE"/>
|
||||
<EventProvider Id="9p" Name="e13c8d52-b153-571f-78c5-1d4098af2a1e"/>
|
||||
<EventProvider Id="9p_errors" Name="06C601B3-6957-4F8C-A15F-74875B24429D" />
|
||||
<EventProvider Id="p9rdr" Name="bb1d36f0-e0e0-48cc-9493-fef0e3d0b28c" />
|
||||
<EventProvider Id="mup" Name="20c46239-d059-4214-a11e-7d6769cbe020" />
|
||||
<EventProvider Id="rfsmon" Name="51734B23-5B7E-4892-BA8E-45BC110B735C" />
|
||||
<EventProvider Id="hyperv_storage" Name="c7ad62c6-5c99-5a1b-bbc4-0821ae5b765e" />
|
||||
<EventProvider Id="hns" Name="0c885e0d-6eb6-476c-a048-2457eed3a5c1" />
|
||||
<EventProvider Id="netmgmt" Name="93f693dc-9163-4dee-af64-d855218af242" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Mobile.Provisioning.AppDownload" Name="0BBE6221-EF09-4A3F-82EE-BE00DBB6A98A" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Mobile.Provisioning.Datastore" Name="42C60CEA-0FE7-4541-A86B-9E11F95BD9BF" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Mobile.Provisioning.PhoneProvisioner" Name="B876B1FC-C7F1-443E-9012-86677F7DE580" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Mobile.Provisioning.PPOEM" Name="7EDBED09-1FF7-4FEE-B8C3-5DB694420830" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.API" Name="82ADD491-01D7-4B85-9EAD-192C3CAACA23" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.CSP" Name="16E12400-A2D8-44B7-9479-004568EC7819" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Engine" Name="A6A847B7-4429-49AA-BBA6-2AD8C191AC8C" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Handlers" Name="0383D92C-2337-4F25-A0B5-A51767F04746" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Migration" Name="A0AF985E-83F9-4E1A-B658-338DCFE27893" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Operations" Name="7F99598F-B2C1-4371-9911-63DEE13B9EB1" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Platform" Name="B1F30020-8BC3-4888-BB1B-4DD681F24209" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Plugin.Engine" Name="55239D60-0EB6-495B-874E-15DE5D5F9A70" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.Plugin.RemovableMedia" Name="B55883E6-6C45-45C2-AB9D-800BB7B66B13" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.ProvTool" Name="2BF4B6BA-556E-4D05-8534-CAFEDF19FED8" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.CommandCsp" Name="00BB69FC-60BC-4502-9438-25608F375CCB" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.Provisioning.ProvLaunch" Name="08FACCFA-125D-4ED6-B0B7-B4A1A912E693" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.EMPS.Enrollment" Name="E74EFD1A-B62D-4B83-AB00-66F4A166A2D3" />
|
||||
<EventProvider Id="EventProvider_Microsoft.Windows.EnterpriseManagement.Enrollment" Name="F9E3B648-9AF1-4DC3-9A8E-BF42C0FBCE9A" />
|
||||
<EventProvider Id="Microsoft.Windows.HyperV.Vid" Name="1111450B-DACC-40A3-84AB-F7DBA4A6E63A" NonPagedMemory="true"/>
|
||||
<EventProvider Id="Microsoft-Windows-HyperV-Vid" Name="5931D877-4860-4ee7-A95C-610A5F0D1407" NonPagedMemory="true" />
|
||||
<EventProvider Id="virtdisk_wpp" Name="e14dcdd9-d1ec-4dc3-8395-a606df8ef115" Level="4">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="virtdisk" Name="4D20DF22-E177-4514-A369-F1759FEEDEB3" Level="4">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="vhdmp" Name="E2816346-87F4-4F85-95C3-0C79409AA89D" NonPagedMemory="true" Level="4">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFD" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="vhdmp_wpp" Name="3c70c3b0-2fae-41d3-b68d-8f7fcaf79adb" NonPagedMemory="true" Level="5">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="storvsp" Name="10b3d268-9782-49a4-aacc-a93c5482cb6f" NonPagedMemory="true" Level="4">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="HyperV_SyntheticStorage" Name="EDACD782-2564-4497-ADE6-7199377850F2" Level="6">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="HyperV_EmulatedStorage" Name="86E15E01-EDF1-4AC7-89CF-B19563FD6894" Level="6">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="EventProvider_Telemetry_StorVSP" Name="544d0787-9f6d-432e-8414-e035a8b0541d">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<EventProvider Id="EventProvider_Trace_Vhdmp" Name="dc284fb3-1eab-4854-828a-b25417280280" Level="3">
|
||||
<Keywords>
|
||||
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
|
||||
</Keywords>
|
||||
</EventProvider>
|
||||
|
||||
<Profile
|
||||
Id="WSL.Verbose.File"
|
||||
Name="WSL"
|
||||
Description="Traces for all WSL components"
|
||||
LoggingMode="File"
|
||||
DetailLevel="Verbose"
|
||||
>
|
||||
<Collectors>
|
||||
<EventCollectorId Value="Collector">
|
||||
<EventProviders>
|
||||
<EventProviderId Value="lxcore_kernel"/>
|
||||
<EventProviderId Value="lxcore_user"/>
|
||||
<EventProviderId Value="lxcore_service"/>
|
||||
<EventProviderId Value="wsl_devicehost"/>
|
||||
<EventProviderId Value="wslclient"/>
|
||||
<EventProviderId Value="wslapi"/>
|
||||
<EventProviderId Value="vm_chipset"/>
|
||||
<EventProviderId Value="vmcompute_dll"/>
|
||||
<EventProviderId Value="vmcompute"/>
|
||||
<EventProviderId Value="vmmm"/>
|
||||
<EventProviderId Value="vmwp"/>
|
||||
<EventProviderId Value="9p"/>
|
||||
<EventProviderId Value="9p_errors"/>
|
||||
<EventProviderId Value="p9rdr"/>
|
||||
<EventProviderId Value="mup"/>
|
||||
<EventProviderId Value="rfsmon"/>
|
||||
<EventProviderId Value="hyperv_storage"/>
|
||||
<EventProviderId Value="hns"/>
|
||||
<EventProviderId Value="netmgmt"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Mobile.Provisioning.AppDownload"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Mobile.Provisioning.Datastore"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Mobile.Provisioning.PhoneProvisioner"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Mobile.Provisioning.PPOEM"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.CSP"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Engine"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Migration"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Platform"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Operations"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Plugin.Engine"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Plugin.RemovableMedia"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.ProvTool"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.Operations"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.CommandCsp"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.Provisioning.ProvLaunch"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.EMPS.Enrollment"/>
|
||||
<EventProviderId Value="EventProvider_Microsoft.Windows.EnterpriseManagement.Enrollment"/>
|
||||
<EventProviderId Value="Microsoft.Windows.HyperV.Vid"/>
|
||||
<EventProviderId Value="Microsoft-Windows-HyperV-Vid"/>
|
||||
<EventProviderId Value="virtdisk"/>
|
||||
<EventProviderId Value="virtdisk_wpp"/>
|
||||
<EventProviderId Value="vhdmp"/>
|
||||
<EventProviderId Value="vhdmp_wpp"/>
|
||||
<EventProviderId Value="storvsp"/>
|
||||
<EventProviderId Value="HyperV_SyntheticStorage"/>
|
||||
<EventProviderId Value="HyperV_EmulatedStorage"/>
|
||||
<EventProviderId Value="EventProvider_Telemetry_StorVSP"/>
|
||||
<EventProviderId Value="EventProvider_Trace_Vhdmp"/>
|
||||
<EventProviderId Value="EventProvider_HvSocketTraceProvider" />
|
||||
</EventProviders>
|
||||
</EventCollectorId>
|
||||
</Collectors>
|
||||
</Profile>
|
||||
</Profiles>
|
||||
</WindowsPerformanceRecorder>
|
||||
@ -6,12 +6,12 @@
|
||||
"FriendlyName": "Ubuntu",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-wsl-amd64.wsl",
|
||||
"Sha256": "5d1eea52103166f1c460dc012ed325c6eb31d2ce16ef6a00ffdfda8e99e12f43"
|
||||
"Url": "https://releases.ubuntu.com/24.04.3/ubuntu-24.04.3-wsl-amd64.wsl",
|
||||
"Sha256": "c74833a55e525b1e99e1541509c566bb3e32bdb53bf27ea3347174364a57f47c"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://cdimages.ubuntu.com/releases/24.04.2/release/ubuntu-24.04.2-wsl-arm64.wsl",
|
||||
"Sha256": "75e6660229fabb38a6fdc1c94eec7d834a565fa58a64b7534e540da5319b2576"
|
||||
"Url": "https://cdimages.ubuntu.com/releases/24.04.3/release/ubuntu-24.04.3-wsl-arm64.wsl",
|
||||
"Sha256": "edaf375ea0d1319da08e7154e9bc64cd4eead5af21ea032f2edaa335fadf0970"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -19,12 +19,12 @@
|
||||
"FriendlyName": "Ubuntu 24.04 LTS",
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-wsl-amd64.wsl",
|
||||
"Sha256": "5d1eea52103166f1c460dc012ed325c6eb31d2ce16ef6a00ffdfda8e99e12f43"
|
||||
"Url": "https://releases.ubuntu.com/24.04.3/ubuntu-24.04.3-wsl-amd64.wsl",
|
||||
"Sha256": "c74833a55e525b1e99e1541509c566bb3e32bdb53bf27ea3347174364a57f47c"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://cdimages.ubuntu.com/releases/24.04.2/release/ubuntu-24.04.2-wsl-arm64.wsl",
|
||||
"Sha256": "75e6660229fabb38a6fdc1c94eec7d834a565fa58a64b7534e540da5319b2576"
|
||||
"Url": "https://cdimages.ubuntu.com/releases/24.04.3/release/ubuntu-24.04.3-wsl-arm64.wsl",
|
||||
"Sha256": "edaf375ea0d1319da08e7154e9bc64cd4eead5af21ea032f2edaa335fadf0970"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -34,45 +34,45 @@
|
||||
"FriendlyName": "openSUSE Tumbleweed",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250320.0/openSUSE-Tumbleweed-20250316.x86_64-15.8-Build15.8.wsl",
|
||||
"Sha256": "0xd3fc19e7a28143aa68dbfc0d9bacd8f670f312bf29dc9cc44138a60975e755ea"
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250923.0/openSUSE-Tumbleweed-20250922.x86_64-22.59-Build22.59.wsl",
|
||||
"Sha256": "0x31124e3645d88b079469a57062af795b04922d3baacfb70c6dad2524c2bfc8c0"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250320.0/openSUSE-Tumbleweed-20250316.aarch64-15.8-Build15.8.wsl",
|
||||
"Sha256": "0xc4a6844cfa0b791ab934c4e871a1245b217de734cb8c75a33bdc644fa0675e39"
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250923.0/openSUSE-Tumbleweed-20250922.aarch64-22.124-Build22.124.wsl",
|
||||
"Sha256": "0x0202195a7e03bb45e7ff95e9929b977db899ce85ccaa1195bdab4a74783e9bf7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "openSUSE-Leap-15.6",
|
||||
"FriendlyName": "openSUSE Leap 15.6",
|
||||
"Name": "openSUSE-Leap-16.0",
|
||||
"FriendlyName": "openSUSE Leap 16.0",
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250320.0/openSUSE-Leap-15.6-15.6.x86_64-15.2-Build15.2.wsl",
|
||||
"Sha256": "0x63ea1828168026c86522743d551b2c88f0f4f94d813d2adc5881164d176b0ea1"
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20251001.0/openSUSE-Leap-16.0-16.0.x86_64-22.57-Build22.57.wsl",
|
||||
"Sha256": "0x0d1faa095153beee0a9b5089b0f9aa3d2aec95e2cdcffdeeff84dd54c48b8393"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250320.0/openSUSE-Leap-15.6-15.6.aarch64-15.2-Build15.2.wsl",
|
||||
"Sha256": "0x0a3c646f69bb83889c4264e41030076104a2f3d71ae6a1e14a1e0653dfd2e3d4"
|
||||
"Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20251001.0/openSUSE-Leap-16.0-16.0.aarch64-22.57-Build22.57.wsl",
|
||||
"Sha256": "0x91bcdc7e9f42d7a60a4464ad867d91243aaaecab7b3a057039f77a989daac51e"
|
||||
}
|
||||
}
|
||||
],
|
||||
"SUSE": [
|
||||
{
|
||||
"Name": "SUSE-Linux-Enterprise-15-SP5",
|
||||
"FriendlyName": "SUSE Linux Enterprise 15 SP5",
|
||||
"Name": "SUSE-Linux-Enterprise-15-SP7",
|
||||
"FriendlyName": "SUSE Linux Enterprise 15 SP7",
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20250123.0/SUSE-Linux-Enterprise-15-SP5-15.5.x86_64-11.1-Build11.1.wsl",
|
||||
"Sha256": "0x64ae138a1cdaff5fdc578d8ea92176d2939146932ca7ce2bff685d974ec34932"
|
||||
"Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20251201.0/SUSE-Linux-Enterprise-15-SP7-15.7.x86_64-30.1-Build30.1.wsl",
|
||||
"Sha256": "0x60924e13286ed15bdcf9069e3a24d3394fb858954de3bdfcb1ea576900b81b2e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "SUSE-Linux-Enterprise-15-SP6",
|
||||
"FriendlyName": "SUSE Linux Enterprise 15 SP6",
|
||||
"Name": "SUSE-Linux-Enterprise-16.0",
|
||||
"FriendlyName": "SUSE Linux Enterprise 16.0",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20250320.0/SUSE-Linux-Enterprise-15-SP6-15.6.x86_64-18.4-Build18.4.wsl",
|
||||
"Sha256": "0x88c59b7b3a50fee4fdfbf978c1899e59b6e0b51db5af925eb570b171e895a671"
|
||||
"Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20251201.0/SUSE-Linux-Enterprise-16.0-16.0.x86_64-1.9-Build1.9.wsl",
|
||||
"Sha256": "0xf0fc07ed3543d3dc24cfb35b4194bbecf98485cefdd720c521034ac1c54bffd3"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -82,12 +82,12 @@
|
||||
"FriendlyName": "Kali Linux Rolling",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://kali.download/wsl-images/kali-2025.1c/kali-linux-2025.1c-wsl-rootfs-amd64.wsl",
|
||||
"Sha256": "1f1b0171b3b92dd7163ddbab2bb6b93c4a9d2e95fccd66237403cccf648d2b8e"
|
||||
"Url": "https://kali.download/wsl-images/kali-2025.3/kali-linux-2025.3-wsl-rootfs-amd64.wsl",
|
||||
"Sha256": "dda0ff3ffe4465cf2af1061262e44cec5a90c1eccb71fe5ccfb1b0fceb5e23a8"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://kali.download/wsl-images/kali-2025.1c/kali-linux-2025.1c-wsl-rootfs-arm64.wsl",
|
||||
"Sha256": "b0c5742e3baa4e5588deb974eeae81b45e18a49afa6cb7567321b8b6639d4034"
|
||||
"Url": "https://kali.download/wsl-images/kali-2025.3/kali-linux-2025.3-wsl-rootfs-arm64.wsl",
|
||||
"Sha256": "e175688d9c305b621e701bb11e54f57ac772aed7fa1d94e3f6cb812c1e5e806f"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -97,12 +97,12 @@
|
||||
"FriendlyName": "Debian GNU/Linux",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://salsa.debian.org/debian/WSL/-/jobs/7130915/artifacts/raw/Debian_WSL_AMD64_v1.20.0.0.wsl",
|
||||
"Sha256": "51a0c7af534929305238bd356a217b371562e6a0fcdfab65c7e49fb8252e2f23"
|
||||
"Url": "https://salsa.debian.org/debian/WSL/-/jobs/7949331/artifacts/raw/Debian_WSL_AMD64_v1.22.0.0.wsl",
|
||||
"Sha256": "543123ccc5f838e63dac81634fb0223dc8dcaa78fdb981387d625feb1ed168c7"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://salsa.debian.org/debian/WSL/-/jobs/7130915/artifacts/raw/Debian_WSL_ARM64_v1.20.0.0.wsl",
|
||||
"Sha256": "ceb883ce1c016f7bc01c2f58dfa3224684d49efb0d1b2a216ce889cac2738bc5"
|
||||
"Url": "https://salsa.debian.org/debian/WSL/-/jobs/7949331/artifacts/raw/Debian_WSL_ARM64_v1.22.0.0.wsl",
|
||||
"Sha256": "5701f1add55f8cf3b56528109a6220ae5c89f2189d7ae97b9a4b5302b80e967c"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -125,12 +125,12 @@
|
||||
"FriendlyName": "AlmaLinux OS 9",
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v9.6.20250522.0/AlmaLinux-9.6_x64_20250522.0.wsl",
|
||||
"Sha256": "e0f6acf1ce5aff80f2e60d3d8191c0a3857720149a7e5521b96e11777cdd2779"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v9.7.20251119.0/AlmaLinux-9.7_x64_20251119.0.wsl",
|
||||
"Sha256": "0a6588f4f723fcb3edbc37dd3e3e13be8ffe0a5027e47513e3d4d2a4451794e7"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v9.6.20250522.0/AlmaLinux-9.6_ARM64_20250522.0.wsl",
|
||||
"Sha256": "58d1cc623c4570307825036460e51a406bdcf53b4b5a4148cf644f5f68ce48dd"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v9.7.20251119.0/AlmaLinux-9.7_ARM64_20251119.0.wsl",
|
||||
"Sha256": "b3e2632efe029a81db1ae7a914ea3b7e9e6e20d8c71c158270c331e6fea39bf8"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -138,12 +138,12 @@
|
||||
"FriendlyName": "AlmaLinux OS Kitten 10",
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10-kitten.20250415.0/AlmaLinux-Kitten-10_x64_20250415.0.wsl",
|
||||
"Sha256": "8db3788b5728e58e32a4a96d9aa26974a48bf7936ed376da434c5c441a0fa7bd"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10-kitten.20251030.0/AlmaLinux-Kitten-10_x64_20251030.0.wsl",
|
||||
"Sha256": "d765d65076b041f3a67ba60edc37d056eeab2a260aed8e077684e05b78ecd9f5"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10-kitten.20250415.0/AlmaLinux-Kitten-10_ARM64_20250415.0.wsl",
|
||||
"Sha256": "f48a55e9fd4da1b84c2a9e960a9f3bc6e9fa65387ed9181826e1f052b2ce545e"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10-kitten.20251030.0/AlmaLinux-Kitten-10_ARM64_20251030.0.wsl",
|
||||
"Sha256": "90c30b0adbf8d414c4b0a02eaeb6a5d8e488a2187a67dbaf11f4a3e843baae53"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -151,12 +151,12 @@
|
||||
"FriendlyName": "AlmaLinux OS 10",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10.0.20250529.0/AlmaLinux-10.0_x64_20250529.0.wsl",
|
||||
"Sha256": "6775711048b86743588da7173ab45ca449b5c50a72fb87635313f059a9813d4b"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10.1.20251124.0/AlmaLinux-10.1_x64_20251124.0.wsl",
|
||||
"Sha256": "24e8fa286a4081979d97e83a227fb89f332bcf731fe4b422679a3b455ab0be37"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10.0.20250529.0/AlmaLinux-10.0_ARM64_20250529.0.wsl",
|
||||
"Sha256": "bc424bd9f954d36e871d4d874d35bc25e3ea7bdfe48337c30b927ed73a79b2fa"
|
||||
"Url": "https://github.com/AlmaLinux/wsl-images/releases/download/v10.1.20251124.0/AlmaLinux-10.1_ARM64_20251124.0.wsl",
|
||||
"Sha256": "20700a4467214074f8a1a3d4e0e1cad25af36b8127d047ab6d5b4a1355e998b8"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -166,16 +166,29 @@
|
||||
"FriendlyName": "Arch Linux",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://geo.mirror.pkgbuild.com/wsl/2025.06.01.129180/archlinux-2025.06.01.129180.wsl",
|
||||
"Sha256": "97fe3d6c82d4a680d559e70e254797894aaa1b844a168c9f22806f41ddbe63c0"
|
||||
"Url": "https://fastly.mirror.pkgbuild.com/wsl/2025.12.01.153427/archlinux-2025.12.01.153427.wsl",
|
||||
"Sha256": "8dfe92910a188f191b0af2972bd4bda661178b769ce820a8921e8b7aeae9a517"
|
||||
}
|
||||
}
|
||||
],
|
||||
"Fedora": [
|
||||
{
|
||||
"Name": "FedoraLinux-43",
|
||||
"FriendlyName": "Fedora Linux 43",
|
||||
"Default": true,
|
||||
"Amd64Url": {
|
||||
"Url": "https://download.fedoraproject.org/pub/fedora/linux/releases/43/Container/x86_64/images/Fedora-WSL-Base-43-1.6.x86_64.wsl",
|
||||
"Sha256": "220780af9cf225e9645313b4c7b0457a26a38a53285eb203b2ab6188d54d5b82"
|
||||
},
|
||||
"Arm64Url": {
|
||||
"Url": "https://download.fedoraproject.org/pub/fedora/linux/releases/43/Container/aarch64/images/Fedora-WSL-Base-43-1.6.aarch64.wsl",
|
||||
"Sha256": "7eef7a83260218d8c878b3c7bbdaf11772103145184d0c65df27557f4cd49548"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "FedoraLinux-42",
|
||||
"FriendlyName": "Fedora Linux 42",
|
||||
"Default": true,
|
||||
"Default": false,
|
||||
"Amd64Url": {
|
||||
"Url": "https://download.fedoraproject.org/pub/fedora/linux/releases/42/Container/x86_64/images/Fedora-WSL-Base-42-1.1.x86_64.tar.xz",
|
||||
"Sha256": "99fb3d05d78ca17c6815bb03cf528da8ef82ebc6260407f2b09461e0da8a1b8d"
|
||||
@ -219,16 +232,6 @@
|
||||
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/KaliLinux_1.13.1.0.AppxBundle",
|
||||
"PackageFamilyName": "KaliLinux.54290C8133FEE_ey8k8hqnwqnmg"
|
||||
},
|
||||
{
|
||||
"Name": "Ubuntu-18.04",
|
||||
"FriendlyName": "Ubuntu 18.04 LTS",
|
||||
"StoreAppId": "9PNKSF5ZN4SW",
|
||||
"Amd64": true,
|
||||
"Arm64": true,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/Ubuntu1804-230608_x64.appx",
|
||||
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/Ubuntu1804-230608_ARM64.appx",
|
||||
"PackageFamilyName": "CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc"
|
||||
},
|
||||
{
|
||||
"Name": "Ubuntu-20.04",
|
||||
"FriendlyName": "Ubuntu 20.04 LTS",
|
||||
@ -270,24 +273,24 @@
|
||||
"PackageFamilyName": "3810OracleAmericaInc.OracleLinux7.9_dm28ctvqnhe9g"
|
||||
},
|
||||
{
|
||||
"Name": "OracleLinux_8_7",
|
||||
"FriendlyName": "Oracle Linux 8.7",
|
||||
"StoreAppId": "9NGGZVB0BKD9",
|
||||
"Name": "OracleLinux_8_10",
|
||||
"FriendlyName": "Oracle Linux 8.10",
|
||||
"StoreAppId": "9MVFWTCT78ZN",
|
||||
"Amd64": true,
|
||||
"Arm64": false,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/OracleLinux_8.7-230428.Appx",
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/OracleLinux_8.10-250708.Appx",
|
||||
"Arm64PackageUrl": null,
|
||||
"PackageFamilyName": "3810OracleAmericaInc.51946E772388_dm28ctvqnhe9g"
|
||||
"PackageFamilyName": "3810OracleAmericaInc.OracleLinux8.10_dm28ctvqnhe9g"
|
||||
},
|
||||
{
|
||||
"Name": "OracleLinux_9_1",
|
||||
"FriendlyName": "Oracle Linux 9.1",
|
||||
"StoreAppId": "9N6CN5STZRX6",
|
||||
"Name": "OracleLinux_9_5",
|
||||
"FriendlyName": "Oracle Linux 9.5",
|
||||
"StoreAppId": "9NL3F53JZ3HX",
|
||||
"Amd64": true,
|
||||
"Arm64": false,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/OracleLinux_9.1-230428.Appx",
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/OracleLinux_9.5-250708.Appx",
|
||||
"Arm64PackageUrl": null,
|
||||
"PackageFamilyName": "3810OracleAmericaInc.62074632F71C9_dm28ctvqnhe9g"
|
||||
"PackageFamilyName": "3810OracleAmericaInc.OracleLinux9.5_dm28ctvqnhe9g"
|
||||
},
|
||||
{
|
||||
"Name": "openSUSE-Leap-15.6",
|
||||
@ -299,23 +302,13 @@
|
||||
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/openSUSELeap15p6-250320_ARM64.Appx",
|
||||
"PackageFamilyName": "46932SUSE.openSUSELeap15.6_022rs5jcyhyac"
|
||||
},
|
||||
{
|
||||
"Name": "SUSE-Linux-Enterprise-15-SP5",
|
||||
"FriendlyName": "SUSE Linux Enterprise 15 SP5",
|
||||
"StoreAppId": "9N648JDGXK2D",
|
||||
"Amd64": true,
|
||||
"Arm64": false,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/SUSELinuxEnterprise15_SP5-240801.Appx",
|
||||
"Arm64PackageUrl": null,
|
||||
"PackageFamilyName": "46932SUSE.SUSELinuxEnterprise15SP5_022rs5jcyhyac"
|
||||
},
|
||||
{
|
||||
"Name": "SUSE-Linux-Enterprise-15-SP6",
|
||||
"FriendlyName": "SUSE Linux Enterprise 15 SP6",
|
||||
"StoreAppId": "9N738KZGNB91",
|
||||
"Amd64": true,
|
||||
"Arm64": false,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/SUSELinuxEnterprise15SP6-250320_x64.Appx",
|
||||
"Amd64PackageUrl": "https://github.com/SUSE/WSL-instarball/releases/download/v20250618.0/SUSE-Linux-Enterprise-15-SP6-15.6-WSL.x86_64-156.3.148.0-Build3.148.appx",
|
||||
"Arm64PackageUrl": null,
|
||||
"PackageFamilyName": "46932SUSE.SUSELinuxEnterprise15SP6_022rs5jcyhyac"
|
||||
},
|
||||
@ -325,8 +318,8 @@
|
||||
"StoreAppId": "9MSSK2ZXXN11",
|
||||
"Amd64": true,
|
||||
"Arm64": true,
|
||||
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/openSUSETumbleweed-250320_x64.Appx",
|
||||
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/openSUSETumbleweed-250320_ARM64.Appx",
|
||||
"Amd64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250923.0/openSUSE-Tumbleweed-20250922-WSL.x86_64-25265.9.1077.0-Build9.1077.appx",
|
||||
"Arm64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20250923.0/openSUSE-Tumbleweed-20250922-WSL.aarch64-25265.9.542.0-Build9.542.appx",
|
||||
"PackageFamilyName": "46932SUSE.openSUSETumbleweed_022rs5jcyhyac"
|
||||
}
|
||||
]
|
||||
|
||||
@ -10,6 +10,7 @@ import magic
|
||||
import os.path
|
||||
import git
|
||||
import re
|
||||
import sys
|
||||
from github import Github
|
||||
|
||||
|
||||
@ -32,10 +33,32 @@ DISCOURAGED_SYSTEM_UNITS = ['systemd-resolved.service',
|
||||
'systemd-tmpfiles-setup-dev.service',
|
||||
'tmp.mount',
|
||||
'NetworkManager.service',
|
||||
'networking.service']
|
||||
'networking.service',
|
||||
'hypervkvpd.service']
|
||||
|
||||
WSL1_UNSUPPORTED_XATTRS = ['security.selinux', 'security.ima', 'security.evm']
|
||||
|
||||
WSL_CONF_KEYS = ['automount.enabled',
|
||||
'automount.ldconfig',
|
||||
'automount.mountfstab',
|
||||
'automount.options',
|
||||
'automount.root',
|
||||
'boot.command',
|
||||
'boot.protectbinfmt',
|
||||
'boot.systemd',
|
||||
'fileserver.enabled',
|
||||
'filesystem.umask',
|
||||
'general.hostname',
|
||||
'gpu.appendlibpath',
|
||||
'gpu.enabled',
|
||||
'interop.appendwindowspath',
|
||||
'interop.enabled',
|
||||
'network.generatehosts',
|
||||
'network.generateresolvconf',
|
||||
'network.hostname',
|
||||
'time.usewindowstimezone',
|
||||
'user.default']
|
||||
|
||||
errors = {}
|
||||
warnings = {}
|
||||
|
||||
@ -129,10 +152,12 @@ def main(manifest: str, tar: str, compare_with_branch: str, repo_path: str, arm6
|
||||
|
||||
default_entries = sum(1 for e in versions if 'Default' in e and e['Default']())
|
||||
if default_entries != 1:
|
||||
error(e, 'Found no default distribution' if default_entries == 0 else 'Found multiple default distributions')
|
||||
error(e, f'Found no default distribution for "{flavor}"' if default_entries == 0 else f'Found multiple default distributions for "{flavor}"')
|
||||
|
||||
report_status_on_pr(manifest)
|
||||
|
||||
sys.exit(1 if errors else 0)
|
||||
|
||||
except:
|
||||
if debug:
|
||||
import traceback
|
||||
@ -197,7 +222,7 @@ def read_passwd(node, default_uid: int, fd):
|
||||
entries[uid] = fields
|
||||
|
||||
if 0 not in entries:
|
||||
error(flavor, name, f'No root (uid=0) found in /etc/passwd')
|
||||
error(node, f'No root (uid=0) found in /etc/passwd')
|
||||
elif entries[0][0] != 'root':
|
||||
error(node, f'/etc/passwd has a uid=0, but it is not root: {entries[0][0]}')
|
||||
|
||||
@ -349,7 +374,7 @@ def read_tar(node, file, elf_magic: str):
|
||||
|
||||
if info is None:
|
||||
if not optional:
|
||||
error(flavor, name, f'File "{path}" not found in tar')
|
||||
error(node, f'File "{path}" not found in tar')
|
||||
return False
|
||||
|
||||
permissions = oct(info.mode)
|
||||
@ -392,7 +417,7 @@ def read_tar(node, file, elf_magic: str):
|
||||
|
||||
keys = read_config_keys(config)
|
||||
|
||||
unexpected_keys = [e for e in keys if e.lower() not in valid_keys]
|
||||
unexpected_keys = [e for e in keys if e.casefold() not in valid_keys]
|
||||
if unexpected_keys:
|
||||
error(node, f'Found unexpected_keys in "{path}": {unexpected_keys}')
|
||||
else:
|
||||
@ -431,14 +456,17 @@ def read_tar(node, file, elf_magic: str):
|
||||
warning(node, f'value for windowsterminal.profileTemplate is not under {USR_LIB_WSL}: "{terminal_profile}"')
|
||||
|
||||
if validate_mode('/etc/wsl.conf', [oct(0o664), oct(0o644)], 0, 0, optional=True, follow_symlink=True):
|
||||
config = validate_config('/etc/wsl.conf', ['boot.systemd'])
|
||||
config = validate_config('/etc/wsl.conf', WSL_CONF_KEYS)
|
||||
if config.get('boot.systemd', False):
|
||||
validate_mode('/sbin/init', [oct(0o775), oct(0o755)], 0, 0, magic=elf_magic, follow_symlink=True)
|
||||
validate_mode('/sbin/init', [oct(0o775), oct(0o755), oct(0o555)], 0, 0, magic=elf_magic, follow_symlink=True)
|
||||
|
||||
if (default_user := config.get('user.default')) is not None:
|
||||
warning(node, f'Found discouraged wsl.conf key: user.default={default_user}')
|
||||
|
||||
validate_mode('/etc/passwd', [oct(0o664), oct(0o644)], 0, 0, parse_method = lambda fd: read_passwd(node, defaultUid, fd))
|
||||
validate_mode('/etc/shadow', [oct(0o640), oct(0o600), oct(0)], 0, None)
|
||||
validate_mode('/bin/bash', [oct(0o755), oct(0o775)], 0, 0, magic=elf_magic, follow_symlink=True)
|
||||
validate_mode('/bin/sh', [oct(0o755), oct(0o775)], 0, 0, magic=elf_magic, follow_symlink=True)
|
||||
validate_mode('/bin/bash', [oct(0o755), oct(0o775), oct(0o555)], 0, 0, magic=elf_magic, follow_symlink=True, optional=True)
|
||||
validate_mode('/bin/sh', [oct(0o755), oct(0o775), oct(0o555)], 0, 0, magic=elf_magic, follow_symlink=True)
|
||||
|
||||
enabled_systemd_units = read_systemd_enabled_units(node, tar)
|
||||
for unit, path in enabled_systemd_units.items():
|
||||
|
||||
@ -24,7 +24,7 @@ Notable ETL providers:
|
||||
- `Error`: Unexpected errors
|
||||
- `CreateVmBegin`, `CreateVmEnd`: Virtual machine lifetime
|
||||
- `CreateNetworkBegin`, `CreateNetworkEnd`: Networking configuration
|
||||
- `SentMessage`, `ReceivedMessaged`: Communication on the hvsocket channels with Linux.
|
||||
- `SentMessage`, `ReceivedMessage`: Communication on the hvsocket channels with Linux.
|
||||
|
||||
- `Microsoft.Windows.Subsystem.Lxss`: Other WSL executables (wsl.exe, wslg.exe, wslconfig.exe, wslrelay.exe, ...)
|
||||
Important events:
|
||||
|
||||
@ -70,5 +70,5 @@ bin\x64\debug\test.bat /name:*UnitTest* -f
|
||||
|
||||
See [debugging](debugging.md) for general debugging instructions.
|
||||
|
||||
To attach a debugging to the unit test process, use: `/waitfordebugger` when calling `test.bat`.
|
||||
To attach a debugger to the unit test process, use: `/waitfordebugger` when calling `test.bat`.
|
||||
Use `/breakonfailure` to automatically break on the first test failure.
|
||||
|
||||
@ -4,7 +4,7 @@ This page describes the steps in the WSL2 process, from the user invoking [wsl.e
|
||||
|
||||
## Overview
|
||||
|
||||
The below diagram shows the sequence of event to start bash within a WSL2 distribution. See [WSL architecture](index.md) for details about what each process does.
|
||||
The below diagram shows the sequence of events to start bash within a WSL2 distribution. See [WSL architecture](index.md) for details about what each process does.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
@ -43,7 +43,7 @@ sequenceDiagram
|
||||
|
||||
## CreateInstance()
|
||||
|
||||
When [wslervice.exe](wslservice.exe.md) receives the CreateInstance() call via COM, it will:
|
||||
When [wslservice.exe](wslservice.exe.md) receives the CreateInstance() call via COM, it will:
|
||||
|
||||
1) Identify which distribution the user wants to create. This is done by looking up the `DistributionRegistration` (see `src/windows/service/exe/DistributionRegistration.cpp`) in the Windows registry, matching either on the distribution ID, or using the default if none is provided.
|
||||
|
||||
@ -76,13 +76,13 @@ When started, the virtual machine will boot into the provided kernel, and then e
|
||||
|
||||
- Identifiers for the system VHD, swap VHD and kernel modules VHD if any
|
||||
- The machine's hostname
|
||||
- The configured memory reclaim mode and page reporting order(See [wsl2.pageReporting](https://learn.microsoft.com/windows/wsl/wsl-config))*
|
||||
- The configured memory reclaim mode and page reporting order
|
||||
|
||||
[mini_init](mini_init.md) then creates the [gns process](gns.md), which is responsible for networking configuration and then receives a `LxMiniInitMessageInitialConfig` message, which contains:
|
||||
|
||||
- An entropy buffer, to seed the virtual machine's entropy
|
||||
- Information about the GPU drivers shares to mount, if any
|
||||
- Wether [wslg](https://github.com/microsoft/wslg) is enabled
|
||||
- Whether [wslg](https://github.com/microsoft/wslg) is enabled
|
||||
|
||||
After applying all the configuration requested by [wslservice.exe](wslservice.exe.md), the virtual machine is ready to start Linux distributions.
|
||||
|
||||
|
||||
@ -14,9 +14,9 @@ When a Linux process is created, [wslservice.exe](wslservice.exe.md) determines
|
||||
|
||||
*Note: This section only applies to WSL2 distributions. *
|
||||
|
||||
When a [session leader](session-leader.md) is created, [wslsevice.exe](wslservice.exe.md) starts a [plan9](https://9fans.github.io/plan9port/man/man9/intro.html) file server. This file server can be connected to from the WSL2 virtual machine to mount Windows drives.
|
||||
When a [session leader](session-leader.md) is created, [wslservice.exe](wslservice.exe.md) starts a [plan9](https://9fans.github.io/plan9port/man/man9/intro.html) file server. This file server can be connected to from the WSL2 virtual machine to mount Windows drives.
|
||||
|
||||
When the WSL distribution is created, [wslservice.exe](wslservice.exe.md) uses the `LX_INIT_CONFIGURATION_INFORMATION` message to indicate wether the process that created the distribution is elevated or not. Based on this, [init](init.md) will mount either or the elevated, or un-elevated version of the plan9 server.
|
||||
When the WSL distribution is created, [wslservice.exe](wslservice.exe.md) uses the `LX_INIT_CONFIGURATION_INFORMATION` message to indicate whether the process that created the distribution is elevated or not. Based on this, [init](init.md) will mount either the elevated, or un-elevated version of the plan9 server.
|
||||
|
||||
Later when the first command is created in the namespace that hasn't been mounted yet, (either elevated, or non-elevated), [wslservice.exe](wslservice.exe.md) sends a `LxInitMessageRemountDrvfs` to [init](init.md), which tell `init` to mount the other namespace.
|
||||
|
||||
@ -30,6 +30,6 @@ As long as the Windows plan9 server is running, drives can be mounted simply by
|
||||
mount -t drvfs C: /tmp/my-mount-point
|
||||
```
|
||||
|
||||
Internally, this handled by `/usr/sbin/mount.drvfs`, which is a symlink to `/init`. When `/init` starts, it looks at `argv[0]` to determine which entrypoint to run. If `argv[0]` is `mount.drvfs`, then `/init` runs the `mount.drvfs` entrypoint (see `MountDrvfsEntry()` in `src/linux/init/drvfs.cpp`).
|
||||
Internally, this is handled by `/usr/sbin/mount.drvfs`, which is a symlink to `/init`. When `/init` starts, it looks at `argv[0]` to determine which entrypoint to run. If `argv[0]` is `mount.drvfs`, then `/init` runs the `mount.drvfs` entrypoint (see `MountDrvfsEntry()` in `src/linux/init/drvfs.cpp`).
|
||||
|
||||
Depending on the distribution configuration, `mount.drvfs` will either mount the drive as `drvfs` (WSL1), or `plan9`, `virtio-plan9` or `virtiofs` (WSL), depending on [.wslconfig](https://learn.microsoft.com/windows/wsl/wsl-config).
|
||||
@ -1,6 +1,6 @@
|
||||
# GNS
|
||||
|
||||
`gns` is a process created by `mini_init`. Its jobs is to configure networking within the WSL2 virtual machine.
|
||||
`gns` is a process created by `mini_init`. Its job is to configure networking within the WSL2 virtual machine.
|
||||
|
||||
## Networking configuration
|
||||
|
||||
|
||||
@ -25,6 +25,6 @@ Inside Linux, each [session leader](session-leader.md), and each instance of [in
|
||||
|
||||
`/init` uses the `$WSL_INTEROP` environment variable to know which server to connect to. If the variable is not set, `/init` will try to connect to `/run/WSL/${pid}_interop`, with its own PID. If that doesn't work, `/init` will try its parent's pid, and then will continue to go up the chain until it reached [init](init.md).
|
||||
|
||||
Once connected `/init` sends a `LxInitMessageCreateProcess` (WSL1) or a `LxInitMessageCreateProcessUtilityVm` (WSL2), which then forwards that message to the associated Windows process, which will launched the requested command and relay its output to `/init`.
|
||||
Once connected `/init` sends a `LxInitMessageCreateProcess` (WSL1) or a `LxInitMessageCreateProcessUtilityVm` (WSL2), which then forwards that message to the associated Windows process, which will launch the requested command and relay its output to `/init`.
|
||||
|
||||
See `src/linux/init/binfmt.cpp`
|
||||
@ -9,6 +9,6 @@ When `wsl2.networkingMode` is set to NAT, `localhost` will watch for bound TCP p
|
||||
|
||||
## Mirrored networking
|
||||
|
||||
In mirrored mode, `localhost` register a BPF program to intercept calls to `bind()`, and forward the calls to Windows via [wslservice.exe](wslservice.exe.md) so Windows can route the network traffic directly to the WSL2 virtual machine.
|
||||
In mirrored mode, `localhost` registers a BPF program to intercept calls to `bind()`, and forward the calls to Windows via [wslservice.exe](wslservice.exe.md) so Windows can route the network traffic directly to the WSL2 virtual machine.
|
||||
|
||||
See `src/linux/localhost.cpp`.
|
||||
@ -22,7 +22,7 @@ The other hvsocket channel is used to send notifications to [wslservice.exe](wsl
|
||||
|
||||
## Networking configuration
|
||||
|
||||
As part of the boot process, `mini_init` also launches the [gns binary](gns.md) which managed networking configuration
|
||||
As part of the boot process, `mini_init` also launches the [gns binary](gns.md) which manages networking configuration
|
||||
|
||||
## Other tasks
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ In WSL2 distributions, `plan9` runs its filesystem through an `hvsocket`
|
||||
|
||||
## Accessing the distribution files from Windows
|
||||
|
||||
From Windows, a special redirector driver (p9rdr.sys) registers both `\\wsl$` and `\\wsl.localhost`. When either of those paths are accessed, `p9rdr.sys` calls [wslservice.exe](wslservice.exe.md) to list the available distributions for a given Windows users.
|
||||
From Windows, a special redirector driver (p9rdr.sys) registers both `\\wsl$` and `\\wsl.localhost`. When either of those paths are accessed, `p9rdr.sys` calls [wslservice.exe](wslservice.exe.md) to list the available distributions for a given Windows user.
|
||||
|
||||
When a distribution path is accessed (like `\\wsl.localhost\debian`), `p9rdr.sys` calls into [wslservice.exe](wslservice.exe.md) via COM to start the distribution, and connect to its plan9 server, which allows the files to be accessed from Windows.
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Relay
|
||||
|
||||
Relay is a WSL2 linux process creating by a [session leader](session-leader.md). Its job is to create a linux process on behalf of the user, and relay its output back to Windows.
|
||||
Relay is a WSL2 linux process created by a [session leader](session-leader.md). Its job is to create a linux process on behalf of the user, and relay its output back to Windows.
|
||||
|
||||
## Creating a user process
|
||||
|
||||
|
||||
@ -23,4 +23,4 @@ When running in a WSL1 distribution, the session leader forks(), and uses the ch
|
||||
|
||||
## Creating a WSL2 process
|
||||
|
||||
When running in a WSL2 distribution, the session leaders forks() to create a [relay](relay.md) process, which is responsible for creating the user process and relaying its output back to [wsl.exe](wsl.exe.md)
|
||||
When running in a WSL2 distribution, the session leader forks() to create a [relay](relay.md) process, which is responsible for creating the user process and relaying its output back to [wsl.exe](wsl.exe.md)
|
||||
@ -7,7 +7,7 @@ Systemd support for a WSL distribution can be enabled by setting the following i
|
||||
systemd=true
|
||||
```
|
||||
|
||||
When enabled, [init](init.md) will take launch `/sbin/init` (which points to systemd's init) when the distribution starts. One key difference when this setting is enabled is that [init](init.md) won't be pid 1 in the given distribution, since systemd's init requires running as pid 1, so [init](init.md) will fork(), and launch systemd in the parent while continuing WSL configuration in the child process.
|
||||
When enabled, [init](init.md) will launch `/sbin/init` (which points to systemd's init) when the distribution starts. One key difference when this setting is enabled is that [init](init.md) won't be pid 1 in the given distribution, since systemd's init requires running as pid 1, so [init](init.md) will fork(), and launch systemd in the parent while continuing WSL configuration in the child process.
|
||||
|
||||
After launching `/sbin/init`, [init](init.md) waits for systemd to be ready by waiting for `systemctl is-system-running` to return either `running`, or `degraded`. After a given amount of time, WSL will time out and allow the distribution to continue starting, even if systemd isn't ready.
|
||||
|
||||
@ -19,5 +19,5 @@ When systemd is enabled, WSL tries synchronizes launching processes with systemd
|
||||
|
||||
To improve compatibility with systemd, WSL creates various systemd configuration files during boot (under `/run`). These configurations files are used to:
|
||||
|
||||
- Protect the WSL [binfmt interpret](interop.md) from being deleted by `systemd-binfmt.service`
|
||||
- Protect the X11 socket from being deleted by `systemd-tmpfiles.serviceè
|
||||
- Protect the WSL [binfmt interpreter](interop.md) from being deleted by `systemd-binfmt.service`
|
||||
- Protect the X11 socket from being deleted by `systemd-tmpfiles-setup.service`
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# wsl.exe
|
||||
|
||||
wsl.exe is main command line entrypoint from WSL. Its job is to:
|
||||
wsl.exe is the main command line entrypoint for WSL. Its job is to:
|
||||
|
||||
- Parse the command line arguments (See `src/windows/common/wslclient.cpp`)
|
||||
- Call [wslservice.exe](wslservice.exe.md) via COM to launch WSL (see `src/windows/common/svccomm.cpp`)
|
||||
|
||||
@ -2,4 +2,4 @@
|
||||
|
||||
`wslg.exe` is a Windows executable that is used mostly to run graphical applications with WSL.
|
||||
|
||||
Its behavior is exactly the same as [wsl.exe](wsl.exe.md) with the difference that it's a win32 application, and not a console application, which allows it to start without a creating a console.
|
||||
Its behavior is exactly the same as [wsl.exe](wsl.exe.md) with the difference that it's a win32 application, and not a console application, which allows it to start without creating a console.
|
||||
|
||||
@ -4,7 +4,7 @@ WslService is a session 0 service, running as SYSTEM. Its job is to manage WSL s
|
||||
|
||||
## COM Interface
|
||||
|
||||
Clients can connect to WslService via its COM interface, ILxssUserSession. Its definition can be found in `src/windows/service/incwslservice.idl`.
|
||||
Clients can connect to WslService via its COM interface, ILxssUserSession. Its definition can be found in `src/windows/service/inc/wslservice.idl`.
|
||||
|
||||
When a COM client calls [CoCreateInstance()](https://learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance) on this interface, the service receives the requests via `LxssUserSessionFactory` (see `src/windows/service/LxssUserSessionFactory.cpp`) and returns an instance of `LxssUserSession` (see `src/windows/service/LxssUserSession.cpp`) per Windows user (calling CoCreateInstance() multiple times from the same Windows user accounts returns the same instance).
|
||||
|
||||
@ -19,7 +19,7 @@ The client can then use its `ILxssUserSession` instance to call methods into the
|
||||
|
||||
WslService manages the WSL2 Virtual Machine. The virtual machine management logic can be found in `src/windows/service/WslCoreVm.cpp`.
|
||||
|
||||
Once booted, WslService maintains an [hvsocket](https://learn.microsoft.com/virtualization/hyper-v-on-windows/user-guide/make-integration-service) with the Virtual Machine which it uses to send various commands to Linux processes (see [mini_init](mini_init.md) for more details.
|
||||
Once booted, WslService maintains an [hvsocket](https://learn.microsoft.com/virtualization/hyper-v-on-windows/user-guide/make-integration-service) with the Virtual Machine which it uses to send various commands to Linux processes (see [mini_init](mini_init.md) for more details).
|
||||
|
||||
## WSL2 Distributions
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 836 KiB |
@ -32,7 +32,7 @@
|
||||
<string id="NestedVirtualizationExplain">When set to disabled, this policy disables nested virtualization configuration via .wslconfig (wsl2.nestedVirtualization). This policy only applies to Store WSL.</string>
|
||||
|
||||
<string id="KernelDebugUserSettingConfigurable">Allow kernel debugging</string>
|
||||
<string id="KernelDebugExplain">When set to disabled, this policy disables kernel kernel debugging configuration via .wslconfig (wsl2.kernelDebugPort). This policy only applies to Store WSL.</string>
|
||||
<string id="KernelDebugExplain">When set to disabled, this policy disables kernel debugging configuration via .wslconfig (wsl2.kernelDebugPort). This policy only applies to Store WSL.</string>
|
||||
|
||||
<string id="CustomNetworkingUserSettingConfigurable">Allow custom networking configuration</string>
|
||||
<string id="CustomNetworkingExplain">When set to disabled, this policy disables custom networking configuration via .wslconfig (wsl2.networkingmode). This policy only applies to Store WSL.</string>
|
||||
|
||||
@ -321,6 +321,9 @@ Pokud chcete používat WSL1, povolte prosím volitelnou komponentu Subsystém W
|
||||
--msal-proxy-path
|
||||
Zobrazení cesty k aplikaci proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Zobrazí ID virtuálního počítače WSL.
|
||||
|
||||
--version
|
||||
Zobrazí verzi balíčku WSL.
|
||||
|
||||
@ -328,6 +331,7 @@ Pokud chcete používat WSL1, povolte prosím volitelnou komponentu Subsystém W
|
||||
Netisknout nový řádek.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Argumenty pro správu Subsystému Windows pro Linux:
|
||||
Přesuňte distribuci do nového umístění.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Nastaví vhdx distribuce na zhuštěný, což umožní automatické uvolnění místa na disku.
|
||||
Nastavte virtuální pevný disk distribuce na zhuštěný, což umožní automatické uvolnění místa na disku.
|
||||
|
||||
--set-default-user <Username>
|
||||
Nastaví výchozího uživatele distribuce.
|
||||
@ -542,11 +546,11 @@ Argumenty pro správu distribucí v Subsystému Windows pro Linux:
|
||||
Určuje verzi, která se má použít pro novou distribuci.
|
||||
|
||||
--vhd
|
||||
Určuje, že zadaný soubor je soubor .vhdx, nikoli soubor tar.
|
||||
Tato operace vytvoří kopii souboru .vhdx v zadaném umístění instalace.
|
||||
Určuje, že poskytnutý soubor je soubor .vhd nebo .vhdx, nikoli soubor tar.
|
||||
Tato operace vytvoří kopii souboru VHD v zadaném umístění instalace.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importuje zadaný soubor .vhdx jako novou distribuci.
|
||||
Importuje zadaný soubor .VHD jako novou distribuci.
|
||||
Tento virtuální pevný disk musí být naformátovaný typem systému souborů ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -622,7 +626,7 @@ Potvrzení změn: {}
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>Vhd vlastních modulů jádra v {} se nenašel: {}.</value>
|
||||
<value>VHD vlastních modulů jádra v {} se nenašel: {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ Může být nutné restartovat systém, aby se změny projevily.</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Zadaný soubor musí mít příponu .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Zadaný soubor musí mít příponu {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Zadaný soubor musí mít příponu {} nebo {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch '{}' nebyl nalezen. Dostupné přepínače: {}</value>
|
||||
@ -787,6 +796,10 @@ Informace najdete na https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Při spouštění WSL došlo k chybám</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Nepodařilo se spustit systémovou relaci uživatele pro {}. Další podrobnosti najdete v seznamu deníků.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Otevřít EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Návrat k sítím NAT.</value>
|
||||
<value>Zobrazit dokumentaci</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Operaci nešlo dokončit, protože se vhdx právě používá. Vynucení ukončení používání WSL: wsl.exe --shutdown</value>
|
||||
<value>Operaci nešlo dokončit, protože se VHD právě používá. Vynucení ukončení používání WSL: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Návrat k sítím NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Zhuštěný soubor vhdx je podporován pouze pro WSL2.</value>
|
||||
<value>Zhuštěný VHD je podporován pouze pro WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Spouštění WSL jako místního systému se nepodporuje.</value>
|
||||
@ -1047,7 +1060,7 @@ Návrat k sítím NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Vypadá to na soubor VHDX. Použijte --vhd k importu VHDX místo dehtu.</value>
|
||||
<value>This looks like a VHD file. Use --vhd to import a VHD instead of a tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1092,15 +1105,15 @@ Kód chyby: {}</value>
|
||||
<value>Dotaz na síťový režim se nezdařil</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>Vlastní moduly jádra byly zadány bez zadání vlastního jádra. Další informace najdete https://aka.ms/wslcustomkernel.</value>
|
||||
<value>Byly zadány přizpůsobené moduly jádra bez zadání přizpůsobeného jádra. Další informace najdete https://aka.ms/wslcustomkernel.</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>Kvůli aktuálnímu problému s kompatibilitou s klientem globálního bezpečného přístupu je tunelování DNS zakázané.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Podpora prořídlého VHD je v současné době zakázána z důvodu možného poškození dat.
|
||||
Pokud chcete distribuci vynutit použití prořídlého vhd, spusťte:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
Pokud chcete distribuci vynutit použití prořídlého VHD, spusťte:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ K dalším možnostem VS Code Remote můžete přistupovat také prostřednictv
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Volitelné funkce</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Povolit vytváření sestav stránek</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Výchozí nastavení true umožňuje systému Windows uvolnit nevyužitou paměť přidělenou virtuálnímu počítači WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Prohlášení o zásadách ochrany osobních údajů</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Aktivér den valgfrie komponent "Windows-undersystem til Linux" for at bruge WSL
|
||||
--msal-proxy-path
|
||||
Vis stien til MSAL-proxyprogrammet.
|
||||
|
||||
--vm-id
|
||||
Vis WSL VM ID.
|
||||
|
||||
--version
|
||||
Vis versionen af WSL-pakken.
|
||||
|
||||
@ -328,6 +331,7 @@ Aktivér den valgfrie komponent "Windows-undersystem til Linux" for at bruge WSL
|
||||
Udskriv ikke en ny linje.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Argumenter til administration af Windows-undersystem til Linux:
|
||||
Flyt distributionen til en ny placering.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Angiv vhdx for distribution til sparse, hvilket gør det muligt at frigøre diskplads automatisk.
|
||||
Angiv VHD for distribution til sparse, hvilket gør det muligt at frigøre diskplads automatisk.
|
||||
|
||||
--set-default-user <Username>
|
||||
Angiv standardbrugeren af distributionen.
|
||||
@ -542,11 +546,11 @@ Argumenter for administration af distributioner i Windows-undersystem til Linux:
|
||||
Angiver den version, der skal bruges til den nye distribution.
|
||||
|
||||
--vhd
|
||||
Angiver, at den angivne fil er en .vhdx-fil, ikke en tar-fil.
|
||||
Denne handling opretter en kopi af .vhdx-filen på den angivne installationsplacering.
|
||||
Angiver, at den angivne fil er en .vhd- eller.vhdx-fil, ikke en tar-fil.
|
||||
Denne handling opretter en kopi af VHD-filen på den angivne installationsplacering.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importerer den angivne .vhdx-fil som en ny distribution.
|
||||
Importerer den angivne VHD-fil som en ny distribution.
|
||||
Denne virtuelle harddisk skal være formateret med ext4-filsystemtypen.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -700,8 +704,13 @@ Systemet skal muligvis genstartes, så ændringerne kan træde i kraft.</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Den angivne fil skal have filtypenavnet .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Den angivne fil skal have filtypenavnet {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Den angivne fil skal have filtypenavnet {} eller {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch "{}" blev ikke fundet. Tilgængelige switches: {}</value>
|
||||
@ -787,6 +796,10 @@ Besøg https://aka.ms/wslinstall for at få flere oplysninger</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Der opstod fejl under WSL-selvstart</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Systembrugersessionen for '{}' kunne ikke startes. Se journalctl for at få flere oplysninger.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Åbn EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Går tilbage til NAT-netværk.</value>
|
||||
<value>Se dokumenter</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Handlingen kunne ikke fuldføres, fordi vhdx er i brug i øjeblikket. Sådan tvinges WSL til at stoppe brug: wsl.exe --shutdown</value>
|
||||
<value>Handlingen kunne ikke fuldføres, fordi VHD'en i øjeblikket er i brug. For at tvinge WSL til at stoppe skal du bruge: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Går tilbage til NAT-netværk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx understøttes kun på WSL2.</value>
|
||||
<value>Sparse VHD understøttes kun på WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Kørsel af WSL som lokalt system understøttes ikke.</value>
|
||||
@ -1047,7 +1060,7 @@ Går tilbage til NAT-netværk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Dette ligner en VHDX-fil. Brug --vhd til at importere en VHDX i stedet for en tar.</value>
|
||||
<value>Dette ligner en VHD-fil. Brug --vhd til at importere en VHD i stedet for en tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1100,7 +1113,7 @@ Fejlkode: {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Understøttelse af sparse VHD er i øjeblikket deaktiveret på grund af potentiel datakorruption.
|
||||
For at tvinge en distribution til at bruge en sparse VHD, skal du køre:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Du kan også få adgang til flere Fjernindstillinger for VS-kode via kommandopal
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Valgfrie funktioner</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Aktivér siderapportering</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Standardindstillingen sand gør det muligt for Windows at frigøre ubrugt hukommelse, der er allokeret til den virtuelle WSL 2-maskine.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Erklæring om beskyttelse af oplys.</value>
|
||||
</data>
|
||||
|
||||
@ -327,6 +327,9 @@ Aktivieren Sie bitte die optionale Komponente „Windows Subsystem für Linux“
|
||||
--msal-proxy-path
|
||||
Zeigt den Pfad zur MSAL-Proxyanwendung an.
|
||||
|
||||
--vm-id
|
||||
Zeigt die WSL-VM-ID an.
|
||||
|
||||
--version
|
||||
Zeigt die Version des WSL-Pakets an.
|
||||
|
||||
@ -334,6 +337,7 @@ Aktivieren Sie bitte die optionale Komponente „Windows Subsystem für Linux“
|
||||
Keinen Zeilenumbruch drucken.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -377,7 +381,7 @@ Verbrauch:
|
||||
<comment>{Locked="/l,"}{Locked="/list "}{Locked="/all "}{Locked="/running "}{Locked="/s,"}{Locked="/setdefault "}{Locked="/t,"}{Locked="/terminate "}{Locked="/u,"}{Locked="/unregister "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.
|
||||
<value>Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.
|
||||
Datenschutzinformationen zu diesem Produkt finden Sie unter https://aka.ms/privacy.
|
||||
|
||||
Syntax: wsl.exe [Argument] [Optionen...] [CommandLine]
|
||||
@ -628,7 +632,7 @@ Buildzeit: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>Die benutzerdefinierte Kernelmodul-VHD in "{}" wurde nicht gefunden: "{}".</value>
|
||||
<value>Die benutzerdefinierte Kernelmodule-VHD in {} wurde nicht gefunden: „{}“.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -706,8 +710,13 @@ Das System muss möglicherweise neu gestartet werden, damit die Änderungen wirk
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Die angegebene Datei muss die Dateierweiterung ".vhdx" aufweisen.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Die angegebene Datei muss die Dateierweiterung {} aufweisen.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Die angegebene Datei muss die Dateierweiterung {} oder {} besitzen.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch „{}“ wurde nicht gefunden. Verfügbare Switches: {}</value>
|
||||
@ -793,6 +802,10 @@ Weitere Informationen finden Sie unter https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Fehler beim WSL-Start.</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Starten der systemd-Benutzersitzung für „{}“ fehlgeschlagen. Weitere Details finden Sie in journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Open EventViewer</value>
|
||||
</data>
|
||||
@ -996,7 +1009,7 @@ Fallback auf NAT-Netzwerk.</value>
|
||||
<value>Dokumente anzeigen</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Der Vorgang konnte nicht abgeschlossen werden, da die VHDX zurzeit verwendet wird. So erzwingen Sie, dass WSL die Verwendung beendet: wsl.exe --shutdown</value>
|
||||
<value>Der Vorgang konnte nicht abgeschlossen werden, da die VHD zurzeit verwendet wird. So erzwingen Sie, dass WSL die Verwendung beendet: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ Fallback auf NAT-Netzwerk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>VHDX mit geringer Dichte wird nur für WSL2 unterstützt.</value>
|
||||
<value>VHD mit geringer Dichte wird nur unter WSL2 unterstützt.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Das Ausführen von WSL als lokales System wird nicht unterstützt.</value>
|
||||
@ -1053,7 +1066,7 @@ Fallback auf NAT-Netzwerk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Dies scheint eine VHDX-Datei zu sein. Verwenden Sie --vhd anstelle eines TAR-Archivs, um eine VHDX-Datei zu importieren.</value>
|
||||
<value>Dies sieht wie eine VHD-Datei aus. Verwenden Sie „--vhd “, um eine VHD anstelle eines „tar“ zu importieren.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1105,8 +1118,8 @@ Fehlercode: {}</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Die Unterstützung von Sparse VHD ist derzeit wegen möglicher Datenbeschädigung deaktiviert.
|
||||
Um eine Distribution zu zwingen, eine Sparse VHD zu verwenden, führen Sie bitte Folgendes aus:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
Um eine Distribution zu zwingen, eine spärliche VHD zu verwenden, führen Sie bitte Folgendes aus:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1693,12 +1706,6 @@ Sie können auch über die Befehlspalette in VS Code selbst auf weitere VS Code
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Optionale Features</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Aktivieren der Seitenberichterstellung</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Mit der Standardeinstellung „TRUE“ kann Windows nicht verwendeten Speicher freigeben, der dem virtuellen WSL 2-Computer zugeordnet ist.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Datenschutzbestimmung</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Please enable the "Windows Subsystem for Linux" optional component to use WSL1.<
|
||||
--msal-proxy-path
|
||||
Display the path to the MSAL proxy application.
|
||||
|
||||
--vm-id
|
||||
Display the WSL VM ID.
|
||||
|
||||
--version
|
||||
Display the version of the WSL package.
|
||||
|
||||
@ -328,6 +331,7 @@ Please enable the "Windows Subsystem for Linux" optional component to use WSL1.<
|
||||
Do not print a newline.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Arguments for managing Windows Subsystem for Linux:
|
||||
Move the distribution to a new location.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Set the vhdx of distro to be sparse, allowing disk space to be automatically reclaimed.
|
||||
Set the VHD of distro to be sparse, allowing disk space to be automatically reclaimed.
|
||||
|
||||
--set-default-user <Username>
|
||||
Set the default user of the distribution.
|
||||
@ -542,11 +546,11 @@ Arguments for managing distributions in Windows Subsystem for Linux:
|
||||
Specifies the version to use for the new distribution.
|
||||
|
||||
--vhd
|
||||
Specifies that the provided file is a .vhdx file, not a tar file.
|
||||
This operation makes a copy of the .vhdx file at the specified install location.
|
||||
Specifies that the provided file is a .vhd or .vhdx file, not a tar file.
|
||||
This operation makes a copy of the VHD file at the specified install location.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Imports the specified .vhdx file as a new distribution.
|
||||
Imports the specified VHD file as a new distribution.
|
||||
This virtual hard disk must be formatted with the ext4 filesystem type.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -622,7 +626,7 @@ Build time: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>The custom kernel modules vhd in {} was not found: '{}'.</value>
|
||||
<value>The customised kernel modules VHD in {} was not found: '{}'.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ The system may need to be restarted so the changes can take effect.</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>The specified file must have the .vhdx file extension.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>The specified file must have the {} file extension.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>The specified file must have the {} or {} file extension.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>The VmSwitch '{}' was not found. Available switches: {}</value>
|
||||
@ -787,6 +796,10 @@ For information please visit https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Errors occurred during WSL startup</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Failed to start the systemd user session for '{}'. See journalctl for more details.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Open EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Falling back to NAT networking.</value>
|
||||
<value>See Docs</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: wsl.exe --shutdown</value>
|
||||
<value>The operation could not be completed because the VHD is currently in use. To force WSL to stop use: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Falling back to NAT networking.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx is supported on WSL2 only.</value>
|
||||
<value>Sparse VHD is supported on WSL2 only.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Running WSL as local system is not supported.</value>
|
||||
@ -1047,7 +1060,7 @@ Falling back to NAT networking.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>This looks like a VHDX file. Use --vhd to import a VHDX instead of a tar.</value>
|
||||
<value>This looks like a VHD file. Use --vhd to import a VHD instead of a tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1092,15 +1105,15 @@ Error code: {}</value>
|
||||
<value>Failed to query networking mode</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>Customised kernel modules were supplied without a specifying a customised kernel. Please see https://aka.ms/wslcustomkernel for more information.</value>
|
||||
<value>Customised kernel modules were supplied without specifying a customised kernel. Please see https://aka.ms/wslcustomkernel for more information.</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>Due to a current compatibility issue with Global Secure Access Client, DNS Tunneling is disabled.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Sparse VHD support is currently disabled due to potential data corruption.
|
||||
To force a distribution to use a sparse vhd, please run:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
To force a distribution to use a sparse VHD, please run:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ You can also access more VS Code Remote options through the command palette with
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Optional Features</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Enable page reporting</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Default true setting enables Windows to reclaim unused memory allocated to WSL 2 virtual machine.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Privacy Statement</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Please enable the "Windows Subsystem for Linux" optional component to use WSL1.<
|
||||
--msal-proxy-path
|
||||
Display the path to the MSAL proxy application.
|
||||
|
||||
--vm-id
|
||||
Display the WSL VM ID.
|
||||
|
||||
--version
|
||||
Display the version of the WSL package.
|
||||
|
||||
@ -328,6 +331,7 @@ Please enable the "Windows Subsystem for Linux" optional component to use WSL1.<
|
||||
Do not print a newline.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Arguments for managing Windows Subsystem for Linux:
|
||||
Move the distribution to a new location.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Set the vhdx of distro to be sparse, allowing disk space to be automatically reclaimed.
|
||||
Set the VHD of distro to be sparse, allowing disk space to be automatically reclaimed.
|
||||
|
||||
--set-default-user <Username>
|
||||
Set the default user of the distribution.
|
||||
@ -542,11 +546,11 @@ Arguments for managing distributions in Windows Subsystem for Linux:
|
||||
Specifies the version to use for the new distribution.
|
||||
|
||||
--vhd
|
||||
Specifies that the provided file is a .vhdx file, not a tar file.
|
||||
This operation makes a copy of the .vhdx file at the specified install location.
|
||||
Specifies that the provided file is a .vhd or .vhdx file, not a tar file.
|
||||
This operation makes a copy of the VHD file at the specified install location.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Imports the specified .vhdx file as a new distribution.
|
||||
Imports the specified VHD file as a new distribution.
|
||||
This virtual hard disk must be formatted with the ext4 filesystem type.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -622,7 +626,7 @@ Build time: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>The custom kernel modules vhd in {} was not found: '{}'.</value>
|
||||
<value>The custom kernel modules VHD in {} was not found: '{}'.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ The system may need to be restarted so the changes can take effect.</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>The specified file must have the .vhdx file extension.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>The specified file must have the {} file extension.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>The specified file must have the {} or {} file extension.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>The VmSwitch '{}' was not found. Available switches: {}</value>
|
||||
@ -787,6 +796,10 @@ For information please visit https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Errors occurred during WSL startup</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Failed to start the systemd user session for '{}'. See journalctl for more details.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Open EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Falling back to NAT networking.</value>
|
||||
<value>See Docs</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: wsl.exe --shutdown</value>
|
||||
<value>The operation could not be completed because the VHD is currently in use. To force WSL to stop use: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Falling back to NAT networking.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx is supported on WSL2 only.</value>
|
||||
<value>Sparse VHD is supported on WSL2 only.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Running WSL as local system is not supported.</value>
|
||||
@ -1047,7 +1060,7 @@ Falling back to NAT networking.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>This looks like a VHDX file. Use --vhd to import a VHDX instead of a tar.</value>
|
||||
<value>This looks like a VHD file. Use --vhd to import a VHD instead of a tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1092,15 +1105,15 @@ Error code: {}</value>
|
||||
<value>Failed to query networking mode</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>Customised kernel modules were supplied without a specifying a customised kernel. Please see https://aka.ms/wslcustomkernel for more information.</value>
|
||||
<value>Customised kernel modules were supplied without specifying a customised kernel. Please see https://aka.ms/wslcustomkernel for more information.</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>Due to a current compatibility issue with Global Secure Access Client, DNS Tunneling is disabled.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Sparse VHD support is currently disabled due to potential data corruption.
|
||||
To force a distribution to use a sparse vhd, please run:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
To force a distribution to use a sparse VHD, please run:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ You can also access more VS Code Remote options through the command palette with
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Optional Features</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Enable page reporting</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Default true setting enables Windows to reclaim unused memory allocated to WSL 2 virtual machine.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Privacy Statement</value>
|
||||
</data>
|
||||
|
||||
@ -327,13 +327,17 @@ Habilita el componente opcional "Subsistema de Windows para Linux" para usar WSL
|
||||
--msal-proxy-path
|
||||
Muestra la ruta de acceso a la aplicación proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Muestra el ID de la máquina virtual de WSL.
|
||||
|
||||
--version
|
||||
Muestra la versión del paquete WSL.
|
||||
Muestra la versión del paquete de WSL.
|
||||
|
||||
-n
|
||||
No imprima una nueva línea.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -378,57 +382,57 @@ Uso:
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Todos los derechos reservados.
|
||||
Para obtener información de privacidad sobre este producto, visita https://aka.ms/privacy.
|
||||
Para obtener información de privacidad sobre este producto, visite https://aka.ms/privacy.
|
||||
|
||||
Uso: wsl.exe [Argumento] [Opciones...] [CommandLine]
|
||||
Uso: wsl.exe [Argumento] [Opciones...] [Línea de comandos]
|
||||
|
||||
Argumentos para ejecutar archivos binarios de Linux:
|
||||
|
||||
Si no se proporciona ninguna línea de comandos, wsl.exe inicia el shell predeterminado.
|
||||
|
||||
--exec, -e <CommandLine>
|
||||
Ejecuta el comando especificado sin usar el shell de Linux predeterminado.
|
||||
Ejecute el comando especificado sin usar el shell de Linux predeterminado.
|
||||
|
||||
--shell-type <standard|login|none>
|
||||
Ejecuta el comando especificado con el tipo de shell proporcionado.
|
||||
Ejecute el comando especificado con el tipo de shell proporcionado.
|
||||
|
||||
--
|
||||
Pasa la línea de comandos restante tal cual.
|
||||
|
||||
Opciones:
|
||||
--cd <Directory>
|
||||
Establece el directorio especificado como el directorio de trabajo actual.
|
||||
Si se usa ~, se usará la ruta de acceso principal del usuario de Linux. Si la ruta de acceso comienza
|
||||
con un carácter /, se interpretará como una ruta de acceso absoluta de Linux.
|
||||
Establece el directorio especificado como directorio de trabajo actual.
|
||||
Si se usa ~, se usará la ruta de acceso principal del usuario de Linux. Si la ruta de
|
||||
acceso comienza con un carácter /, se interpretará como una ruta de acceso absoluta de Linux.
|
||||
De lo contrario, el valor debe ser una ruta de acceso absoluta de Windows.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
Ejecuta la distribución especificada.
|
||||
Ejecute la distribución especificada.
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
Ejecuta la distribución especificada.
|
||||
Ejecute el id. de distribución especificado.
|
||||
|
||||
--user, -u <UserName>
|
||||
Ejecuta como el usuario especificado.
|
||||
Ejecutar como el usuario especificado.
|
||||
|
||||
--system
|
||||
Inicia un shell para la distribución del sistema.
|
||||
|
||||
Argumentos para administrar el Subsistema de Windows para Linux:
|
||||
Argumentos para administrar Subsistema de Windows para Linux:
|
||||
|
||||
--help
|
||||
Muestra información de uso.
|
||||
Mostrar información de uso.
|
||||
|
||||
--debug-shell
|
||||
Abre un shell de depuración WSL2 con fines de diagnóstico.
|
||||
Abra un shell de depuración WSL2 con fines de diagnóstico.
|
||||
|
||||
--install [Distro] [Options...]
|
||||
Instala una distribución de Subsistema de Windows para Linux.
|
||||
--install [Distribución] [Opciones...]
|
||||
Instale una distribución de Subsistema de Windows para Linux.
|
||||
Para obtener una lista de distribuciones válidas, use 'wsl.exe --list --online'.
|
||||
|
||||
Opciones:
|
||||
--enable-wsl1
|
||||
Habilita la compatibilidad con WSL1.
|
||||
Habilitar compatibilidad con WSL1.
|
||||
|
||||
--fixed-vhd
|
||||
Crea un disco de tamaño fijo para almacenar la distribución.
|
||||
@ -446,10 +450,10 @@ Argumentos para administrar el Subsistema de Windows para Linux:
|
||||
Establece el nombre de la distribución.
|
||||
|
||||
--no-distribution
|
||||
Solo se instalan los componentes opcionales necesarios, no se instala una distribución.
|
||||
Solo instalar los componentes opcionales necesarios, no instala una distribución.
|
||||
|
||||
--no-launch, -n
|
||||
No inicia la distribución después de la instalación.
|
||||
No inicies la distribución después de la instalación.
|
||||
|
||||
--version <Version>
|
||||
Especifica la versión que se va a usar para la nueva distribución.
|
||||
@ -458,7 +462,7 @@ Argumentos para administrar el Subsistema de Windows para Linux:
|
||||
Especifica el tamaño del disco para almacenar la distribución.
|
||||
|
||||
--web-download
|
||||
Descarga la distribución desde Internet en lugar de la Microsoft Store.
|
||||
Descarga la distribución desde Internet en lugar de la Microsoft Store.
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
Cambia las opciones específicas de distribución.
|
||||
@ -468,7 +472,7 @@ Argumentos para administrar el Subsistema de Windows para Linux:
|
||||
Mueve la distribución a una nueva ubicación.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Establece el vhdx de la distribución para que sea disperso, lo que permite que el espacio en disco se recupere automáticamente.
|
||||
Establece el VHD de distribución en disperso, lo que permite recuperar automáticamente el espacio en disco.
|
||||
|
||||
--set-default-user <Username>
|
||||
Establece el usuario predeterminado de la distribución.
|
||||
@ -477,59 +481,59 @@ Argumentos para administrar el Subsistema de Windows para Linux:
|
||||
Cambia el tamaño del disco de la distribución al tamaño especificado.
|
||||
|
||||
--mount <Disk>
|
||||
Conecta y monta un disco físico o virtual en todas las distribuciones de WSL 2.
|
||||
Conecta y monta un disco físico o virtual en todas las distribuciones de WSL 2.
|
||||
|
||||
Opciones:
|
||||
--vhd
|
||||
Especifica que <Disk> hace referencia a un disco duro virtual.
|
||||
|
||||
--bare
|
||||
Conecta el disco a WSL2, pero no lo monta.
|
||||
Conecta el disco a WSL2, pero no lo montes.
|
||||
|
||||
--name <Name>
|
||||
Monta el disco con un nombre personalizado para el punto de montaje.
|
||||
|
||||
--type <Type>
|
||||
Sistema de archivos que se va a usar al montar un disco; si no se especifica, el valor predeterminado es ext4.
|
||||
--type <Tipo>
|
||||
Sistema de archivos que se va a usar al montar un disco. Si no se especifica, el valor predeterminado es ext4.
|
||||
|
||||
--options <Options>
|
||||
Opciones de montaje adicionales.
|
||||
|
||||
--partition <Index>
|
||||
Índice de la partición que se va a montar; si no se especifica, el valor predeterminado es todo el disco.
|
||||
Índice de la partición que se va a montar. Si no se especifica, el valor predeterminado es todo el disco.
|
||||
|
||||
--set-default-version <Version>
|
||||
Cambia la versión de instalación predeterminada para las nuevas distribuciones.
|
||||
|
||||
--shutdown
|
||||
Finaliza inmediatamente todas las distribuciones en ejecución y la
|
||||
máquina virtual de utilidad ligera WSL 2.
|
||||
Finaliza inmediatamente todas las distribuciones en ejecución y la máquina virtual
|
||||
de la utilidad ligera WSL 2.
|
||||
|
||||
Opciones:
|
||||
--force
|
||||
--force
|
||||
Finaliza la máquina virtual WSL 2 incluso si hay una operación en curso. Puede provocar la pérdida de datos.
|
||||
|
||||
--status
|
||||
Muestra el estado del Subsistema de Windows para Linux.
|
||||
Muestra el estado de Subsistema de Windows para Linux.
|
||||
|
||||
--unmount [Disk]
|
||||
Desmonta y desasocia un disco de todas las distribuciones de WSL2.
|
||||
Desmonta y desasocia todos los discos si se llama sin argumento.
|
||||
|
||||
--uninstall
|
||||
Desinstala el paquete de Subsistema de Windows para Linux de este equipo.
|
||||
--uninstall
|
||||
Desinstala el paquete de Subsistema de Windows para Linux de este equipo.
|
||||
|
||||
--update
|
||||
Actualiza el paquete de Subsistema de Windows para Linux.
|
||||
--update
|
||||
Actualizar el paquete del Subsistema de Windows para Linux.
|
||||
|
||||
Opciones:
|
||||
--pre-release
|
||||
Descarga una versión preliminar si está disponible.
|
||||
Descargar una versión preliminar si está disponible.
|
||||
|
||||
--version, -v
|
||||
Muestra información de la versión.
|
||||
--version, -v
|
||||
Mostrar información de versión.
|
||||
|
||||
Argumentos para administrar distribuciones en Subsistema de Windows para Linux:
|
||||
Argumentos para administrar distribuciones en el Subsistema de Windows para Linux:
|
||||
|
||||
--export <Distro> <FileName> [Options]
|
||||
Exporta la distribución a un archivo tar.
|
||||
@ -548,11 +552,11 @@ Argumentos para administrar distribuciones en Subsistema de Windows para Linux:
|
||||
Especifica la versión que se va a usar para la nueva distribución.
|
||||
|
||||
--vhd
|
||||
Especifica que el archivo proporcionado es un archivo .vhdx, no un archivo tar.
|
||||
Esta operación realiza una copia del archivo .vhdx en la ubicación de instalación especificada.
|
||||
Especifica que el archivo proporcionado es un archivo .vhd o .vhdx, no un archivo tar.
|
||||
Esta operación realiza una copia del archivo VHD en la ubicación de instalación especificada.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importa el archivo .vhdx especificado como una nueva distribución.
|
||||
Importa el archivo VHD especificado como una nueva distribución.
|
||||
Este disco duro virtual debe tener el formato del tipo de sistema de archivos ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -560,20 +564,20 @@ Argumentos para administrar distribuciones en Subsistema de Windows para Linux:
|
||||
|
||||
Opciones:
|
||||
--all
|
||||
Enumera todas las distribuciones, incluidas las distribuciones que
|
||||
actualmente se está instalando o desinstalando.
|
||||
Enumera todas las distribuciones, incluidas las distribuciones que se están
|
||||
instalando o desinstalando actualmente.
|
||||
|
||||
--running
|
||||
Enumera solo las distribuciones que se están ejecutando actualmente.
|
||||
|
||||
--quiet, -q
|
||||
Muestra solo los nombres de distribución.
|
||||
Mostrar solo nombres de distribución.
|
||||
|
||||
--verbose, -v
|
||||
Muestra información detallada sobre todas las distribuciones.
|
||||
|
||||
--online, -o
|
||||
Muestra una lista de las distribuciones disponibles para instalar con 'wsl.exe --install'.
|
||||
Muestra una lista de distribuciones disponibles para instalar con 'wsl.exe --install'.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Establece la distribución como predeterminada.
|
||||
@ -706,8 +710,13 @@ Es posible que sea necesario reiniciar el sistema para que los cambios surtan ef
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>El archivo especificado debe tener la extensión de archivo .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>El archivo especificado debe tener la extensión de archivo {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>El archivo especificado debe tener la extensión de archivo {} o {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>No se encontró el VmSwitch '{}'. Modificadores disponibles: {}</value>
|
||||
@ -793,6 +802,10 @@ Para obtener información, visite https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Se han producido errores durante el inicio de WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>No se pudo iniciar la sesión de usuario systemd para '{}'. Consulte journalctl para obtener más detalles.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Abrir EventViewer</value>
|
||||
</data>
|
||||
@ -996,7 +1009,7 @@ Revirtiendo a las redes NAT.</value>
|
||||
<value>Ver documentos</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>No se pudo completar la operación porque el vhdx está actualmente en uso. Para forzar que WSL deje de usar: wsl.exe --shutdown</value>
|
||||
<value>No se pudo completar la operación porque el VHD está actualmente en uso. Para forzar que WSL deje de usar: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ Revirtiendo a las redes NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Vhdx disperso solo se admite en WSL2.</value>
|
||||
<value>El VHD disperso solo se admite en WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>No se admite la ejecución de WSL como sistema local.</value>
|
||||
@ -1053,7 +1066,7 @@ Revirtiendo a las redes NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Parece un archivo VHDX. Use --vhd para importar un VHDX en lugar de una tar.</value>
|
||||
<value>Parece un archivo VHD. Usa --vhd para importar un VHD en lugar de una tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1105,8 +1118,8 @@ Código de error: {}</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>La compatibilidad con VHD disperso está deshabilitada actualmente debido a posibles daños en los datos.
|
||||
Para forzar que una distribución use un VHD disperso, ejecute:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
Para forzar que una distribución use un VHD disperso, ejecuta:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1693,12 +1706,6 @@ También puedes acceder a más opciones remotas de VS Code mediante la paleta d
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Funciones opcionales</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Habilitar informes de páginas</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>La configuración true predeterminada permite que Windows reclame la memoria no usada asignada a la máquina virtual WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Declaración privacidad</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Ota valinnainen Windows-alijärjestelmä Linuxille -osa käyttöön, jotta voit
|
||||
--msal-proxy-path
|
||||
Näytä MSAL-välityspalvelinsovelluksen polku.
|
||||
|
||||
--vm-id
|
||||
Näytä WSL-näennäiskoneen tunnus.
|
||||
|
||||
--version
|
||||
Näytä WSL-paketin versio.
|
||||
|
||||
@ -328,6 +331,7 @@ Ota valinnainen Windows-alijärjestelmä Linuxille -osa käyttöön, jotta voit
|
||||
Älä tulosta uutta riviä.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -542,11 +546,11 @@ Argumentit Windows-alijärjestelmän Linuxille jakelujen hallintaan:
|
||||
Määrittää uudelle jakelulle käytettävän version.
|
||||
|
||||
--vhd
|
||||
Määrittää, että annettu tiedosto on .vhdx-tiedosto, ei tar-tiedosto.
|
||||
Tämä toiminto tekee .vhdx-tiedostosta kopion määritetyssä asennussijainnissa.
|
||||
Määrittää, että annettu tiedosto on .vhd- tai .vhdx-tiedosto, ei tar-tiedosto.
|
||||
Tämä toiminto tekee VHD-tiedostosta kopion määritetyssä asennussijainnissa.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Tuo määritetyn .vhdx-tiedoston uutena jakeluna.
|
||||
Tuo määritetyn VHD-tiedoston uutena jakeluna.
|
||||
Tämä virtuaalikiintolevy on alustettava ext4-tiedostojärjestelmän tyypillä.
|
||||
|
||||
--list, -l [Asetukset]
|
||||
@ -567,7 +571,7 @@ Argumentit Windows-alijärjestelmän Linuxille jakelujen hallintaan:
|
||||
Näytä yksityiskohtaiset tiedot kaikista jakeluista.
|
||||
|
||||
--online, -o
|
||||
Näyttää luettelon asennettavissa olevista jakeluista argumentilla 'wsl.exe --install'.
|
||||
Näyttää luettelon asennettavissa olevista jakeluista argumentilla wsl.exe --install'.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Määrittää jakelun oletukseksi.
|
||||
@ -700,8 +704,13 @@ Järjestelmä on ehkä käynnistettävä uudelleen, jotta muutokset tulevat voim
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Määritetyn tiedoston tiedostotunnisteen on oltava .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Määritetyllä tiedostolla on oltava tiedostotunniste {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Määritetyllä tiedostolla on oltava tiedostotunniste {} tai {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch-kohdetta {} ei löytynyt. Käytettävissä olevat valitsimet: {}</value>
|
||||
@ -787,6 +796,10 @@ Saat lisätietoja osoitteesta https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>WSL-käynnistyksen aikana tapahtui virheitä</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Järjestelmäkäyttäjäistuntoa ei voitu käynnistää kohteelle {}. Lisätietoja on journalctl-kohteessa.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Avaa EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Palataan nat-verkkopalveluun.</value>
|
||||
<value>Näytä asiakirjat</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Toimintoa ei voitu suorittaa loppuun, koska vhdx on parhaillaan käytössä. WSL:n käytön lopettaminen: wsl.exe --shutdown</value>
|
||||
<value>Toimintoa ei voitu suorittaa loppuun, koska VHD on parhaillaan käytössä. WSL:n käytön lopettaminen: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Palataan nat-verkkopalveluun.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Harvaa vhdx:ää tuetaan vain WSL2:ssa.</value>
|
||||
<value>Harvaa virtuaalikiintolevyä tuetaan vain WSL2:ssa.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>WSL:n suorittamista paikallisena järjestelmänä ei tueta.</value>
|
||||
@ -1047,7 +1060,7 @@ Palataan nat-verkkopalveluun.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Tämä näyttää VHDX-tiedostolta. --vhd näppäimellä voit tuoda VHDX:n tar-tiedoston sijaan.</value>
|
||||
<value>Tämä näyttää VHD-tiedostolta. --vhd -näppäimellä voit tuoda VHD:n tar-tiedoston sijaan.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1100,7 +1113,7 @@ Virhekoodi: {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Harva virtuaalikiintolevyn tuki on tällä hetkellä poistettu käytöstä tietojen mahdollisen vioittumisen vuoksi.
|
||||
Jos haluat pakottaa jakelun käyttämään harvaa virtuaalikiintolevyä, suorita seuraavasti:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Voit käyttää myös muita VS Code Remote -asetuksia VS Coden komentovalikoiman
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Valinnaiset ominaisuudet</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Ota sivujen raportointi käyttöön</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Oletusarvon mukainen tosi-asetus antaa Windowsille mahdollisuuden vapauttaa WSL 2 -virtuaalikoneelle varattua käyttämätöntä muistia.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Tietosuojatiedot</value>
|
||||
</data>
|
||||
|
||||
@ -328,6 +328,9 @@ Veuillez activer le composant facultatif « Windows Subsystem for Linux » pou
|
||||
--msal-proxy-path
|
||||
Affichez le chemin d’accès à l’application proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Afficher l’ID de machine virtuelle WSL.
|
||||
|
||||
--version
|
||||
Affichez la version du package WSL.
|
||||
|
||||
@ -335,6 +338,7 @@ Veuillez activer le composant facultatif « Windows Subsystem for Linux » pou
|
||||
N’imprimez pas de saut de ligne.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -379,13 +383,13 @@ Utilisation :
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Tous droits réservés.
|
||||
Pour plus d'informations sur la confidentialité de ce produit, veuillez consulter https://aka.ms/privacy.
|
||||
Pour plus d’informations sur la confidentialité de ce produit, veuillez consulter https://aka.ms/privacy.
|
||||
|
||||
Utilisation : wsl.exe [Argument] [Options...] [CommandLine]
|
||||
Utilisation : wsl.exe [Argument] [Options...] [Ligne de commande]
|
||||
|
||||
Arguments pour l’exécution de fichiers binaires Linux :
|
||||
Arguments pour l’exécution des fichiers binaires Linux :
|
||||
|
||||
Si aucune ligne de commande n'est fournie, wsl.exe lance l’interpréteur de commandes par défaut.
|
||||
Si aucune ligne de commande n’est fournie, wsl.exe lance l’interpréteur de commandes par défaut.
|
||||
|
||||
--exec, -e <CommandLine>
|
||||
Exécute la commande spécifiée sans utiliser l’interpréteur de commandes Linux par défaut.
|
||||
@ -394,12 +398,12 @@ Arguments pour l’exécution de fichiers binaires Linux :
|
||||
Exécute la commande spécifiée avec le type d’interpréteur de commandes fourni.
|
||||
|
||||
--
|
||||
Passe la ligne de commande restante « en l'état ».
|
||||
Passe la ligne de commande restante « en l’état ».
|
||||
|
||||
Options :
|
||||
--cd <Directory>
|
||||
Définit le répertoire spécifié comme répertoire de travail actuel.
|
||||
Si ~ est utilisé, le chemin d'accès personnel de l'utilisateur Linux est utilisé. Si le chemin commence
|
||||
Si ~ est utilisé, le chemin d’accès personnel de l’utilisateur Linux est utilisé. Si le chemin commence
|
||||
par un caractère /, il est interprété en tant que chemin d’accès Linux absolu.
|
||||
Sinon, la valeur doit être un chemin Windows absolu.
|
||||
|
||||
@ -410,7 +414,7 @@ Options :
|
||||
Exécute l’ID de distribution spécifié.
|
||||
|
||||
--user, -u <UserName>
|
||||
Exécute en tant que l'utilisateur spécifié.
|
||||
Exécute en tant que l’utilisateur spécifié.
|
||||
|
||||
--system
|
||||
Lance un interpréteur de commandes pour la distribution du système.
|
||||
@ -418,7 +422,7 @@ Options :
|
||||
Arguments pour la gestion du sous-système Windows pour Linux :
|
||||
|
||||
--help
|
||||
Affiche les informations d'utilisation.
|
||||
Affiche les informations d’utilisation.
|
||||
|
||||
--debug-shell
|
||||
Ouvre un interpréteur de commandes de débogage WSL2 pour le diagnostic.
|
||||
@ -435,7 +439,7 @@ Arguments pour la gestion du sous-système Windows pour Linux :
|
||||
Crée un disque de taille fixe pour stocker la distribution.
|
||||
|
||||
--from-file <Path>
|
||||
Installe une distribution à partir d'un fichier local.
|
||||
Installe une distribution à partir d’un fichier local.
|
||||
|
||||
--legacy
|
||||
Utilise le manifeste de distribution hérité.
|
||||
@ -469,10 +473,10 @@ Arguments pour la gestion du sous-système Windows pour Linux :
|
||||
Déplace la distribution vers un nouvel emplacement.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Définit le vhdx de la distribution pour qu’il soit clairsemé. Cela permet de récupérer automatiquement de l’espace disque.
|
||||
Définit le disque dur virtuel de la distribution pour qu’il soit clairsemé. Cela permet de récupérer automatiquement de l’espace disque.
|
||||
|
||||
--set-default-user <Username>
|
||||
Définit l'utilisateur par défaut de la distribution.
|
||||
Définit l’utilisateur par défaut de la distribution.
|
||||
|
||||
--resize <MemoryString>
|
||||
Redimensionne le disque de la distribution à la taille spécifiée.
|
||||
@ -538,7 +542,7 @@ Arguments pour la gestion des distributions dans Sous-système Windows pour Linu
|
||||
|
||||
Options :
|
||||
--format <Format>
|
||||
Spécifie le format d'exportation. Valeurs prises en charge : tar, tar.gz, tar.xz, vhd.
|
||||
Spécifie le format d’exportation. Valeurs prises en charge : tar, tar.gz, tar.xz, vhd.
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
Importe le fichier tar spécifié en tant que nouvelle distribution.
|
||||
@ -549,11 +553,11 @@ Arguments pour la gestion des distributions dans Sous-système Windows pour Linu
|
||||
Spécifie la version à utiliser pour la nouvelle distribution.
|
||||
|
||||
--vhd
|
||||
Spécifie que le fichier fourni est un fichier .vhdx, et non un fichier tar.
|
||||
Cette opération effectue une copie du fichier .vhdx à l’emplacement d’installation spécifié.
|
||||
Spécifie que le fichier fourni est un fichier .vhd ou .vhdx, et non un fichier tar.
|
||||
Cette opération effectue une copie du fichier VHD à l’emplacement d’installation spécifié.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importe le fichier .vhdx spécifié en tant que nouvelle distribution.
|
||||
Importe le fichier VHD spécifié en tant que nouvelle distribution.
|
||||
Ce disque dur virtuel doit être formaté avec le type de système de fichiers ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -586,7 +590,7 @@ Arguments pour la gestion des distributions dans Sous-système Windows pour Linu
|
||||
Met fin à la distribution spécifiée.
|
||||
|
||||
--unregister <Distro>
|
||||
Annule l'inscription de la distribution et supprime le système de fichiers racine.</value>
|
||||
Annule l’inscription de la distribution et supprime le système de fichiers racine.</value>
|
||||
<comment>{Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system
|
||||
"}{Locked="--help
|
||||
"}{Locked="--debug-shell
|
||||
@ -707,8 +711,13 @@ Le système devra peut-être être redémarré pour que les modifications prenne
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Le fichier spécifié doit avoir l’extension de fichier .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Le fichier spécifié doit avoir l’extension de fichier {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Le fichier spécifié doit avoir l’extension de fichier {} ou {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>Le VmSwitch « {} » est introuvable. Commutateurs disponibles : {}</value>
|
||||
@ -794,6 +803,10 @@ Pour plus d’informations, visitez https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Des erreurs se sont produites au démarrage de WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Échec du démarrage de la session utilisateur système pour « {} ». Pour plus d’informations, consultez journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Ouvrir EventViewer</value>
|
||||
</data>
|
||||
@ -997,7 +1010,7 @@ Retour à la mise en réseau NAT.</value>
|
||||
<value>Voir les documents</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Impossible d’effectuer l’opération, car le vhdx est en cours d’utilisation. Pour forcer WSL à arrêter l’utilisation : wsl.exe --shutdown</value>
|
||||
<value>Impossible d’effectuer l’opération, car le disque dur virtuel est en cours d’utilisation. Pour forcer WSL à arrêter l’utilisation : wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1005,7 +1018,7 @@ Retour à la mise en réseau NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Le vhdx partiellement alloué est pris en charge uniquement sur WSL2.</value>
|
||||
<value>Le VHD partiellement alloué est pris en charge uniquement sur WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>L’exécution de WSL en tant que système local n’est pas prise en charge.</value>
|
||||
@ -1054,7 +1067,7 @@ Retour à la mise en réseau NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Cela ressemble à un fichier VHDX. Utilisez --vhd pour importer un VHDX au lieu d’un tar.</value>
|
||||
<value>Cela ressemble à un fichier VHD. Utilisez --vhd pour importer un VHD au lieu d’un tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1099,7 +1112,7 @@ Code d'erreur : {}</value>
|
||||
<value>La requête du mode de mise en réseau n’a pas abouti</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>Des modules de noyau personnalisés ont été fournis sans spécification de noyau personnalisé. Pour plus d’informations, consultez https://aka.ms/wslcustomkernel.</value>
|
||||
<value>Des modules de noyau personnalisés ont été fournis sans spécifier de noyau personnalisé. Pour plus d’informations, consultez https://aka.ms/wslcustomkernel.</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>En raison d’un problème de compatibilité actuel avec le client Accès global sécurisé, le tunneling DNS est désactivé.</value>
|
||||
@ -1107,7 +1120,7 @@ Code d'erreur : {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>La prise en charge des VHD espacés est actuellement désactivée en raison d’un risque potentiel de corruption des données.
|
||||
Pour forcer une distribution à utiliser un VHD espacé, veuillez exécuter :
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1694,12 +1707,6 @@ Vous pouvez également accéder à davantage d'options VS Code Remote via la pal
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Fonctionnalités facultatives</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Activer la création de rapports de page</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Le paramètre true par défaut permet à Windows de récupérer la mémoire inutilisée allouée à la machine virtuelle WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Déclaration</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ A WSL1 használatához engedélyezze a Linuxos Windows-alrendszer választható
|
||||
--msal-proxy-path
|
||||
Az MSAL proxyalkalmazás elérési útjának megjelenítése.
|
||||
|
||||
--vm-id
|
||||
A WSL VM-azonosítójának megjelenítése.
|
||||
|
||||
--version
|
||||
A WSL-csomag verziójának megjelenítése.
|
||||
|
||||
@ -328,6 +331,7 @@ A WSL1 használatához engedélyezze a Linuxos Windows-alrendszer választható
|
||||
Ne nyomtasson új sort.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -390,19 +394,19 @@ Linuxos bináris fájlok futtatására szolgáló argumentumok:
|
||||
A parancssor fennmaradó részének átadása változtatás nélkül.
|
||||
|
||||
Kapcsolók:
|
||||
--cd <Directory>
|
||||
--cd <Könyvtár>
|
||||
A megadott könyvtár aktuális munkakönyvtárként való beállítása.
|
||||
Tilde (~) karakter használata esetén a rendszer a Linux-felhasználó kezdőkönyvtárának elérési útját használja. Ha az elérési út
|
||||
perjel (/) karakterrel kezdődik, a rendszer az elérési utat linuxos abszolút elérési útként értelmezi.
|
||||
Ellenkező esetben az értéknek windowsos abszolút elérési útnak kell lennie.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
--distribution, -d <DisztribúcióNév>
|
||||
A megadott disztribúció futtatása.
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
--distribution-id <DisztribúcióGuid>
|
||||
A megadott disztribúcióazonosító futtatása.
|
||||
|
||||
--user, -u <USerName>
|
||||
--user, -u <Felhasználónév>
|
||||
Futtatás a megadott felhasználóként.
|
||||
|
||||
--system
|
||||
@ -427,132 +431,132 @@ A Linuxos Windows-alrendszer kezelésére szolgáló argumentumok:
|
||||
--fixed-vhd
|
||||
Rögzített méretű lemez létrehozása a disztribúció tárolásához.
|
||||
|
||||
--from-file <Path>
|
||||
--from-file <ElérésiÚt>
|
||||
Disztribúció telepítése helyi fájlból.
|
||||
|
||||
--legacy
|
||||
Az örökölt disztribúciós jegyzékfájl használata.
|
||||
|
||||
--location <Location>
|
||||
--location <Hely>
|
||||
A disztribúció telepítési útvonalának beállítása.
|
||||
|
||||
--name <Name>
|
||||
Állítsa be a disztribúció nevét.
|
||||
--name <Név>
|
||||
A disztribúció nevének beállítása.
|
||||
|
||||
--no-distribution
|
||||
Csak a szükséges választható összetevők telepítése, nem telepít disztribúciót.
|
||||
Csak a szükséges választható összetevők telepítése, a disztribúció telepítésének mellőzése.
|
||||
|
||||
--no-launch, -n
|
||||
Telepítés után ne indítsa el a disztribúciót.
|
||||
A disztribúció telepítés utáni elindításának mellőzése.
|
||||
|
||||
--version <Version>
|
||||
--version <Verzió>
|
||||
Az új disztribúcióhoz használandó verzió megadása.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Megadja a disztribúció tárolására szolgáló lemez méretét.
|
||||
--vhd-size <MemoriaSztring>
|
||||
A disztribúció tárolására szolgáló lemez méretének megadása.
|
||||
|
||||
--web-download
|
||||
Töltse le a disztribúciót az internetről a Microsoft Store helyett.
|
||||
A disztribúció letöltése az internetről a Microsoft Store helyett.
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
Disztribúcióspecifikus beállítások módosítása.
|
||||
--manage <Disztribúció> <Kapcsolók...>
|
||||
A disztribúcióspecifikus beállítások módosítása.
|
||||
|
||||
Beállítások:
|
||||
--move <Location>
|
||||
Helyezze át a disztribúciót egy új helyre.
|
||||
Kapcsolók:
|
||||
--move <Hely>
|
||||
A disztribúció áthelyezése egy új helyre.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Állítsa a disztribúció vhdx-fájlját ritkítás értékre, így a lemezterület automatikusan visszanyerhető.
|
||||
A disztribúció VHD-fájljának sparse értékre állítása, hogy a lemezterület automatikusan visszanyerhető legyen.
|
||||
|
||||
--set-default-user <Username>
|
||||
Állítsa be a disztribúció alapértelmezett felhasználóját.
|
||||
--set-default-user <Felhasználónév>
|
||||
A disztribúció alapértelmezett felhasználójának beállítása.
|
||||
|
||||
--resize <MemoryString>
|
||||
--resize <MemoriaSztring>
|
||||
A disztribúció lemezének átméretezése a megadott méretre.
|
||||
|
||||
--mount <Disk>
|
||||
Fizikai vagy virtuális lemez csatlakoztatása és felcsatolása az összes WSL 2-disztribúcióban.
|
||||
--mount <Lemez>
|
||||
Fizikai vagy virtuális lemez hozzárendelése és csatlakoztatása az összes WSL 2-disztribúcióban.
|
||||
|
||||
Beállítások:
|
||||
Kapcsolók:
|
||||
--vhd
|
||||
Annak megadása, hogy a <Lemez> virtuális merevlemezre hivatkozik.
|
||||
Annak megadása, hogy a <Lemez> virtuális merevlemezre vonatkozik.
|
||||
|
||||
--bare
|
||||
Csatlakoztatja a lemezt a WSL2-höz, de nem csatolja fel.
|
||||
A lemezt WSL2-höz való hozzárendelése csatlakoztatás nélkül.
|
||||
|
||||
--name <Name>
|
||||
Felcsatolja a lemezt a csatlakoztatási pont egyéni nevének használatával.
|
||||
--name <Név>
|
||||
A lemez csatlakoztatása egyéni csatlakoztatásipont-név használatával.
|
||||
|
||||
--type <Type>
|
||||
Lemez felcsatolásához használandó fájlrendszer, ha nincs megadva az alapértelmezett érték az ext4.
|
||||
--type <Típus>
|
||||
Lemez csatlakoztatásához használandó fájlrendszer. Ha nincs megadva, az alapértelmezett érték az ext4.
|
||||
|
||||
--options <Options>
|
||||
További felcsatolási lehetőségek.
|
||||
--options <Kapcsolók>
|
||||
További csatlakoztatási lehetőségek.
|
||||
|
||||
--partition <Index>
|
||||
A felcsatolni kívánt partíció indexe, ha nincs megadva alapértelmezett érték a teljes lemezre.
|
||||
A csatlakoztatni kívánt partíció indexe. Ha nincs megadva, az alapértelmezett érték a teljes lemez.
|
||||
|
||||
--set-default-version <Version>
|
||||
--set-default-version <Verzió>
|
||||
Az új disztribúciók alapértelmezett telepítési verziójának módosítása.
|
||||
|
||||
--shutdown
|
||||
Azonnal leállítja az összes futó disztribúciót és a WSL 2
|
||||
egyszerűsített segédprogram virtuális gépet.
|
||||
Az összes futó disztribúció és a WSL 2
|
||||
egyszerűsített segédprogram virtuális gépének azonnali leállítása.
|
||||
|
||||
Beállítások:
|
||||
Kapcsolók:
|
||||
--force
|
||||
Leállítja a WSL 2 virtuális gépet, még akkor is, ha egy művelet folyamatban van. Adatvesztést okozhat.
|
||||
A WSL 2 virtuális gép leállítása még akkor is, ha egy művelet folyamatban van. Adatvesztést okozhat.
|
||||
|
||||
--status
|
||||
A Linuxos Windows-alrendszer állapotának megjelenítése.
|
||||
|
||||
--unmount [Disk]
|
||||
Lemez lecsatolása és leválasztása a WSL2 összes disztribúciójáról.
|
||||
Lecsatolja és leválasztja az összes lemezt, ha argumentum nélkül hívják meg.
|
||||
--unmount [Lemez]
|
||||
Lemez leválasztása és és a hozzárendelés megszüntetése a WSL2 összes disztribúciójára vonatkozóan.
|
||||
Az összes lemez leválasztása és a hozzárendelésük megszüntetése, ha a meghívás argumentum nélkül történik.
|
||||
|
||||
--uninstall
|
||||
Eltávolítja a Linuxos Windows-alrendszer csomagot erről a gépről.
|
||||
A Linuxos Windows-alrendszer csomag eltávolítása erről a gépről.
|
||||
|
||||
--update
|
||||
A Linuxos Windows-alrendszer csomagjának frissítése.
|
||||
0A Linuxos Windows-alrendszer csomagjának frissítése.
|
||||
|
||||
Beállítások:
|
||||
Kapcsolók:
|
||||
--pre-release
|
||||
Ha elérhető, töltsön le egy előzetes verziót.
|
||||
Előzetes verzió letöltése, ha elérhető.
|
||||
|
||||
--version, -v
|
||||
Verzióinformációk megjelenítése.
|
||||
|
||||
A disztribúcióknak a Linuxos Windows-alrendszerben való kezelésére szolgáló argumentumok:
|
||||
A disztribúciók Linuxos Windows-alrendszerben való kezelésére szolgáló argumentumok:
|
||||
|
||||
--export <Distro> <FileName> [Options]
|
||||
A disztribúciót exportálja tar kiterjesztésű fájlba.
|
||||
A fájlnév a következő lehet: stdout.
|
||||
--export <Disztribúció> <Fájlnév> [Kapcsolók]
|
||||
A disztribúció exportálása .tar fájlba.
|
||||
A fájlnév stdout esetén kötőjel (-) is lehet.
|
||||
|
||||
Beállítások:
|
||||
--format <Format>
|
||||
Kapcsolók:
|
||||
--format <Formátum>
|
||||
Az exportálási formátum megadása. Támogatott értékek: tar, tar.gz, tar.xz, vhd.
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
A megadott, tar kiterjesztésű fájl importálása új disztribúcióként.
|
||||
A fájlnév a következő lehet: stdin.
|
||||
--import <Disztribúció> <TelepítésiHely> <Fájlnév> [Kapcsolók]
|
||||
A megadott .tar fájl importálása új disztribúcióként.
|
||||
A fájlnév stdin esetén kötőjel (-) is lehet.
|
||||
|
||||
Beállítások:
|
||||
--version <Version>
|
||||
Kapcsolók:
|
||||
--version <Verzió>
|
||||
Az új disztribúcióhoz használandó verzió megadása.
|
||||
|
||||
--vhd
|
||||
Azt adja meg, hogy a megadott fájl .vhdx fájl, nem tar fájl.
|
||||
Ez a művelet másolatot készít a .vhdx fájlról a megadott telepítési helyen.
|
||||
Azt adja meg, hogy a megadott fájl .vhd vagy .vhdx fájl, nem .tar fájl.
|
||||
Ez a művelet másolatot készít a VHD-fájlról a megadott telepítési helyen.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
A megadott, vhdx kiterjesztésű fájl importálása új disztribúcióként.
|
||||
--import-in-place <Disztribúció> <Fájlnév>
|
||||
A megadott VHD-fájl importálása új disztribúcióként.
|
||||
Ezt a virtuális merevlemezt az ext4 fájlrendszertípussal kell formázni.
|
||||
|
||||
--list, -l [Options]
|
||||
--list, -l [Kapcsolók]
|
||||
A disztribúciók listázása.
|
||||
|
||||
Beállítások:
|
||||
Kapcsolók:
|
||||
--all
|
||||
Az összes disztribúciót listázza, beleértve a
|
||||
jelenleg telepítés vagy eltávolítás alatt állókat is.
|
||||
@ -567,18 +571,18 @@ A disztribúcióknak a Linuxos Windows-alrendszerben való kezelésére szolgál
|
||||
Az összes disztribúció részletes adatainak megjelenítése.
|
||||
|
||||
--online, -o
|
||||
Megjeleníti a 'wsl.exe --install' paranccsal telepíthető, elérhető disztribúciók listáját.
|
||||
A 'wsl.exe --install' paranccsal telepíthető elérhető disztribúciók listájának megjelenítése.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Az adott disztribúció beállítása alapértelmezettként.
|
||||
--set-default, -s <Disztribúció>
|
||||
A disztribúció beállítása alapértelmezettként.
|
||||
|
||||
--set-version <Distro> <Version>
|
||||
--set-version <Disztribúció> <Verzió>
|
||||
A megadott disztribúció verziójának módosítása.
|
||||
|
||||
--terminate, -t <Distro>
|
||||
Leállítja a megadott disztribúciót.
|
||||
--terminate, -t <Disztribúció>
|
||||
A megadott disztribúció leállítása.
|
||||
|
||||
--unregister <Distro>
|
||||
--unregister <Disztribúció>
|
||||
A disztribúció regisztrációjának megszüntetése és a gyökérszintű fájlrendszer törlése.</value>
|
||||
<comment>{Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system
|
||||
"}{Locked="--help
|
||||
@ -700,8 +704,13 @@ Lehet, hogy újra kell indítani a rendszert, hogy a módosítások érvénybe l
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>A megadott fájlnak .vhdx kiterjesztésűnek kell lennie.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>A megadott fájlnak {} kiterjesztésűnek kell lennie.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>A megadott fájlnak {} vagy {} kiterjesztésűnek kell lennie.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>A(z) {} VmSwitch nem található. Elérhető kapcsolók: {}</value>
|
||||
@ -787,6 +796,10 @@ További információért látogasson el a https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Hiba történt a WSL indításakor</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Nem sikerült elindítani a(z) „{}” rendszer felhasználói munkamenetét. További részletekért tekintse meg a journalctl dokumentumot.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Eseménynapló megnyitása</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Visszaállás NAT-hálózatkezelésre.</value>
|
||||
<value>Dokumentumok megtekintése</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>A művelet nem hajtható végre, mert a vhdx jelenleg használatban van. A WSL használatának kényszerítése: wsl.exe --shutdown</value>
|
||||
<value>A művelet nem hajtható végre, mert a virtuális merevlemez jelenleg használatban van. A WSL használatának kényszerítése: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Visszaállás NAT-hálózatkezelésre.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>A ritka vhdx csak WSL2 esetén támogatott.</value>
|
||||
<value>A ritka VHD csak WSL2 esetén támogatott.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>A WSL helyi rendszerként való futtatása nem támogatott.</value>
|
||||
@ -1047,7 +1060,7 @@ Visszaállás NAT-hálózatkezelésre.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Ez egy VHDX-fájlnak tűnik. VHDX importálásához használja a --vhd formátumot tar helyett.</value>
|
||||
<value>Ez egy VHD-fájlnak tűnik. VHD importálásához használja a --vhd formátumot tar helyett.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1098,9 +1111,9 @@ Hibakód: {}</value>
|
||||
<value>A Globális biztonságos hozzáférés ügyféllel kapcsolatos jelenlegi kompatibilitási probléma miatt a DNS-alagútképzés le van tiltva.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>A ritka VHD-támogatás jelenleg le van tiltva, mivel lehetséges adatsérülés léphet fel.
|
||||
A ritka virtuális merevlemez használatának kényszerítéséhez futtassa a következő parancsot:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>A ritka VHD-támogatás jelenleg le van tiltva az adatok esetleges sérülése miatt.
|
||||
Ha egy disztribúciót ritka VHD használatára szeretne kényszeríteni, futtassa a következőt:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ A VS Code-ban található parancskatalógusban további VS Code Remote beállít
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Választható funkciók</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Lapjelentés engedélyezése</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Az alapértelmezett igaz beállítás lehetővé teszi, hogy a Windows visszanyerje a WSL 2 virtuális gép számára lefoglalt nem használt memóriát.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Adatvédelmi nyilatkozat</value>
|
||||
</data>
|
||||
|
||||
@ -327,13 +327,17 @@ Per usare WSL1, è necessario abilitare il componente facoltativo "Sottosistema
|
||||
--msal-proxy-path
|
||||
Visualizza il percorso dell'applicazione proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Visualizza l'ID della macchina virtuale WSL.
|
||||
|
||||
--version
|
||||
Visualizza la versione del pacchetto WSL.
|
||||
|
||||
-n
|
||||
Non stampare una nuova riga.</value>
|
||||
Non stampa una nuova riga.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -398,7 +402,7 @@ Argomenti per l'esecuzione di file binari Linux:
|
||||
Opzioni:
|
||||
--cd <Directory>
|
||||
Imposta la directory specificata come directory di lavoro corrente.
|
||||
Se si usa ~, verrà usato il percorso home dell'utente Linux. Se il percorso inizia
|
||||
Se viene usato ~, verrà usato il percorso home dell'utente Linux. Se il percorso inizia
|
||||
con un carattere /, verrà interpretato come un percorso Linux assoluto.
|
||||
In caso contrario, il valore deve essere un percorso assoluto di Windows.
|
||||
|
||||
@ -468,7 +472,7 @@ Argomenti per la gestione del sottosistema Windows per Linux:
|
||||
Sposta la distribuzione in una nuova posizione.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Imposta il vhdx della distribuzione su sparse, consentendo il recupero automatico dello spazio su disco.
|
||||
Imposta il VHD della distribuzione su sparse, consentendo il recupero automatico dello spazio su disco.
|
||||
|
||||
--set-default-user <Username>
|
||||
Imposta l'utente predefinito della distribuzione.
|
||||
@ -548,11 +552,11 @@ Argomenti per la gestione delle distribuzioni del sottosistema Windows per Linux
|
||||
Specifica la versione da usare per la nuova distribuzione.
|
||||
|
||||
--vhd
|
||||
Specifica che il file fornito è un file con estensione vhdx, non un file TAR.
|
||||
Questa operazione crea una copia del file con estensione vhdx nel percorso di installazione specificato.
|
||||
Specifica che il file fornito è un file con estensione vhd o vhdx, non un file TAR.
|
||||
Questa operazione crea una copia del file VHD nel percorso di installazione specificato.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importa il file con estensione vhdx specificato come nuova distribuzione.
|
||||
Importa il file VHD specificato come nuova distribuzione.
|
||||
Questo disco rigido virtuale deve essere formattato con il tipo di file system ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -573,7 +577,7 @@ Argomenti per la gestione delle distribuzioni del sottosistema Windows per Linux
|
||||
Mostra informazioni dettagliate su tutte le distribuzioni.
|
||||
|
||||
--online, -o
|
||||
Visualizza un elenco di distribuzioni disponibili per l'installazione con 'wsl--install'.
|
||||
Visualizza un elenco di distribuzioni disponibili per l'installazione con 'wsl.exe --install'.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Imposta la distribuzione come predefinita.
|
||||
@ -706,8 +710,13 @@ Potrebbe essere necessario riavviare il sistema per rendere effettive le modific
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Il file specificato deve avere l'estensione vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Il file specificato deve avere l'estensione {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Il file specificato deve avere l'estensione {} o {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch '{}' non è stato trovato. Switch disponibili: {}</value>
|
||||
@ -793,6 +802,10 @@ Per informazioni, visitare https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Si sono verificati errori durante l'avvio di WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Non è stato possibile avviare la sessione utente di sistema per '{}'. Per ulteriori dettagli, vedere journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Apri EventViewer</value>
|
||||
</data>
|
||||
@ -996,7 +1009,7 @@ Fallback alla rete NAT.</value>
|
||||
<value>Visualizza documenti</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Non è stato possibile completare l'operazione perché vhdx è attualmente in uso. Per forzare l'arresto di WSL, usare: wsl.exe --shutdown</value>
|
||||
<value>Impossibile completare l'operazione perché il disco rigido virtuale è attualmente in uso. Per forzare l'arresto di WSL, usare: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ Fallback alla rete NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>VHDX di tipo sparse supportato solo in WSL2.</value>
|
||||
<value>Disco rigido virtuale di tipo sparse supportato solo in WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>L'esecuzione di WSL come sistema locale non è supportata.</value>
|
||||
@ -1053,7 +1066,7 @@ Fallback alla rete NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Sembra un file VHDX. Usa --vhd per importare un VHDX anziché un tar.</value>
|
||||
<value>Questo sembra un file disco rigido virtuale. Usa --vhd per importare un disco rigido virtuale anziché un tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1104,9 +1117,9 @@ Codice errore: {}</value>
|
||||
<value>A causa di un problema di compatibilità con Accesso globale sicuro, il tunneling DNS è attualmente disabilitato.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Il supporto VHD di tipo Sparse è attualmente disabilitato a causa di un potenziale danneggiamento dei dati.
|
||||
Per forzare l'uso di un disco rigido virtuale di tipo Sparse in una distribuzione, esegui:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>Il supporto disco rigido virtuale di tipo sparse attualmente è disabilitato a causa di un potenziale danneggiamento dei dati.
|
||||
Per forzare una distribuzione per usare un disco rigido virtuale sparse, esegui:
|
||||
wsl.exe --manage <NomeDistribuzione> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1693,12 +1706,6 @@ Puoi anche accedere a più opzioni remote di VS Code tramite il riquadro comandi
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Funzionalità facoltative</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Abilita la creazione di report di pagine</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>L'impostazione true predefinita consente a Windows di recuperare la memoria inutilizzata allocata alla macchina virtuale WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Informativa sulla privacy</value>
|
||||
</data>
|
||||
|
||||
@ -320,13 +320,16 @@ WSL1 を使用するには、"Linux 用 Windows サブシステム" オプショ
|
||||
<value>この操作は WSL2 でのみサポートされています。</value>
|
||||
</data>
|
||||
<data name="MessageWslInfoUsage" xml:space="preserve">
|
||||
<value>使用法:
|
||||
<value>使用:
|
||||
--networking-mode
|
||||
現在のネットワーク モードを表示します。
|
||||
|
||||
--msal-proxy-path
|
||||
MSAL プロキシ アプリケーションへのパスを表示します。
|
||||
|
||||
--vm-id
|
||||
WSL VM ID を表示します。
|
||||
|
||||
--version
|
||||
WSL パッケージのバージョンを表示します。
|
||||
|
||||
@ -334,6 +337,7 @@ WSL1 を使用するには、"Linux 用 Windows サブシステム" オプショ
|
||||
改行を出力しません。</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -380,13 +384,13 @@ WSL1 を使用するには、"Linux 用 Windows サブシステム" オプショ
|
||||
<value>Copyright (c) Microsoft Corporation.All rights reserved.
|
||||
この製品のプライバシーに関する情報については、https://aka.ms/privacy にアクセスしてください。
|
||||
|
||||
使用法: wsl.exe [引数] [オプション...] [コマンド ライン]
|
||||
使用法: wsl.exe [Argument] [Options...] [CommandLine]
|
||||
|
||||
Linux バイナリを実行するための引数:
|
||||
|
||||
コマンド ラインが指定されていない場合、wsl.exe は既定のシェルを起動します。
|
||||
|
||||
--exec, -e <コマンド ライン>
|
||||
--exec, -e <CommandLine>
|
||||
既定の Linux シェルを使用せずに、指定されたコマンドを実行します。
|
||||
|
||||
--shell-type <standard|login|none>
|
||||
@ -396,19 +400,19 @@ Linux バイナリを実行するための引数:
|
||||
残りのコマンド ラインをそのまま渡します。
|
||||
|
||||
オプション:
|
||||
--cd <ディレクトリ>
|
||||
--cd <Directory>
|
||||
指定されたディレクトリを現在の作業ディレクトリとして設定します。
|
||||
~ が使用されている場合、Linux ユーザーのホーム パスが使用されます。パスが
|
||||
/ 文字で始まる場合、絶対 Linux パスとして解釈されます。
|
||||
それ以外の場合、値は絶対 Windows パスである必要があります。
|
||||
|
||||
--distribution, -d <ディストリビューション名>
|
||||
--distribution, -d <DistroName>
|
||||
指定されたディストリビューションを実行します。
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
指定されたディストリビューション ID を実行します。
|
||||
|
||||
--user, -u <ユーザー名>
|
||||
--user, -u <UserName>
|
||||
指定されたユーザーとして実行します。
|
||||
|
||||
--system
|
||||
@ -422,7 +426,7 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
--debug-shell
|
||||
診断のために WSL2 デバッグ シェルを開きます。
|
||||
|
||||
--install [ディストリビューション] [オプション...]
|
||||
--install [Distro] [Options...]
|
||||
Linux 用 Windows サブシステム ディストリビューションをインストールします。
|
||||
有効なディストリビューションの一覧を表示するには、'wsl.exe --list --online' を使用します。
|
||||
|
||||
@ -433,16 +437,16 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
--fixed-vhd
|
||||
ディストリビューションを保存するための固定サイズのディスクを作成します。
|
||||
|
||||
--from-file <パス>
|
||||
--from-file <Path>
|
||||
ローカル ファイルからディストリビューションをインストールします。
|
||||
|
||||
--legacy
|
||||
レガシ ディストリビューション マニフェストを使用します。
|
||||
|
||||
--location <場所>
|
||||
--location <Location>
|
||||
ディストリビューションのインストール パスを設定します。
|
||||
|
||||
--name <名前>
|
||||
--name <Name>
|
||||
ディストリビューションの名前を設定します。
|
||||
|
||||
--no-distribution
|
||||
@ -451,32 +455,32 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
--no-launch, -n
|
||||
インストール後にディストリビューションを起動しません。
|
||||
|
||||
--version <バージョン>
|
||||
--version <Version>
|
||||
新しいディストリビューションに使用するバージョンを指定します。
|
||||
|
||||
--vhd-size <メモリ文字列>
|
||||
--vhd-size <MemoryString>
|
||||
ディストリビューションを保存するディスクのサイズを指定します。
|
||||
|
||||
--web-download
|
||||
Microsoft Store ではなく、インターネットからディストリビューションをダウンロードします。
|
||||
|
||||
--manage <ディストリビューション> <オプション...>
|
||||
--manage <Distro> <Options...>
|
||||
ディストリビューション固有のオプションを変更します。
|
||||
|
||||
オプション:
|
||||
--move <場所>
|
||||
--move <Location>
|
||||
ディストリビューションを新しい場所に移動します。
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
ディストリビューションの vhdx をスパースに設定し、ディスク領域を自動的に解放できるようにします。
|
||||
ディストリビューションの VHD をスパースに設定し、ディスク領域を自動的に解放できるようにします。
|
||||
|
||||
--set-default-user <ユーザー名>
|
||||
--set-default-user <Username>
|
||||
ディストリビューションの既定のユーザーを設定します。
|
||||
|
||||
--resize <メモリ文字列>
|
||||
--resize <MemoryString>
|
||||
ディストリビューションのディスクのサイズを指定したサイズに変更します。
|
||||
|
||||
--mount <ディスク>
|
||||
--mount <Disk>
|
||||
物理ディスクまたは仮想ディスクをすべての WSL 2 ディストリビューションにアタッチしてマウントします。
|
||||
|
||||
オプション:
|
||||
@ -486,19 +490,19 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
--bare
|
||||
ディスクを WSL2 にアタッチしますが、マウントはしません。
|
||||
|
||||
--name <名前>
|
||||
--name <Name>
|
||||
マウントポイントにカスタム名を使用してディスクをマウントします。
|
||||
|
||||
--type <種類>
|
||||
--type <Type>
|
||||
ディスクをマウントするときに使用するファイルシステム。指定しない場合は既定で ext4 になります。
|
||||
|
||||
--options <オプション>
|
||||
--options <Options>
|
||||
追加のマウント オプション。
|
||||
|
||||
--partition <インデックス>
|
||||
--partition <Index>
|
||||
マウントするパーティションのインデックス。指定しない場合は既定でディスク全体になります。
|
||||
|
||||
--set-default-version <バージョン>
|
||||
--set-default-version <Version>
|
||||
新しいディストリビューションの既定のインストール バージョンを変更します。
|
||||
|
||||
--shutdown
|
||||
@ -512,7 +516,7 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
--status
|
||||
Linux 用 Windows サブシステムの状態を表示します。
|
||||
|
||||
--unmount [ディスク]
|
||||
--unmount [Disk]
|
||||
すべての WSL2 ディストリビューションからディスクのマウントを解除してデタッチします。
|
||||
引数を指定せずに呼び出した場合、すべてのディスクのマウントを解除してデタッチします。
|
||||
|
||||
@ -531,31 +535,31 @@ Linux 用 Windows サブシステムを管理するための引数:
|
||||
|
||||
Linux 用 Windows サブシステムでディストリビューションを管理するための引数:
|
||||
|
||||
--export <ディストリビューション> <ファイル名> [オプション]
|
||||
--export <Distro> <FileName> [Options]
|
||||
ディストリビューションを tar ファイルにエクスポートします。
|
||||
stdout の場合は、ファイル名に - を使用できます。
|
||||
|
||||
オプション:
|
||||
--format <形式>
|
||||
--format <Format>
|
||||
エクスポート形式を指定します。サポートされている値は、tar、tar.gz、tar.xz、vhd です。
|
||||
|
||||
--import <ディストリビューション> <インストール場所> <ファイル名> [オプション]
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
指定された tar ファイルを新しいディストリビューションとしてインポートします。
|
||||
stdin の場合は、ファイル名に - を使用できます。
|
||||
|
||||
オプション:
|
||||
--version <バージョン>
|
||||
--version <Version>
|
||||
新しいディストリビューションに使用するバージョンを指定します。
|
||||
|
||||
--vhd
|
||||
提供されたファイルが tar ファイルではなく .vhdx ファイルであることを指定します。
|
||||
この操作により、指定されたインストール場所に .vhdx ファイルのコピーが作成されます。
|
||||
指定されたファイルが tar ファイルではなく、.vhd または .vhdx ファイルであることを指定します。
|
||||
この操作により、指定したインストール場所に VHD ファイルのコピーが作成されます。
|
||||
|
||||
--import-in-place <ディストリビューション> <ファイル名>
|
||||
指定された .vhdx ファイルを新しいディストリビューションとしてインポートします。
|
||||
--import-in-place <Distro> <FileName>
|
||||
指定した VHD ファイルを新しいディストリビューションとしてインポートします。
|
||||
この仮想ハード ディスクは、ext4 ファイルシステムの種類でフォーマットする必要があります。
|
||||
|
||||
--list, -l [オプション]
|
||||
--list, -l [Options]
|
||||
ディストリビューションを一覧表示します。
|
||||
|
||||
オプション:
|
||||
@ -575,16 +579,16 @@ Linux 用 Windows サブシステムでディストリビューションを管
|
||||
--online, -o
|
||||
'wsl.exe --install' を使用してインストールできるディストリビューションの一覧を表示します。
|
||||
|
||||
--set-default, -s <ディストリビューション>
|
||||
--set-default, -s <Distro>
|
||||
このディストリビューションを既定として設定します。
|
||||
|
||||
--set-version <ディストリビューション> <バージョン>
|
||||
--set-version <Distro> <Version>
|
||||
指定されたディストリビューションのバージョンを変更します。
|
||||
|
||||
--terminate, -t <ディストリビューション>
|
||||
--terminate, -t <Distro>
|
||||
指定されたディストリビューションを終了します。
|
||||
|
||||
--unregister <ディストリビューション>
|
||||
--unregister <Distro>
|
||||
このディストリビューションの登録を解除し、ルート ファイルシステムを削除します。</value>
|
||||
<comment>{Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system
|
||||
"}{Locked="--help
|
||||
@ -628,7 +632,7 @@ Windows バージョン: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>{} にカスタム カーネル モジュール VHD が見つかりませんでした: '{}'。</value>
|
||||
<value>{} にあるカスタム カーネル モジュール VHD が見つかりませんでした: '{}'。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -706,8 +710,13 @@ Windows バージョン: {}</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>指定されたファイルには .vhdx ファイル拡張子が必要です。</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>指定されたファイルには {} ファイル拡張子が必要です。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>指定されたファイルには、{} または {} のファイル拡張子が必要です。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch '{}' が見つかりませんでした。使用可能なスイッチ: {}</value>
|
||||
@ -793,6 +802,10 @@ Windows Update または {} 経由で必要な更新プログラムをインス
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>WSL の起動中にエラーが発生しました</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>'{}' のシステム ユーザー セッションを開始できませんでした。詳細については journalctl を参照してください。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>EventViewer を開く</value>
|
||||
</data>
|
||||
@ -996,7 +1009,7 @@ NAT ネットワークにフォールバックしています。</value>
|
||||
<value>ドキュメントを表示</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>vhdx が現在使用中のため、操作を完了できませんでした。WSL の使用を強制的に停止するには: wsl.exe --shutdown</value>
|
||||
<value>VHD が現在使用中のため、操作を完了できませんでした。WSL の使用を強制的に停止するには: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ NAT ネットワークにフォールバックしています。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>スパース vhdx は WSL2 でのみサポートされています。</value>
|
||||
<value>スパース VHD は WSL2 のみでサポートされています。</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>ローカル システムとして WSL を実行することはサポートされていません。</value>
|
||||
@ -1053,7 +1066,7 @@ NAT ネットワークにフォールバックしています。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>これは VHDX ファイルのようです。--vhd を使用して、tar ではなく VHDX をインポートします。</value>
|
||||
<value>これは VHD ファイルのようです。--vhd を使用して、tar ではなく VHD をインポートします。</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1106,7 +1119,7 @@ WSL を修復するには任意のキーを押すか、取り消すには CTRL-C
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>スパース VHD のサポートは、データの破損の可能性があるため、現在無効になっています。
|
||||
ディストリビューションでスパース VHD を強制的に使用するには、次を実行してください。
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1693,12 +1706,6 @@ VS Code 自体のコマンド パレットから、より多くの VS Code リ
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>オプション機能</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>ページ レポートを有効にする</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>既定の true 設定では、WSL 2 仮想マシンに割り当てられた未使用のメモリを解放できます。</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>プライバシーに関する声明</value>
|
||||
</data>
|
||||
|
||||
@ -327,13 +327,17 @@ WSL1을 사용하려면 "Windows Subsystem for Linux” 선택적 구성 요소
|
||||
--msal-proxy-path
|
||||
MSAL 프록시 애플리케이션의 경로를 표시합니다.
|
||||
|
||||
--vm-id
|
||||
WSL VM ID를 표시합니다.
|
||||
|
||||
--version
|
||||
WSL 패키지의 버전을 표시합니다.
|
||||
|
||||
-n
|
||||
줄 바꿈을 인쇄하지 마세요.</value>
|
||||
줄 바꿈하지 마세요.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -398,8 +402,8 @@ Linux 이진 파일을 실행하기 위한 인수:
|
||||
옵션:
|
||||
--cd <Directory>
|
||||
지정된 디렉터리를 현재 작업 디렉터리로 설정합니다.
|
||||
~가 사용되는 경우 Linux 사용자의 홈 경로가 사용됩니다. 경로가 시작되면
|
||||
/ 문자를 사용하면 절대 Linux 경로로 해석됩니다.
|
||||
~가 사용되는 경우 Linux 사용자의 홈 경로가 사용됩니다. 경로가
|
||||
/ 문자로 시작하면 절대 Linux 경로로 해석됩니다.
|
||||
그렇지 않으면 값이 절대 Windows 경로여야 합니다.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
@ -468,7 +472,7 @@ Linux용 Windows 하위 시스템을 관리하기 위한 인수:
|
||||
배포를 새 위치로 이동합니다.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
배포판의 vhdx를 스파스로 설정하여 디스크 공간을 자동으로 회수할 수 있도록 합니다.
|
||||
배포판의 VHD를 스파스로 설정하여 디스크 공간을 자동으로 회수할 수 있도록 합니다.
|
||||
|
||||
--set-default-user <Username>
|
||||
배포의 기본 사용자를 설정합니다.
|
||||
@ -548,11 +552,11 @@ Linux용 Windows 하위 시스템 배포를 관리하기 위한 인수:
|
||||
새 배포에 사용할 버전을 지정합니다.
|
||||
|
||||
--vhd
|
||||
제공된 파일이 tar 파일이 아닌 .vhdx 파일임을 지정합니다.
|
||||
이 작업은 지정된 설치 위치에 .vhdx 파일의 복사본을 만듭니다.
|
||||
제공된 파일이 tar 파일이 아닌 .vhd 또는 .vhdx 파일임을 지정합니다.
|
||||
이 작업은 지정된 설치 위치에 VHD 파일의 복사본을 만듭니다.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
지정된 .vhdx 파일을 새 배포판로 가져옵니다.
|
||||
지정된 VHD 파일을 새 배포판으로 가져옵니다.
|
||||
이 가상 하드 디스크는 ext4 파일 시스템 형식으로 포맷해야 합니다.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -706,8 +710,13 @@ Windows 버전: {}</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>지정한 파일의 확장명은 .vhdx여야 합니다.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>지정한 파일에는 {} 파일 확장명이 있어야 합니다.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>지정한 파일에는 {} 또는 {} 파일 확장명이 있어야 합니다.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch '{}'을(를) 찾을 수 없습니다. 사용 가능한 스위치: {}</value>
|
||||
@ -793,6 +802,10 @@ Windows 업데이트를 통해 또는 다음을 통해 필요한 업데이트
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>WSL을 시작하는 동안 오류가 발생했습니다.</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>'{}'에 대한 시스템 사용자 세션을 시작하지 못했습니다. 자세한 내용은 journalctl을 참조하십시오.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>EventViewer 열기</value>
|
||||
</data>
|
||||
@ -996,7 +1009,7 @@ NAT 네트워킹으로 대체합니다.</value>
|
||||
<value>문서 보기</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>vhdx가 현재 사용 중이므로 작업을 완료할 수 없습니다. WSL을 강제로 사용 중지하려면: wsl.exe --shutdown</value>
|
||||
<value>VHD가 현재 사용 중이므로 작업을 완료할 수 없습니다. WSL을 강제로 사용 중지하려면: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ NAT 네트워킹으로 대체합니다.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>스파스 vhdx는 WSL2에서만 지원됩니다.</value>
|
||||
<value>스파스 VHD는 WSL2에서만 지원됩니다.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>WSL을 로컬 시스템으로 실행할 수 없습니다.</value>
|
||||
@ -1053,7 +1066,7 @@ NAT 네트워킹으로 대체합니다.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>VHDX 파일인 것 같습니다. --vhd 사용하여 tar 대신 VHDX를 가져옵니다.</value>
|
||||
<value>VHD 파일인 것 같습니다. --vhd 사용하여 tar 대신 VHD를 가져옵니다.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1105,8 +1118,8 @@ NAT 네트워킹으로 대체합니다.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>데이터 손상 가능성으로 인해 스파스 VHD 지원은 현재 비활성화되어 있습니다.
|
||||
배포 시 강제로 스파스 VHD를 사용하도록 하려면 다음을 실행하세요.
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
배포 시 강제로 스파스 VHD를 사용하도록 하려면 다음을 실행하세요.
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1693,12 +1706,6 @@ VS Code 자체 내의 명령 팔레트를 통해 더 많은 VS Code 원격 옵
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>선택적 기능</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>페이지 보고 사용</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>기본 true 설정을 사용하면 Windows에서 WSL 2 가상 컴퓨터에 할당된 사용되지 않는 메모리를 회수할 수 있습니다.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>개인 정보 취급 방침</value>
|
||||
</data>
|
||||
|
||||
@ -321,13 +321,17 @@ Aktiver den valgfrie Windows-undersystem for Linux-komponenten for å bruke WSL1
|
||||
--msal-proxy-path
|
||||
Vis banen til MSAL-proxyprogrammet.
|
||||
|
||||
--vm-id
|
||||
Vis VM-ID-en for WSL.
|
||||
|
||||
--version
|
||||
Vis versjonen av WSL-pakken.
|
||||
|
||||
–n
|
||||
-n
|
||||
Ikke skriv ut et linjeskift.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -371,63 +375,63 @@ Bruk:
|
||||
<comment>{Locked="/l,"}{Locked="/list "}{Locked="/all "}{Locked="/running "}{Locked="/s,"}{Locked="/setdefault "}{Locked="/t,"}{Locked="/terminate "}{Locked="/u,"}{Locked="/unregister "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Med enerett.
|
||||
Hvis du vil ha informasjon om personvern vedrørende dette produktet, kan du gå til https://aka.ms/privacy.
|
||||
<value>Opphavsrett (c) Microsoft Corporation. Med enerett.
|
||||
Hvis du vil ha personverninformasjon om dette produktet, kan du gå til https://aka.ms/privacy.
|
||||
|
||||
Bruk: wsl.exe [argument] [alternativer...] [kommandolinje]
|
||||
Bruk: wsl.exe [Argument] [Alternativer...] [Kommandolinje]
|
||||
|
||||
Argumenter for å kjøre Linux-binærfiler:
|
||||
|
||||
Hvis ingen kommandolinje er angitt, starter wsl.exe standardgrensesnittet.
|
||||
Hvis ingen kommandolinje er angitt, starter wsl.exe standardgrensesnittet.
|
||||
|
||||
--exec, -e <CommandLine>
|
||||
Kjører den angitte kommandoen uten å bruke standard Linux-grensesnitt.
|
||||
--exec, -e <CommandLine>
|
||||
Utfør den angitte kommandoen uten å bruke standard Linux shell.
|
||||
|
||||
--shell-type <standard|login|none>
|
||||
Kjør den spesifiserte kommandoen med den angitte grensesnittypen.
|
||||
Utfør den angitte kommandoen med den angitte skalltypen.
|
||||
|
||||
--
|
||||
Send den gjenstående kommandolinjen slik den er.
|
||||
--
|
||||
Sender gjenstående kommandolinje slik den er.
|
||||
|
||||
Alternativer:
|
||||
Options:
|
||||
--cd <Directory>
|
||||
Angir den spesifiserte katalogen som gjeldende arbeidskatalog.
|
||||
Hvis ~ brukes, brukes Linux-brukerens startbane. Hvis banen starter
|
||||
med et /-tegn, blir den tolket som en absolutt Linux-bane.
|
||||
Hvis ikke må verdien være en absolutt Windows-bane.
|
||||
Angir den angitte mappen som gjeldende arbeidsmappe.
|
||||
Hvis ~ brukes, brukes Linux-brukerens hjemmebane. Hvis banen begynner
|
||||
med et /-tegn, tolkes det som en absolutt Linux-bane.
|
||||
Ellers må verdien være en absolutt Windows-bane.
|
||||
|
||||
--distribution, -d <distronavn>
|
||||
Kjør den spesifiserte distribusjonen.
|
||||
--distribution, -d <DistroName>
|
||||
Kjør den angitte distribusjonen.
|
||||
|
||||
--distribution-id <distroguid>
|
||||
Kjør den spesifiserte distribusjon-ID-en.
|
||||
--distribution-id <DistroGuid>
|
||||
Kjør den angitte distribusjons-ID-en.
|
||||
|
||||
--user, -u <UserName>
|
||||
Kjør som den spesifiserte brukeren.
|
||||
Kjør som den angitte brukeren.
|
||||
|
||||
--system
|
||||
Starter et skall for systemdistribusjonen.
|
||||
|
||||
Argumenter for å behandle Windows-undersystemet for Linux:
|
||||
Argumenter for behandling av Windows-undersystem for Linux:
|
||||
|
||||
--help
|
||||
Vis informasjon om bruk.
|
||||
Vis bruksinformasjon.
|
||||
|
||||
--debug-shell
|
||||
Åpner et WSL 2-feilsøkingsgrensesnitt for diagnoseformål.
|
||||
Åpne et WSL2 feilsøkingsskal til diagnoseformål.
|
||||
|
||||
--install [Distro] [Options...]
|
||||
Installerer en distribusjon av typen Windows-undersystem for Linux.
|
||||
Hvis du vil ha en liste over gyldige distribusjoner, kan du bruke 'wsl.exe --list --online'.
|
||||
--install [Distro] [Alternativer ...]
|
||||
Installer et Windows-undersystem for Linux-distribusjon.
|
||||
For en liste over gyldige distribusjoner kan du bruke 'wsl.exe --list --online'.
|
||||
|
||||
Alternativer:
|
||||
--enable-wsl1
|
||||
Aktiver WSL1-støtte.
|
||||
|
||||
--fixed-vhd
|
||||
Opprett en disk med fast størrelse for lagring av distribusjonen.
|
||||
Opprett en disk med fast størrelse for å lagre distribusjonen.
|
||||
|
||||
--from-file <bane>
|
||||
--from-file <Path>
|
||||
Installer en distribusjon fra en lokal fil.
|
||||
|
||||
--legacy
|
||||
@ -436,149 +440,149 @@ Argumenter for å behandle Windows-undersystemet for Linux:
|
||||
--location <Location>
|
||||
Angi installasjonsbanen for distribusjonen.
|
||||
|
||||
--name <navn>
|
||||
--name <Name>
|
||||
Angi navnet på distribusjonen.
|
||||
|
||||
--no-distribution
|
||||
Installerer bare de nødvendige valgfrie komponentene. Installerer ikke en distribusjon.
|
||||
Installer kun de nødvendige valgfrie komponentene, installerer ikke en distribusjon.
|
||||
|
||||
--no-launch, -n
|
||||
Ikke start distribusjonen etter installasjon.
|
||||
Ikke start distribusjonen etter installeringen.
|
||||
|
||||
--version <versjon>
|
||||
Angir hvilken versjon som skal brukes for den nye distribusjonen.
|
||||
--version <Version>
|
||||
Angir versjonen som skal brukes til den nye distribusjonen.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Angir størrelsen på disken for å lagre distribusjonen.
|
||||
Angir størrelsen på disken som skal lagre distribusjonen.
|
||||
|
||||
--web-download
|
||||
Laster ned distribusjonen fra Internett i stedet for fra Microsoft Store.
|
||||
Last ned distribusjonen fra internett i stedet for Microsoft Store.
|
||||
|
||||
--manage <distribusjon> <alternativer ...>
|
||||
Endrer bestemte alternativer for distribusjonen.
|
||||
--manage <Distro> <Options...>
|
||||
Endrer bestemte alternativer for Distro.
|
||||
|
||||
Alternativer:
|
||||
--move <plassering>
|
||||
Flytt utrullingen til en ny plassering.
|
||||
--move <Location>
|
||||
Flytt distribusjonen til en ny plassering.
|
||||
|
||||
--set-sparse, -s <sann|usann>
|
||||
Angir at VHDX-filen for distribusjonen skal være plassbesparende, slik at diskplass kan frigjøres automatisk.
|
||||
--set-sparse, -s <true|false>
|
||||
Angi at VHD-en for distro skal være spredt, slik at diskplass kan frigjøres automatisk.
|
||||
|
||||
--set-default-user <brukernavn>
|
||||
--set-default-user <Username>
|
||||
Angi standardbruker for distribusjonen.
|
||||
|
||||
--resize <minnestreng>
|
||||
Endre størrelsen på disken for fordelingen til den angitte størrelsen.
|
||||
--resize <MemoryString>
|
||||
Endre størrelsen på disken i distribusjonen til den angitte størrelsen.
|
||||
|
||||
--mount <disk>
|
||||
Kobler til og monterer en fysisk eller virtuell disk på alle WSL 2-distribusjoner.
|
||||
--mount <Disk>
|
||||
Fester og monterer en fysisk eller virtuell disk i alle WSL 2-distribusjonene.
|
||||
|
||||
Alternativer:
|
||||
--vhd
|
||||
Angir at <disk> refererer til en virtuell harddisk.
|
||||
Angir at <Disk> refererer til en virtuell harddisk.
|
||||
|
||||
--bare
|
||||
Kobler disken til WSL 2, men monterer den ikke.
|
||||
Fest disken til WSL2, men ikke monter den.
|
||||
|
||||
--name <navn>
|
||||
Monterer disken og bruker et egendefinert navn for monteringspunktet.
|
||||
--name <Name>
|
||||
Monter disken med et egendefinert navn på monteringspunktet.
|
||||
|
||||
--type <type>
|
||||
Filsystemet som skal brukes ved montering av en disk. Hvis det ikke angis, brukes ext4 som standard.
|
||||
--type <Type>
|
||||
Filsystem til bruk ved montering av disk, om ikke angitt settes det som standard til ext4.
|
||||
|
||||
--options <alternativer>
|
||||
--options <Options>
|
||||
Flere monteringsalternativer.
|
||||
|
||||
--partition <indeks>
|
||||
Indeksen for partisjonen som skal monteres. Hvis den ikke angis, brukes hele disken som standard.
|
||||
--partition <Index>
|
||||
Indeksen for partisjonen som skal monteres, hvis den ikke er angitt som standard for hele disken.
|
||||
|
||||
--set-default-version <versjon>
|
||||
--set-default-version <Version>
|
||||
Endrer standard installasjonsversjon for nye distribusjoner.
|
||||
|
||||
--shutdown
|
||||
Avslutter umiddelbart alle kjørende distribusjoner og WSL 2
|
||||
virtuell maskin for lette verktøy.
|
||||
Avslutter umiddelbart alle kjørende distribusjoner og den virtuelle WSL 2
|
||||
lightweight utility-maskinen.
|
||||
|
||||
Alternativer:
|
||||
--force
|
||||
Avslutt den virtuelle WSL 2-maskinen selv om en operasjon pågår. Kan føre til tap av data.
|
||||
|
||||
--status
|
||||
Viser statusen til Windows-undersystem for Linux.
|
||||
Vis statusen for Windows-undersystem for Linux.
|
||||
|
||||
--unmount [disk]
|
||||
Demonterer og kobler fra en disk fra alle WSL 2-distribusjoner.
|
||||
Demonterer og kobler fra alle disker hvis den kalles uten argument.
|
||||
--unmount [Disk]
|
||||
Demonterer og kobler fra en disk fra alle WSL2-distribusjoner.
|
||||
Demonterer og løsner alle disker hvis de kalles uten argument.
|
||||
|
||||
--uninstall
|
||||
Avinstallerer Windows-undersystemet for Linux-pakke fra denne maskinen.
|
||||
Avinstallerer Windows-undersystem for Linux-pakken fra denne maskinen.
|
||||
|
||||
--update
|
||||
Oppdaterer pakken med Windows-undersystemet for Linux.
|
||||
Oppdaterer Windows-undersystem for Linux-pakken.
|
||||
|
||||
Alternativer:
|
||||
--pre-release
|
||||
Laster ned en forhåndsversjon hvis den er tilgjengelig.
|
||||
Last ned en forhåndsversjon hvis tilgjengelig.
|
||||
|
||||
--version, -v
|
||||
Viser versjonsinformasjon.
|
||||
Vis versjonsinformasjon.
|
||||
|
||||
Argumenter for behandling av distribusjoner i Windows-undersystem for Linux:
|
||||
|
||||
--export <distribusjon> <filnavn> [alternativer]
|
||||
Eksporterer distribusjonen til en TAR-fil.
|
||||
Filnavnet kan være - for standard utdata.
|
||||
--export <Distro> <FileName> [Options]
|
||||
Eksporterer distribusjonen til en tjærefil.
|
||||
Filnavnet kan være - for stdout.
|
||||
|
||||
Alternativer:
|
||||
--format <Format>
|
||||
Angir eksportformatet. Støttede verdier: tar, tar.gz, vhd.
|
||||
Angir eksportformatet. Støttede verdier: tar, tar.gz, tar.xz, vhd.
|
||||
|
||||
--import <distribusjon> <installasjonsplassering> <filnavn> [alternativer]
|
||||
Importerer den angitte TAR-filen som en ny distribusjon.
|
||||
Filnavnet kan være - for standard inndata.
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
Importerer den angitte tjærefilen som en ny distribusjon.
|
||||
Filnavnet kan være - for stdin.
|
||||
|
||||
Alternativer:
|
||||
--version <versjon>
|
||||
Angir hvilken versjon som skal brukes for den nye distribusjonen.
|
||||
--version <Version>
|
||||
Angir versjonen som skal brukes i den nye distribusjonen.
|
||||
|
||||
--vhd
|
||||
Angir at den angitte filen er en VHDX-fil, ikke en TAR-fil.
|
||||
Denne operasjonen lager en kopi av VHDX-filen på den angitte installasjonsplasseringen.
|
||||
Angir at den angitte filen er en .vhd- eller .vhdx-fil, ikke en tjærefil.
|
||||
Denne operasjonen lager en kopi av VHD-filen på den angitte installasjonsplasseringen.
|
||||
|
||||
--import-in-place <distribusjon> <filnavn>
|
||||
Importerer den angitte VHDX-filen som en ny distribusjon.
|
||||
Denne virtuelle harddisken må være formatert med filsystemtypen EXT4.
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importerer den angitte VHD-filen som en ny distribusjon.
|
||||
Denne virtuelle harddisken må formateres med filsystemtypen ext4.
|
||||
|
||||
--list, -l [alternativer]
|
||||
Viser en liste over distribusjoner.
|
||||
--list, -l [Options]
|
||||
Viser distribusjoner.
|
||||
|
||||
Alternativer:
|
||||
--all
|
||||
Viser en liste over alle distribusjoner, inkludert distribusjoner som
|
||||
installeres eller avinstalleres for øyeblikket.
|
||||
Viser alle distribusjoner, inkludert distribusjoner som
|
||||
for øyeblikket installeres eller avinstalleres.
|
||||
|
||||
--running
|
||||
Viser en liste over bare distribusjoner som kjører.
|
||||
Viser kun distribusjoner som kjører for øyeblikket.
|
||||
|
||||
--quiet, -q
|
||||
Vis bare distribusjonsnavn.
|
||||
Viser bare distribusjonsnavn.
|
||||
|
||||
--verbose, -v
|
||||
Vis detaljert informasjon om alle distribusjoner.
|
||||
Viser detaljert informasjon om alle distribusjonene.
|
||||
|
||||
--online, -o
|
||||
Viser en liste over distribusjoner som kan installeres med 'wsl.exe --install'.
|
||||
Viser en liste over tilgjengelige distribusjoner for installering med 'wsl.exe --install'.
|
||||
|
||||
--set-default, -s <distribusjon>
|
||||
--set-default, -s <Distro>
|
||||
Angir distribusjonen som standard.
|
||||
|
||||
--set-version <distribusjon> <versjon>
|
||||
Endrer versjonen til den angitte distribusjonen.
|
||||
--set-version <Distro> <Version>
|
||||
Endrer versjonen for den angitte distribusjonen.
|
||||
|
||||
--terminate, -t <distribusjon>
|
||||
--terminate, -t <Distro>
|
||||
Avslutter den angitte distribusjonen.
|
||||
|
||||
--unregister <distribusjon>
|
||||
--unregister <Distro>
|
||||
Avregistrerer distribusjonen og sletter rotfilsystemet.</value>
|
||||
<comment>{Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system
|
||||
"}{Locked="--help
|
||||
@ -700,8 +704,13 @@ Systemet må kanskje startes på nytt slik at endringene kan tre i kraft.</value
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Den angitte filen må ha filtypen VHDX.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Den angitte filen må ha filtypen {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Den angitte filen må ha filendelsen {} eller {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>Finner ikke VmSwitch {}. Tilgjengelige brytere: {}</value>
|
||||
@ -787,6 +796,10 @@ Hvis du vil ha mer informasjon, kan du gå til https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Det oppstod feil under WSL-oppstart</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Kan ikke starte systembrukerøkten for {}. Se journalctl hvis du vil ha mer informasjon.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Åpne EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Faller tilbake til NAT-nettverk.</value>
|
||||
<value>Vis dokumenter</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Operasjonen kan ikke fullføres fordi VHDX-filen er i bruk. Slik tvinger du WSL til å stoppe bruk: wsl.exe --shutdown</value>
|
||||
<value>Operasjonen kan ikke fullføres fordi VHD-en er i bruk. Slik tvinger du WSL til å stoppe: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Faller tilbake til NAT-nettverk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx støttes bare på WSL2.</value>
|
||||
<value>Sparse VHD støttes bare på WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Kjøring av WSL som lokalt system støttes ikke.</value>
|
||||
@ -1047,7 +1060,7 @@ Faller tilbake til NAT-nettverk.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Dette ser ut som en VDHX-fil. Bruk --vhd til å importere en VHDX i stedet for en tar.</value>
|
||||
<value>Dette ser ut som en VHD-fil. Bruk --vhd til å importere en VHD i stedet for en tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1099,8 +1112,8 @@ Feilkode: {}</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Sparsom VHD-støtte er deaktivert på grunn av potensiell dataskade.
|
||||
Hvis du vil tvinge en distribusjon til å bruke en sparsom vhd, kan du kjøre:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
Hvis du vil tvinge en distribusjon til å bruke en sparsom VHD, kan du kjøre:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Du kan også åpne flere eksterne alternativer for VS Code gjennom kommandopalet
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Valgfrie funksjoner</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Aktiver siderapportering</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Standard sann innstilling gjør det mulig for Windows å frigjøre ubrukt minne tildelt til virtuell WSL 2-maskin.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Personvernerklæring</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Schakel het optionele onderdeel 'Windows Subsystem for Linux' in om WSL1 te gebr
|
||||
--msal-proxy-path
|
||||
Geef het pad naar de MSAL-proxytoepassing weer.
|
||||
|
||||
--vm-id
|
||||
Geef de WSL VM-id weer.
|
||||
|
||||
--version
|
||||
De versie van het WSL-pakket weergeven.
|
||||
|
||||
@ -328,6 +331,7 @@ Schakel het optionele onderdeel 'Windows Subsystem for Linux' in om WSL1 te gebr
|
||||
Druk geen nieuwe regel af.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -416,7 +420,7 @@ Argumenten voor het beheren van het Windows-subsysteem voor Linux:
|
||||
--debug-shell
|
||||
Een WSL2-foutopsporingsshell voor diagnostische doeleinden openen.
|
||||
|
||||
--install [Distributie] [Opties...]
|
||||
--install [Distro] [Options...]
|
||||
Een Windows-subsysteem voor Linux-distributie installeren.
|
||||
Gebruik 'wsl.exe --list --online' voor een lijst met geldige distributies.
|
||||
|
||||
@ -425,7 +429,7 @@ Argumenten voor het beheren van het Windows-subsysteem voor Linux:
|
||||
WSL1-ondersteuning inschakelen.
|
||||
|
||||
--fixed-vhd
|
||||
Maak een schijf met een vaste grootte om de distributie op te slaan.
|
||||
Een schijf met een vaste grootte maken om de distributie op te slaan.
|
||||
|
||||
--from-file <Path>
|
||||
Een distributie installeren vanaf een lokaal bestand.
|
||||
@ -446,10 +450,10 @@ Argumenten voor het beheren van het Windows-subsysteem voor Linux:
|
||||
De distributie niet na de installatie starten.
|
||||
|
||||
--version <Version>
|
||||
Hiermee geeft u de versie op die moet worden gebruikt voor de nieuwe distributie.
|
||||
Specificeert de versie die moet worden gebruikt voor de nieuwe distributie.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Geeft de grootte van de schijf op om de distributie op te slaan.
|
||||
Specificeert de grootte van de schijf om de distributie op te slaan.
|
||||
|
||||
--web-download
|
||||
De distributie downloaden van internet in plaats van Microsoft Store.
|
||||
@ -459,10 +463,10 @@ Argumenten voor het beheren van het Windows-subsysteem voor Linux:
|
||||
|
||||
Opties:
|
||||
--move <Location>
|
||||
Verplaats de distributie naar een nieuwe locatie.
|
||||
De distributie naar een nieuwe locatie verplaatsen.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
De vhdx van distro instellen op sparse, zodat schijfruimte automatisch opnieuw kan worden geclaimd.
|
||||
De VHD van de distributie instellen op sparse, zodat schijfruimte automatisch opnieuw kan worden geclaimd.
|
||||
|
||||
--set-default-user <Username>
|
||||
De standaardgebruiker van de distributie instellen.
|
||||
@ -501,7 +505,7 @@ Argumenten voor het beheren van het Windows-subsysteem voor Linux:
|
||||
|
||||
Opties:
|
||||
--force
|
||||
Beëindig de WSL 2 virtuele machine, zelfs als er een bewerking wordt uitgevoerd. Dit kan gegevensverlies veroorzaken.
|
||||
De WSL 2-VM beëindigen, zelfs als er een bewerking wordt uitgevoerd. Dit kan gegevensverlies veroorzaken.
|
||||
|
||||
--status
|
||||
De status van het Windows-subsysteem voor Linux weergeven.
|
||||
@ -531,7 +535,7 @@ Argumenten voor het beheren van distributies in het Windows-subsysteem voor Linu
|
||||
|
||||
Opties:
|
||||
--format <Format>
|
||||
De exportindeling opgeven. Ondersteunde waarden: tar, tar.gz, tar.xz, vhd.
|
||||
Specificeert de exportindeling. Ondersteunde waarden: tar, tar.gz, tar.xz, vhd.
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [Opties]
|
||||
Hiermee importeer je het opgegeven TAR-bestand als een nieuwe distributie.
|
||||
@ -542,11 +546,11 @@ Argumenten voor het beheren van distributies in het Windows-subsysteem voor Linu
|
||||
Hiermee geef je de versie op die moet worden gebruikt voor de nieuwe distributie.
|
||||
|
||||
--vhd
|
||||
Hiermee geef je op dat het opgegeven bestand een VHDX-bestand is en geen TAR-bestand.
|
||||
Met deze bewerking wordt een kopie gemaakt van het VHDX-bestand op de opgegeven installatielocatie.
|
||||
Hiermee geef je op dat het opgegeven bestand een VHD- of VHDX-bestand is en geen TAR-bestand.
|
||||
Met deze bewerking wordt een kopie gemaakt van het VHD-bestand op de opgegeven installatielocatie.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Hiermee importeer je het opgegeven VHDX-bestand als een nieuwe distributie.
|
||||
Hiermee importeer je het opgegeven VHD-bestand als een nieuwe distributie.
|
||||
Deze virtuele harde schijf moet zijn geformatteerd met het ext4-type bestandssysteem.
|
||||
|
||||
--list, -l [Opties]
|
||||
@ -602,7 +606,7 @@ Argumenten voor het beheren van distributies in het Windows-subsysteem voor Linu
|
||||
"}{Locked="--quiet,"}{Locked="--verbose,"}{Locked="--online,"}{Locked="--install'"}{Locked="--set-default,"}{Locked="--set-version "}{Locked="--terminate,"}{Locked="--unregister "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePackageVersions" xml:space="preserve">
|
||||
<value>WSL-versiie: {}
|
||||
<value>WSL-versie: {}
|
||||
Kernelversie: {}
|
||||
WSLg-versie: {}
|
||||
MSRDC-versie: {}
|
||||
@ -622,7 +626,7 @@ Buildtijd: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>De VHD van de aangepaste kernelmodules in {} is niet gevonden: {}.</value>
|
||||
<value>De aangepaste kernelmodules VHD in {} is niet gevonden: {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ Het systeem moet mogelijk opnieuw worden opgestart, zodat de wijzigingen van kra
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Het opgegeven bestand moet de bestandsextensie .vhdx hebben.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Het opgegeven bestand moet de bestandsextensie {} hebben.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Het opgegeven bestand moet de bestandsextensie {} of {} hebben.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>Kan de VmSwitch {} niet vinden. Beschikbare switches: {}</value>
|
||||
@ -787,6 +796,10 @@ Ga naar https://aka.ms/wslinstall voor meer informatie</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Er zijn fouten opgetreden tijdens het opstarten van WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Kan de systeemgebruikerssessie voor {} niet starten. Zie journalctl voor meer informatie.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>EventViewer openen</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Terugvallen op NAT-netwerken.</value>
|
||||
<value>Documenten weergeven</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>De bewerking kan niet worden voltooid omdat de VHDX momenteel in gebruik is. Stoppen van WSL forceren: wsl.exe --shutdown</value>
|
||||
<value>De bewerking kan niet worden voltooid omdat de VHD momenteel in gebruik is. Stoppen van WSL forceren: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Terugvallen op NAT-netwerken.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx wordt alleen ondersteund op WSL2.</value>
|
||||
<value>Sparse VHD wordt alleen ondersteund op WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Het uitvoeren van WSL als lokaal systeem wordt niet ondersteund.</value>
|
||||
@ -1047,7 +1060,7 @@ Terugvallen op NAT-netwerken.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Dit ziet eruit als een VHDX-bestand. Gebruik --vhd om een VHDX te importeren in plaats van een tar.</value>
|
||||
<value>Dit ziet eruit als een VHD-bestand. Gebruik --vhd om een VHD te importeren in plaats van een tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1099,7 +1112,7 @@ Foutcode: {}</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Sparse VHD-ondersteuning is momenteel uitgeschakeld vanwege mogelijk beschadigde gegevens.
|
||||
Om een distributie te dwingen een sparse vhd te gebruiken, voer je het volgende uit:
|
||||
Om een distributie te dwingen een sparse VHD te gebruiken, voer je het volgende uit:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -1687,12 +1700,6 @@ U hebt ook toegang tot meer externe VS Code-opties via het opdrachtpalet in VS C
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Optionele onderdelen</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Paginarapportage inschakelen</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Met de standaardinstelling Waar, kan Windows ongebruikt geheugen vrijmaken dat is toegewezen aan de virtuele WSL 2-machine.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Privacyverklaring</value>
|
||||
</data>
|
||||
|
||||
@ -314,13 +314,16 @@ Włącz opcjonalny składnik „Podsystem Windows dla systemu Linux”, aby uży
|
||||
<value>Ta operacja jest obsługiwana tylko przez podsystem WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageWslInfoUsage" xml:space="preserve">
|
||||
<value>Użycie:
|
||||
<value>Użycie:
|
||||
--networking-mode
|
||||
Wyświetl bieżący tryb sieciowy.
|
||||
|
||||
--msal-proxy-path
|
||||
Wyświetl ścieżkę do aplikacji serwera proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Wyświetl identyfikator maszyny wirtualnej WSL.
|
||||
|
||||
--version
|
||||
Wyświetl wersję pakietu WSL.
|
||||
|
||||
@ -328,6 +331,7 @@ Włącz opcjonalny składnik „Podsystem Windows dla systemu Linux”, aby uży
|
||||
Nie drukuj nowego wiersza.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Argumenty zarządzania podsystemem Windows dla systemu Linux:
|
||||
Przenosi dystrybucję do nowej lokalizacji.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Ustawia dysk vhdx dystrybucji jako rozrzedzony, dzięki czemu miejsce na dysku jest automatycznie odzyskiwane.
|
||||
Ustawia dysk VHD dystrybucji jako rozrzedzony, dzięki czemu miejsce na dysku jest automatycznie odzyskiwane.
|
||||
|
||||
--set-default-user <Username>
|
||||
Ustawia domyślnego użytkownika dystrybucji.
|
||||
@ -542,11 +546,11 @@ Argumenty zarządzania dystrybucjami w Podsystemie Windows dla systemu Linux:
|
||||
Określa wersję do użycia dla nowej dystrybucji.
|
||||
|
||||
--vhd
|
||||
Określa, że podany plik jest plikiem vhdx, a nie plikiem tar.
|
||||
Ta operacja tworzy kopię pliku vhdx w określonej lokalizacji instalacji.
|
||||
Określa, że podany plik jest plikiem .vhd lub .vhdx, a nie plikiem tar.
|
||||
Ta operacja tworzy kopię pliku VHD w określonej lokalizacji instalacji.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importuje określony plik .vhdx jako nową dystrybucję.
|
||||
Importuje określony plik VHD jako nową dystrybucję.
|
||||
Ten wirtualny dysk twardy musi być sformatowany przy użyciu typu systemu plików ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -700,8 +704,13 @@ Może być konieczne ponowne uruchomienie systemu, aby zmiany zostały wprowadzo
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Określony plik musi mieć rozszerzenie pliku vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Określony plik musi mieć rozszerzenie pliku {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Określony plik musi mieć rozszerzenie pliku {} lub {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>Nie znaleziono przełącznika maszyny wirtualnej „{}”. Dostępne przełączniki: {}</value>
|
||||
@ -787,6 +796,10 @@ Aby uzyskać informacje, odwiedź stronę https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Wystąpiły błędy podczas uruchamiania podsystemu WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Nie można uruchomić systemowej sesji użytkownika dla "{}". Aby uzyskać więcej szczegółów, zobacz dziennik journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Otwórz program Podgląd zdarzeń</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Powrót do sieci NAT.</value>
|
||||
<value>Zobacz dokumenty</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Nie można ukończyć operacji, ponieważ dysk vhdx jest obecnie używany. Aby wymusić zatrzymanie używania protokołu WSL: wsl.exe --shutdown</value>
|
||||
<value>Nie można ukończyć operacji, ponieważ dysk VHD jest obecnie używany. Aby wymusić zatrzymanie używania protokołu WSL: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Powrót do sieci NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Rozrzedzony dysk vhdx jest obsługiwany tylko w systemie WSL2.</value>
|
||||
<value>Rozrzedzony dysk VHD jest obsługiwany tylko w systemie WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Uruchamianie podsystemu WSL jako systemu lokalnego nie jest obsługiwane.</value>
|
||||
@ -1047,7 +1060,7 @@ Powrót do sieci NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Wygląda to na plik VHDX. Użyj polecenia --vhd , aby zaimportować plik VHDX zamiast tar.</value>
|
||||
<value>This looks like a VHD file. Use --vhd to import a VHD instead of a tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1100,7 +1113,7 @@ Kod błędu: {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Obsługa rozrzedzonych dysków VHD jest obecnie wyłączona z powodu potencjalnego uszkodzenia danych.
|
||||
Aby wymusić używanie rozrzedzonego dysku VHD przez dystrybucję, uruchom polecenie:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Możesz również uzyskać dostęp do większej liczby opcji zdalnych programu V
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Funkcje opcjonalne</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Włącz raportowanie stron</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Domyślne ustawienie wartości true umożliwia systemowi Windows odzyskanie nieużywanej pamięci przydzielonej do maszyny wirtualnej WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Oświadczenie o ochronie prywatności</value>
|
||||
</data>
|
||||
|
||||
@ -328,13 +328,17 @@ Para obter informações, visite https://aka.ms/enablevirtualization</value>
|
||||
--msal-proxy-path
|
||||
Exibir o caminho para o aplicativo proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Exibir a ID da VM do WSL.
|
||||
|
||||
--version
|
||||
Exibir a versão do pacote WSL.
|
||||
|
||||
-n
|
||||
Não imprimir uma nova linha.</value>
|
||||
Não imprima uma nova linha.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -379,7 +383,7 @@ Uso:
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Todos os direitos reservados.
|
||||
Para obter informações sobre a privacidade desse produto, visite https://aka.ms/privacy.
|
||||
Para obter informações sobre a privacidade deste produto, visite https://aka.ms/privacy.
|
||||
|
||||
Uso: wsl.exe [Argumento] [Opções...] [Linha de comando]
|
||||
|
||||
@ -404,13 +408,13 @@ Opções:
|
||||
Caso contrário, o valor deverá ser um caminho do Windows absoluto.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
Executar a distribuição especificada.
|
||||
Executa a distribuição especificada.
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
Executa a ID da distribuição especificada.
|
||||
|
||||
--user, -u <UserName>
|
||||
Executar como o usuário especificado.
|
||||
Executa como o usuário especificado.
|
||||
|
||||
--system
|
||||
Inicia um shell para a distribuição do sistema.
|
||||
@ -425,7 +429,7 @@ Argumentos para gerenciar o Subsistema do Windows para Linux:
|
||||
|
||||
--install [Distribuição] [Opções...]
|
||||
Instala uma distribuição do Subsistema do Windows para Linux.
|
||||
Para uma lista de distribuições válidas, use 'wsl.exe --list --online'.
|
||||
Para uma lista de distribuições válidas, use ''wsl.exe --list --online''.
|
||||
|
||||
Opções:
|
||||
--enable-wsl1
|
||||
@ -462,14 +466,14 @@ Argumentos para gerenciar o Subsistema do Windows para Linux:
|
||||
Baixa a distribuição da internet em vez da Microsoft Store.
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
Altera opções específicas da distribuição.
|
||||
Altera as opções específicas da distribuição.
|
||||
|
||||
Opções:
|
||||
--move <Location>
|
||||
Move a distribuição para um novo local.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Define o vhdx da distribuição como esparso, permitindo que o espaço em disco seja recuperado automaticamente.
|
||||
Defina o VHD de distribuição como esparso, permitindo que o espaço em disco seja recuperado automaticamente.
|
||||
|
||||
--set-default-user <Username>
|
||||
Define o usuário padrão da distribuição.
|
||||
@ -549,12 +553,12 @@ Argumentos para gerenciar as distribuições no Subsistema do Windows para Linux
|
||||
Especifica a versão a ser usada para a nova distribuição.
|
||||
|
||||
--vhd
|
||||
Especifica que o arquivo fornecido é um arquivo .vhdx, e não um arquivo tar.
|
||||
Essa operação faz uma cópia do arquivo .vhdx no local de instalação especificado.
|
||||
Especifica que o arquivo fornecido é um arquivo .vhd ou .vhdx, não um arquivo tar.
|
||||
Esta operação faz uma cópia do arquivo VHD no local de instalação especificado.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importa o arquivo .vhdx especificado como uma nova distribuição.
|
||||
Esse disco rígido virtual deve ser formatado com o tipo de sistema de arquivos ext4.
|
||||
Importa o arquivo VHD especificado como uma nova distribuição.
|
||||
Este disco rígido virtual deve ser formatado com o tipo de sistema de arquivos ext4.
|
||||
|
||||
--list, -l [Opções]
|
||||
Lista as distribuições.
|
||||
@ -574,7 +578,7 @@ Argumentos para gerenciar as distribuições no Subsistema do Windows para Linux
|
||||
Mostra informações detalhadas sobre todas as distribuições.
|
||||
|
||||
--online, -o
|
||||
Exibe uma lista de distribuições disponíveis para instalação com 'wsl.exe --install'.
|
||||
Exibe uma lista de distribuições disponíveis para instalação com ''wsl.exe --install''.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Define a distribuição como o padrão.
|
||||
@ -629,7 +633,7 @@ Tempo de compilação: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>Os módulos de kernel personalizados vhd em {} não foram encontrados: '{}'.</value>
|
||||
<value>O VHD dos módulos de kernel personalizados em {} não foi encontrado: '{}'.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -707,8 +711,13 @@ Talvez seja necessário reiniciar o sistema para que as alterações entrem em v
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>O arquivo especificado deve ter a extensão de arquivo .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>O arquivo especificado deve ter a extensão de arquivo {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>O arquivo especificado deve ter a extensão de arquivo {} ou {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>O VmSwitch '{}' não foi encontrado. Switches disponíveis: {}</value>
|
||||
@ -794,6 +803,10 @@ Para obter informações, visite https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Ocorreram erros durante a inicialização do WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Falha ao iniciar a sessão de usuário do sistema para '{}'. Consulte o journalctl para obter mais detalhes.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Abrir EventViewer</value>
|
||||
</data>
|
||||
@ -997,7 +1010,7 @@ Voltando à rede NAT.</value>
|
||||
<value>Ver Documentos</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Não foi possível concluir a operação porque o vhdx está em uso no momento. Para forçar o WSL a interromper o uso: wsl.exe --shutdown</value>
|
||||
<value>Não foi possível concluir a operação porque o VHD está em uso no momento. Para forçar o WSL a interromper o uso: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1005,7 +1018,7 @@ Voltando à rede NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Há suporte para vhdx esparso somente no WSL2.</value>
|
||||
<value>O VHD esparso é compatível apenas com o WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>A execução do WSL como sistema local não é suportada.</value>
|
||||
@ -1054,7 +1067,7 @@ Voltando à rede NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Parece um arquivo VHDX. Use --vhd para importar um VHDX em vez de um tar.</value>
|
||||
<value>Parece um arquivo VHD. Use --vhd para importar um VHD em vez de um tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1105,9 +1118,9 @@ Código de erro: {}</value>
|
||||
<value>Devido a um problema de compatibilidade atual com o Cliente do Acesso Global Seguro, o Túnel DNS está desabilitado.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>O suporte ao VHD esparso está desabilitado no momento devido à possível corrupção de dados.
|
||||
<value>O suporte a VHD esparso está atualmente desativado devido a possível corrupção de dados.
|
||||
Para forçar uma distribuição a usar um VHD esparso, execute:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1694,12 +1707,6 @@ Você também pode acessar mais opções do VS Code Remote através da paleta de
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Recursos Opcionais</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Habilitar relatório de página</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>A configuração true padrão permite que o Windows recupere a memória não utilizada alocada para a máquina virtual WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Política de Privacidade</value>
|
||||
</data>
|
||||
|
||||
@ -319,15 +319,19 @@ Ative o componente opcional "Subsistema Windows para Linux" para utilizar o WSL1
|
||||
Exibir o modo de rede atual.
|
||||
|
||||
--msal-proxy-path
|
||||
Exibir o caminho para a aplicação de proxy MSAL.
|
||||
Apresentar o caminho para a aplicação proxy MSAL.
|
||||
|
||||
--vm-id
|
||||
Apresentar o ID de VM WSL.
|
||||
|
||||
--version
|
||||
Exibir a versão do pacote WSL.
|
||||
Apresentar a versão do pacote WSL.
|
||||
|
||||
-n
|
||||
Não imprimir uma nova linha.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -372,38 +376,38 @@ Utilização:
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Todos os direitos reservados.
|
||||
Para obter informações de privacidade sobre este produto, visite https://aka.ms/privacy.
|
||||
Para informações de privacidade sobre este produto, visite https://aka.ms/privacy.
|
||||
|
||||
Utilização: wsl.exe [Argument] [Options...] [CommandLine]
|
||||
|
||||
Argumentos para executar binários do Linux:
|
||||
|
||||
Se não for fornecida nenhuma linha de comandos, o wsl.exe iniciará a shell predefinida.
|
||||
Se nenhuma linha de comandos for fornecida, o wsl.exe inicia a shell predefinida.
|
||||
|
||||
--exec, -e <CommandLine>
|
||||
Executar o comando especificado sem utilizar a shell predefinida do Linux.
|
||||
Executa o comando especificado sem utilizar a shell predefinida do Linux.
|
||||
|
||||
--shell-type <standard|login|none>
|
||||
Executar o comando especificado com o tipo de shell fornecido.
|
||||
Executa o comando especificado com o tipo de shell fornecido.
|
||||
|
||||
--
|
||||
Passar a linha de comandos restante tal como está.
|
||||
Passa a linha de comandos restante tal como está.
|
||||
|
||||
Opções:
|
||||
--cd <Diretório>
|
||||
--cd <Directory>
|
||||
Define o diretório especificado como o diretório de trabalho atual.
|
||||
Se ~ for utilizado, será utilizado o caminho raiz do utilizador do Linux. Se o caminho começar
|
||||
por um caráter /, será interpretado como caminho absoluto do Linux.
|
||||
Caso contrário, o valor tem de ser um caminho absoluto do Windows.
|
||||
Caso contrário, o valor deve ser um caminho absoluto do Windows.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
Executar a distribuição especificada.
|
||||
Executa a distribuição especificada.
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
Executar o ID da distribuição especificada.
|
||||
Executa o ID da distribuição especificada.
|
||||
|
||||
--user, -u <UserName>
|
||||
Executar como o utilizador especificado.
|
||||
Executa como o utilizador especificado.
|
||||
|
||||
--system
|
||||
Inicia uma shell para a distribuição do sistema.
|
||||
@ -411,33 +415,33 @@ Opções:
|
||||
Argumentos para gerir o Subsistema Windows para Linux:
|
||||
|
||||
--help
|
||||
Apresentar informações de utilização.
|
||||
Apresenta informações de utilização.
|
||||
|
||||
--debug-shell
|
||||
Abrir uma shell de depuração do WSL2 para fins de diagnóstico.
|
||||
Abre uma shell de depuração do WSL2 para fins de diagnóstico.
|
||||
|
||||
--install [Distro] [Options...]
|
||||
Instalar uma distribuição do Subsistema Windows para Linux.
|
||||
Para uma lista de distribuições válidas, utilize 'wsl.exe --list --online'.
|
||||
Instala uma distribuição do Subsistema Windows para Linux.
|
||||
Para obter uma lista de distribuições válidas, utilize 'wsl.exe --list --online'
|
||||
|
||||
Opções:
|
||||
--enable-wsl1
|
||||
Ativar o suporte WSL1.
|
||||
Ativa o suporte WSL1.
|
||||
|
||||
--fixed-vhd
|
||||
Crie um disco de tamanho fixo para armazenar a distribuição.
|
||||
Cria um disco de tamanho fixo para armazenar a distribuição.
|
||||
|
||||
--from-file <Path>
|
||||
Instalar uma distribuição a partir de um ficheiro local.
|
||||
Instala uma distribuição a partir de um ficheiro local.
|
||||
|
||||
--legacy
|
||||
Utilizar o manifesto de distribuição legado.
|
||||
Utiliza o manifesto de distribuição legado.
|
||||
|
||||
--location <Location>
|
||||
Definir o caminho de instalação para a distribuição.
|
||||
Define o caminho de instalação da distribuição.
|
||||
|
||||
--name <Name>
|
||||
Definir o nome da distribuição.
|
||||
Define o nome da distribuição.
|
||||
|
||||
--no-distribution
|
||||
Instala apenas os componentes opcionais necessários. Não instala uma distribuição.
|
||||
@ -446,29 +450,29 @@ Argumentos para gerir o Subsistema Windows para Linux:
|
||||
Não inicia a distribuição após a instalação.
|
||||
|
||||
--version <Version>
|
||||
Especifica a versão a utilizar para a nova distribuição.
|
||||
Especifica a versão a utilizar na nova distribuição.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Especifica o tamanho do disco para armazenar a distribuição.
|
||||
|
||||
--web-download
|
||||
Transfere a distribuição da Internet em vez de transferir da Microsoft Store.
|
||||
Transfere a distribuição da Internet, em vez de pela Microsoft Store.
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
Altera as opções específicas da distribuição.
|
||||
|
||||
Opções:
|
||||
--move <Location>
|
||||
Mover a distribuição para uma nova localização.
|
||||
Move a distribuição para uma nova localização.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Define o vhdx da distribuição para ser disperso, o que permite que o espaço em disco seja automaticamente recuperado.
|
||||
Define o VHD da distribuição para ser disperso, permitindo que o espaço em disco seja automaticamente recuperado.
|
||||
|
||||
--set-default-user <Username>
|
||||
Definir o utilizador predefinido da distribuição.
|
||||
Define o utilizador predefinido da distribuição.
|
||||
|
||||
--resize <MemoryString>
|
||||
Redimensionar o disco da distribuição para o tamanho especificado.
|
||||
Redimensiona o disco da distribuição ao tamanho especificado.
|
||||
|
||||
--mount <Disk>
|
||||
Liga e monta um disco físico ou virtual em todas as distribuições do WSL 2.
|
||||
@ -478,7 +482,7 @@ Argumentos para gerir o Subsistema Windows para Linux:
|
||||
Especifica que <Disk> se refere a um disco rígido virtual.
|
||||
|
||||
--bare
|
||||
Liga o disco ao WSL 2, mas sem o montar.
|
||||
Liga o disco ao WSL2, mas sem o montar.
|
||||
|
||||
--name <Name>
|
||||
Monta o disco com um nome personalizado para o ponto de montagem.
|
||||
@ -493,7 +497,7 @@ Argumentos para gerir o Subsistema Windows para Linux:
|
||||
Índice da partição a montar. Se não for especificado, é predefinido para todo o disco.
|
||||
|
||||
--set-default-version <Version>
|
||||
Altera a versão de instalação predefinida para as novas distribuições.
|
||||
Altera a versão de instalação predefinida para novas distribuições.
|
||||
|
||||
--shutdown
|
||||
Termina imediatamente todas as distribuições em execução e o WSL 2
|
||||
@ -501,7 +505,7 @@ Argumentos para gerir o Subsistema Windows para Linux:
|
||||
|
||||
Opções:
|
||||
--force
|
||||
Terminar a máquina virtual WSL 2 mesmo que esteja a decorrer uma operação. Pode causar perda de dados.
|
||||
Termina a máquina virtual WSL 2 mesmo que esteja a decorrer uma operação. Pode causar perda de dados.
|
||||
|
||||
--status
|
||||
Mostra o estado do Subsistema Windows para Linux.
|
||||
@ -511,7 +515,7 @@ Argumentos para gerir o Subsistema Windows para Linux:
|
||||
Desmonta e desliga todos os discos se for chamado sem argumento.
|
||||
|
||||
--uninstall
|
||||
Desinstala o pacote do Subsistema Windows para Linux a partir deste computador.
|
||||
Desinstala o pacote do Subsistema Windows para Linux a partir deste computador.
|
||||
|
||||
--update
|
||||
Atualiza o pacote do Subsistema Windows para Linux.
|
||||
@ -527,7 +531,7 @@ Argumentos para gerir distribuições no Subsistema Windows para Linux:
|
||||
|
||||
--export <Distro> <FileName> [Options]
|
||||
Exporta a distribuição para um ficheiro tar.
|
||||
O nome de ficheiro pode ser - para Stdout.
|
||||
O nome de ficheiro pode ser - para stdout.
|
||||
|
||||
Opções:
|
||||
--format <Format>
|
||||
@ -542,11 +546,11 @@ Argumentos para gerir distribuições no Subsistema Windows para Linux:
|
||||
Especifica a versão a utilizar para a nova distribuição.
|
||||
|
||||
--vhd
|
||||
Especifica que o ficheiro fornecido é um ficheiro .vhdx e não um ficheiro tar.
|
||||
Esta operação faz uma cópia do ficheiro .vhdx na localização de instalação especificada.
|
||||
Especifica que o ficheiro fornecido é um ficheiro .vhd ou .vhdx, não um ficheiro tar.
|
||||
Esta operação faz uma cópia do ficheiro VHD na localização de instalação especificada.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importa o ficheiro .vhdx especificado como nova distribuição.
|
||||
Importa o ficheiro VHD especificado como nova distribuição.
|
||||
Este disco rígido virtual tem de ser formatado com o tipo de sistema de ficheiros ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
@ -622,7 +626,7 @@ Hora da criação: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>O vhd de módulos kernel personalizados em {} não foi encontrado: "{}".</value>
|
||||
<value>O VHD dos módulos kernel personalizados em {} não foi encontrado: "{}".</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ O sistema poderá ter de ser reiniciado para que as alterações possam ter efei
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>O ficheiro especificado tem de ter a extensão de ficheiro. vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>O ficheiro especificado tem de ter a extensão de ficheiro {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>O ficheiro especificado tem de ter a extensão de ficheiro {} ou {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>O VmSwitch "{}" não foi encontrado. Interruptores disponíveis: {}</value>
|
||||
@ -787,6 +796,10 @@ Para obter informações, visite https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Ocorreram erros durante o arranque do WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Falha ao iniciar a sessão de utilizador do sistema para "{}". Consulte o journalctl para obter mais detalhes.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Abrir o EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ A reverter para a rede NAT.</value>
|
||||
<value>Ver Documentos</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Não foi possível concluir a operação porque o vhdx está atualmente a ser utilizado. Para forçar o WSL a parar a utilização: wsl.exe --shutdown</value>
|
||||
<value>Não foi possível concluir a operação porque o VHD está atualmente a ser utilizado. Para forçar o WSL a parar, utilize: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ A reverter para a rede NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>O vhdx disperso é suportado apenas em WSL2.</value>
|
||||
<value>O VHD disperso é suportado apenas no WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>A execução do WSL como sistema local não é suportada.</value>
|
||||
@ -1047,7 +1060,7 @@ A reverter para a rede NAT.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Este parece ser um ficheiro VHDX. Utilize --vhd para importar um ficheiro VHDX em vez de tar.</value>
|
||||
<value>Este parece ser um ficheiro VHD. Utilize --vhd para importar um ficheiro VHD em vez de um tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1100,7 +1113,7 @@ Código de erro: {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>O suporte a VHD disperso está atualmente desativado devido a potenciais danos nos dados.
|
||||
Para forçar uma distribuição a utilizar um VHD disperso, execute:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Também pode aceder a mais Opções remotas do VS Code através da paleta de com
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Funcionalidades Opcionais</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Ativar relatórios de página</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>A predefinição "true" permite ao Windows recuperar memória não utilizada alocada à máquina virtual WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Declaração de Privacidade</value>
|
||||
</data>
|
||||
|
||||
@ -328,6 +328,9 @@
|
||||
--msal-proxy-path
|
||||
Отображение пути к прокси-приложению MSAL.
|
||||
|
||||
--vm-id
|
||||
Отображение ИД виртуальной машины WSL.
|
||||
|
||||
--version
|
||||
Отображение версии пакета WSL.
|
||||
|
||||
@ -335,6 +338,7 @@
|
||||
Не печатать новую строку.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -456,7 +460,7 @@
|
||||
Указывает версию, используемую для нового дистрибутива.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Указывает размер диска для хранения распределения.
|
||||
Указывает размер диска для хранения дистрибутива.
|
||||
|
||||
--web-download
|
||||
Скачать дистрибутив из Интернета вместо Microsoft Store.
|
||||
@ -469,7 +473,7 @@
|
||||
Переместить дистрибутив в новое местоположение.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Задать для VHDX дистрибутива значение "разреженный", чтобы обеспечить автоматическое освобождение дискового пространства.
|
||||
Задать для VHD дистрибутива значение "разреженный", чтобы обеспечить автоматическое освобождение дискового пространства.
|
||||
|
||||
--set-default-user <Username>
|
||||
Задать пользователя по умолчанию для дистрибутива.
|
||||
@ -549,11 +553,11 @@
|
||||
Указывает версию, используемую для нового дистрибутива.
|
||||
|
||||
--vhd
|
||||
Указывает, что предоставленный файл является VHDX-файлом, а не TAR-файлом.
|
||||
Эта операция создает копию VHDX-файла в указанном расположении установки.
|
||||
Указывает, что предоставленный файл является файлом VHD или VHDX, а не TAR-файлом.
|
||||
Эта операция создает копию VHD-файла в указанном расположении установки.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Импортирует указанный VHDX-файл в качестве нового дистрибутива.
|
||||
Импортирует указанный VHD-файл в качестве нового дистрибутива.
|
||||
Этот виртуальный жесткий диск должен быть отформатирован с типом файловой системы ext4.
|
||||
|
||||
--list, -l [параметры]
|
||||
@ -707,8 +711,13 @@
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Указанный файл должен иметь расширение VHDX-файла.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Указанный файл должен иметь расширение файла {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Указанный файл должен иметь расширение файла {} или {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>VmSwitch "{}" не найден. Доступные коммутаторы: {}</value>
|
||||
@ -794,6 +803,10 @@
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Произошли ошибки при запуске WSL</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Не удалось запустить сеанс системного пользователя для "{}". Дополнительные сведения см. в journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Открыть EventViewer</value>
|
||||
</data>
|
||||
@ -997,7 +1010,7 @@
|
||||
<value>Просмотреть документы</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Не удалось завершить операцию, так как VHDX сейчас используется. Чтобы принудительно остановить использование WSL, выполните команду wsl.exe --shutdown</value>
|
||||
<value>Не удалось завершить операцию, так как VHD сейчас используется. Чтобы принудительно остановить использование WSL, выполните команду wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1005,7 +1018,7 @@
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Разреженный VHDX поддерживается только в WSL2.</value>
|
||||
<value>Разреженный VHD поддерживается только в WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Запуск WSL в виде локальной системы не поддерживается.</value>
|
||||
@ -1054,7 +1067,7 @@
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Похоже, это VHDX-файл. Используйте --vhd для импорта VHDX вместо TAR.</value>
|
||||
<value>Похоже, это VHD-файл. Используйте --vhd для импорта VHD вместо tar.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1099,7 +1112,7 @@
|
||||
<value>Не удалось запросить сетевой режим</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>Настраиваемые модули ядра были предоставлены без указания настраиваемого ядра. Дополнительные https://aka.ms/wslcustomkernel см. в https://aka.ms/wslcustomkernel.</value>
|
||||
<value>Модули настроенного ядра предоставлены без указания настроенного ядра. Дополнительные сведения см. на странице https://aka.ms/wslcustomkernel.</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>Из-за текущей проблемы совместимости с клиентом глобального безопасного доступа туннелирование DNS отключено.</value>
|
||||
@ -1107,7 +1120,7 @@
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Поддержка разреженного VHD в настоящее время отключена из-за возможного повреждения данных.
|
||||
Чтобы принудительно использовать разреженный VHD в дистрибутиве, выполните команду:
|
||||
wsl.exe --manage <имя_дистрибутива> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1694,12 +1707,6 @@ wsl.exe --manage <имя_дистрибутива> --set-sparse --allow-un
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Дополнительные функции</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Включить отчеты о страницах</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Значение ИСТИНА по умолчанию позволяет Windows освободить неиспользуемую память, выделенную виртуальной машине WSL 2.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Заявление о конфиденциальности</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Aktivera den valfria komponenten "Windows-undersystem för Linux" för att anvä
|
||||
--msal-proxy-path
|
||||
Visa sökvägen till MSAL-proxyprogrammet.
|
||||
|
||||
--vm-id
|
||||
Visa ID för virtuell WSL-dator.
|
||||
|
||||
--version
|
||||
Visa WSL-paketets version.
|
||||
|
||||
@ -328,6 +331,7 @@ Aktivera den valfria komponenten "Windows-undersystem för Linux" för att anvä
|
||||
Skriv inte ut en ny rad.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -372,16 +376,16 @@ Användning:
|
||||
</data>
|
||||
<data name="MessageWslUsage" xml:space="preserve">
|
||||
<value>Copyright (c) Microsoft Corporation. Med ensamrätt.
|
||||
Sekretessinformation för den här produkten finns på https://aka.ms/privacy.
|
||||
Sekretessinformation om den här produkten finns i https://aka.ms/privacy.
|
||||
|
||||
Användning: wsl.exe [Argument] [Options...] [CommandLine]
|
||||
Usage: wsl.exe [Argument] [Options...] [CommandLine]
|
||||
|
||||
Argument för att köra Linux-binärfiler:
|
||||
|
||||
Om ingen kommandorad anges startar wsl.exe standardgränssnittet.
|
||||
|
||||
--exec, -e <CommandLine>
|
||||
Kör det angivna kommandot utan att använda standardgränssnittet för Linux.
|
||||
Kör det angivna kommandot utan.
|
||||
|
||||
--shell-type <standard|login|none>
|
||||
Kör det angivna kommandot med den angivna gränssnittstypen.
|
||||
@ -392,18 +396,18 @@ Argument för att köra Linux-binärfiler:
|
||||
Alternativ:
|
||||
--cd <Directory>
|
||||
Anger den angivna katalogen som aktuell arbetskatalog.
|
||||
Om ~ används kommer Linux-användarens hemsökväg att användas. Om sökvägen börjar
|
||||
med ett /-tecken tolkas det som en absolut Linux-sökväg.
|
||||
Om ~ används används Linux-användarens hemsökväg. Om sökvägen börjar
|
||||
med ett/-tecken tolkas den som en absolut Linux-sökväg.
|
||||
Annars måste värdet vara en absolut Windows-sökväg.
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
Kör den angivna distributionen.
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
Kör det angivna distributions-ID:t.
|
||||
Kör det angivna distributions-ID:t.
|
||||
|
||||
--user, -u <UserName>
|
||||
Kör som den angivna användaren.
|
||||
Kör som angiven användare.
|
||||
|
||||
--system
|
||||
Startar ett gränssnitt för systemdistributionen.
|
||||
@ -416,9 +420,9 @@ Argument för att hantera Windows-undersystem för Linux:
|
||||
--debug-shell
|
||||
Öppna ett WSL2-felsökningsgränssnitt i diagnostiksyfte.
|
||||
|
||||
--install [Distro] [Options...]
|
||||
Installera ett Windows-undersystem för Linux distribution.
|
||||
Om du vill ha en lista över giltiga distributioner använder du 'wsl.exe --list --online'.
|
||||
--install [Distro] [Alternativ...]
|
||||
Installera en Windows-undersystem för Linux distribution.
|
||||
Använd 'wsl.exe --list --online' för en lista över giltiga distributioner'.
|
||||
|
||||
Alternativ:
|
||||
--enable-wsl1
|
||||
@ -437,10 +441,10 @@ Argument för att hantera Windows-undersystem för Linux:
|
||||
Ange installationssökvägen för distributionen.
|
||||
|
||||
--name <Name>
|
||||
Ange ett namn på distributionen.
|
||||
Ange namnet på distributionen.
|
||||
|
||||
--no-distribution
|
||||
Installera endast de valfria komponenter som krävs, ingen distribution installeras.
|
||||
Installera endast nödvändiga valfria komponenter, installerar inte någon distribution.
|
||||
|
||||
--no-launch, -n
|
||||
Starta inte distributionen efter installationen.
|
||||
@ -449,23 +453,23 @@ Argument för att hantera Windows-undersystem för Linux:
|
||||
Anger vilken version som ska användas för den nya distributionen.
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
Anger storleken på disken för att lagra distributionen.
|
||||
Anger storleken på den disk som distributionen ska lagras på.
|
||||
|
||||
--web-download
|
||||
Ladda ned distributionen från Internet i stället för Microsoft Store.
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
Ändrar distributionsspecifika alternativ.
|
||||
Distributionsalternativ för ändringar.
|
||||
|
||||
Alternativ:
|
||||
--move <Location>
|
||||
Flytta distributionen till en ny plats.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Ange att vhdx-distributionen ska vara sparsam, vilket gör att diskutrymmet automatiskt kan frigöras.
|
||||
Ange att den virtuella hårddisken för distribution ska vara sparse, vilket gör att diskutrymmet kan frigöras automatiskt.
|
||||
|
||||
--set-default-user <Username>
|
||||
Ange standardanvändaren för distributionen.
|
||||
Ange standardanvändaren för fördelningen.
|
||||
|
||||
--resize <MemoryString>
|
||||
Ändra storlek på disken för fördelningen till den angivna storleken.
|
||||
@ -484,57 +488,57 @@ Argument för att hantera Windows-undersystem för Linux:
|
||||
Montera disken med ett anpassat namn för monteringspunkten.
|
||||
|
||||
--type <Type>
|
||||
Filsystem som ska användas vid montering av en disk, om inget anges används ext4 som standard.
|
||||
Filsystem som ska användas vid montering av en disk, om inget standardvärde anges till ext4.
|
||||
|
||||
--options <Options>
|
||||
Fler monteringsalternativ.
|
||||
Ytterligare monteringsalternativ.
|
||||
|
||||
--partition <Index>
|
||||
Index för partitionen som ska monteras, om inget anges är standardvärdet hela disken.
|
||||
Index för partitionen som ska monteras, om det inte anges som standard för hela disken.
|
||||
|
||||
--set-default-version <Version>
|
||||
Ändrar standardinstallationsversionen för nya distributioner.
|
||||
|
||||
--shutdown
|
||||
Avslutar omedelbart alla distributioner som körs och WSL 2
|
||||
den virtuella datorn med förenklat verktyg.
|
||||
Avslutar omedelbart alla distributioner som körs och den virtuella WSL 2-
|
||||
lightweight utility virtual machine.
|
||||
|
||||
Alternativ:
|
||||
--force
|
||||
Avsluta den virtuella WSL 2-datorn även om en åtgärd pågår. Kan orsaka dataförlust.
|
||||
|
||||
--status
|
||||
Visa statusen för Windows-undersystem för Linux.
|
||||
Visa status för Windows-undersystem för Linux.
|
||||
|
||||
--unmount [Disk]
|
||||
Demonterar och kopplar bort en disk från alla WSL2-distributioner.
|
||||
Demonterar och kopplar bort alla diskar om de anropas utan argument.
|
||||
Demonterar och kopplar bort alla diskar om det anropas utan argument.
|
||||
|
||||
--uninstall
|
||||
Avinstallerar Windows-undersystem för Linux-paketet från den här datorn.
|
||||
Avinstallerar Windows-undersystem för Linux paketet från den här datorn.
|
||||
|
||||
--update
|
||||
Uppdatera Windows-undersystem för Linux-paketet.
|
||||
|
||||
Alternativ:
|
||||
--pre-release
|
||||
Ladda ned en förhandsversion om den är tillgänglig.
|
||||
Ladda ned en förhandsversion om tillgänglig.
|
||||
|
||||
--version, -v
|
||||
Övrig versionsinformation.
|
||||
Visa versionsinformation.
|
||||
|
||||
Argument för att hantera distributioner i Windows-undersystem för Linux:
|
||||
Arguments for managing Argument för att hantera distributioner i Windows-undersystem för Linux:
|
||||
|
||||
--export <Distro> <FileName> [Options]
|
||||
Exporterar fördelningen till en TAR-fil.
|
||||
Exporterar distributionen till en tar-fil.
|
||||
Filnamnet kan vara - för stdout.
|
||||
|
||||
Alternativ:
|
||||
--format <Format>
|
||||
Anger exportformatet. Värden som stöds: tar, tar.gz, tar.xz, vhd.
|
||||
S Anger exportformatet. Värden som stöds: tar, tar.gz, tar.xz, vhd.
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
Importerar den angivna tar-filen som en ny distribution.
|
||||
Importerar den angivna tar-filen som en ny distribution.
|
||||
Filnamnet kan vara - för stdin.
|
||||
|
||||
Alternativ:
|
||||
@ -542,20 +546,20 @@ Argument för att hantera distributioner i Windows-undersystem för Linux:
|
||||
Anger vilken version som ska användas för den nya distributionen.
|
||||
|
||||
--vhd
|
||||
Anger att den angivna filen är en VHDX-fil, inte en TAR-fil.
|
||||
Den här åtgärden gör en kopia av VHDX-filen på den angivna installationsplatsen.
|
||||
Anger att den angivna filen är en VHD- eller VHDX-fil, inte en tar-fil.
|
||||
ThDen här åtgärden gör en kopia av VHD-filen på den angivna installationsplatsen.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Importerar den angivna VHDX-filen som en ny distribution.
|
||||
Den här virtuella hårddisken måste vara formaterad med filsystemtypen ext4.
|
||||
Importerar den angivna VHD-filen som en ny distribution.
|
||||
Den här virtuella hårddisken måste formateras med filsystemtypen ext4.
|
||||
|
||||
--list, -l [Options]
|
||||
Listar distributioner.
|
||||
Visar distributioner.
|
||||
|
||||
Alternativ:
|
||||
--all
|
||||
Lista alla distributioner, inklusive distributioner som
|
||||
håller på att installeras eller avinstalleras.
|
||||
Lista alla distributioner, inklusive distributioner som
|
||||
håller på att installeras eller avinstalleras.
|
||||
|
||||
--running
|
||||
Lista endast distributioner som körs för närvarande.
|
||||
@ -570,10 +574,10 @@ Argument för att hantera distributioner i Windows-undersystem för Linux:
|
||||
Visar en lista över tillgängliga distributioner för installation med 'wsl.exe --install'.
|
||||
|
||||
--set-default, -s <Distro>
|
||||
Anger fördelningen som standard.
|
||||
Anger fördelningen som standard
|
||||
|
||||
--set-version <Distro> <Version>
|
||||
Ändrar den angivna distributionens version.
|
||||
Ändrar versionen av den angivna distributionen.
|
||||
|
||||
--terminate, -t <Distro>
|
||||
Avslutar den angivna distributionen.
|
||||
@ -700,8 +704,13 @@ Systemet kan behöva startas om så att ändringarna kan börja gälla.</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Den angivna filen måste ha filnamnstillägget .vhdx.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Den angivna filen måste ha filnamnstillägget {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Den angivna filen måste ha filnamnstillägget {} eller {}.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>Det gick inte att hitta VmSwitch {}. Tillgängliga växlar: {}</value>
|
||||
@ -787,6 +796,10 @@ Mer information finns på https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>Fel uppstod vid WSL-start</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>Det gick inte att starta systemanvändarsessionen för {}. Mer information finns i journalctl.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>Öppna EventViewer</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ Mer information finns på https://aka.ms/wslinstall</value>
|
||||
<value>Visa dokument</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>Det gick inte att slutföra åtgärden eftersom vhdx används för närvarande. Så här tvingar du WSL att sluta använda: wsl.exe --shutdown</value>
|
||||
<value>Det gick inte att slutföra åtgärden eftersom den virtuella hårddisken används för närvarande. Så här tvingar du WSL att sluta använda: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ Mer information finns på https://aka.ms/wslinstall</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Sparse vhdx stöds endast på WSL2.</value>
|
||||
<value>Sparse VHD stöds endast på WSL2.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>Det finns inte stöd för att köra WSL som lokalt system.</value>
|
||||
@ -1047,7 +1060,7 @@ Mer information finns på https://aka.ms/wslinstall</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Det här ser ut som en VHDX-fil. Använd --vhd för att importera en VHDX i stället för en tjära.</value>
|
||||
<value>Det här ser ut som en VHD-fil. Använd --vhd för att importera en virtuell hårddisk i stället för en tjära.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1100,7 +1113,7 @@ Felkod: {}</value>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Stöd för dynamiskt expanderbar VHD är för närvarande inaktiverat på grund av potentiell datakorruption.
|
||||
Om du vill tvinga en distribution att använda en dynamiskt expanderbar VHD kör du:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Du kan också komma åt fler VS Code-fjärralternativ via kommandopaletten inom
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>Valfria funktioner</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Aktivera sidrapportering</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Med standardinställningen true kan Windows frigöra oanvänt minne som allokerats till den virtuella WSL 2-datorn.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Sekretesspolicy</value>
|
||||
</data>
|
||||
|
||||
@ -321,6 +321,9 @@ Lütfen WSL1'i kullanmak için "Windows Subsystem for Linux" isteğe bağlı bil
|
||||
--msal-proxy-path
|
||||
MSAL ara sunucu uygulamasının yolunu görüntüle.
|
||||
|
||||
--vm-id
|
||||
WSL VM kimliğini görüntüle.
|
||||
|
||||
--version
|
||||
WSL paketinin sürümünü görüntüle.
|
||||
|
||||
@ -328,6 +331,7 @@ Lütfen WSL1'i kullanmak için "Windows Subsystem for Linux" isteğe bağlı bil
|
||||
Yeni bir satır yazdırma.</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -462,7 +466,7 @@ Linux için Windows Alt Sistemini yönetmeyi sağlayan bağımsız değişkenler
|
||||
Dağıtımı yeni bir konuma taşır.
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
Dağıtım vhdx'inin aralıklı olacak şekilde ayarlar ve böylece disk alanının otomatik olarak geri kazanılmasını sağlar.
|
||||
Dağıtım VHD'inin aralıklı olacak şekilde ayarlar ve böylece disk alanının otomatik olarak geri kazanılmasını sağlar.
|
||||
|
||||
--set-default-user <Username>
|
||||
Dağıtımın varsayılan kullanıcısını ayarlar.
|
||||
@ -533,7 +537,7 @@ Linux için Windows Alt Sistemi'nde dağıtımı yönetmek için bağımsız de
|
||||
--format <Format>
|
||||
Dışarı aktarma biçimini belirtir. Desteklenen değerler: tar, tar.gz, vhd.
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [Options]
|
||||
--import <Distro> <InstallLocation> <FileName> [Seçenekler]
|
||||
Belirtilen tar dosyasını yeni bir dağıtım olarak içeri aktarır.
|
||||
Dosya adı - for stdin olabilir.
|
||||
|
||||
@ -542,11 +546,11 @@ Linux için Windows Alt Sistemi'nde dağıtımı yönetmek için bağımsız de
|
||||
Yeni dağıtım için kullanılacak sürümü belirtir.
|
||||
|
||||
--vhd
|
||||
Sağlanan dosyanın tar dosyası değil, .vhdx dosyası olduğunu belirtir.
|
||||
Bu işlem, belirtilen yükleme konumunda .vhdx dosyasının bir kopyasını oluşturur.
|
||||
Sağlanan dosyanın tar dosyası değil, .vhd veya .vhdx dosyası olduğunu belirtir.
|
||||
Bu işlem, belirtilen yükleme konumunda VHD dosyasının bir kopyasını oluşturur.
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
Belirtilen .vhdx dosyasını yeni bir dağıtım olarak içeri aktarır.
|
||||
Belirtilen VHD dosyasını yeni bir dağıtım olarak içeri aktarır.
|
||||
Bu sanal sabit diskin ext4 dosya sistemi türüyle biçimlendirilmesi gerekir.
|
||||
|
||||
--list, -l [Seçenekler]
|
||||
@ -622,7 +626,7 @@ Derleme zamanı: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomKernelModulesNotFound" xml:space="preserve">
|
||||
<value>{} içinde vhd özel çekirdek modülleri bulunamadı: '{}'.</value>
|
||||
<value>{} içinde özel çekirdek modülleri VHD'si bulunamadı: '{}'.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCustomSystemDistroError" xml:space="preserve">
|
||||
@ -700,8 +704,13 @@ Değişikliklerin etkili olması için sistemin yeniden başlatılması gerekebi
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>Belirtilen dosyanın .vhdx dosya uzantısı olmalıdır.</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>Belirtilen dosyada {} dosya uzantısı olmalıdır.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>Belirtilen dosyada {} veya {} dosya uzantısı olmalıdır.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>'{}' VmSwitch bulunamadı. Uygun anahtarlar: {}</value>
|
||||
@ -787,6 +796,10 @@ Bilgi için lütfen şu adresi ziyaret https://aka.ms/wslinstall</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>WSL başlatılırken hatalar oluştu</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>'{}' için sistemli kullanıcı oturumu başlatılamadı. Daha fazla ayrıntı için journalctl'ye bakın.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>EventViewer'ı aç</value>
|
||||
</data>
|
||||
@ -990,7 +1003,7 @@ NAT ağ bağlantısına geri dönülüyor.</value>
|
||||
<value>Belgeleri Göster</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>vhdx şu anda kullanımda olduğundan işlem tamamlanamadı. WSL'yi durmaya zorlamak için şunu kullanın: wsl.exe --shutdown</value>
|
||||
<value>İşlem tamamlanamadı çünkü VHD şu anda kullanımda. WSL'yi durmaya zorlamak için şu komutu kullanın: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -998,7 +1011,7 @@ NAT ağ bağlantısına geri dönülüyor.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>Seyrek vhdx yalnızca WSL2'de desteklenir.</value>
|
||||
<value>Seyrek VHD yalnızca WSL2'de desteklenir.</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>WSL'nin yerel sistem olarak çalıştırılması desteklenmez.</value>
|
||||
@ -1047,7 +1060,7 @@ NAT ağ bağlantısına geri dönülüyor.</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>Bu bir VHDX dosyası gibi görünüyor. Katran --vhd VHDX içeri aktarın.</value>
|
||||
<value>Bu bir VHD dosyası gibi görünüyor. Katran --vhd VHD içeri aktarın.</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
@ -1098,9 +1111,9 @@ Hata kodu: {}</value>
|
||||
<value>Küresel Güvenli Erişim İstemcisiyle ilgili mevcut bir uyumluluk sorunu nedeniyle DNS Tünelleme devre dışı bırakıldı.</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>Seyrek VHD desteği olası veri bozulması nedeniyle şu anda devre dışıdır.
|
||||
<value>Seyrek VHD desteği olası veri bozulması nedeniyle şu anda devre dışı bırakılmıştır.
|
||||
Bir dağıtımı seyrek VHD kullanmaya zorlamak için lütfen şu komutu çalıştırın:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1687,12 +1700,6 @@ Ayrıca VS Code'un içindeki komut paleti aracılığıyla daha fazla VS Code Re
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>İsteğe Bağlı Özellikler</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>Sayfa raporlamayı etkinleştir</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>Varsayılan true ayarı, Windows'un WSL 2 sanal makinesine ayrılan kullanılmayan belleği geri kazanmasını sağlar.</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>Gizlilik Bildirimi</value>
|
||||
</data>
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDiskAlreadyAttached" xml:space="preserve">
|
||||
<value>该磁盘“{}”已连接。</value>
|
||||
<value>磁盘“{}”已连接。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDiskAlreadyMounted" xml:space="preserve">
|
||||
@ -327,6 +327,9 @@
|
||||
--msal-proxy-path
|
||||
显示 MSAL 代理应用程序的路径。
|
||||
|
||||
--vm-id
|
||||
显示 WSL VM ID。
|
||||
|
||||
--version
|
||||
显示 WSL 包的版本。
|
||||
|
||||
@ -334,6 +337,7 @@
|
||||
不要打印换行符。</value>
|
||||
<comment>{Locked="--networking-mode
|
||||
"}{Locked="--msal-proxy-path
|
||||
"}{Locked="--vm-id
|
||||
"}{Locked="--version
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -403,16 +407,16 @@
|
||||
否则,该值必须是绝对 Windows 路径。
|
||||
|
||||
--distribution, -d <DistroName>
|
||||
运行指定的分发版。
|
||||
运行指定的发行版。
|
||||
|
||||
--distribution-id <DistroGuid>
|
||||
运行指定的分发版 ID。
|
||||
运行指定的发行版 ID。
|
||||
|
||||
--user, -u <UserName>
|
||||
以指定用户身份运行。
|
||||
|
||||
--system
|
||||
为系统分发版启动 shell。
|
||||
为系统发行版启动 shell。
|
||||
|
||||
用于管理适用于 Linux 的 Windows 子系统的参数:
|
||||
|
||||
@ -423,61 +427,61 @@
|
||||
出于诊断目的打开 WSL2 调试 shell。
|
||||
|
||||
--install [Distro] [Options...]
|
||||
安装适用于 Linux 的 Windows 子系统分发版。
|
||||
有关有效分发版的列表,请使用 'wsl.exe --list --online'。
|
||||
安装适用于 Linux 的 Windows 子系统发行版。
|
||||
有关有效发行版的列表,请使用 'wsl.exe --list --online'。
|
||||
|
||||
选项:
|
||||
--enable-wsl1
|
||||
启用 WSL1 支持。
|
||||
|
||||
--fixed-vhd
|
||||
创建固定大小的磁盘来存储分发版。
|
||||
创建固定大小的磁盘来存储发行版。
|
||||
|
||||
--from-file <Path>
|
||||
从本地文件安装分发版。
|
||||
从本地文件安装发行版。
|
||||
|
||||
--legacy
|
||||
使用旧分发版清单。
|
||||
使用旧发行版清单。
|
||||
|
||||
--location <Location>
|
||||
设置分发版的安装路径。
|
||||
设置发行版的安装路径。
|
||||
|
||||
--name <Name>
|
||||
设置分发版的名称。
|
||||
设置发行版的名称。
|
||||
|
||||
--no-distribution
|
||||
仅安装所需的可选组件,不安装分发版。
|
||||
仅安装所需的可选组件,不安装发行版。
|
||||
|
||||
--no-launch, -n
|
||||
安装后不要启动分发版。
|
||||
安装后不要启动发行版。
|
||||
|
||||
--version <Version>
|
||||
指定要用于新分发的版本。
|
||||
|
||||
--vhd-size <MemoryString>
|
||||
指定用于存储分发版的磁盘的大小。
|
||||
指定用于存储发行版的磁盘的大小。
|
||||
|
||||
--web-download
|
||||
从 Internet 而不是 Microsoft Store 下载分发版。
|
||||
从 Internet 而不是 Microsoft Store 下载发行版。
|
||||
|
||||
--manage <Distro> <Options...>
|
||||
更改发行版特定选项。
|
||||
|
||||
选项:
|
||||
--move <Location>
|
||||
将分发版移到新位置。
|
||||
将发行版移到新位置。
|
||||
|
||||
--set-sparse, -s <true|false>
|
||||
将发行版的 vhdx 设置为稀疏,从而允许自动回收磁盘空间。
|
||||
将发行版的 VHD 设置为稀疏,从而允许自动回收磁盘空间。
|
||||
|
||||
--set-default-user <Username>
|
||||
设置分发版的默认用户。
|
||||
设置发行版的默认用户。
|
||||
|
||||
--resize <MemoryString>
|
||||
将分发版的磁盘大小调整为指定大小。
|
||||
将发行版的磁盘大小调整为指定大小。
|
||||
|
||||
--mount <Disk>
|
||||
在所有 WSL 2 分发版中附加和装载物理磁盘或虚拟磁盘。
|
||||
在所有 WSL 2 发行版中附加和装载物理磁盘或虚拟磁盘。
|
||||
|
||||
选项:
|
||||
--vhd
|
||||
@ -499,10 +503,10 @@
|
||||
要装载的分区的索引(如果未指定)默认为整个磁盘。
|
||||
|
||||
--set-default-version <Version>
|
||||
更改新分发版的默认安装版本。
|
||||
更改新发行版的默认安装版本。
|
||||
|
||||
--shutdown
|
||||
立即终止所有正在运行的分发版和 WSL 2
|
||||
立即终止所有正在运行的发行版和 WSL 2
|
||||
轻型实用工具虚拟机。
|
||||
|
||||
选项:
|
||||
@ -513,7 +517,7 @@
|
||||
显示适用于 Linux 的 Windows 子系统状态。
|
||||
|
||||
--unmount [磁盘]
|
||||
从所有 WSL2 分发版中卸载和分离磁盘。
|
||||
从所有 WSL2 发行版中卸载和分离磁盘。
|
||||
如果在没有参数的情况下调用,则卸载和分离所有磁盘。
|
||||
|
||||
--uninstall
|
||||
@ -529,10 +533,10 @@
|
||||
--version, -v
|
||||
显示版本信息。
|
||||
|
||||
用于在适用于 Linux 的 Windows 子系统中管理分发版的参数:
|
||||
用于在适用于 Linux 的 Windows 子系统中管理发行版的参数:
|
||||
|
||||
--export <Distro> <FileName> [选项]
|
||||
将分发版导出到 tar 文件。
|
||||
将发行版导出到 tar 文件。
|
||||
文件名可以是 - for stdout。
|
||||
|
||||
选项:
|
||||
@ -540,7 +544,7 @@
|
||||
指定导出格式。支持的值: tar、tar.gz、tar.xz、vhd。
|
||||
|
||||
--import <Distro> <InstallLocation> <FileName> [选项]
|
||||
将指定的 tar 文件作为新分发版导入。
|
||||
将指定的 tar 文件作为新发行版导入。
|
||||
文件名可以是 - for stdin。
|
||||
|
||||
选项:
|
||||
@ -548,44 +552,44 @@
|
||||
指定要用于新分发的版本。
|
||||
|
||||
--vhd
|
||||
指定所提供的文件是 .vhdx 文件,而不是 tar 文件。
|
||||
此操作在指定的安装位置创建 .vhdx 文件的副本。
|
||||
指定所提供的文件是 .vhd 还是 .vhdx 文件,而不是 tar 文件。
|
||||
此操作在指定的安装位置创建 VHD 文件的副本。
|
||||
|
||||
--import-in-place <Distro> <FileName>
|
||||
将指定的 .vhdx 文件作为新分发版导入。
|
||||
将指定的 VHD 文件作为新发行版导入。
|
||||
必须使用 ext4 文件系统类型设置此虚拟硬盘的格式。
|
||||
|
||||
--list, -l [选项]
|
||||
列出分发版。
|
||||
列出发行版。
|
||||
|
||||
选项:
|
||||
--all
|
||||
列出所有分发版,包括当前
|
||||
正在安装或卸载的分发版。
|
||||
列出所有发行版,包括当前
|
||||
正在安装或卸载的发行版。
|
||||
|
||||
--running
|
||||
仅列出当前正在运行的分发版。
|
||||
仅列出当前正在运行的发行版。
|
||||
|
||||
--quiet, -q
|
||||
仅显示分发版名称。
|
||||
仅显示发行版名称。
|
||||
|
||||
--verbose, -v
|
||||
显示有关所有分发版的详细信息。
|
||||
显示有关所有发行版的详细信息。
|
||||
|
||||
--online, -o
|
||||
显示适合通过 'wsl --install' 安装的可用分发版列表。
|
||||
显示适合通过 'wsl --install' 安装的可用发行版列表。
|
||||
|
||||
--set-default, -s <Distro>
|
||||
将分布版设置为默认值。
|
||||
|
||||
--set-version <Distro> <Version>
|
||||
更改指定分发版的版本。
|
||||
更改指定发行版的版本。
|
||||
|
||||
--terminate, -t <Distro>
|
||||
终止指定的分发版。
|
||||
终止指定的发行版。
|
||||
|
||||
--unregister <Distro>
|
||||
取消注册分发版并删除根文件系统。</value>
|
||||
取消注册发行版并删除根文件系统。</value>
|
||||
<comment>{Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system
|
||||
"}{Locked="--help
|
||||
"}{Locked="--debug-shell
|
||||
@ -679,7 +683,7 @@ Windows: {}</value>
|
||||
<value>正在导入,这可能需要几分钟时间。</value>
|
||||
</data>
|
||||
<data name="GuiApplicationsDisabled" xml:space="preserve">
|
||||
<value>通过 {} 或 /etc/wsl.conf 禁用 GUI 应用程序支持。</value>
|
||||
<value>已通过 {} 或 /etc/wsl.conf 禁用 GUI 应用程序支持。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageCheckingForUpdates" xml:space="preserve">
|
||||
@ -706,8 +710,13 @@ Windows: {}</value>
|
||||
<comment>{Locked="--install "}{Locked="--no-distribution
|
||||
"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresVhdxFileExtension" xml:space="preserve">
|
||||
<value>指定的文件必须具有 .vhdx 文件扩展名。</value>
|
||||
<data name="MessageRequiresFileExtension" xml:space="preserve">
|
||||
<value>指定的文件必须具有 {} 文件扩展名。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageRequiresFileExtensions" xml:space="preserve">
|
||||
<value>指定的文件必须具有 {} 或 {} 文件扩展名。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageVmSwitchNotFound" xml:space="preserve">
|
||||
<value>找不到 VmSwitch“{}”。可用开关: {}</value>
|
||||
@ -793,6 +802,10 @@ Windows: {}</value>
|
||||
<data name="MessageWarningDuringStartup" xml:space="preserve">
|
||||
<value>WSL 启动期间出错</value>
|
||||
</data>
|
||||
<data name="MessageSystemdUserSessionFailed" xml:space="preserve">
|
||||
<value>无法启动“{}”的系统用户会话。有关详细信息,请参阅 journalctl。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageOpenEventViewer" xml:space="preserve">
|
||||
<value>打开 EventViewer</value>
|
||||
</data>
|
||||
@ -809,11 +822,11 @@ Windows: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidInstallDistributionName" xml:space="preserve">
|
||||
<value>分发名称无效:“{}”。</value>
|
||||
<value>无效分发名称:“{}”。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageUsingLegacyDistribution" xml:space="preserve">
|
||||
<value>使用旧分发注册。请考虑改用基于 tar 的分发。</value>
|
||||
<value>正在使用旧分发注册。请考虑改用基于 tar 的分发。</value>
|
||||
</data>
|
||||
<data name="MessageLegacyDistributionVersionArgNotSupported" xml:space="preserve">
|
||||
<value>旧分发注册不支持 --version 参数。</value>
|
||||
@ -851,7 +864,7 @@ Windows: {}</value>
|
||||
<value>此计算机上不支持嵌套虚拟化。</value>
|
||||
</data>
|
||||
<data name="MessageFailedToCreateNetworkEndpoint" xml:space="preserve">
|
||||
<value>无法创建地址为“{}”的网络终结点,已分配新地址:“{}”</value>
|
||||
<value>无法创建地址为“{}”的网络端点,已分配新地址:“{}”</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageFailedToCreateNetwork" xml:space="preserve">
|
||||
@ -892,10 +905,10 @@ Windows: {}</value>
|
||||
<value>检测到 IPv6 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 IPv6。</value>
|
||||
</data>
|
||||
<data name="MessageProxyLoopbackV6SettingsDropped" xml:space="preserve">
|
||||
<value>检测到 localhost IPv6 代理配置,但未镜像到 WSL 中。WSL 不支持 localhost IPv6 代理。</value>
|
||||
<value>检测到 localhost IPv6 代理配置,但未镜像到 WSL。WSL 不支持 localhost IPv6 代理。</value>
|
||||
</data>
|
||||
<data name="MessageProxyUnexpectedSettingsDropped" xml:space="preserve">
|
||||
<value>尝试解析代理设置时发生意外错误,代理设置未镜像到 WSL 中。</value>
|
||||
<value>尝试解析代理设置时发生意外错误,代理设置未镜像到 WSL。</value>
|
||||
</data>
|
||||
<data name="MessageRegistryError" xml:space="preserve">
|
||||
<value>访问注册表时出错。路径:“{}”。错误: {}</value>
|
||||
@ -934,14 +947,14 @@ Windows: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}{Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDebugShellDisabled" xml:space="preserve">
|
||||
<value>计算机策略禁用调试 shell。</value>
|
||||
<value>计算机策略已禁用调试 shell。</value>
|
||||
</data>
|
||||
<data name="MessageWSLMountDisabled" xml:space="preserve">
|
||||
<value>wsl.exe --mount 被计算机策略禁用。</value>
|
||||
<comment>{Locked="--mount "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageWSL1Disabled" xml:space="preserve">
|
||||
<value>WSL1 被计算机策略禁用。</value>
|
||||
<value>计算机策略已禁用 WSL1。</value>
|
||||
</data>
|
||||
<data name="MessageUpgradeToWSL2" xml:space="preserve">
|
||||
<value>请运行“wsl.exe --set-version {} 2”以升级到 WSL2。</value>
|
||||
@ -996,7 +1009,7 @@ Windows: {}</value>
|
||||
<value>请参阅文档</value>
|
||||
</data>
|
||||
<data name="MessageVhdInUse" xml:space="preserve">
|
||||
<value>无法完成该操作,因为 vhdx 当前正在使用中。若要强制 WSL 停止使用: wsl.exe --shutdown</value>
|
||||
<value>无法完成该操作,因为 VHD 当前正在使用中。强制 WSL 停止使用: wsl.exe --shutdown</value>
|
||||
<comment>{Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageInvalidBoolean" xml:space="preserve">
|
||||
@ -1004,7 +1017,7 @@ Windows: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageSparseVhdWsl2Only" xml:space="preserve">
|
||||
<value>仅 WSL2 支持稀疏 vhdx。</value>
|
||||
<value>仅 WSL2 支持稀疏 VHD。</value>
|
||||
</data>
|
||||
<data name="MessageLocalSystemNotSupported" xml:space="preserve">
|
||||
<value>不支持将 WSL 作为本地系统运行。</value>
|
||||
@ -1053,11 +1066,11 @@ Windows: {}</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessagePassVhdFlag" xml:space="preserve">
|
||||
<value>这似乎是 VHDX 文件。使用 --vhd 导入 VHDX 而不是 tar。</value>
|
||||
<value>这看起来像一个 VHD 文件。使用 --vhd 导入 VHD,而不是导入 tar。</value>
|
||||
<comment>{Locked="--vhd "}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDistroStoreInstallFailed" xml:space="preserve">
|
||||
<value>未能从以下Microsoft Store安装 {}: {}
|
||||
<value>未能从 Microsoft Store 安装 {}:{}
|
||||
正在尝试 Web 下载...</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -1069,7 +1082,7 @@ Windows: {}</value>
|
||||
</data>
|
||||
<data name="MessageInstallationCorrupted" xml:space="preserve">
|
||||
<value>WSL 安装似乎已损坏 (错误代码: {})。
|
||||
按任意键修复 WSL,或 CTRL-C 取消。
|
||||
按任意键修复 WSL,或按 CTRL-C 取消。
|
||||
此提示将在 60 秒后超时。</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
@ -1098,15 +1111,15 @@ Windows: {}</value>
|
||||
<value>查询网络模式失败</value>
|
||||
</data>
|
||||
<data name="MessageMismatchedKernelModulesError" xml:space="preserve">
|
||||
<value>提供了自定义内核模块,但没有指定自定义内核。有关详细信息,请参阅 https://aka.ms/wslcustomkernel。</value>
|
||||
<value>提供的自定义内核模块未指定自定义内核。有关详细信息,请参阅 https://aka.ms/wslcustomkernel。</value>
|
||||
</data>
|
||||
<data name="MessageDnsTunnelingDisabled" xml:space="preserve">
|
||||
<value>由于当前与全球安全访问客户端的兼容性问题,DNS 隧道被禁用。</value>
|
||||
<value>由于当前与全局安全访问客户端的兼容性问题,DNS 隧道被禁用。</value>
|
||||
</data>
|
||||
<data name="MessageSparseVhdDisabled" xml:space="preserve">
|
||||
<value>由于潜在的数据损坏,目前已禁用稀疏 VHD 支持。
|
||||
若要强制分发使用稀疏 vhd,请运行:
|
||||
wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
要强制发行版使用稀疏 VHD,请运行:
|
||||
wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe</value>
|
||||
<comment>{Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageDrvfsMountFailed" xml:space="preserve">
|
||||
@ -1114,7 +1127,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="MessageFstabMountFailed" xml:space="preserve">
|
||||
<value>使用装载 -a 处理 /etc/fstab 失败。</value>
|
||||
<value>使用 mount -a 处理 /etc/fstab 失败。</value>
|
||||
</data>
|
||||
<data name="MessageReadOnlyDistro" xml:space="preserve">
|
||||
<value>装载分发磁盘时出错,该磁盘作为回退以只读方式装载。
|
||||
@ -1125,7 +1138,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<comment>{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_ErrorTryAgainLater.Text" xml:space="preserve">
|
||||
<value>出现错误。请稍后再试一次。</value>
|
||||
<value>出现错误。请稍后再试。</value>
|
||||
</data>
|
||||
<data name="Settings_AboutPageTitle.Text" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
@ -1147,28 +1160,28 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>自动内存回收</value>
|
||||
</data>
|
||||
<data name="Settings_AutoMemoryReclaim.Description" xml:space="preserve">
|
||||
<value>检测到空闲 CPU 使用情况后自动释放缓存内存。为缓存的即时释放设置为慢速释放和 dropcache。</value>
|
||||
<value>检测到空闲 CPU 使用情况后自动释放缓存内存。设为 gradual 缓慢释放;设为 dropcache 迅速释放。</value>
|
||||
</data>
|
||||
<data name="Settings_AutoMemoryReclaimComboBox.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>自动内存回收。</value>
|
||||
</data>
|
||||
<data name="Settings_AutoMemoryReclaimComboBox.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>检测到空闲 CPU 使用情况后自动释放缓存内存。为缓存的即时释放设置为慢速释放和 dropcache。</value>
|
||||
<value>检测到空闲 CPU 使用情况后自动释放缓存内存。设为 gradual 缓慢释放;设为 dropcache 迅速释放。</value>
|
||||
</data>
|
||||
<data name="Settings_AutoProxy.Header" xml:space="preserve">
|
||||
<value>已启用自动代理</value>
|
||||
</data>
|
||||
<data name="Settings_AutoProxy.Description" xml:space="preserve">
|
||||
<value>使 WSL 能够使用 Windows 的 HTTP 代理信息。</value>
|
||||
<value>允许 WSL 使用 Windows 的 HTTP 代理信息。</value>
|
||||
</data>
|
||||
<data name="Settings_AutoProxyToggleSwitch.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>已启用自动代理。</value>
|
||||
</data>
|
||||
<data name="Settings_AutoProxyToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>使 WSL 能够使用 Windows 的 HTTP 代理信息。</value>
|
||||
<value>允许 WSL 使用 Windows 的 HTTP 代理信息。</value>
|
||||
</data>
|
||||
<data name="Settings_BestEffortDNS.Header" xml:space="preserve">
|
||||
<value>尽力进行 DNS 分析</value>
|
||||
<value>尽力进行 DNS 解析</value>
|
||||
</data>
|
||||
<data name="Settings_BestEffortDNS.Description" xml:space="preserve">
|
||||
<value>仅当 wsl2.dnsTunneling 设置为 true 时适用。设置为 true 时,Windows 将从 DNS 请求中提取问题并尝试解决该问题,忽略未知记录。</value>
|
||||
@ -1178,7 +1191,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>尽力进行 DNS 分析。</value>
|
||||
</data>
|
||||
<data name="Settings_BestEffortDNSToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>仅当 wsl2.dnsTunneling 设置为 true 时才适用。设置为 true 时,Windows 将从 DNS 请求中提取问题并尝试解决该问题,忽略未知记录。</value>
|
||||
<value>仅当 wsl2.dnsTunneling 设置为 true 时适用。设置为 true 时,Windows 将从 DNS 请求中提取问题并尝试解决该问题,忽略未知记录。</value>
|
||||
</data>
|
||||
<data name="Settings_CustomKernelPath.Header" xml:space="preserve">
|
||||
<value>自定义内核</value>
|
||||
@ -1217,7 +1230,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>浏览发行版</value>
|
||||
</data>
|
||||
<data name="Settings_CustomSystemDistroPathDescription.Text" xml:space="preserve">
|
||||
<value>指定 VHD 的路径,该路径将作为自定义系统发行版加载,主要用于为 WSL 中的 GUI 应用提供电源。[在此处详细了解系统发行]。</value>
|
||||
<value>指定一个 VHD 路径,该 VHD 将作为自定义系统发行版加载,主要用于在 WSL 中运行 GUI 应用。[在此处详细了解系统发行]。</value>
|
||||
<comment>{Locked="["}{Locked="]"}The text in between the delimiters [ ] is made into a hyperlink in code, and the delimiters are removed</comment>
|
||||
</data>
|
||||
<data name="Settings_CustomSystemDistroPathDescription.NavigateUri" xml:space="preserve">
|
||||
@ -1228,7 +1241,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>自定义系统发行版</value>
|
||||
</data>
|
||||
<data name="Settings_CustomSystemDistroPathTextBox.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>指定 VHD 的路径,该路径将作为自定义系统发行版加载,主要用于为 WSL 中的 GUI 应用提供电源。</value>
|
||||
<value>指定一个 VHD 路径,该 VHD 将作为自定义系统发行版加载,主要用于在 WSL 中运行 GUI 应用。</value>
|
||||
</data>
|
||||
<data name="Settings_DebugConsole.Header" xml:space="preserve">
|
||||
<value>启用调试控制台</value>
|
||||
@ -1246,7 +1259,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>默认 VHD 大小</value>
|
||||
</data>
|
||||
<data name="Settings_DefaultVHDSize.Description" xml:space="preserve">
|
||||
<value>对于新创建的分发,可扩展 WSL 虚拟硬盘 (VHD) 的默认最大大小。</value>
|
||||
<value>为可扩展的 WSL 虚拟硬盘指定的默认最大大小 (VHD),仅用于新创建的分发。</value>
|
||||
</data>
|
||||
<data name="Settings_DefaultVHDSizeResetButton.Content" xml:space="preserve">
|
||||
<value>重设大小</value>
|
||||
@ -1255,7 +1268,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>默认 VHD 大小</value>
|
||||
</data>
|
||||
<data name="Settings_DefaultVHDSizeTextBox.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>为可扩展的 WSL 虚拟硬盘指定的默认最大大小 (VHD) 仅用于新创建的分发。</value>
|
||||
<value>为可扩展的 WSL 虚拟硬盘指定的默认最大大小 (VHD),仅用于新创建的分发。</value>
|
||||
</data>
|
||||
<data name="Settings_DeveloperPageTitle.Text" xml:space="preserve">
|
||||
<value>开发人员</value>
|
||||
@ -1271,20 +1284,20 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>更改 DrvFS 模式</value>
|
||||
</data>
|
||||
<data name="Settings_DrvFSMode.Description" xml:space="preserve">
|
||||
<value>更改 WSL 中的跨 OS 文件访问实施。</value>
|
||||
<value>更改 WSL 中的跨系统文件访问实现。</value>
|
||||
</data>
|
||||
<data name="Settings_DNSProxy.Header" xml:space="preserve">
|
||||
<value>已启用 DNS 代理</value>
|
||||
</data>
|
||||
<data name="Settings_DNSProxy.Description" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为 NAT 时适用。布尔值通知 WSL 将 Linux 中的 DNS 服务器配置为主机上的 NAT。设置为 false 将镜像从 Windows 到 Linux 的 DNS 服务器。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为 NAT 时适用。用于通知 WSL 将 Linux 中的 DNS 服务器配置为主机上的 NAT 的布尔值。设置为 false 将把 Windows 中 DNS 服务器镜像到 Linux。</value>
|
||||
<comment>{Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_DNSProxyToggleSwitch.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>已启用 DNS 代理。</value>
|
||||
</data>
|
||||
<data name="Settings_DNSProxyToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为 NAT 时适用。布尔值通知 WSL 将 Linux 中的 DNS 服务器配置为主机上的 NAT。设置为 false 将镜像从 Windows 到 Linux 的 DNS 服务器。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为 NAT 时适用。用于通知 WSL 将 Linux 中的 DNS 服务器配置为主机上的 NAT 的布尔值。设置为 false 将把 Windows 中 DNS 服务器镜像到 Linux。</value>
|
||||
</data>
|
||||
<data name="Settings_DNSTunneling.Header" xml:space="preserve">
|
||||
<value>已启用 DNS 隧道</value>
|
||||
@ -1345,20 +1358,20 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>主机地址环回</value>
|
||||
</data>
|
||||
<data name="Settings_HostAddressLoopback.Description" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像时适用。设置为 True 时,将允许容器通过分配给主机的 IP 地址连接到主机或主机连接到容器。请注意,始终可以使用 127.0.0.1 环回地址 - 此选项还允许使用所有额外分配的本地 IP 地址。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像(mirrored)时适用。设置为 True 时,将允许容器与主机通过分配给主机的 IP 地址互相连接。请注意,始终可以使用 127.0.0.1 环回地址 - 此选项还允许使用所有额外分配的本地 IP 地址。</value>
|
||||
<comment>{Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_HostAddressLoopbackToggleSwitch.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>主机地址环回。</value>
|
||||
</data>
|
||||
<data name="Settings_HostAddressLoopbackToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像时适用。设置为 True 时,将允许容器通过分配给主机的 IP 地址连接到主机或主机连接到容器。请注意,始终可以使用 127.0.0.1 环回地址 - 此选项还允许使用所有额外分配的本地 IP 地址。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像(mirrored)时适用。设置为 True 时,将允许容器与主机通过分配给主机的 IP 地址互相连接。请注意,始终可以使用 127.0.0.1 环回地址 - 此选项还允许使用所有额外分配的本地 IP 地址。</value>
|
||||
</data>
|
||||
<data name="Settings_IgnoredPorts.Header" xml:space="preserve">
|
||||
<value>忽略的端口</value>
|
||||
</data>
|
||||
<data name="Settings_IgnoredPorts.Description" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像时适用。指定 Linux 应用程序可以绑定到的端口,不会在 Windows 中自动转发或考虑这些端口。应以逗号分隔的列表格式化,例如: 3000,9000,9090。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像(mirrored)时适用。指定 Linux 应用程序可以绑定的端口,这些端口不会 Windows 自动转发或考虑。应采用逗号分隔的列表格式,例如:3000,9000,9090。</value>
|
||||
<comment>{Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_IgnoredPortsResetButton.Content" xml:space="preserve">
|
||||
@ -1368,13 +1381,13 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>忽略的端口</value>
|
||||
</data>
|
||||
<data name="Settings_IgnoredPortsTextBox.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像时适用。指定 Linux 应用程序可以绑定到的端口,不会在 Windows 中自动转发或考虑这些端口。应以逗号分隔的列表格式化,例如 3000、9000、9090。</value>
|
||||
<value>仅当 wsl2.networkingMode 设置为镜像(mirrored)时适用。指定 Linux 应用程序可以绑定的端口,这些端口不会在 Windows 中自动转发或考虑。应采用逗号分隔的列表格式,例如 3000,9000,9090。</value>
|
||||
</data>
|
||||
<data name="Settings_InitialAutoProxyTimeout.Header" xml:space="preserve">
|
||||
<value>初始自动代理超时</value>
|
||||
</data>
|
||||
<data name="Settings_InitialAutoProxyTimeout.Description" xml:space="preserve">
|
||||
<value>仅当 wsl2.autoProxy 设置为 true 时适用。配置在启动 WSL 容器时 WSL 等待检索 HTTP 代理信息) (毫秒。如果在此时间后解析代理设置,则必须重新启动 WSL 实例才能使用检索到的代理设置。</value>
|
||||
<value>仅当 wsl2.autoProxy 设置为 true 时适用。配置启动 WSL 容器时 WSL 等待检索 HTTP 代理信息的时间(以毫秒计)。如果在此时间后解析到代理设置,则必须重新启动 WSL 实例才能使用检索到的代理设置。</value>
|
||||
<comment>{Locked="wsl2.autoProxy"}.wslconfig property key names should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_InitialAutoProxyTimeoutResetButton.Content" xml:space="preserve">
|
||||
@ -1384,25 +1397,25 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>初始自动代理超时</value>
|
||||
</data>
|
||||
<data name="Settings_InitialAutoProxyTimeoutTextBox.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>仅当 wsl2.autoProxy 设置为 true 时才适用。配置启动 WSL 容器时 WSL 等待检索 HTTP 代理信息的时间,以毫秒为单位。如果在此时间后解析代理设置,则必须重新启动 WSL 实例才能使用检索到的代理设置。</value>
|
||||
<value>仅当 wsl2.autoProxy 设置为 true 时才适用。配置启动 WSL 容器时 WSL 等待检索 HTTP 代理信息的时间,以毫秒为单位。如果在此时间后解析到代理设置,则必须重新启动 WSL 实例才能使用检索到的代理设置。</value>
|
||||
</data>
|
||||
<data name="Settings_KernelCommandLine.Header" xml:space="preserve">
|
||||
<value>内核命令行</value>
|
||||
</data>
|
||||
<data name="Settings_KernelCommandLine.Description" xml:space="preserve">
|
||||
<value>其他内核命令行参数。</value>
|
||||
<value>额外的内核命令行参数。</value>
|
||||
</data>
|
||||
<data name="Settings_LocalhostForwarding.Header" xml:space="preserve">
|
||||
<value>启用 localhost 转发</value>
|
||||
</data>
|
||||
<data name="Settings_LocalhostForwarding.Description" xml:space="preserve">
|
||||
<value>布尔值,指定是否应通过 localhost:port 从主机连接到 WSL 2 VM 中通配符或 localhost 的端口。</value>
|
||||
<value>布尔值,用于指定 WSL 2 VM 中绑定通配符或本地主机的端口是否应允许主机通过`localhost:端口号`进行连接。</value>
|
||||
</data>
|
||||
<data name="Settings_LocalhostForwardingToggleSwitch.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>启用 localhost 转发。</value>
|
||||
</data>
|
||||
<data name="Settings_LocalhostForwardingToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>一个布尔值,指定绑定到 WSL 2 VM 中的通配符或 localhost 的端口是否应可通过 localhost、colon、port 从主机连接。</value>
|
||||
<value>布尔值,用于指定 WSL 2 VM 中绑定通配符或本地主机的端口是否应允许主机通过`localhost:端口号`进行连接。</value>
|
||||
</data>
|
||||
<data name="Settings_MegabyteStringFormat" xml:space="preserve">
|
||||
<value>{0} MB</value>
|
||||
@ -1432,13 +1445,13 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>启用嵌套虚拟化</value>
|
||||
</data>
|
||||
<data name="Settings_NestedVirtualization.Description" xml:space="preserve">
|
||||
<value>用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 内运行。</value>
|
||||
<value>用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套虚拟机能够在 WSL 2 内运行。</value>
|
||||
</data>
|
||||
<data name="Settings_NestedVirtualizationToggleSwitch.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>启用嵌套虚拟化。</value>
|
||||
</data>
|
||||
<data name="Settings_NestedVirtualizationToggleSwitch.AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 内运行。</value>
|
||||
<value>用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套虚拟机能够在 WSL 2 内运行。</value>
|
||||
</data>
|
||||
<data name="Settings_NetworkingMode.Header" xml:space="preserve">
|
||||
<value>网络模式</value>
|
||||
@ -1459,7 +1472,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>你可以跨操作系统处理所有文件!</value>
|
||||
</data>
|
||||
<data name="Settings_OOBECrossOSFileAccess.Title" xml:space="preserve">
|
||||
<value>跨 OS 文件访问</value>
|
||||
<value>跨系统文件访问</value>
|
||||
</data>
|
||||
<data name="Settings_OOBECrossOSFileAccess_WindowsFromLinuxTitle.Text" xml:space="preserve">
|
||||
<value>从 Linux 访问 Windows 文件</value>
|
||||
@ -1502,7 +1515,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>WSL 还包括一种称为镜像模式的新网络模式,该模式添加了 IPv6 支持等高级功能,并且能够访问局域网中的网络应用程序。</value>
|
||||
</data>
|
||||
<data name="Settings_OOBECrossOSFileAccessLink.Content" xml:space="preserve">
|
||||
<value>了解有关跨 OS 文件访问的详细信息</value>
|
||||
<value>了解有关跨系统文件访问的详细信息</value>
|
||||
</data>
|
||||
<data name="Settings_OOBECrossOSFileAccessLink.NavigateUri" xml:space="preserve">
|
||||
<value>https://aka.ms/wslfilesystems</value>
|
||||
@ -1539,7 +1552,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<comment>{Locked="-l -o"}Command line arguments and file names should not be translated</comment>
|
||||
</data>
|
||||
<data name="Settings_OOBEDistroManagement_InstallNamedDistrosTitle.Text" xml:space="preserve">
|
||||
<value>安装命名的 WSL 发行版命令</value>
|
||||
<value>安装指定名称的 WSL 发行版命令</value>
|
||||
</data>
|
||||
<data name="Settings_OOBEDistroManagement_InstallNamedDistrosSample.Text" xml:space="preserve">
|
||||
<value>'wsl.exe --install <DistroName>'</value>
|
||||
@ -1555,11 +1568,11 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<data name="Settings_OOBEDockerDesktopIntegration.Description" xml:space="preserve">
|
||||
<value>Docker Desktop 非常适合与 WSL 配合使用,可帮助你使用 Linux 容器进行开发。
|
||||
|
||||
将 Docker Desktop 与 WSL 配合使用的一些优点是:
|
||||
一些将 Docker Desktop 与 WSL 配合使用的优点:
|
||||
|
||||
• 可以使用相同的 Docker 守护程序和映像在 WSL 或 Windows 中运行 Docker 命令。
|
||||
• 可以使用 WSL 中的 Windows 驱动器自动装载功能在 Windows 和 Linux 之间无缝共享文件和文件夹。
|
||||
• 由于 WSL 的互操作性,你可以使用首选的 Windows 工具和编辑器处理 Linux 代码和文件,反之亦然。</value>
|
||||
• 由于 WSL 的互操作性,你可以使用偏好的 Windows 工具和编辑器处理 Linux 代码和文件,反之亦然。</value>
|
||||
</data>
|
||||
<data name="Settings_OOBEDockerDesktopIntegration.Title" xml:space="preserve">
|
||||
<value>Docker Desktop 集成</value>
|
||||
@ -1693,12 +1706,6 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<data name="Settings_OptionalFeaturesPageTitle.Text" xml:space="preserve">
|
||||
<value>可选功能</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Header" xml:space="preserve">
|
||||
<value>启用页面报告</value>
|
||||
</data>
|
||||
<data name="Settings_PageReporting.Description" xml:space="preserve">
|
||||
<value>默认的 true 设置使 Windows 能够回收分配给 WSL 2 虚拟机的未使用的内存。</value>
|
||||
</data>
|
||||
<data name="Settings_PrivacyPolicyLink.Content" xml:space="preserve">
|
||||
<value>隐私声明</value>
|
||||
</data>
|
||||
@ -1747,7 +1754,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>关于</value>
|
||||
</data>
|
||||
<data name="Settings_Shell_Developer.Content" xml:space="preserve">
|
||||
<value>开发商</value>
|
||||
<value>开发人员</value>
|
||||
</data>
|
||||
<data name="Settings_Shell_DistroManagement.Content" xml:space="preserve">
|
||||
<value>发行版管理</value>
|
||||
@ -1795,7 +1802,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>新增功能</value>
|
||||
</data>
|
||||
<data name="Settings_Shell_WorkingAcrossFileSystems.Content" xml:space="preserve">
|
||||
<value>跨文件系统工作</value>
|
||||
<value>跨系统文件访问</value>
|
||||
</data>
|
||||
<data name="Settings_IssuesLink.Content" xml:space="preserve">
|
||||
<value>问题</value>
|
||||
@ -1850,7 +1857,7 @@ wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe</value>
|
||||
<value>启用 VirtIO</value>
|
||||
</data>
|
||||
<data name="Settings_Virtio.Description" xml:space="preserve">
|
||||
<value>使用 virtiofs 而不是计划 9 来访问主机文件,加快速度。</value>
|
||||
<value>使用 virtiofs 而不是 plan 9 来访问主机文件,加快速度。</value>
|
||||
</data>
|
||||
<data name="Settings_Virtio9p.Header" xml:space="preserve">
|
||||
<value>启用 Virtio 9p</value>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -242,7 +242,6 @@
|
||||
<File Id="RdpWinStlHelper.dll" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/RdpWinStlHelper.dll" />
|
||||
<?endif?>
|
||||
<File Id="wsldevicehost.dll" Source="${BIN}/wsldevicehost.dll" />
|
||||
<File Id="lxutil.dll" Source="${BIN}/lxutil.dll" />
|
||||
<File Id="${WSLG_TS_PLUGIN_DLL}" Source="${BIN}/${WSLG_TS_PLUGIN_DLL}" />
|
||||
|
||||
<!-- MSRDC Plugin registration -->
|
||||
@ -397,6 +396,14 @@
|
||||
Execute="deferred"
|
||||
/>
|
||||
|
||||
<CustomAction Id="FinalizeInstall"
|
||||
Impersonate="no"
|
||||
BinaryRef="wslinstall.dll"
|
||||
DllEntry="WslFinalizeInstallation"
|
||||
Return="check"
|
||||
Execute="deferred"
|
||||
/>
|
||||
|
||||
<CustomAction Id="DeprovisionMsix"
|
||||
Impersonate="no"
|
||||
BinaryRef="wslinstall.dll"
|
||||
@ -533,6 +540,8 @@
|
||||
<Custom Action="CalculateWslSettingsProtocolIds" Before="WriteRegistryValues" Condition='(not REMOVE~="ALL")' />
|
||||
<?endif?>
|
||||
|
||||
<Custom Action="FinalizeInstall" After="PublishFeatures"/>
|
||||
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Don't show a 'Modify' button in settings since there is nothing to modify -->
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<add key="WSL" value="https://pkgs.dev.azure.com/shine-oss/wsl/_packaging/WslDependencies/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
<!-- Override any User and Computer NuGet package settings to gurantee
|
||||
<!-- Override any User and Computer NuGet package settings to guarantee
|
||||
Project only (above sources) are enabled and the only ones present. -->
|
||||
<clear />
|
||||
</disabledPackageSources>
|
||||
|
||||
@ -6,28 +6,26 @@
|
||||
<package id="Microsoft.Direct3D.Linux" version="1.611.1-81528511" targetFramework="native" />
|
||||
<package id="Microsoft.DXCore.Linux.amd64fre" version="10.0.26100.1-240331-1435.ge-release" targetFramework="native" />
|
||||
<package id="Microsoft.DXCore.Linux.arm64fre" version="10.0.26100.1-240331-1435.ge-release" targetFramework="native" />
|
||||
<package id="Microsoft.Extensions.Hosting" version="9.0.4" />
|
||||
<package id="Microsoft.Extensions.Hosting" version="10.0.0" />
|
||||
<package id="Microsoft.Identity.MSAL.WSL.Proxy" version="0.1.1" />
|
||||
<package id="Microsoft.NETCore.App.Runtime.win-arm64" version="9.0.4" />
|
||||
<package id="Microsoft.NETCore.App.Runtime.win-x64" version="9.0.4" />
|
||||
<package id="Microsoft.RemoteDesktop.Client.MSRDC.SessionHost" version="1.2.6228" />
|
||||
<package id="Microsoft.Taef" version="10.97.250317001" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.250325.1" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.SDK.NET.Ref" version="10.0.26100.57" />
|
||||
<package id="Microsoft.WindowsAppSDK" version="1.7.250401001" />
|
||||
<package id="Microsoft.NETCore.App.Runtime.win-arm64" version="10.0.0" />
|
||||
<package id="Microsoft.NETCore.App.Runtime.win-x64" version="10.0.0" />
|
||||
<package id="Microsoft.RemoteDesktop.Client.MSRDC.SessionHost" version="1.2.6676" />
|
||||
<package id="Microsoft.Taef" version="10.100.251104001" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.251108.1" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.SDK.NET.Ref" version="10.0.26100.81" />
|
||||
<package id="Microsoft.WindowsAppSDK" version="1.8.251106002" />
|
||||
<package id="Microsoft.WSL.bsdtar" version="0.0.2-2" />
|
||||
<package id="Microsoft.WSL.Dependencies.amd64fre" version="10.0.27820.1000-250318-1700.rs-base2-hyp" targetFramework="native" />
|
||||
<package id="Microsoft.WSL.Dependencies.arm64fre" version="10.0.27820.1000-250318-1700.rs-base2-hyp" targetFramework="native" />
|
||||
<package id="Microsoft.WSL.DeviceHost" version="1.0.0-20241009.4" />
|
||||
<package id="Microsoft.WSL.Kernel" version="6.6.87.1-1" targetFramework="native" />
|
||||
<package id="Microsoft.WSL.DeviceHost" version="1.0.0-20251202.1" />
|
||||
<package id="Microsoft.WSL.Kernel" version="6.6.114.1-1" targetFramework="native" />
|
||||
<package id="Microsoft.WSL.LinuxSdk" version="1.20.0" targetFramework="native" />
|
||||
<package id="Microsoft.WSL.LxUtil.amd64fre" version="10.0.26100.1-240331-1435.ge-release" />
|
||||
<package id="Microsoft.WSL.LxUtil.arm64fre" version="10.0.26100.1-240331-1435.ge-release" />
|
||||
<package id="Microsoft.WSL.TestDistro" version="2.4.8-116" />
|
||||
<package id="Microsoft.WSLg" version="1.0.66" />
|
||||
<package id="Microsoft.WSL.TestDistro" version="2.5.7-47" />
|
||||
<package id="Microsoft.WSLg" version="1.0.71" />
|
||||
<package id="Microsoft.Xaml.Behaviors.WinUI.Managed" version="3.0.0" />
|
||||
<package id="StrawberryPerl" version="5.28.0.1" />
|
||||
<package id="StrawberryPerl" version="5.32.1.1" />
|
||||
<package id="vswhere" version="3.1.7" />
|
||||
<package id="WinUIEx" version="2.5.1" />
|
||||
<package id="WinUIEx" version="2.9.0" />
|
||||
<package id="Wix" version="5.0.2" />
|
||||
</packages>
|
||||
|
||||
@ -118,7 +118,7 @@ try
|
||||
return;
|
||||
}
|
||||
|
||||
// Stop tracking the request, irrespective of the DNS response being succesfully sent
|
||||
// Stop tracking the request, irrespective of the DNS response being successfully sent
|
||||
const auto removeDnsRequest = wil::scope_exit([&] { m_udpRequests.erase(dnsClientIdentifier.DnsClientId); });
|
||||
|
||||
sockaddr_in& remoteAddr = it->second;
|
||||
|
||||
@ -103,7 +103,7 @@ void DnsTunnelingChannel::ReceiveLoop() noexcept
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the message type from the the message header
|
||||
// Get the message type from the message header
|
||||
switch (message->MessageType)
|
||||
{
|
||||
case LxGnsMessageDnsTunneling:
|
||||
|
||||
@ -53,7 +53,7 @@ Interface GnsEngine::OpenAdapterImpl(const GUID& id)
|
||||
if (adapterId.has_value() && adapterId.value() == id)
|
||||
{
|
||||
interfaceName = e.path().filename().string();
|
||||
// Special case _wlanxx interfaces: look for the the wlanxx version instead.
|
||||
// Special case _wlanxx interfaces: look for the wlanxx version instead.
|
||||
if (interfaceName.compare(0, 5, "_wlan") == 0)
|
||||
{
|
||||
continue;
|
||||
|
||||
@ -77,7 +77,9 @@ void SecCompDispatcher::Run()
|
||||
for (;;)
|
||||
{
|
||||
if (!wait_for_fd(m_notifyFd.get(), POLLIN))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Clear the buffers to make the 5.15 kernel happy.
|
||||
notification_buffer.clear();
|
||||
|
||||
@ -24,10 +24,11 @@ WslDistributionConfig::WslDistributionConfig(const char* configFilePath)
|
||||
|
||||
std::vector<ConfigKey> keys = {
|
||||
ConfigKey(c_ConfigAutoMountOption, AutoMount),
|
||||
ConfigKey("automount.root", DrvFsPrefix),
|
||||
ConfigKey(c_ConfigAutoMountRoot, DrvFsPrefix),
|
||||
ConfigKey("automount.options", DrvFsOptions),
|
||||
ConfigKey(c_ConfigMountFsTabOption, MountFsTab),
|
||||
ConfigKey(c_ConfigLinkOsLibsOption, LinkOsLibs),
|
||||
ConfigKey("automount.cgroups", {{"v1", CGroupVersion::v1}, {"v2", CGroupVersion::v2}}, CGroup, nullptr),
|
||||
|
||||
ConfigKey("filesystem.umask", Umask),
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ constexpr auto c_ConfigPlan9EnabledOption = "fileServer.enabled";
|
||||
constexpr auto c_ConfigAppendGpuLibPathOption = "gpu.appendLibPath";
|
||||
constexpr auto c_ConfigGpuEnabledOption = "gpu.enabled";
|
||||
constexpr auto c_ConfigLinkOsLibsOption = "automount.ldconfig";
|
||||
constexpr auto c_ConfigAutoMountRoot = "automount.root";
|
||||
|
||||
struct WslDistributionConfig
|
||||
{
|
||||
@ -47,6 +48,12 @@ struct WslDistributionConfig
|
||||
WslDistributionConfig(WslDistributionConfig&&) = default;
|
||||
WslDistributionConfig& operator=(WslDistributionConfig&&) = default;
|
||||
|
||||
enum class CGroupVersion
|
||||
{
|
||||
v1 = 0,
|
||||
v2 = 1
|
||||
};
|
||||
|
||||
bool AutoMount = true;
|
||||
bool AutoUpdateTimezone = true;
|
||||
std::optional<std::string> BootCommand;
|
||||
@ -70,14 +77,16 @@ struct WslDistributionConfig
|
||||
bool AppendGpuLibPath = true;
|
||||
bool GpuEnabled = true;
|
||||
bool LinkOsLibs = true;
|
||||
CGroupVersion CGroup = CGroupVersion::v2;
|
||||
|
||||
//
|
||||
// Values not set by /etc/wsl.conf.
|
||||
//
|
||||
|
||||
bool GuiAppsEnabled = false;
|
||||
std::optional<int> FeatureFlags = 0;
|
||||
std::optional<LX_MINI_INIT_NETWORKING_MODE> NetworkingMode = LxMiniInitNetworkingModeNone;
|
||||
std::optional<int> FeatureFlags;
|
||||
std::optional<LX_MINI_INIT_NETWORKING_MODE> NetworkingMode;
|
||||
std::optional<std::string> VmId;
|
||||
|
||||
//
|
||||
// Global state for boot state. The socket is used to delay-start the distro init process
|
||||
|
||||
@ -678,12 +678,19 @@ Return Value:
|
||||
|
||||
//
|
||||
// Ensure that stdin represents the foreground process group.
|
||||
// N.B. It's possible that standard file descriptors point to tty while the process
|
||||
// has no controlling terminal (in case its parent called setsid() without opening a new terminal for instance).
|
||||
// See https://github.com/microsoft/WSL/issues/13173.
|
||||
//
|
||||
|
||||
auto processGroup = tcgetpgrp(0);
|
||||
if (processGroup < 0)
|
||||
{
|
||||
LOG_STDERR("tcgetpgrp failed");
|
||||
if (errno != ENOTTY)
|
||||
{
|
||||
LOG_STDERR("tcgetpgrp failed");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -778,7 +785,7 @@ Arguments:
|
||||
|
||||
MessageType - Supplies the message type.
|
||||
|
||||
Argc - Supplies the command line agrument count.
|
||||
Argc - Supplies the command line argument count.
|
||||
|
||||
Argv - Supplies the command line arguments.
|
||||
|
||||
|
||||
@ -15,19 +15,10 @@ Abstract:
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// Name of the WSL binfmt_misc intrepreter.
|
||||
// Name of the WSL binfmt_misc interpreter.
|
||||
//
|
||||
|
||||
#define LX_INIT_BINFMT_NAME "WSLInterop"
|
||||
|
||||
//
|
||||
// Name of the WSL 'late' binfmt_misc intrepreter.
|
||||
// This name is used by the wsl-binfmt systemd unit which
|
||||
// registers the interpreter a second time after systemd-binfmt to make sure
|
||||
// that wsl's interpreter is always registered last.
|
||||
//
|
||||
|
||||
#define LX_INIT_BINFMT_NAME_LATE "WSLInterop-late"
|
||||
#define BINFMT_MISC_MOUNT_TARGET "/proc/sys/fs/binfmt_misc"
|
||||
#define BINFMT_MISC_REGISTER_FILE BINFMT_MISC_MOUNT_TARGET "/register"
|
||||
#define BINFMT_INTEROP_REGISTRATION_STRING(Name) ":" Name ":M::MZ::" LX_INIT_PATH ":P"
|
||||
|
||||
@ -54,9 +54,6 @@ Abstract:
|
||||
#include <cstdarg>
|
||||
#include "lxinitshared.h"
|
||||
#include "defs.h"
|
||||
#include "retryshared.h"
|
||||
#include "socketshared.h"
|
||||
#include "stringshared.h"
|
||||
|
||||
#define ETC_FOLDER "/etc/"
|
||||
#define NAME_ENV "NAME"
|
||||
@ -151,6 +148,11 @@ auto LogImpl(int fd, const std::format_string<Args...>& format, Args&&... args)
|
||||
|
||||
#define FATAL_ERROR(str, ...) FATAL_ERROR_EX(1, str, ##__VA_ARGS__)
|
||||
|
||||
// Some of these files need the LOG_* macros.
|
||||
#include "retryshared.h"
|
||||
#include "socketshared.h"
|
||||
#include "stringshared.h"
|
||||
|
||||
int InitializeLogging(bool SetStderr, wil::LogFunction* ExceptionCallback = nullptr) noexcept;
|
||||
|
||||
void LogException(const char* Message, const char* Description) noexcept;
|
||||
|
||||
@ -73,8 +73,12 @@ Abstract:
|
||||
#define MOUNTS_DEVICE_FIELD 0
|
||||
#define MOUNTS_FSTYPE_FIELD 2
|
||||
|
||||
using wsl::linux::WslDistributionConfig;
|
||||
|
||||
static void ConfigApplyWindowsLibPath(const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
static bool CreateLoginSession(const wsl::linux::WslDistributionConfig& Config, const char* Username, uid_t Uid);
|
||||
|
||||
class RemoveMountAndEnvironmentOnScopeExit
|
||||
{
|
||||
public:
|
||||
@ -414,81 +418,18 @@ try
|
||||
return;
|
||||
}
|
||||
|
||||
bool success = false;
|
||||
auto sendResponse = wil::scope_exit([&]() { ResponseChannel.SendResultMessage<bool>(success); });
|
||||
|
||||
if (!Config.BootInit || Config.InitPid.value_or(0) != getpid())
|
||||
{
|
||||
LOG_ERROR("Unexpected LxInitMessageCreateLoginSession message");
|
||||
return;
|
||||
}
|
||||
|
||||
static std::mutex LoginSessionsLock;
|
||||
static std::map<uid_t, int> LoginSessions;
|
||||
|
||||
// Keep track of login sessions that have been created.
|
||||
LoginSessionsLock.lock();
|
||||
auto Unlock = wil::scope_exit([&]() { LoginSessionsLock.unlock(); });
|
||||
if (LoginSessions.contains(CreateSession->Uid))
|
||||
else
|
||||
{
|
||||
return;
|
||||
success = CreateLoginSession(Config, CreateSession->Buffer, CreateSession->Uid);
|
||||
}
|
||||
|
||||
// Symlink the content of the WSLG XDG runtime dir onto the user's runtime path and
|
||||
// create a login session to initialize PAM for the user.
|
||||
if (Config.GuiAppsEnabled)
|
||||
{
|
||||
auto* RuntimeDir = getenv(XDG_RUNTIME_DIR_ENV);
|
||||
if (RuntimeDir)
|
||||
{
|
||||
// Create a tmpfs mount point for the user directory.
|
||||
auto userFolder = std::format("/run/user/{}", CreateSession->Uid);
|
||||
UtilMount("tmpfs", userFolder.c_str(), "tmpfs", (MS_NOSUID | MS_NODEV | MS_NOEXEC), "mode=755");
|
||||
|
||||
// Create the directory structure for wslg's symlinks.
|
||||
for (const auto* e : {"/", "/dbus-1", "/dbus-1/service", "/pulse"})
|
||||
{
|
||||
auto target = userFolder + e;
|
||||
UtilMkdir(target.c_str(), 0777);
|
||||
if (chown(target.c_str(), CreateSession->Uid, CreateSession->Gid) < 0)
|
||||
{
|
||||
LOG_ERROR("chown({}, {}, {}) failed {}", target, CreateSession->Uid, CreateSession->Gid, errno);
|
||||
}
|
||||
}
|
||||
|
||||
// Create the actual symlinks.
|
||||
for (const auto* e : {"wayland-0", "wayland-0.lock", "pulse/native", "pulse/pid"})
|
||||
{
|
||||
auto link = std::format("{}/{}", userFolder, e);
|
||||
if (unlink(link.c_str()) < 0 && errno != ENOENT)
|
||||
{
|
||||
LOG_ERROR("unlink({}) failed {}", link, errno);
|
||||
}
|
||||
|
||||
auto target = RuntimeDir + std::string("/") + e;
|
||||
if (symlink(target.c_str(), link.c_str()) < 0)
|
||||
{
|
||||
LOG_ERROR("symlink({}, {}) failed {}", target, link, errno);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("getenv({}) failed {}", XDG_RUNTIME_DIR_ENV, errno);
|
||||
}
|
||||
}
|
||||
|
||||
int LoginLeader;
|
||||
const int Result = forkpty(&LoginLeader, nullptr, nullptr, nullptr);
|
||||
if (Result < 0)
|
||||
{
|
||||
LOG_ERROR("forkpty failed {}", errno);
|
||||
return;
|
||||
}
|
||||
else if (Result == 0)
|
||||
{
|
||||
Unlock.reset();
|
||||
_exit(execl("/bin/login", "/bin/login", "-f", CreateSession->Buffer, nullptr));
|
||||
}
|
||||
|
||||
LoginSessions.emplace(CreateSession->Uid, LoginLeader);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -497,6 +438,18 @@ try
|
||||
ResponseChannel.SendResultMessage<uint8_t>(static_cast<uint8_t>(Config.NetworkingMode.value()));
|
||||
break;
|
||||
|
||||
case LxInitMessageQueryVmId:
|
||||
{
|
||||
wsl::shared::MessageWriter<LX_INIT_QUERY_VM_ID> Response(LxInitMessageQueryVmId);
|
||||
if (Config.VmId.has_value())
|
||||
{
|
||||
Response.WriteString(Config.VmId.value());
|
||||
}
|
||||
|
||||
ResponseChannel.SendMessage<LX_INIT_QUERY_VM_ID>(Response.Span());
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
LOG_ERROR("unexpected message {}", Header->MessageType);
|
||||
break;
|
||||
@ -576,6 +529,11 @@ Return Value:
|
||||
|
||||
wsl::linux::WslDistributionConfig Config{CONFIG_FILE};
|
||||
|
||||
if (getenv(LX_WSL2_SYSTEM_DISTRO_SHARE_ENV) != nullptr)
|
||||
{
|
||||
Config.GuiAppsEnabled = true;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize the static entries.
|
||||
//
|
||||
@ -611,7 +569,7 @@ Return Value:
|
||||
// Initialize cgroups based on what the kernel supports.
|
||||
//
|
||||
|
||||
ConfigInitializeCgroups();
|
||||
ConfigInitializeCgroups(Config);
|
||||
|
||||
//
|
||||
// Attempt to register the NT interop binfmt extension.
|
||||
@ -891,8 +849,8 @@ try
|
||||
|
||||
//
|
||||
// Run the Plan 9 server. This requires a DrvFs mount for the socket file,
|
||||
// so either fstab or automount must be enabled to have a chance the mount
|
||||
// exists.
|
||||
// so either fstab or automount must be enabled to have a chance for the
|
||||
// mount to be available.
|
||||
//
|
||||
// N.B. Failure to start the server is non-fatal.
|
||||
//
|
||||
@ -910,7 +868,7 @@ try
|
||||
|
||||
if (WI_IsFlagSet(Config.FeatureFlags.value(), LxInitFeatureRootfsCompressed))
|
||||
{
|
||||
LOG_WARNING("{} root file system is compressed, performance may be severly impacted.", DistributionName);
|
||||
LOG_WARNING("{} root file system is compressed, performance may be severely impacted.", DistributionName);
|
||||
}
|
||||
|
||||
//
|
||||
@ -997,6 +955,7 @@ try
|
||||
//
|
||||
|
||||
if (Config.InitPid.has_value())
|
||||
{
|
||||
try
|
||||
{
|
||||
std::string LinkPath = std::format(WSL_INTEROP_SOCKET_FORMAT, WSL_TEMP_FOLDER, 1, WSL_INTEROP_SOCKET);
|
||||
@ -1005,7 +964,8 @@ try
|
||||
LOG_ERROR("symlink({}, {}) failed {}", InteropServer.Path(), LinkPath.c_str(), errno);
|
||||
}
|
||||
}
|
||||
CATCH_LOG()
|
||||
CATCH_LOG()
|
||||
}
|
||||
|
||||
UtilCreateWorkerThread(
|
||||
"Interop", [InteropChannel = std::move(InteropChannel), InteropServer = std::move(InteropServer), Elevated, &Config]() mutable {
|
||||
@ -1034,23 +994,17 @@ try
|
||||
|
||||
if (Config.BootCommand.has_value())
|
||||
{
|
||||
const int ChildPid =
|
||||
UtilCreateChildProcess("BootCommand", [Command = Config.BootCommand.value(), SavedSignals = g_SavedSignalActions]() {
|
||||
//
|
||||
// Restore default signal dispositions for the child process.
|
||||
//
|
||||
UtilCreateChildProcess("BootCommand", [Command = Config.BootCommand.value(), SavedSignals = g_SavedSignalActions]() {
|
||||
//
|
||||
// Restore default signal dispositions for the child process.
|
||||
//
|
||||
|
||||
THROW_LAST_ERROR_IF(UtilSetSignalHandlers(SavedSignals, false) < 0);
|
||||
THROW_LAST_ERROR_IF(UtilRestoreBlockedSignals() < 0);
|
||||
THROW_LAST_ERROR_IF(UtilSetSignalHandlers(SavedSignals, false) < 0);
|
||||
THROW_LAST_ERROR_IF(UtilRestoreBlockedSignals() < 0);
|
||||
|
||||
execl("/bin/sh", "sh", "-c", Command.c_str(), nullptr);
|
||||
LOG_ERROR("execl() failed, {}", errno);
|
||||
});
|
||||
|
||||
if (ChildPid < 0)
|
||||
{
|
||||
LOG_ERROR("fork failed {}", errno);
|
||||
}
|
||||
execl("/bin/sh", "sh", "-c", Command.c_str(), nullptr);
|
||||
LOG_ERROR("execl() failed, {}", errno);
|
||||
});
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -1724,17 +1678,6 @@ Return Value:
|
||||
ConfigAppendNtPath(Environment, Buffer);
|
||||
}
|
||||
|
||||
//
|
||||
// If the VM ID environment variable is present, add it to the environment
|
||||
// block.
|
||||
//
|
||||
|
||||
auto VmId = getenv(LX_WSL2_VM_ID_ENV);
|
||||
if (VmId)
|
||||
{
|
||||
Environment.AddVariable(LX_WSL2_VM_ID_ENV, VmId);
|
||||
}
|
||||
|
||||
return Environment;
|
||||
}
|
||||
|
||||
@ -1844,7 +1787,7 @@ Return Value:
|
||||
{LX_WSL2_GUI_APP_SUPPORT_ENV, "1"}};
|
||||
}
|
||||
|
||||
void ConfigInitializeCgroups(void)
|
||||
void ConfigInitializeCgroups(wsl::linux::WslDistributionConfig& Config)
|
||||
|
||||
/*++
|
||||
|
||||
@ -1856,7 +1799,7 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
None.
|
||||
Config - Supplies the distribution configuration.
|
||||
|
||||
Return Value:
|
||||
|
||||
@ -1866,50 +1809,82 @@ Return Value:
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
//
|
||||
// For WSL2 mount cgroup v2.
|
||||
//
|
||||
// N.B. Cgroup v2 is not implemented for WSL1.
|
||||
//
|
||||
std::vector<std::string> DisabledControllers;
|
||||
|
||||
if (UtilIsUtilityVm())
|
||||
{
|
||||
const auto Target = CGROUP_MOUNTPOINT;
|
||||
if (Config.CGroup == WslDistributionConfig::CGroupVersion::v1)
|
||||
{
|
||||
auto commandLine = UtilReadFileContent("/proc/cmdline");
|
||||
auto position = commandLine.find(CGROUPS_NO_V1);
|
||||
if (position != std::string::npos)
|
||||
{
|
||||
auto list = commandLine.substr(position + sizeof(CGROUPS_NO_V1) - 1);
|
||||
auto end = list.find_first_of(" \n");
|
||||
if (end != std::string::npos)
|
||||
{
|
||||
list = list.substr(0, end);
|
||||
}
|
||||
|
||||
if (list == "all")
|
||||
{
|
||||
LOG_WARNING("Distribution has cgroupv1 enabled, but kernel command line has {}all. Falling back to cgroupv2", CGROUPS_NO_V1);
|
||||
Config.CGroup = WslDistributionConfig::CGroupVersion::v2;
|
||||
}
|
||||
else
|
||||
{
|
||||
DisabledControllers = wsl::shared::string::Split(list, ',');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.CGroup == WslDistributionConfig::CGroupVersion::v1)
|
||||
{
|
||||
THROW_LAST_ERROR_IF(mount("tmpfs", CGROUP_MOUNTPOINT, "tmpfs", (MS_NOSUID | MS_NODEV | MS_NOEXEC), "mode=755") < 0);
|
||||
}
|
||||
|
||||
const auto Target = Config.CGroup == WslDistributionConfig::CGroupVersion::v1 ? CGROUP_MOUNTPOINT "/unified" : CGROUP_MOUNTPOINT;
|
||||
THROW_LAST_ERROR_IF(
|
||||
UtilMount(CGROUP2_DEVICE, Target, CGROUP2_DEVICE, (MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_RELATIME), "nsdelegate") < 0);
|
||||
|
||||
if (Config.CGroup == WslDistributionConfig::CGroupVersion::v2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// Mount cgroup v1 when running in WSL1 mode.
|
||||
//
|
||||
// Open the /proc/cgroups file and parse each line, ignoring malformed
|
||||
// lines and disabled controllers.
|
||||
//
|
||||
|
||||
THROW_LAST_ERROR_IF(mount("tmpfs", CGROUP_MOUNTPOINT, "tmpfs", (MS_NOSUID | MS_NODEV | MS_NOEXEC), "mode=755") < 0);
|
||||
}
|
||||
|
||||
wil::unique_file Cgroups{fopen(CGROUPS_FILE, "r")};
|
||||
THROW_LAST_ERROR_IF(!Cgroups);
|
||||
//
|
||||
// Mount cgroup v1 when running in WSL1 mode or when a WSL2 distro has automount.cgroups=v1 specified.
|
||||
//
|
||||
// Open the /proc/cgroups file and parse each line, ignoring malformed
|
||||
// lines and disabled controllers.
|
||||
//
|
||||
|
||||
wil::unique_file Cgroups{fopen(CGROUPS_FILE, "r")};
|
||||
THROW_LAST_ERROR_IF(!Cgroups);
|
||||
|
||||
ssize_t BytesRead;
|
||||
char* Line = nullptr;
|
||||
auto LineCleanup = wil::scope_exit([&]() { free(Line); });
|
||||
size_t LineLength = 0;
|
||||
while ((BytesRead = getline(&Line, &LineLength, Cgroups.get())) != -1)
|
||||
{
|
||||
char* Subsystem = nullptr;
|
||||
bool Enabled = false;
|
||||
if ((UtilParseCgroupsLine(Line, &Subsystem, &Enabled) < 0) || (Enabled == false) ||
|
||||
std::find(DisabledControllers.begin(), DisabledControllers.end(), Subsystem) != DisabledControllers.end())
|
||||
|
||||
ssize_t BytesRead;
|
||||
char* Line = nullptr;
|
||||
auto LineCleanup = wil::scope_exit([&]() { free(Line); });
|
||||
size_t LineLength = 0;
|
||||
while ((BytesRead = getline(&Line, &LineLength, Cgroups.get())) != -1)
|
||||
{
|
||||
char* Subsystem = nullptr;
|
||||
bool Enabled = false;
|
||||
if ((UtilParseCgroupsLine(Line, &Subsystem, &Enabled) < 0) || (Enabled == false))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
auto Target = std::format("{}/{}", CGROUP_MOUNTPOINT, Subsystem);
|
||||
THROW_LAST_ERROR_IF(
|
||||
UtilMount(CGROUP_DEVICE, Target.c_str(), CGROUP_DEVICE, (MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_RELATIME), Subsystem) < 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
auto Target = std::format("{}/{}", CGROUP_MOUNTPOINT, Subsystem);
|
||||
THROW_LAST_ERROR_IF(
|
||||
UtilMount(CGROUP_DEVICE, Target.c_str(), CGROUP_DEVICE, (MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_RELATIME), Subsystem) < 0);
|
||||
}
|
||||
}
|
||||
CATCH_LOG()
|
||||
@ -2029,7 +2004,7 @@ try
|
||||
// Initialize the mount options.
|
||||
//
|
||||
// N.B. If the options weren't specified, ConfigDrvFsOptions will be an
|
||||
// emptry string. Since DrvFs ignores empty mount options, the extra
|
||||
// empty string. Since DrvFs ignores empty mount options, the extra
|
||||
// comma on the end in that case is not a problem.
|
||||
//
|
||||
|
||||
@ -2516,7 +2491,7 @@ Arguments:
|
||||
|
||||
Return Value:
|
||||
|
||||
The file descriptor represending the mount namespace on soccess, -1 on failure.
|
||||
The file descriptor representing the mount namespace on success, -1 on failure.
|
||||
|
||||
--*/
|
||||
|
||||
@ -2567,7 +2542,7 @@ try
|
||||
// Attempt to open the /etc/default/locale file. If the file does not exist
|
||||
// then the $LANG environment variable will not be updated.
|
||||
//
|
||||
// N.B. This file is being opened by root. The only user-visable content
|
||||
// N.B. This file is being opened by root. The only user-visible content
|
||||
// will be the contents of the last line of the file that contains
|
||||
// "LANG=".
|
||||
//
|
||||
@ -2709,3 +2684,96 @@ try
|
||||
}
|
||||
}
|
||||
CATCH_LOG()
|
||||
|
||||
bool CreateLoginSession(const wsl::linux::WslDistributionConfig& Config, const char* Username, uid_t Uid)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Create a systemd login session for the given user.
|
||||
|
||||
Arguments:
|
||||
|
||||
Config - Supplies the WSL distribution configuration.
|
||||
|
||||
Username - Supplies session username.
|
||||
|
||||
Uid - Supplies the session UID.
|
||||
|
||||
Return Value:
|
||||
|
||||
true on success, false on failure.
|
||||
|
||||
--*/
|
||||
try
|
||||
{
|
||||
static std::mutex LoginSessionsLock;
|
||||
static std::map<uid_t, int> LoginSessions;
|
||||
|
||||
// Keep track of login sessions that have been created.
|
||||
LoginSessionsLock.lock();
|
||||
auto Unlock = wil::scope_exit([&]() { LoginSessionsLock.unlock(); });
|
||||
if (LoginSessions.contains(Uid))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
int LoginLeader;
|
||||
const int Result = forkpty(&LoginLeader, nullptr, nullptr, nullptr);
|
||||
if (Result < 0)
|
||||
{
|
||||
LOG_ERROR("forkpty failed {}", errno);
|
||||
return false;
|
||||
}
|
||||
else if (Result == 0)
|
||||
{
|
||||
Unlock.reset();
|
||||
_exit(execl("/bin/login", "/bin/login", "-f", Username, nullptr));
|
||||
}
|
||||
|
||||
LoginSessions.emplace(Uid, LoginLeader);
|
||||
|
||||
//
|
||||
// N.B. Init needs to not ignore SIGCHLD so it can wait for the child process.
|
||||
//
|
||||
signal(SIGCHLD, SIG_DFL);
|
||||
auto restoreDisposition = wil::scope_exit([]() { signal(SIGCHLD, SIG_IGN); });
|
||||
|
||||
if (Config.BootInitTimeout > 0)
|
||||
{
|
||||
auto cmd = std::format("systemctl is-active user@{}.service", Uid);
|
||||
try
|
||||
{
|
||||
return wsl::shared::retry::RetryWithTimeout<bool>(
|
||||
[&]() {
|
||||
std::string Output;
|
||||
auto exitCode = UtilExecCommandLine(cmd.c_str(), &Output, 0, false);
|
||||
if (exitCode == 0) // is-active returns 0 if the unit is active.
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (Output == "failed\n")
|
||||
{
|
||||
LOG_ERROR("{} returned: {}", cmd, Output);
|
||||
return false;
|
||||
}
|
||||
|
||||
THROW_ERRNO(EAGAIN);
|
||||
},
|
||||
std::chrono::milliseconds{250},
|
||||
std::chrono::milliseconds{Config.BootInitTimeout});
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
LOG_ERROR("Timed out waiting for user session for uid={}", Uid);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
LOG_CAUGHT_EXCEPTION();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -406,7 +406,7 @@ void ConfigHandleInteropMessage(
|
||||
const MESSAGE_HEADER* Header,
|
||||
const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void ConfigInitializeCgroups(void);
|
||||
void ConfigInitializeCgroups(wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
int ConfigInitializeInstance(wsl::shared::SocketChannel& Channel, gsl::span<gsl::byte> Buffer, wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
|
||||
@ -258,7 +258,7 @@ try
|
||||
// For virtio-9p, there are two errors that could indicate the PCI device is not ready:
|
||||
// EBUSY - Returned if all devices with the tag are already in use.
|
||||
// ENOENT - Returned if there are no devices with the tag, which can happen after the VM first boots.
|
||||
// In this case, check if the the target exists; if it doesn't, ENOENT is for that and there's no reason to retry.
|
||||
// In this case, check if the target exists; if it doesn't, ENOENT is for that and there's no reason to retry.
|
||||
//
|
||||
// For virtiofs, EINVAL will be returned if the tag is not ready.
|
||||
auto savedErrno = wil::ResultFromCaughtException();
|
||||
@ -336,7 +336,7 @@ try
|
||||
return MountFilesystem(DRVFS_FS_TYPE, Source, Target, Options, ExitCode);
|
||||
}
|
||||
|
||||
// Use virtiofs if the source of the mount is the root of a drive, otherwise use 9p.
|
||||
// Use virtiofs if the source of the mount is the root of a drive; otherwise, use 9p.
|
||||
if (WSL_USE_VIRTIO_FS(Config))
|
||||
{
|
||||
if (wsl::shared::string::IsDriveRoot(Source))
|
||||
|
||||
@ -74,10 +74,9 @@ typedef struct _CREATE_PROCESS_PARSED_COMMON
|
||||
typedef struct _CREATE_PROCESS_PARSED
|
||||
{
|
||||
CREATE_PROCESS_PARSED_COMMON Common;
|
||||
int EventFd;
|
||||
int StdFd[LX_INIT_STD_FD_COUNT];
|
||||
int TtyFd;
|
||||
int ServiceFd;
|
||||
wil::unique_fd EventFd;
|
||||
wil::unique_fd StdFd[LX_INIT_STD_FD_COUNT];
|
||||
wil::unique_fd ServiceFd;
|
||||
} CREATE_PROCESS_PARSED, *PCREATE_PROCESS_PARSED;
|
||||
|
||||
struct sigaction g_SavedSignalActions[_NSIG];
|
||||
@ -100,19 +99,15 @@ constexpr passwd c_defaultPasswordEntry = {
|
||||
|
||||
int CaptureCrash(int Argc, char** Argv);
|
||||
|
||||
void CreateProcess(PCREATE_PROCESS_PARSED Parsed, const wsl::linux::WslDistributionConfig& Config);
|
||||
void CreateProcess(PCREATE_PROCESS_PARSED Parsed, int TtyFd, const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void CreateProcessCommon(PCREATE_PROCESS_PARSED_COMMON Common, int TtyFd, int ServiceSocketFd, const wsl::linux::WslDistributionConfig&);
|
||||
|
||||
int CreateProcessParse(PCREATE_PROCESS_PARSED CreateProcessParsed, gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd);
|
||||
CREATE_PROCESS_PARSED CreateProcessParse(gsl::span<gsl::byte> Buffer, int MessageFd, const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
int CreateProcessParseCommon(PCREATE_PROCESS_PARSED_COMMON Parsed, gsl::span<gsl::byte> Buffer, const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void CreateProcessParseFree(PCREATE_PROCESS_PARSED CreateProcessParsed);
|
||||
|
||||
void CreateProcessParseInitialize(PCREATE_PROCESS_PARSED CreateProcessParsed);
|
||||
|
||||
int CreateProcessReplyToServer(PCREATE_PROCESS_PARSED CreateProcessParsed, pid_t CreateProcessPid, int MessageFd);
|
||||
int CreateProcessReplyToServer(PCREATE_PROCESS_PARSED Parsed, pid_t CreateProcessPid, int MessageFd);
|
||||
|
||||
void CreateWslSystemdUnits(const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
@ -134,15 +129,19 @@ void InitEntryUtilityVm(wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void InitTerminateInstance(gsl::span<gsl::byte> Buffer, wsl::shared::SocketChannel& Channel, wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void InitTerminateInstanceInternal(const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
void InstallSystemdUnit(const char* Path, const std::string& Name, const char* Content);
|
||||
|
||||
int GenerateSystemdUnits(int Argc, char** Argv);
|
||||
|
||||
int GenerateUserSystemdUnits(int Argc, char** Argv);
|
||||
|
||||
void HardenMirroredNetworkingSettingsAgainstSystemd();
|
||||
|
||||
void PostProcessImportedDistribution(wsl::shared::MessageWriter<LX_MINI_INIT_IMPORT_RESULT>& Message, const char* ExtractedPath);
|
||||
|
||||
int SessionLeaderCreateProcess(gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd);
|
||||
void SessionLeaderCreateProcess(gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd);
|
||||
|
||||
void SessionLeaderEntry(int MessageFd, int TtyFd, const wsl::linux::WslDistributionConfig& Config);
|
||||
|
||||
@ -214,10 +213,15 @@ int WslEntryPoint(int Argc, char* Argv[])
|
||||
{
|
||||
ExitCode = GenerateSystemdUnits(Argc, Argv);
|
||||
}
|
||||
else if (strcmp(BaseName, LX_INIT_WSL_USER_GENERATOR) == 0)
|
||||
{
|
||||
ExitCode = GenerateUserSystemdUnits(Argc, Argv);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Handle the special case for import result messages, everything else is sent to the binfmt interpreter.
|
||||
if (Pid == 1 && strcmp(BaseName, "init") == 0 && Argc == 3 && strcmp(Argv[1], LX_INIT_IMPORT_MESSAGE_ARG) == 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
wsl::shared::MessageWriter<LX_MINI_INIT_IMPORT_RESULT> message;
|
||||
@ -227,7 +231,8 @@ int WslEntryPoint(int Argc, char* Argv[])
|
||||
read(STDIN_FILENO, buffer, sizeof(buffer));
|
||||
exit(0);
|
||||
}
|
||||
CATCH_RETURN_ERRNO()
|
||||
CATCH_RETURN_ERRNO()
|
||||
}
|
||||
|
||||
ExitCode = CreateNtProcess(Argc - 1, &Argv[1]);
|
||||
}
|
||||
@ -236,6 +241,61 @@ int WslEntryPoint(int Argc, char* Argv[])
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
int GenerateUserSystemdUnits(int Argc, char** Argv)
|
||||
{
|
||||
if (Argc < 2)
|
||||
{
|
||||
LOG_ERROR("Unit folder missing");
|
||||
return 1;
|
||||
}
|
||||
|
||||
const auto* installPath = Argv[1];
|
||||
|
||||
try
|
||||
{
|
||||
std::string automountRoot = "/mnt";
|
||||
wil::unique_file File{fopen("/etc/wsl.conf", "r")};
|
||||
if (File)
|
||||
{
|
||||
std::vector<ConfigKey> ConfigKeys = {
|
||||
ConfigKey(wsl::linux::c_ConfigAutoMountRoot, automountRoot),
|
||||
|
||||
};
|
||||
ParseConfigFile(ConfigKeys, File.get(), CFG_SKIP_UNKNOWN_VALUES, STRING_TO_WSTRING(CONFIG_FILE));
|
||||
File.reset();
|
||||
}
|
||||
|
||||
// TODO: handle quotes in path
|
||||
|
||||
auto unitContent = std::format(
|
||||
R"(# Note: This file is generated by WSL to configure wslg.
|
||||
|
||||
[Unit]
|
||||
Description=WSLg user service
|
||||
DefaultDependencies=no
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
Environment=WSLG_RUNTIME_DIR={}/{}/{}
|
||||
ExecStart=/bin/sh -c 'mkdir -p -m 00755 "$XDG_RUNTIME_DIR/pulse"'
|
||||
ExecStart=/bin/sh -c 'ln -sf "$WSLG_RUNTIME_DIR/wayland-0" "$XDG_RUNTIME_DIR/wayland-0"'
|
||||
ExecStart=/bin/sh -c 'ln -sf "$WSLG_RUNTIME_DIR/wayland-0.lock" "$XDG_RUNTIME_DIR/wayland-0.lock"'
|
||||
ExecStart=/bin/sh -c 'ln -sf "$WSLG_RUNTIME_DIR/pulse/native" "$XDG_RUNTIME_DIR/pulse/native"'
|
||||
ExecStart=/bin/sh -c 'ln -sf "$WSLG_RUNTIME_DIR/pulse/pid" "$XDG_RUNTIME_DIR/pulse/pid"'
|
||||
)",
|
||||
automountRoot,
|
||||
WSLG_SHARED_FOLDER,
|
||||
WAYLAND_RUNTIME_DIR);
|
||||
|
||||
InstallSystemdUnit(installPath, "wslg-session", unitContent.c_str());
|
||||
|
||||
return 0;
|
||||
}
|
||||
CATCH_LOG()
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GenerateSystemdUnits(int Argc, char** Argv)
|
||||
{
|
||||
if (Argc < 2)
|
||||
@ -253,6 +313,8 @@ int GenerateSystemdUnits(int Argc, char** Argv)
|
||||
bool enableGuiApps = true;
|
||||
bool protectBinfmt = true;
|
||||
bool interopEnabled = true;
|
||||
std::string automountRoot = "/mnt";
|
||||
|
||||
wil::unique_file File{fopen("/etc/wsl.conf", "r")};
|
||||
if (File)
|
||||
{
|
||||
@ -260,12 +322,17 @@ int GenerateSystemdUnits(int Argc, char** Argv)
|
||||
ConfigKey(wsl::linux::c_ConfigEnableGuiAppsOption, enableGuiApps),
|
||||
ConfigKey(wsl::linux::c_ConfigBootProtectBinfmtOption, protectBinfmt),
|
||||
ConfigKey(wsl::linux::c_ConfigInteropEnabledOption, interopEnabled),
|
||||
ConfigKey(wsl::linux::c_ConfigAutoMountRoot, automountRoot),
|
||||
|
||||
};
|
||||
ParseConfigFile(ConfigKeys, File.get(), CFG_SKIP_UNKNOWN_VALUES, STRING_TO_WSTRING(CONFIG_FILE));
|
||||
File.reset();
|
||||
}
|
||||
|
||||
// Mask systemd-networkd-wait-online.service since WSL always ensures that networking is configured during boot.
|
||||
// That unit can cause systemd boot timeouts since WSL's network interface is unmanaged by systemd.
|
||||
THROW_LAST_ERROR_IF(symlink("/dev/null", std::format("{}/systemd-networkd-wait-online.service", installPath).c_str()) < 0);
|
||||
|
||||
// Only create the wslg unit if both enabled in wsl.conf, and if the wslg folder actually exists.
|
||||
if (enableGuiApps && access("/mnt/wslg/runtime-dir", F_OK) == 0)
|
||||
{
|
||||
@ -297,7 +364,7 @@ ExecStart=/bin/mount -o bind,ro,X-mount.mkdir -t none /mnt/wslg/.X11-unix /tmp/.
|
||||
{
|
||||
// N.B. ExecStop is required to prevent distributions from removing the WSL binfmt entry on shutdown.
|
||||
auto systemdBinfmtContent = std::format(
|
||||
R"(# Note: This file is generated by WSL to prevent binfmt.d from overriding WSL's binfmt interpretor.
|
||||
R"(# Note: This file is generated by WSL to prevent binfmt.d from overriding WSL's binfmt interpreter.
|
||||
# To disable this unit, add the following to /etc/wsl.conf:
|
||||
# [boot]
|
||||
# protectBinfmt=false
|
||||
@ -306,8 +373,8 @@ ExecStart=/bin/mount -o bind,ro,X-mount.mkdir -t none /mnt/wslg/.X11-unix /tmp/.
|
||||
ExecStop=
|
||||
ExecStart=/bin/sh -c '(echo -1 > {}/{}) ; (echo "{}" > {})' )",
|
||||
BINFMT_MISC_MOUNT_TARGET,
|
||||
LX_INIT_BINFMT_NAME_LATE,
|
||||
BINFMT_INTEROP_REGISTRATION_STRING(LX_INIT_BINFMT_NAME_LATE),
|
||||
LX_INIT_BINFMT_NAME,
|
||||
BINFMT_INTEROP_REGISTRATION_STRING(LX_INIT_BINFMT_NAME),
|
||||
BINFMT_MISC_REGISTER_FILE);
|
||||
|
||||
// Install the override for systemd-binfmt.service.
|
||||
@ -383,7 +450,7 @@ try
|
||||
}
|
||||
CATCH_RETURN_ERRNO()
|
||||
|
||||
void CreateProcess(PCREATE_PROCESS_PARSED Parsed, const wsl::linux::WslDistributionConfig& Config)
|
||||
void CreateProcess(PCREATE_PROCESS_PARSED Parsed, int TtyFd, const wsl::linux::WslDistributionConfig& Config)
|
||||
|
||||
/*++
|
||||
|
||||
@ -393,7 +460,7 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
Parsed - Supplies a pointer to a create process parsed.
|
||||
Parsed - Supplies a pointer to a create process parsed structure.
|
||||
|
||||
Config - Supplies the distribution configuration.
|
||||
|
||||
@ -415,23 +482,23 @@ Return Value:
|
||||
|
||||
for (StdFdIndex = 0; StdFdIndex < LX_INIT_STD_FD_COUNT; StdFdIndex += 1)
|
||||
{
|
||||
if (dup2(Parsed->StdFd[StdFdIndex], StdFdIndex) < 0)
|
||||
//
|
||||
// If a standard file descriptor is not set, use the TTY file descriptor.
|
||||
//
|
||||
|
||||
if (dup2(Parsed->StdFd[StdFdIndex] ? Parsed->StdFd[StdFdIndex].get() : TtyFd, StdFdIndex) < 0)
|
||||
{
|
||||
FATAL_ERROR("dup2 failed {}", errno);
|
||||
}
|
||||
|
||||
if (Parsed->StdFd[StdFdIndex] != Parsed->TtyFd)
|
||||
{
|
||||
CLOSE(Parsed->StdFd[StdFdIndex]);
|
||||
Parsed->StdFd[StdFdIndex] = -1;
|
||||
}
|
||||
Parsed->StdFd[StdFdIndex].reset();
|
||||
}
|
||||
|
||||
//
|
||||
// Read the eventfd data from the wsl service.
|
||||
//
|
||||
|
||||
BytesRead = TEMP_FAILURE_RETRY(read(Parsed->EventFd, &EventFdData, sizeof(EventFdData)));
|
||||
BytesRead = TEMP_FAILURE_RETRY(read(Parsed->EventFd.get(), &EventFdData, sizeof(EventFdData)));
|
||||
if (BytesRead != sizeof(EventFdData))
|
||||
{
|
||||
FATAL_ERROR("Failed to read (size {}) EventFd {}", BytesRead, errno);
|
||||
@ -441,8 +508,7 @@ Return Value:
|
||||
// Launch the process.
|
||||
//
|
||||
|
||||
CreateProcessCommon(&Parsed->Common, Parsed->TtyFd, Parsed->ServiceFd, Config);
|
||||
Parsed->TtyFd = -1;
|
||||
CreateProcessCommon(&Parsed->Common, TtyFd, Parsed->ServiceFd.get(), Config);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -616,7 +682,12 @@ try
|
||||
CreateSession->Gid = PasswordEntry->pw_gid;
|
||||
CreateSession.WriteString(PasswordEntry->pw_name);
|
||||
|
||||
InteropChannel.SendMessage<LX_INIT_CREATE_LOGIN_SESSION>(CreateSession.Span());
|
||||
auto result = InteropChannel.Transaction<LX_INIT_CREATE_LOGIN_SESSION>(CreateSession.Span());
|
||||
|
||||
if (!result.Result)
|
||||
{
|
||||
fprintf(stderr, "wsl: %s\n", wsl::shared::Localization::MessageSystemdUserSessionFailed(PasswordEntry->pw_name).c_str());
|
||||
}
|
||||
|
||||
Common->Environment.AddVariable("DBUS_SESSION_BUS_ADDRESS", std::format("unix:path=/run/user/{}/bus", PasswordEntry->pw_uid));
|
||||
Common->Environment.AddVariable(XDG_RUNTIME_DIR_ENV, std::format("/run/user/{}/", PasswordEntry->pw_uid));
|
||||
@ -742,7 +813,7 @@ catch (...)
|
||||
FATAL_ERROR("Create process failed");
|
||||
}
|
||||
|
||||
int CreateProcessParse(PCREATE_PROCESS_PARSED CreateProcessParsed, gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd, const wsl::linux::WslDistributionConfig& Config)
|
||||
CREATE_PROCESS_PARSED CreateProcessParse(gsl::span<gsl::byte> Buffer, int MessageFd, const wsl::linux::WslDistributionConfig& Config)
|
||||
|
||||
/*++
|
||||
|
||||
@ -752,87 +823,56 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
CreateProcessParsed - Supplies a buffer to store the create process
|
||||
parameters.
|
||||
|
||||
Buffer - Supplies the create process message.
|
||||
|
||||
MessageFd - Supplies a message port file descriptor.
|
||||
|
||||
TtyFd - Supplies an optional Tty file descriptor to inherit from the parent.
|
||||
|
||||
Config - Supplies the distribution configuration.
|
||||
|
||||
Return Value:
|
||||
|
||||
0 on success, -1 on failure.
|
||||
The create process parameters.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
int EventFd;
|
||||
unsigned short Index;
|
||||
int Result;
|
||||
int StdFd[LX_INIT_STD_FD_COUNT];
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_FORK_TOKEN_PARAMETERS UnmarshalForkToken;
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_HANDLE_PARAMETERS UnmarshalHandle;
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_SERVER_PARAMETERS UnmarshalServer;
|
||||
|
||||
EventFd = -1;
|
||||
memset(StdFd, -1, sizeof(StdFd));
|
||||
|
||||
//
|
||||
// Validate the message size.
|
||||
//
|
||||
|
||||
auto* CreateProcess = gslhelpers::try_get_struct<LX_INIT_CREATE_PROCESS>(Buffer);
|
||||
if (!CreateProcess)
|
||||
{
|
||||
FATAL_ERROR("Unexpected create process size {}", Buffer.size());
|
||||
}
|
||||
auto* Message = gslhelpers::try_get_struct<LX_INIT_CREATE_PROCESS>(Buffer);
|
||||
THROW_ERRNO_IF(EINVAL, !Message);
|
||||
|
||||
//
|
||||
// Parse common create process information.
|
||||
//
|
||||
|
||||
Result = CreateProcessParseCommon(&CreateProcessParsed->Common, Buffer.subspan(offsetof(LX_INIT_CREATE_PROCESS, Common)), Config);
|
||||
if (Result < 0)
|
||||
{
|
||||
goto CreateProcessParseEnd;
|
||||
}
|
||||
CREATE_PROCESS_PARSED Parsed{};
|
||||
int Result = CreateProcessParseCommon(&Parsed.Common, Buffer.subspan(offsetof(LX_INIT_CREATE_PROCESS, Common)), Config);
|
||||
THROW_ERRNO_IF(EINVAL, Result < 0);
|
||||
|
||||
//
|
||||
// Create the eventfd.
|
||||
//
|
||||
|
||||
EventFd = eventfd(0, EFD_CLOEXEC);
|
||||
if (EventFd < 0)
|
||||
{
|
||||
FATAL_ERROR("eventfd failed {}", errno);
|
||||
}
|
||||
Parsed.EventFd = eventfd(0, EFD_CLOEXEC);
|
||||
THROW_LAST_ERROR_IF(!Parsed.EventFd);
|
||||
|
||||
//
|
||||
// Set up the standard handles for the process.
|
||||
//
|
||||
//
|
||||
|
||||
for (Index = 0; Index < LX_INIT_STD_FD_COUNT; Index += 1)
|
||||
for (unsigned short Index = 0; Index < LX_INIT_STD_FD_COUNT; Index += 1)
|
||||
{
|
||||
if (CreateProcess->StdFdIds[Index] == LX_INIT_CREATE_PROCESS_USE_CONSOLE)
|
||||
if (Message->StdFdIds[Index] != LX_INIT_CREATE_PROCESS_USE_CONSOLE)
|
||||
{
|
||||
StdFd[Index] = TtyFd;
|
||||
}
|
||||
else
|
||||
{
|
||||
memset(&UnmarshalHandle, 0, sizeof(UnmarshalHandle));
|
||||
UnmarshalHandle.Input.HandleId = CreateProcess->StdFdIds[Index];
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_HANDLE_PARAMETERS UnmarshalHandle{};
|
||||
UnmarshalHandle.Input.HandleId = Message->StdFdIds[Index];
|
||||
Result = TEMP_FAILURE_RETRY(ioctl(MessageFd, LXBUS_IPC_MESSAGE_IOCTL_UNMARSHAL_HANDLE, &UnmarshalHandle));
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to unmarshal handle {}", errno);
|
||||
}
|
||||
THROW_LAST_ERROR_IF(Result < 0);
|
||||
|
||||
StdFd[Index] = UnmarshalHandle.Output.FileDescriptor;
|
||||
Parsed.StdFd[Index] = UnmarshalHandle.Output.FileDescriptor;
|
||||
}
|
||||
}
|
||||
|
||||
@ -840,75 +880,38 @@ Return Value:
|
||||
// Unmarshal the fork token.
|
||||
//
|
||||
|
||||
memset(&UnmarshalForkToken, 0, sizeof(UnmarshalForkToken));
|
||||
UnmarshalForkToken.Input.ForkTokenId = CreateProcess->ForkTokenId;
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_FORK_TOKEN_PARAMETERS UnmarshalForkToken{};
|
||||
UnmarshalForkToken.Input.ForkTokenId = Message->ForkTokenId;
|
||||
Result = TEMP_FAILURE_RETRY(ioctl(MessageFd, LXBUS_IPC_MESSAGE_IOCTL_UNMARSHAL_FORK_TOKEN, &UnmarshalForkToken));
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to unmarshal fork token {}", errno);
|
||||
}
|
||||
THROW_LAST_ERROR_IF(Result < 0);
|
||||
|
||||
//
|
||||
// Unmarshal the ipc server.
|
||||
//
|
||||
|
||||
if (CreateProcess->IpcServerId != LXBUS_IPC_SERVER_ID_INVALID)
|
||||
if (Message->IpcServerId != LXBUS_IPC_SERVER_ID_INVALID)
|
||||
{
|
||||
memset(&UnmarshalServer, 0, sizeof(UnmarshalServer));
|
||||
UnmarshalServer.Input.ServerId = CreateProcess->IpcServerId;
|
||||
LXBUS_IPC_MESSAGE_UNMARSHAL_SERVER_PARAMETERS UnmarshalServer{};
|
||||
UnmarshalServer.Input.ServerId = Message->IpcServerId;
|
||||
Result = TEMP_FAILURE_RETRY(ioctl(MessageFd, LXBUS_IPC_MESSAGE_IOCTL_UNMARSHAL_SERVER, &UnmarshalServer));
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to unmarshal ipc server {}", errno);
|
||||
}
|
||||
THROW_LAST_ERROR_IF(Result < 0);
|
||||
|
||||
if (CreateProcessParsed->Common.AllowOOBE)
|
||||
if (Parsed.Common.AllowOOBE)
|
||||
{
|
||||
wil::unique_fd LxBusFd{TEMP_FAILURE_RETRY(open(LXBUS_DEVICE_NAME, O_RDWR))};
|
||||
if (!LxBusFd)
|
||||
{
|
||||
FATAL_ERROR("Failed to open LxBus device {}", errno);
|
||||
}
|
||||
THROW_LAST_ERROR_IF(!LxBusFd);
|
||||
|
||||
LXBUS_CONNECT_SERVER_PARAMETERS ConnectParams{};
|
||||
ConnectParams.Input.Flags = LXBUS_IPC_CONNECT_FLAG_UNNAMED_SERVER;
|
||||
ConnectParams.Input.TimeoutMs = LXBUS_IPC_INFINITE_TIMEOUT;
|
||||
int Result = TEMP_FAILURE_RETRY(ioctl(LxBusFd.get(), LXBUS_IOCTL_CONNECT_SERVER, &ConnectParams));
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to connect to LxBus server {}", errno);
|
||||
}
|
||||
Result = TEMP_FAILURE_RETRY(ioctl(LxBusFd.get(), LXBUS_IOCTL_CONNECT_SERVER, &ConnectParams));
|
||||
THROW_LAST_ERROR_IF(Result < 0);
|
||||
|
||||
CreateProcessParsed->ServiceFd = ConnectParams.Output.MessagePort;
|
||||
Parsed.ServiceFd = ConnectParams.Output.MessagePort;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Populate the input parameter.
|
||||
//
|
||||
|
||||
CreateProcessParsed->EventFd = EventFd;
|
||||
EventFd = -1;
|
||||
memcpy(CreateProcessParsed->StdFd, StdFd, sizeof(StdFd));
|
||||
memset(StdFd, -1, sizeof(StdFd));
|
||||
CreateProcessParsed->TtyFd = TtyFd;
|
||||
Result = 0;
|
||||
|
||||
CreateProcessParseEnd:
|
||||
if (EventFd != -1)
|
||||
{
|
||||
CLOSE(EventFd);
|
||||
}
|
||||
|
||||
for (Index = 0; Index < LX_INIT_STD_FD_COUNT; Index += 1)
|
||||
{
|
||||
if ((StdFd[Index] != -1) && (StdFd[Index] != TtyFd))
|
||||
{
|
||||
CLOSE(StdFd[Index]);
|
||||
}
|
||||
}
|
||||
|
||||
return Result;
|
||||
return Parsed;
|
||||
}
|
||||
|
||||
int CreateProcessParseCommon(PCREATE_PROCESS_PARSED_COMMON Parsed, gsl::span<gsl::byte> Buffer, const wsl::linux::WslDistributionConfig& Config)
|
||||
@ -1019,76 +1022,7 @@ try
|
||||
}
|
||||
CATCH_RETURN_ERRNO()
|
||||
|
||||
void CreateProcessParseFree(PCREATE_PROCESS_PARSED CreateProcessParsed)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine frees a parsed create process message.
|
||||
|
||||
Arguments:
|
||||
|
||||
CreateProcessParsed - Supplies a parsed create process parameters to free.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
// TODO: Use unique_fds.
|
||||
|
||||
if (CreateProcessParsed->EventFd != -1)
|
||||
{
|
||||
CLOSE(CreateProcessParsed->EventFd);
|
||||
CreateProcessParsed->EventFd = -1;
|
||||
}
|
||||
|
||||
for (int StdFdIndex = 0; StdFdIndex < LX_INIT_STD_FD_COUNT; StdFdIndex += 1)
|
||||
{
|
||||
if ((CreateProcessParsed->StdFd[StdFdIndex] != -1) && (CreateProcessParsed->StdFd[StdFdIndex] != CreateProcessParsed->TtyFd))
|
||||
{
|
||||
CLOSE(CreateProcessParsed->StdFd[StdFdIndex]);
|
||||
CreateProcessParsed->StdFd[StdFdIndex] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (CreateProcessParsed->ServiceFd != -1)
|
||||
{
|
||||
CLOSE(CreateProcessParsed->ServiceFd);
|
||||
CreateProcessParsed->ServiceFd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void CreateProcessParseInitialize(PCREATE_PROCESS_PARSED CreateProcessParsed)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine initializes a parsed create process message.
|
||||
|
||||
Arguments:
|
||||
|
||||
CreateProcessParsed - Supplies a parsed create process parameters to
|
||||
initialize.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
memset(CreateProcessParsed, 0, sizeof(*CreateProcessParsed));
|
||||
memset(CreateProcessParsed->StdFd, -1, sizeof(CreateProcessParsed->StdFd));
|
||||
CreateProcessParsed->TtyFd = -1;
|
||||
CreateProcessParsed->EventFd = -1;
|
||||
}
|
||||
|
||||
int CreateProcessReplyToServer(PCREATE_PROCESS_PARSED CreateProcessParsed, pid_t CreateProcessPid, int MessageFd)
|
||||
int CreateProcessReplyToServer(PCREATE_PROCESS_PARSED Parsed, pid_t CreateProcessPid, int MessageFd)
|
||||
|
||||
/*++
|
||||
|
||||
@ -1098,10 +1032,12 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
MessageFd - Supplies a message port file descriptor.
|
||||
Parsed - Supplies a pointer to a create process parsed structure.
|
||||
|
||||
CreateProcessPid - Supplies the pid of a newly created child process.
|
||||
|
||||
MessageFd - Supplies a message port file descriptor.
|
||||
|
||||
Return Value:
|
||||
|
||||
0 on success, -1 on failure.
|
||||
@ -1111,32 +1047,31 @@ Return Value:
|
||||
--*/
|
||||
|
||||
{
|
||||
ssize_t Bytes;
|
||||
uint64_t EventFdData;
|
||||
LXBUS_IPC_MESSAGE_MARSHAL_PROCESS_PARAMETERS MarshalProcess;
|
||||
int Result;
|
||||
auto terminateChild = wil::scope_exit([CreateProcessPid]() {
|
||||
if (kill(CreateProcessPid, SIGKILL) < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to kill child process {}", errno);
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Marshal the pid of the new child process and send a message
|
||||
// indicating that the child was created.
|
||||
//
|
||||
|
||||
memset(&MarshalProcess, 0, sizeof(MarshalProcess));
|
||||
LXBUS_IPC_MESSAGE_MARSHAL_PROCESS_PARAMETERS MarshalProcess{};
|
||||
MarshalProcess.Input.Process = CreateProcessPid;
|
||||
Result = TEMP_FAILURE_RETRY(ioctl(MessageFd, LXBUS_IPC_MESSAGE_IOCTL_MARSHAL_PROCESS, &MarshalProcess));
|
||||
|
||||
if (Result < 0)
|
||||
if (TEMP_FAILURE_RETRY(ioctl(MessageFd, LXBUS_IPC_MESSAGE_IOCTL_MARSHAL_PROCESS, &MarshalProcess)) < 0)
|
||||
{
|
||||
LOG_ERROR("Failed to marshal pid {}", errno);
|
||||
goto CreateProcessReplyToServerExit;
|
||||
return -1;
|
||||
}
|
||||
|
||||
Bytes = UtilWriteBuffer(MessageFd, &MarshalProcess.Output.ProcessId, sizeof(MarshalProcess.Output.ProcessId));
|
||||
auto Bytes = UtilWriteBuffer(MessageFd, &MarshalProcess.Output.ProcessId, sizeof(MarshalProcess.Output.ProcessId));
|
||||
if (Bytes < 0)
|
||||
{
|
||||
Result = -1;
|
||||
LOG_ERROR("Failed to write ProcessId {}", errno);
|
||||
goto CreateProcessReplyToServerExit;
|
||||
return -1;
|
||||
}
|
||||
|
||||
//
|
||||
@ -1145,42 +1080,28 @@ Return Value:
|
||||
//
|
||||
|
||||
Bytes = TEMP_FAILURE_RETRY(read(MessageFd, &MarshalProcess.Output.ProcessId, sizeof(MarshalProcess.Output.ProcessId)));
|
||||
|
||||
if (Bytes != sizeof(MarshalProcess.Output.ProcessId))
|
||||
{
|
||||
Result = -1;
|
||||
LOG_ERROR("Failed to read (size {}) ProcessId {}", Bytes, errno);
|
||||
goto CreateProcessReplyToServerExit;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (MarshalProcess.Output.ProcessId == 0)
|
||||
{
|
||||
Result = -1;
|
||||
LOG_ERROR("Server replied with failure");
|
||||
goto CreateProcessReplyToServerExit;
|
||||
return -1;
|
||||
}
|
||||
|
||||
EventFdData = 1;
|
||||
Bytes = UtilWriteBuffer(CreateProcessParsed->EventFd, &EventFdData, sizeof(EventFdData));
|
||||
uint64_t EventFdData = 1;
|
||||
Bytes = UtilWriteBuffer(Parsed->EventFd.get(), &EventFdData, sizeof(EventFdData));
|
||||
if (Bytes < 0)
|
||||
{
|
||||
Result = -1;
|
||||
LOG_ERROR("Failed to write EventFd {}", errno);
|
||||
goto CreateProcessReplyToServerExit;
|
||||
return -1;
|
||||
}
|
||||
|
||||
Result = 0;
|
||||
|
||||
CreateProcessReplyToServerExit:
|
||||
if (Result < 0)
|
||||
{
|
||||
if (kill(CreateProcessPid, SIGKILL) < 0)
|
||||
{
|
||||
FATAL_ERROR("Failed to kill child process {}", errno);
|
||||
}
|
||||
}
|
||||
|
||||
return Result;
|
||||
terminateChild.release();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int InitCreateSessionLeader(gsl::span<gsl::byte> Buffer, wsl::shared::SocketChannel& Channel, int LxBusFd, wsl::linux::WslDistributionConfig& Config)
|
||||
@ -1263,7 +1184,7 @@ try
|
||||
}
|
||||
|
||||
SessionLeader = UtilCreateChildProcess(
|
||||
"SessionLeader", [SessionLeaderFd = std::move(SessionLeaderFd), TtyFd = std::move(TtyFd), &Channel, &Config]() {
|
||||
"SessionLeader", [SessionLeaderFd = std::move(SessionLeaderFd), TtyFd = std::move(TtyFd), &Channel, &Config]() mutable {
|
||||
umask(Config.Umask);
|
||||
Channel.Close();
|
||||
|
||||
@ -1333,7 +1254,6 @@ try
|
||||
if (SessionLeader < 0)
|
||||
{
|
||||
Result = -1;
|
||||
LOG_ERROR("fork failed for session leader {}", errno);
|
||||
goto InitCreateSessionLeaderExit;
|
||||
}
|
||||
|
||||
@ -1909,7 +1829,7 @@ Return Value:
|
||||
if (BytesWritten < 0)
|
||||
{
|
||||
//
|
||||
// If writing on stdin's pipe would block, mark the write as pending an continue.
|
||||
// If writing on stdin's pipe would block, mark the write as pending and continue.
|
||||
// This is required blocking on the write() could lead to a deadlock if the child process
|
||||
// is blocking trying to write on stderr / stdout while the relay tries to write stdin.
|
||||
//
|
||||
@ -2327,13 +2247,29 @@ Return Value:
|
||||
unsetenv(LX_WSL2_DISTRO_READ_ONLY_ENV);
|
||||
}
|
||||
|
||||
const auto Value = getenv(LX_WSL2_NETWORKING_MODE_ENV);
|
||||
auto Value = getenv(LX_WSL2_NETWORKING_MODE_ENV);
|
||||
if (Value != nullptr)
|
||||
{
|
||||
Config.NetworkingMode = static_cast<LX_MINI_INIT_NETWORKING_MODE>(std::atoi(Value));
|
||||
unsetenv(LX_WSL2_NETWORKING_MODE_ENV);
|
||||
}
|
||||
|
||||
Value = getenv(LX_WSL2_VM_ID_ENV);
|
||||
if (Value != nullptr)
|
||||
{
|
||||
Config.VmId = Value;
|
||||
|
||||
//
|
||||
// Unset the environment variable for user distros.
|
||||
//
|
||||
|
||||
Value = getenv(LX_WSL2_SHARED_MEMORY_OB_DIRECTORY);
|
||||
if (!Value)
|
||||
{
|
||||
unsetenv(LX_WSL2_VM_ID_ENV);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If the boot.systemd option is specified in /etc/wsl.conf, launch the distro init process as pid 1.
|
||||
// WSL init and session leaders continue as children of the distro init process.
|
||||
@ -2406,7 +2342,7 @@ Return Value:
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize distro init agruments and environment.
|
||||
// Initialize distro init arguments and environment.
|
||||
//
|
||||
|
||||
auto InitializeStringVector = [&](std::vector<const char*>& PointerVector,
|
||||
@ -2588,18 +2524,7 @@ Return Value:
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If the distro init process was booted, use the shutdown command to terminate the instance.
|
||||
//
|
||||
|
||||
if (Config.BootInit && !Config.BootStartWriteSocket)
|
||||
{
|
||||
UtilExecCommandLine("systemctl reboot", nullptr);
|
||||
}
|
||||
|
||||
reboot(RB_POWER_OFF);
|
||||
FATAL_ERROR("reboot(RB_POWER_OFF) failed {}", errno);
|
||||
|
||||
InitTerminateInstanceInternal(Config);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2742,10 +2667,56 @@ try
|
||||
}
|
||||
|
||||
//
|
||||
// Respond to the instance termination request.
|
||||
// Attempt to stop the plan9 server, if it is not able to be stopped because of an
|
||||
// in-use file, reply to the service that the instance could not be terminated.
|
||||
//
|
||||
|
||||
Channel.SendResultMessage<bool>(StopPlan9Server(Message->Force, Config));
|
||||
if (!StopPlan9Server(Message->Force, Config))
|
||||
{
|
||||
Channel.SendResultMessage<bool>(false);
|
||||
return;
|
||||
}
|
||||
|
||||
InitTerminateInstanceInternal(Config);
|
||||
}
|
||||
CATCH_LOG();
|
||||
|
||||
void InitTerminateInstanceInternal(const wsl::linux::WslDistributionConfig& Config)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine attempts to cleanly terminate the instance.
|
||||
|
||||
Arguments:
|
||||
|
||||
Config - Supplies the distribution config.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
try
|
||||
{
|
||||
//
|
||||
// If systemd is enabled, attempt to poweroff the instance via systemctl.
|
||||
//
|
||||
|
||||
if (Config.BootInit && !Config.BootStartWriteSocket)
|
||||
{
|
||||
THROW_LAST_ERROR_IF(UtilSetSignalHandlers(g_SavedSignalActions, false) < 0);
|
||||
|
||||
if (UtilExecCommandLine("systemctl poweroff", nullptr) == 0)
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(Config.BootInitTimeout));
|
||||
LOG_ERROR("systemctl poweroff did not terminate the instance in {} ms, calling reboot(RB_POWER_OFF)", Config.BootInitTimeout);
|
||||
}
|
||||
}
|
||||
|
||||
reboot(RB_POWER_OFF);
|
||||
FATAL_ERROR("reboot(RB_POWER_OFF) failed {}", errno);
|
||||
}
|
||||
CATCH_LOG();
|
||||
|
||||
@ -2773,7 +2744,7 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
Config - Supplies the distribution configuraiton.
|
||||
Config - Supplies the distribution configuration.
|
||||
|
||||
Return Value:
|
||||
|
||||
@ -2792,6 +2763,14 @@ try
|
||||
|
||||
THROW_LAST_ERROR_IF(UtilMkdirPath(folder, 0755) < 0);
|
||||
THROW_LAST_ERROR_IF(symlink("/init", std::format("{}/{}", folder, LX_INIT_WSL_GENERATOR).c_str()));
|
||||
|
||||
if (Config.GuiAppsEnabled)
|
||||
{
|
||||
constexpr auto folder = "/run/systemd/user-generators";
|
||||
|
||||
THROW_LAST_ERROR_IF(UtilMkdirPath(folder, 0755) < 0);
|
||||
THROW_LAST_ERROR_IF(symlink("/init", std::format("{}/{}", folder, LX_INIT_WSL_USER_GENERATOR).c_str()));
|
||||
}
|
||||
}
|
||||
CATCH_LOG();
|
||||
|
||||
@ -2833,7 +2812,7 @@ try
|
||||
}
|
||||
CATCH_LOG();
|
||||
|
||||
int SessionLeaderCreateProcess(gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd, const wsl::linux::WslDistributionConfig& Config)
|
||||
void SessionLeaderCreateProcess(gsl::span<gsl::byte> Buffer, int MessageFd, int TtyFd, const wsl::linux::WslDistributionConfig& Config)
|
||||
|
||||
/*++
|
||||
|
||||
@ -2853,31 +2832,18 @@ Arguments:
|
||||
|
||||
Return Value:
|
||||
|
||||
0 on success, -1 on failure.
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
CREATE_PROCESS_PARSED CreateProcessParsed;
|
||||
pid_t CreateProcessPid;
|
||||
int Result;
|
||||
|
||||
//
|
||||
// Parse the create process message buffer and create the new child process.
|
||||
//
|
||||
|
||||
CreateProcessParseInitialize(&CreateProcessParsed);
|
||||
Result = CreateProcessParse(&CreateProcessParsed, Buffer, MessageFd, TtyFd, Config);
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("CreateProcessParse failed");
|
||||
}
|
||||
|
||||
CreateProcessPid = fork();
|
||||
if (CreateProcessPid < 0)
|
||||
{
|
||||
FATAL_ERROR("fork failed for child process {}", errno);
|
||||
}
|
||||
CREATE_PROCESS_PARSED Parsed = CreateProcessParse(Buffer, MessageFd, Config);
|
||||
auto CreateProcessPid = fork();
|
||||
THROW_LAST_ERROR_IF(CreateProcessPid < 0);
|
||||
|
||||
if (CreateProcessPid > 0)
|
||||
{
|
||||
@ -2891,21 +2857,12 @@ Return Value:
|
||||
}
|
||||
|
||||
//
|
||||
// If the fork was successful, reply with the new child pid.
|
||||
// Reply with pid of the child process.
|
||||
//
|
||||
|
||||
Result = CreateProcessReplyToServer(&CreateProcessParsed, CreateProcessPid, MessageFd);
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("CreateProcessReplyToServer failed");
|
||||
}
|
||||
THROW_LAST_ERROR_IF(CreateProcessReplyToServer(&Parsed, CreateProcessPid, MessageFd) < 0);
|
||||
|
||||
//
|
||||
// Done.
|
||||
//
|
||||
|
||||
Result = 0;
|
||||
goto SessionLeaderCreateProcessEnd;
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
@ -2915,7 +2872,7 @@ Return Value:
|
||||
// If a separate foreground process group does not exist, create one here.
|
||||
//
|
||||
|
||||
Result = 0;
|
||||
int Result = 0;
|
||||
if (g_SessionGroup != -1)
|
||||
{
|
||||
//
|
||||
@ -2931,11 +2888,7 @@ Return Value:
|
||||
// Create a new process group.
|
||||
//
|
||||
|
||||
Result = setpgid(0, 0);
|
||||
if (Result < 0)
|
||||
{
|
||||
FATAL_ERROR("setpgid failed {}", errno);
|
||||
}
|
||||
THROW_LAST_ERROR_IF(setpgid(0, 0) < 0);
|
||||
}
|
||||
|
||||
//
|
||||
@ -2951,13 +2904,12 @@ Return Value:
|
||||
//
|
||||
|
||||
//
|
||||
// N.B. SIGTTOU along with most other signals are blocked, otherwise
|
||||
// N.B. SIGTTOU along with most other signals are blocked. Otherwise,
|
||||
// this could generate a signal with the default behavior of
|
||||
// stopping the process (waiting for SIGCONT to continue).
|
||||
//
|
||||
|
||||
Result = tcsetpgrp(CreateProcessParsed.TtyFd, getpgid(0));
|
||||
if (Result < 0)
|
||||
if (tcsetpgrp(TtyFd, getpgid(0)) < 0)
|
||||
{
|
||||
LOG_ERROR("tcsetpgrp failed {}", errno);
|
||||
}
|
||||
@ -2967,17 +2919,13 @@ Return Value:
|
||||
//
|
||||
|
||||
//
|
||||
// Resources are not released for the child process because it will call
|
||||
// execv.
|
||||
// Resources are not released for the child process because it will call execv.
|
||||
//
|
||||
// N.B. CreateProcess does not return.
|
||||
//
|
||||
|
||||
CreateProcess(&CreateProcessParsed, Config);
|
||||
|
||||
SessionLeaderCreateProcessEnd:
|
||||
CreateProcessParseFree(&CreateProcessParsed);
|
||||
return Result;
|
||||
CreateProcess(&Parsed, TtyFd, Config);
|
||||
FATAL_ERROR("CreateProcess not expected to return");
|
||||
}
|
||||
|
||||
void SessionLeaderSigchldHandler(__attribute__((unused)) int Signal, __attribute__((unused)) siginfo_t* SigInfo, __attribute__((unused)) void* UContext)
|
||||
@ -3169,22 +3117,16 @@ Return Value:
|
||||
FATAL_ERROR("Invalid message size {}", Message.size());
|
||||
}
|
||||
|
||||
switch (Header->MessageType)
|
||||
if (Header->MessageType == LxInitMessageCreateProcess)
|
||||
{
|
||||
SessionLeaderCreateProcess(Message, MessageFd, TtyFd, Config);
|
||||
}
|
||||
else
|
||||
{
|
||||
case LxInitMessageCreateProcess:
|
||||
if (SessionLeaderCreateProcess(Message, MessageFd, TtyFd, Config) < 0)
|
||||
{
|
||||
FATAL_ERROR("SessionLeaderCreateProcess failed");
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
FATAL_ERROR("Unexpected message {}", Header->MessageType);
|
||||
}
|
||||
}
|
||||
|
||||
CLOSE(MessageFd);
|
||||
FATAL_ERROR("Session leader not expected to exit");
|
||||
return;
|
||||
}
|
||||
@ -3460,7 +3402,7 @@ void WaitForBootProcess(wsl::linux::WslDistributionConfig& Config)
|
||||
}
|
||||
|
||||
//
|
||||
// Launch the boot process wait for for it to finish booting.
|
||||
// Launch the boot process wait for it to finish booting.
|
||||
//
|
||||
|
||||
MESSAGE_HEADER Message{};
|
||||
|
||||
@ -64,7 +64,7 @@ void ListenThread(sockaddr_vm hvSocketAddress, int listenSocket)
|
||||
|
||||
// Connect to the actual socket address and set up a relay.
|
||||
//
|
||||
// N.B. During the time setting up the relay the server may have
|
||||
// N.B. While the relay was being set up, the server may have
|
||||
// stopped listening.
|
||||
sockaddr* socketAddress;
|
||||
int socketAddressSize;
|
||||
@ -319,7 +319,7 @@ bool IsSameSockAddr(const sockaddr_storage& left, const sockaddr_storage& right)
|
||||
// Start looking for ports bound to localhost or wildcard.
|
||||
int ScanProcNetTCP(wsl::shared::SocketChannel& channel)
|
||||
{
|
||||
// Peridocally scan procfs for listening TCP sockets.
|
||||
// Periodically scan procfs for listening TCP sockets.
|
||||
std::vector<sockaddr_storage> relays{};
|
||||
int result = 0;
|
||||
for (;;)
|
||||
|
||||
@ -762,7 +762,7 @@ void EnableCrashDumpCollection()
|
||||
return;
|
||||
}
|
||||
|
||||
// If the first character is a pipe, then the kernel will interperet this path as a command.
|
||||
// If the first character is a pipe, then the kernel will interpret this path as a command.
|
||||
constexpr auto core_pattern = "|/" LX_INIT_WSL_CAPTURE_CRASH " %t %E %p %s";
|
||||
WriteToFile("/proc/sys/kernel/core_pattern", core_pattern);
|
||||
}
|
||||
@ -857,10 +857,10 @@ Return Value:
|
||||
|
||||
if (WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose))
|
||||
{
|
||||
compressionArguments += "v";
|
||||
compressionArguments += "vv";
|
||||
}
|
||||
|
||||
const char* arguments[] = {
|
||||
std::vector<const char*> arguments{
|
||||
BSDTAR_PATH,
|
||||
"-C",
|
||||
Source,
|
||||
@ -872,7 +872,13 @@ Return Value:
|
||||
"-",
|
||||
".",
|
||||
nullptr};
|
||||
execv(BSDTAR_PATH, const_cast<char**>(arguments));
|
||||
|
||||
if (WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose))
|
||||
{
|
||||
arguments.emplace(arguments.begin() + 3, "--totals");
|
||||
}
|
||||
|
||||
execv(BSDTAR_PATH, const_cast<char**>(arguments.data()));
|
||||
LOG_ERROR("execl failed, {}", errno);
|
||||
});
|
||||
|
||||
@ -1158,7 +1164,7 @@ Return Value:
|
||||
"-C",
|
||||
Destination,
|
||||
"-x",
|
||||
WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose) ? "-vp" : "-p",
|
||||
WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose) ? "-vvp" : "-p",
|
||||
"--xattrs",
|
||||
"--numeric-owner",
|
||||
"-f",
|
||||
@ -1194,9 +1200,27 @@ Return Value:
|
||||
--*/
|
||||
|
||||
{
|
||||
UtilCreateChildProcess("agetty", []() {
|
||||
execl("/usr/bin/setsid", "/usr/bin/setsid", "/sbin/agetty", "-w", "-L", LX_INIT_HVC_DEBUG_SHELL, "-a", "root", NULL);
|
||||
LOG_ERROR("execl failed, {}", errno);
|
||||
// Spawn a child process to handle relaunching the debug shell if it exits.
|
||||
UtilCreateChildProcess("DebugShell", []() {
|
||||
for (;;)
|
||||
{
|
||||
const auto Pid = UtilCreateChildProcess("agetty", []() {
|
||||
execl("/usr/bin/setsid", "/usr/bin/setsid", "/sbin/agetty", "-w", "-L", LX_INIT_HVC_DEBUG_SHELL, "-a", "root", NULL);
|
||||
LOG_ERROR("execl failed, {}", errno);
|
||||
});
|
||||
|
||||
if (Pid < 0)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
|
||||
int Status = -1;
|
||||
if (TEMP_FAILURE_RETRY(waitpid(Pid, &Status, 0)) < 0)
|
||||
{
|
||||
LOG_ERROR("waitpid failed {}", errno);
|
||||
_exit(1);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -1745,7 +1769,7 @@ try
|
||||
};
|
||||
|
||||
//
|
||||
// Set the communicaiton channel to expected file descriptor value.
|
||||
// Set the communication channel to expected file descriptor value.
|
||||
//
|
||||
|
||||
if (SocketFd != LX_INIT_UTILITY_VM_INIT_SOCKET_FD)
|
||||
@ -1779,7 +1803,7 @@ try
|
||||
{
|
||||
//
|
||||
// Creating the temporary mount can fail if:
|
||||
// - The distro VHD was mounted read-only (because an fsck is needed)
|
||||
// - The distro VHD was mounted read-only (because a fsck is needed)
|
||||
// - The distro VHD is full
|
||||
//
|
||||
// Mount a writable overlay if that's the case so the distro can start.
|
||||
@ -1873,7 +1897,7 @@ try
|
||||
}
|
||||
|
||||
//
|
||||
// Bind mount the init deamon into the distro namespace.
|
||||
// Bind mount the init daemon into the distro namespace.
|
||||
//
|
||||
|
||||
auto Path = std::format("{}{}", Target, LX_INIT_PATH);
|
||||
@ -2107,7 +2131,7 @@ try
|
||||
}
|
||||
|
||||
//
|
||||
// Mount to a temporary location if overlayfs was requested, otherwise mount
|
||||
// Mount to a temporary location if overlayfs was requested; otherwise, mount
|
||||
// the device directly on the target.
|
||||
//
|
||||
|
||||
@ -2260,7 +2284,7 @@ Return Value:
|
||||
}
|
||||
|
||||
//
|
||||
// Chroot to system system distro mount point.
|
||||
// Chroot to system distro mount point.
|
||||
//
|
||||
// N.B. This allows running binaries present in the system distro without having to chroot.
|
||||
//
|
||||
@ -2362,7 +2386,7 @@ try
|
||||
auto* DeviceName = &DevicePath[sizeof(DEVFS_PATH)];
|
||||
|
||||
//
|
||||
// Find the partion on the specified device.
|
||||
// Find the partition on the specified device.
|
||||
//
|
||||
// N.B. A retry is needed because there is a delay between when a device is
|
||||
// hot-added, and when the device is available in the guest.
|
||||
@ -2492,7 +2516,7 @@ void ProcessLaunchInitMessage(
|
||||
//
|
||||
// Allow /etc/wsl.conf in the user distro to opt-out of GUI support.
|
||||
//
|
||||
// N.B. A connection for the system disto must established even if the distro opts out
|
||||
// N.B. A connection for the system distro must established even if the distro opts out
|
||||
// of GUI app support because WslService is waiting to accept a connection.
|
||||
//
|
||||
|
||||
@ -2582,7 +2606,7 @@ void ProcessLaunchInitMessage(
|
||||
DISTRO_PATH,
|
||||
enableGuiApps,
|
||||
Config,
|
||||
nullptr,
|
||||
wsl::shared::string::FromSpan(Buffer, Message->VmIdOffset),
|
||||
wsl::shared::string::FromSpan(Buffer, Message->DistributionNameOffset),
|
||||
nullptr,
|
||||
wsl::shared::string::FromSpan(Buffer, Message->InstallPathOffset),
|
||||
@ -3168,8 +3192,8 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
MessageFd - Supplies a file desciptor to the socket the message was received
|
||||
on. This is used for operations that require responses, for example a
|
||||
MessageFd - Supplies a file descriptor to the socket on which the message was
|
||||
received. This is used for operations that require responses, for example a
|
||||
VHD eject request.
|
||||
|
||||
Buffer - Supplies the message.
|
||||
@ -3579,7 +3603,7 @@ Return Value:
|
||||
// set to SYS_BIND to make bind system call.
|
||||
#ifdef __x86_64__
|
||||
// 32bit:
|
||||
// If syscall_nr == __NR_socketcall then contine else goto allow:
|
||||
// If syscall_nr == __NR_socketcall then continue else goto allow:
|
||||
BPF_STMT(BPF_LD + BPF_W + BPF_ABS, syscall_nr),
|
||||
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, I386_NR_socketcall, 0, 3),
|
||||
// if syscall arg0 == SYS_BIND then goto user_notify: else goto allow:
|
||||
@ -3802,7 +3826,7 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
Pth - Supplies the path to the block device.
|
||||
Path - Supplies the path to the block device.
|
||||
|
||||
Return Value:
|
||||
|
||||
@ -3857,6 +3881,63 @@ Return Value:
|
||||
|
||||
int WslEntryPoint(int Argc, char* Argv[]);
|
||||
|
||||
void EnableDebugMode(const std::string& Mode)
|
||||
{
|
||||
if (Mode == "hvsocket")
|
||||
{
|
||||
// Mount the debugfs.
|
||||
THROW_LAST_ERROR_IF(UtilMount("none", "/sys/kernel/debug", "debugfs", 0, nullptr) < 0);
|
||||
|
||||
// Enable hvsocket events.
|
||||
std::vector<const char*> files{
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_on_msg_dpc/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_on_message/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_onoffer/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_onoffer_rescind/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_onopen_result/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_ongpadl_created/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_ongpadl_torndown/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_open/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_close_internal/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_establish_gpadl_header/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_establish_gpadl_body/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_teardown_gpadl/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_release_relid/enable",
|
||||
"/sys/kernel/debug/tracing/events/hyperv/vmbus_send_tl_connect_request/enable"};
|
||||
|
||||
for (auto* e : files)
|
||||
{
|
||||
WriteToFile(e, "1");
|
||||
}
|
||||
|
||||
// Relay logs to the host.
|
||||
std::thread relayThread{[]() {
|
||||
constexpr auto path = "/sys/kernel/debug/tracing/trace_pipe";
|
||||
std::ifstream file(path);
|
||||
|
||||
if (!file)
|
||||
{
|
||||
LOG_ERROR("Failed to open {}, {}", path, errno);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string line;
|
||||
while (std::getline(file, line))
|
||||
{
|
||||
LOG_INFO("{}", line);
|
||||
}
|
||||
|
||||
LOG_ERROR("{}: closed", path);
|
||||
}};
|
||||
|
||||
relayThread.detach();
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("Unknown debugging mode: '{}'", Mode);
|
||||
}
|
||||
}
|
||||
|
||||
int main(int Argc, char* Argv[])
|
||||
{
|
||||
std::vector<gsl::byte> Buffer;
|
||||
@ -3905,7 +3986,7 @@ int main(int Argc, char* Argv[])
|
||||
}
|
||||
|
||||
//
|
||||
// Open kmesg for logging and ensure that the file descriptor is not set to one of the standard file descriptors.
|
||||
// Open kmsg for logging and ensure that the file descriptor is not set to one of the standard file descriptors.
|
||||
//
|
||||
// N.B. This is to work around a rare race condition where init is launched without /dev/console set as the controlling terminal.
|
||||
//
|
||||
@ -3979,6 +4060,37 @@ int main(int Argc, char* Argv[])
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Create the etc directory and mount procfs and sysfs.
|
||||
//
|
||||
|
||||
if (UtilMkdir(ETC_PATH, 0755) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (UtilMount(nullptr, PROCFS_PATH, "proc", 0, nullptr) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (UtilMount(nullptr, SYSFS_PATH, "sysfs", 0, nullptr) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
//
|
||||
// Enable debug mode, if specified.
|
||||
//
|
||||
|
||||
if (const auto* debugMode = getenv(WSL_DEBUG_ENV))
|
||||
{
|
||||
LOG_ERROR("Running in debug mode: '{}'", debugMode);
|
||||
EnableDebugMode(debugMode);
|
||||
|
||||
unsetenv(WSL_DEBUG_ENV);
|
||||
}
|
||||
|
||||
//
|
||||
// Establish the message channel with the service via hvsocket.
|
||||
//
|
||||
@ -4006,25 +4118,6 @@ int main(int Argc, char* Argv[])
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
//
|
||||
// Create the etc directory and mount procfs and sysfs.
|
||||
//
|
||||
|
||||
if (UtilMkdir(ETC_PATH, 0755) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (UtilMount(nullptr, PROCFS_PATH, "proc", 0, nullptr) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (UtilMount(nullptr, SYSFS_PATH, "sysfs", 0, nullptr) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (getenv(WSL_ENABLE_CRASH_DUMP_ENV))
|
||||
{
|
||||
Config.EnableCrashDumpCollection = true;
|
||||
|
||||
@ -236,7 +236,7 @@ unsigned int StartTelemetryAgent()
|
||||
}
|
||||
}
|
||||
|
||||
// Regularily flush messages back to the service.
|
||||
// Regularly flush messages back to the service.
|
||||
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
if (drvfsNotifyCommand.has_value() || now > nextFlush)
|
||||
|
||||
@ -537,7 +537,7 @@ Return Value:
|
||||
return Socket;
|
||||
}
|
||||
|
||||
wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional<int> SocketBuffer) noexcept
|
||||
wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional<int> SocketBuffer, const std::source_location& Source) noexcept
|
||||
|
||||
/*++
|
||||
|
||||
@ -553,6 +553,8 @@ Arguments:
|
||||
|
||||
SocketBuffer - Optionally supplies the size to use for the socket send and receive buffers.
|
||||
|
||||
Source - Supplies the caller location.
|
||||
|
||||
Return Value:
|
||||
|
||||
A file descriptor representing the connected socket, -1 on failure.
|
||||
@ -565,7 +567,7 @@ Return Value:
|
||||
wil::unique_fd SocketFd{socket(AF_VSOCK, Type, 0)};
|
||||
if (!SocketFd)
|
||||
{
|
||||
LOG_ERROR("socket failed {}", errno);
|
||||
LOG_ERROR("socket failed {} (from: {})", errno, Source);
|
||||
return {};
|
||||
}
|
||||
|
||||
@ -577,7 +579,7 @@ Return Value:
|
||||
Timeout.tv_sec = LX_INIT_HVSOCKET_TIMEOUT_SECONDS;
|
||||
if (setsockopt(SocketFd.get(), AF_VSOCK, SO_VM_SOCKETS_CONNECT_TIMEOUT, &Timeout, sizeof(Timeout)) < 0)
|
||||
{
|
||||
LOG_ERROR("setsockopt SO_VM_SOCKETS_CONNECT_TIMEOUT failed {}", errno);
|
||||
LOG_ERROR("setsockopt SO_VM_SOCKETS_CONNECT_TIMEOUT failed {}, (from: {})", errno, Source);
|
||||
return {};
|
||||
}
|
||||
|
||||
@ -586,13 +588,13 @@ Return Value:
|
||||
int BufferSize = *SocketBuffer;
|
||||
if (setsockopt(SocketFd.get(), SOL_SOCKET, SO_SNDBUF, &BufferSize, sizeof(BufferSize)) < 0)
|
||||
{
|
||||
LOG_ERROR("setsockopt(SO_SNDBUF, {}) failed {}", BufferSize, errno);
|
||||
LOG_ERROR("setsockopt(SO_SNDBUF, {}) failed {}, (from: {})", BufferSize, errno, Source);
|
||||
return {};
|
||||
}
|
||||
|
||||
if (setsockopt(SocketFd.get(), SOL_SOCKET, SO_RCVBUF, &BufferSize, sizeof(BufferSize)) < 0)
|
||||
{
|
||||
LOG_ERROR("setsockopt(SO_RCVBUF, {}) failed {}", BufferSize, errno);
|
||||
LOG_ERROR("setsockopt(SO_RCVBUF, {}) failed {}, (from: {})", BufferSize, errno, Source);
|
||||
return {};
|
||||
}
|
||||
}
|
||||
@ -603,7 +605,7 @@ Return Value:
|
||||
SocketAddress.svm_port = Port;
|
||||
if (connect(SocketFd.get(), (const struct sockaddr*)&SocketAddress, sizeof(SocketAddress)) < 0)
|
||||
{
|
||||
LOG_ERROR("connect port {} failed {}", Port, errno);
|
||||
LOG_ERROR("connect port {} failed {} (from: {})", Port, errno, Source);
|
||||
return {};
|
||||
}
|
||||
|
||||
@ -733,8 +735,8 @@ Arguments:
|
||||
|
||||
CommandLine - Supplies the command line of the process to launch.
|
||||
|
||||
Output - Supplies an optional pointer to an std::string to receive the output of the command.
|
||||
If no buffer is provied the output will appear in stdout.
|
||||
Output - Supplies an optional pointer to a std::string to receive the output of the command.
|
||||
If no buffer is provided the output will appear in stdout.
|
||||
|
||||
ExpectedStatus - Supplies the expected return status of the command.
|
||||
|
||||
@ -1201,8 +1203,7 @@ std::optional<LX_MINI_INIT_NETWORKING_MODE> UtilGetNetworkingMode(void)
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine gets the feature flags, either directly, from an environment
|
||||
variable, or by querying it from the init process.
|
||||
This routine queries the networking mode from the init process.
|
||||
|
||||
Arguments:
|
||||
|
||||
@ -1210,16 +1211,12 @@ Arguments:
|
||||
|
||||
Return Value:
|
||||
|
||||
The feature flags.
|
||||
The networking mode if successful, std::nullopt otherwise.
|
||||
|
||||
--*/
|
||||
|
||||
try
|
||||
{
|
||||
//
|
||||
// Query init for the value.
|
||||
//
|
||||
|
||||
wsl::shared::SocketChannel channel{UtilConnectUnix(WSL_INIT_INTEROP_SOCKET), "wslinfo"};
|
||||
THROW_LAST_ERROR_IF(channel.Socket() < 0);
|
||||
|
||||
@ -1297,6 +1294,40 @@ Return Value:
|
||||
return Result;
|
||||
}
|
||||
|
||||
std::string UtilGetVmId(void)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine queries the VM ID from the init process.
|
||||
|
||||
Arguments:
|
||||
|
||||
None.
|
||||
|
||||
Return Value:
|
||||
|
||||
The VM ID if successful, an empty string otherwise.
|
||||
|
||||
--*/
|
||||
|
||||
try
|
||||
{
|
||||
wsl::shared::SocketChannel channel{UtilConnectUnix(WSL_INIT_INTEROP_SOCKET), "wslinfo"};
|
||||
THROW_LAST_ERROR_IF(channel.Socket() < 0);
|
||||
|
||||
wsl::shared::MessageWriter<LX_INIT_QUERY_VM_ID> Message(LxInitMessageQueryVmId);
|
||||
channel.SendMessage<LX_INIT_QUERY_VM_ID>(Message.Span());
|
||||
|
||||
return channel.ReceiveMessage<LX_INIT_QUERY_VM_ID>().Buffer;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
LOG_CAUGHT_EXCEPTION();
|
||||
return {};
|
||||
}
|
||||
|
||||
void UtilInitGroups(const char* User, gid_t Gid)
|
||||
|
||||
/*++
|
||||
@ -1433,7 +1464,7 @@ Return Value:
|
||||
//
|
||||
// Check if the prefix matches.
|
||||
//
|
||||
// N.B. For Windows paths, this is done case insensitive.
|
||||
// N.B. For Windows paths, this is done case-insensitive.
|
||||
//
|
||||
|
||||
if (!wsl::shared::string::StartsWith(Path, Prefix, WinPath))
|
||||
@ -2894,7 +2925,7 @@ Arguments:
|
||||
Path - Supplies the path to translate.
|
||||
|
||||
Reverse - Supplies a bool, if set perform translation from Windows->Linux
|
||||
path, otherwise translation from Linux->Windows path.
|
||||
path; otherwise, translation from Linux->Windows path.
|
||||
|
||||
Return Value:
|
||||
|
||||
@ -3015,7 +3046,7 @@ Arguments:
|
||||
Path - Supplies the path to translate.
|
||||
|
||||
Reverse - Supplies a bool, if set perform translation from Windows->Linux
|
||||
path, otherwise translation from Linux->Windows path.
|
||||
path; otherwise, translation from Linux->Windows path.
|
||||
|
||||
Return Value:
|
||||
|
||||
@ -3350,7 +3381,7 @@ int ProcessCreateProcessMessage(wsl::shared::SocketChannel& channel, gsl::span<g
|
||||
}
|
||||
else if (execResult == sizeof(execResult))
|
||||
{
|
||||
// Otherwise return the error code to the service
|
||||
// Otherwise, return the error code to the service
|
||||
execResult = abs(execResult);
|
||||
}
|
||||
else
|
||||
|
||||
@ -28,6 +28,7 @@ Abstract:
|
||||
#include <future>
|
||||
#include <filesystem>
|
||||
#include <vector>
|
||||
#include <source_location>
|
||||
#include "lxinitshared.h"
|
||||
#include "lxdef.h"
|
||||
#include "common.h"
|
||||
@ -93,7 +94,6 @@ public:
|
||||
InteropServer(InteropServer&& other) noexcept :
|
||||
m_InteropSocketPath(std::move(other.m_InteropSocketPath)), m_InteropSocket(std::move(other.m_InteropSocket))
|
||||
{
|
||||
memset(&other.m_InteropSocketPath, 0, sizeof(other.m_InteropSocketPath));
|
||||
}
|
||||
|
||||
int Create();
|
||||
@ -129,7 +129,8 @@ wil::unique_fd UtilConnectToInteropServer(std::optional<pid_t> Pid = {});
|
||||
|
||||
wil::unique_fd UtilConnectUnix(const char* Path);
|
||||
|
||||
wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional<int> SocketBuffer = {}) noexcept;
|
||||
wil::unique_fd UtilConnectVsock(
|
||||
unsigned int Port, bool CloseOnExec, std::optional<int> SocketBuffer = {}, const std::source_location& Source = std::source_location::current()) noexcept;
|
||||
|
||||
// Needs to be declared before UtilCreateChildProcess().
|
||||
void UtilSetThreadName(const char* Name);
|
||||
@ -172,7 +173,7 @@ Return Value:
|
||||
|
||||
if (ChildPid < 0)
|
||||
{
|
||||
LOG_ERROR("{} failed {}", CloneFlags ? "clone" : "fork", errno);
|
||||
LOG_ERROR("{} for {} failed {}", CloneFlags ? "clone" : "fork", ChildName, errno);
|
||||
return -1;
|
||||
}
|
||||
else if (ChildPid > 0)
|
||||
@ -228,6 +229,8 @@ std::optional<LX_MINI_INIT_NETWORKING_MODE> UtilGetNetworkingMode(void);
|
||||
|
||||
pid_t UtilGetPpid(pid_t Pid);
|
||||
|
||||
std::string UtilGetVmId(void);
|
||||
|
||||
void UtilInitGroups(const char* User, gid_t Gid);
|
||||
|
||||
void UtilInitializeMessageBuffer(std::vector<gsl::byte>& Buffer);
|
||||
|
||||
@ -25,7 +25,9 @@ public:
|
||||
{
|
||||
std::unique_lock lck(m_mtx);
|
||||
while (m_value.has_value())
|
||||
{
|
||||
m_cv.wait(lck);
|
||||
}
|
||||
m_value = value;
|
||||
m_cv.notify_all();
|
||||
}
|
||||
@ -39,7 +41,9 @@ public:
|
||||
{
|
||||
std::unique_lock lck(m_mtx);
|
||||
while (!m_value.has_value())
|
||||
{
|
||||
m_cv.wait(lck);
|
||||
}
|
||||
auto return_value = m_value.value();
|
||||
m_value.reset();
|
||||
m_cv.notify_all();
|
||||
@ -57,8 +61,12 @@ public:
|
||||
{
|
||||
std::unique_lock lck(m_mtx);
|
||||
while (!m_value.has_value())
|
||||
{
|
||||
if (m_cv.wait_for(lck, timeout) == std::cv_status::timeout)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
}
|
||||
auto return_value = m_value.value();
|
||||
m_value.reset();
|
||||
m_cv.notify_all();
|
||||
|
||||
@ -23,12 +23,14 @@ Abstract:
|
||||
#include "defs.h"
|
||||
#include "Localization.h"
|
||||
#include "CommandLine.h"
|
||||
#include "../../shared/inc/lxinitshared.h"
|
||||
|
||||
enum class WslInfoMode
|
||||
{
|
||||
GetNetworkingMode,
|
||||
MsalProxyPath,
|
||||
WslVersion
|
||||
WslVersion,
|
||||
VMId
|
||||
};
|
||||
|
||||
int WslInfoEntry(int Argc, char* Argv[])
|
||||
@ -65,6 +67,7 @@ Return Value:
|
||||
parser.AddArgument(UniqueSetValue<WslInfoMode, WslInfoMode::MsalProxyPath>{Mode, Usage}, WSLINFO_MSAL_PROXY_PATH);
|
||||
parser.AddArgument(UniqueSetValue<WslInfoMode, WslInfoMode::WslVersion>{Mode, Usage}, WSLINFO_WSL_VERSION);
|
||||
parser.AddArgument(UniqueSetValue<WslInfoMode, WslInfoMode::WslVersion>{Mode, Usage}, WSLINFO_WSL_VERSION_LEGACY);
|
||||
parser.AddArgument(UniqueSetValue<WslInfoMode, WslInfoMode::VMId>{Mode, Usage}, WSLINFO_WSL_VMID);
|
||||
parser.AddArgument(NoOp{}, WSLINFO_WSL_HELP);
|
||||
parser.AddArgument(noNewLine, nullptr, WSLINFO_NO_NEWLINE);
|
||||
|
||||
@ -144,6 +147,29 @@ Return Value:
|
||||
{
|
||||
std::cout << WSL_PACKAGE_VERSION;
|
||||
}
|
||||
else if (Mode.value() == WslInfoMode::VMId)
|
||||
{
|
||||
if (UtilIsUtilityVm())
|
||||
{
|
||||
auto vmId = UtilGetVmId();
|
||||
if (vmId.empty())
|
||||
{
|
||||
std::cerr << Localization::MessageNoValueFound() << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cout << vmId;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "wsl1";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(false && "Unknown WslInfoMode");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!noNewLine)
|
||||
{
|
||||
|
||||
@ -20,6 +20,7 @@ Abstract:
|
||||
#define WSLINFO_NETWORKING_MODE "--networking-mode"
|
||||
#define WSLINFO_WSL_VERSION "--version"
|
||||
#define WSLINFO_WSL_VERSION_LEGACY "--wsl-version"
|
||||
#define WSLINFO_WSL_VMID "--vm-id"
|
||||
#define WSLINFO_WSL_HELP "--help"
|
||||
#define WSLINFO_NO_NEWLINE 'n'
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ public:
|
||||
THROW_LAST_ERROR_IF(MountEnumCreateEx(&m_mountEnum, mountInfoFile) < 0);
|
||||
}
|
||||
|
||||
// Desctruct this instance of the MountEnum class.
|
||||
// Destruct this instance of the MountEnum class.
|
||||
~MountEnum()
|
||||
{
|
||||
MountEnumFree(&m_mountEnum);
|
||||
|
||||
@ -73,7 +73,7 @@ void Interface::ChangeAddress(const Address& address, const std::optional<Addres
|
||||
}
|
||||
}
|
||||
|
||||
// TMessage must be drived from AddressMessage or one of its children
|
||||
// TMessage must be derived from AddressMessage or one of its children
|
||||
template <typename TAddr, typename TMessage>
|
||||
void Interface::ChangeAddressImpl(const Address& address, const std::optional<Address>& broadcastAddress, Operation operation)
|
||||
{
|
||||
|
||||
@ -65,23 +65,41 @@ bool ParseArpReply(const T& ArpReply, uint16_t ProtocolType, const Neighbor& Sou
|
||||
Target.ipAddress.ConvertToBytes(TargetIp.data());
|
||||
|
||||
if (ArpReply.Destination != Source.macAddress)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.EthernetType != htons(ETH_P_ARP))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.HardwareType != htons(ARPHRD_ETHER))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.ProtocolType != htons(ProtocolType))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.HardwareAddressLength != sizeof(ArpReply.SenderHardwareAddress))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.ProtocolAddressLength != sizeof(ArpReply.SenderIpAddress))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.Operation != htons(ARPOP_REPLY))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.TargetHardwareAddress != Source.macAddress)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ArpReply.TargetIpAddress != SourceIp)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Target.macAddress = ArpReply.SenderHardwareAddress;
|
||||
return true;
|
||||
@ -129,7 +147,9 @@ bool IpNeighborManager::PerformNeighborDiscovery(Neighbor& Local, Neighbor& Neig
|
||||
while (std::chrono::steady_clock::now() < expiry)
|
||||
{
|
||||
if (!wait_for_read(packet_socket.get(), std::chrono::duration_cast<std::chrono::milliseconds>(expiry - std::chrono::steady_clock::now())))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
int bytes_read = Syscall(read, packet_socket.get(), &ArpReply, ArpPacketSize);
|
||||
if (bytes_read != ArpPacketSize)
|
||||
{
|
||||
@ -138,12 +158,16 @@ bool IpNeighborManager::PerformNeighborDiscovery(Neighbor& Local, Neighbor& Neig
|
||||
if (Local.getFamily() == AF_INET)
|
||||
{
|
||||
if (ParseArpReply(ArpReply.IPv4, ETH_P_IP, Local, Neighbor))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ParseArpReply(ArpReply.IPv6, ETH_P_IPV6, Local, Neighbor))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# This makefile is used to work from a linux environement and is not part of the OS build process.
|
||||
# This makefile is used to work from a linux environment and is not part of the OS build process.
|
||||
|
||||
CXXFLAGS += -std=c++20 -Wall -Wextra -g3 -fPIC -I../inc
|
||||
LDFLAGS +=
|
||||
|
||||
@ -31,10 +31,14 @@ public:
|
||||
bool adjust_head(long count)
|
||||
{
|
||||
if ((count + data_offset) < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((count + data_offset) > data_end_offset)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
data_offset += count;
|
||||
return true;
|
||||
@ -43,9 +47,13 @@ public:
|
||||
bool adjust_tail(long count)
|
||||
{
|
||||
if ((count + data_end_offset) < data_offset)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((count + data_end_offset) > Buffer.size())
|
||||
{
|
||||
Buffer.resize(count + data_end_offset);
|
||||
}
|
||||
|
||||
data_end_offset += count;
|
||||
return true;
|
||||
|
||||
@ -30,7 +30,7 @@ namespace details {
|
||||
new (P9_EXPECTED_STD addressof(value)) T(P9_EXPECTED_STD forward<Args>(args)...);
|
||||
}
|
||||
|
||||
// Storage for the BasicExpected class for types that are trivially destructable.
|
||||
// Storage for the BasicExpected class for types that are trivially destructible.
|
||||
template <typename T, typename E>
|
||||
struct TrivialExpectedStorage
|
||||
{
|
||||
@ -98,7 +98,7 @@ namespace details {
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Default destructor, because the value type is trivially destructable.
|
||||
// Default destructor, because the value type is trivially destructible.
|
||||
~TrivialExpectedStorage() = default;
|
||||
|
||||
bool HasValue;
|
||||
@ -111,7 +111,7 @@ namespace details {
|
||||
};
|
||||
};
|
||||
|
||||
// Storage for the BasicExpected class for types that are not trivially destructable.
|
||||
// Storage for the BasicExpected class for types that are not trivially destructible.
|
||||
template <typename T, typename E>
|
||||
struct NonTrivialExpectedStorage
|
||||
{
|
||||
@ -204,7 +204,7 @@ namespace details {
|
||||
};
|
||||
};
|
||||
|
||||
// Class that helps to select between the storage for trivially and non-trivially destructable
|
||||
// Class that helps to select between the storage for trivially and non-trivially destructible
|
||||
// types.
|
||||
template <typename T, typename E>
|
||||
struct ExpectedStorage
|
||||
|
||||
@ -21,7 +21,7 @@ namespace p9fs {
|
||||
// the message if all dynamic content is omitted. In the case of strings, the
|
||||
// size of the two-byte length field is included, but the string length itself
|
||||
// is not. The omitted components are listed with each message type, and the
|
||||
// caller is responsible for adding the the right values if necessary.
|
||||
// caller is responsible for adding the right values if necessary.
|
||||
constexpr UINT32 GetMessageSize(MessageType messageType)
|
||||
{
|
||||
switch (messageType)
|
||||
|
||||
@ -18,7 +18,7 @@ struct Root final : public IRoot
|
||||
{
|
||||
Root(std::shared_ptr<const Share> share, int rootFd, uid_t uid, gid_t gid) : Share{share}, RootFd{rootFd}, Uid{uid}, Gid{gid}
|
||||
{
|
||||
Plan9TraceLoggingProvider::LogMessage(std::format("Instanciate root, uid={}", uid));
|
||||
Plan9TraceLoggingProvider::LogMessage(std::format("Instantiate root, uid={}", uid));
|
||||
if (uid == -1)
|
||||
{
|
||||
return; // No uid passed, don't try to get the additional groups.
|
||||
|
||||
@ -105,7 +105,7 @@ Expected<std::shared_ptr<const IRoot>> ShareList::MakeRoot(std::string_view anam
|
||||
{
|
||||
// The server is not running as root, which won't work.
|
||||
// N.B. It's possible to make this work as long as the server has CAP_SETUID, but that
|
||||
// is currrently not needed.
|
||||
// is currently not needed.
|
||||
return LxError{LX_EPERM};
|
||||
}
|
||||
|
||||
|
||||
@ -1218,7 +1218,7 @@ private:
|
||||
|
||||
// Utilize a small stack-allocated buffer that's large enough for the largest response
|
||||
// without dynamic content (which is Rgetattr). Messages requiring a larger response will
|
||||
// allocate a dynamic buffer by calling MessageResonse::EnsureSize.
|
||||
// allocate a dynamic buffer by calling MessageResponse::EnsureSize.
|
||||
// N.B. Message handlers that only return the header (e.g. HandleClunk) don't need to call
|
||||
// EnsureSize since the static buffer is always big enough for that.
|
||||
gsl::byte staticBuffer[c_staticBufferSize];
|
||||
|
||||
@ -79,7 +79,7 @@ void CoroutineIoIssuer::PostIssue(CoroutineIoOperation& operation, CancelToken&
|
||||
else if (token.Cancelled())
|
||||
{
|
||||
// The IO did not complete synchronously, but the operation has been
|
||||
// cancelled. Depending on when the cancel occured, the IO may not have
|
||||
// cancelled. Depending on when the cancel occurred, the IO may not have
|
||||
// been cancelled, so cancel it now.
|
||||
aio_cancel(operation.ControlBlock.aio_fildes, &operation.ControlBlock);
|
||||
}
|
||||
|
||||
@ -140,7 +140,7 @@ Scheduler::Unblocker Scheduler::Unblock() noexcept
|
||||
/// Try to claim queue ownership for the current thread. If this function
|
||||
/// returns true, then the caller must call RunAndRelease to process the queue.
|
||||
///
|
||||
/// If fromKick, then the caller is the thread that was explictly kicked to
|
||||
/// If fromKick, then the caller is the thread that was explicitly kicked to
|
||||
/// process the queue. Otherwise, this is an IO completion or other
|
||||
/// opportunistic thread.
|
||||
bool Scheduler::Claim(bool fromKick) noexcept
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user