From c8cd16a1697a6fb7ff1088c21feb5d5fe0f16898 Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 24 Sep 2025 21:46:01 +0000 Subject: [PATCH 01/36] Add a logging profile to collect hvsocket logs (#13510) --- diagnostics/collect-wsl-logs.ps1 | 4 + diagnostics/wsl_hvsocket.wprp | 172 +++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 diagnostics/wsl_hvsocket.wprp diff --git a/diagnostics/collect-wsl-logs.ps1 b/diagnostics/collect-wsl-logs.ps1 index 8032298f3..d8a1b0286 100644 --- a/diagnostics/collect-wsl-logs.ps1 +++ b/diagnostics/collect-wsl-logs.ps1 @@ -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" diff --git a/diagnostics/wsl_hvsocket.wprp b/diagnostics/wsl_hvsocket.wprp new file mode 100644 index 000000000..66ed917ba --- /dev/null +++ b/diagnostics/wsl_hvsocket.wprp @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 4bba074bd29253c4ce6b928b1b1a69a557934698 Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 24 Sep 2025 21:46:28 +0000 Subject: [PATCH 02/36] Add logic to force terminate the VM if the session lock can't be acquired for 30 seconds when the service stops (#13493) --- src/windows/service/exe/LxssUserSession.cpp | 42 ++++++++++++++++--- src/windows/service/exe/LxssUserSession.h | 11 ++++- .../service/exe/LxssUserSessionFactory.cpp | 2 +- 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/windows/service/exe/LxssUserSession.cpp b/src/windows/service/exe/LxssUserSession.cpp index f8b066aec..fcbd6f9e9 100644 --- a/src/windows/service/exe/LxssUserSession.cpp +++ b/src/windows/service/exe/LxssUserSession.cpp @@ -510,7 +510,7 @@ try const auto session = m_session.lock(); RETURN_HR_IF(RPC_E_DISCONNECTED, !session); - return session->Shutdown(false, Force); + return session->Shutdown(false, Force ? ShutdownBehavior::Force : ShutdownBehavior::Wait); } CATCH_RETURN() @@ -2052,13 +2052,11 @@ HRESULT LxssUserSessionImpl::SetVersion(_In_ LPCGUID DistroGuid, _In_ ULONG Vers return result; } -HRESULT LxssUserSessionImpl::Shutdown(_In_ bool PreventNewInstances, bool ForceTerminate) +HRESULT LxssUserSessionImpl::Shutdown(_In_ bool PreventNewInstances, ShutdownBehavior Behavior) { try { - // If the user asks for a forced termination, kill the VM - if (ForceTerminate) - { + auto forceTerminate = [this]() { auto vmId = m_vmId.load(); if (!IsEqualGUID(vmId, GUID_NULL)) { @@ -2071,11 +2069,43 @@ HRESULT LxssUserSessionImpl::Shutdown(_In_ bool PreventNewInstances, bool ForceT WSL_LOG("ForceTerminateVm", TraceLoggingValue(result, "Result")); } + }; + + // If the user asks for a forced termination, kill the VM + if (Behavior == ShutdownBehavior::Force) + { + forceTerminate(); } { + bool locked = false; + auto unlock = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [this, &locked]() { + if (locked) + { + m_instanceLock.unlock(); + } + }); + + if (Behavior == ShutdownBehavior::ForceAfter30Seconds) + { + if (m_instanceLock.try_lock_for(std::chrono::seconds(30))) + { + locked = true; + } + else + { + WSL_LOG("VmShutdownLockTimedOut"); + forceTerminate(); + } + } + + if (!locked) + { + m_instanceLock.lock(); + locked = true; + } + // Stop each instance with the lock held. - std::lock_guard lock(m_instanceLock); while (!m_runningInstances.empty()) { _TerminateInstanceInternal(&m_runningInstances.begin()->first, false); diff --git a/src/windows/service/exe/LxssUserSession.h b/src/windows/service/exe/LxssUserSession.h index 20d122734..75ecc0aee 100644 --- a/src/windows/service/exe/LxssUserSession.h +++ b/src/windows/service/exe/LxssUserSession.h @@ -54,6 +54,13 @@ typedef struct _LXSS_VM_MODE_SETUP_CONTEXT std::shared_ptr instance; } LXSS_VM_MODE_SETUP_CONTEXT, *PLXSS_VM_MODE_SETUP_CONTEXT; +enum class ShutdownBehavior +{ + Wait, + Force, + ForceAfter30Seconds +}; + /// /// Each COM client gets a unique LxssUserSession object which contains a std::weak_ptr to a LxssUserSessionImpl for that user. /// @@ -491,7 +498,7 @@ class LxssUserSessionImpl /// /// Terminates all running instances and the Linux utility vm. /// - HRESULT Shutdown(_In_ bool PreventNewInstances = false, _In_ bool ForceTerminate = false); + HRESULT Shutdown(_In_ bool PreventNewInstances = false, ShutdownBehavior Behavior = ShutdownBehavior::Wait); /// /// Worker thread for logging telemetry about processes running inside of WSL. @@ -784,7 +791,7 @@ class LxssUserSessionImpl /// /// Lock for protecting various lists. /// - std::recursive_mutex m_instanceLock; + std::recursive_timed_mutex m_instanceLock; /// /// Contains the currently running utility VM's. diff --git a/src/windows/service/exe/LxssUserSessionFactory.cpp b/src/windows/service/exe/LxssUserSessionFactory.cpp index dc8131ccf..80bd22219 100644 --- a/src/windows/service/exe/LxssUserSessionFactory.cpp +++ b/src/windows/service/exe/LxssUserSessionFactory.cpp @@ -49,7 +49,7 @@ void ClearSessionsAndBlockNewInstancesLockHeld(std::optionalShutdown(true); + session->Shutdown(true, ShutdownBehavior::ForceAfter30Seconds); } sessions.reset(); From 332efe1a8dfdcb3d18a2d37e195cdec014f7d43f Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 25 Sep 2025 02:58:39 +0000 Subject: [PATCH 03/36] Fix incorrect timeout causing WSL1 OOBE to fail if the OOBE process takes longer than 30 seconds (#13517) * Fix incorrect timeout causing WSL1 OOBE to fail if the OOBE process takes longer than 30 seconds * Pass the timeout to WaitForMessage --- src/windows/common/LxssMessagePort.cpp | 9 ++++----- src/windows/common/LxssMessagePort.h | 4 +++- src/windows/service/exe/LxssInstance.cpp | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/windows/common/LxssMessagePort.cpp b/src/windows/common/LxssMessagePort.cpp index 78435da2f..735d6ab54 100644 --- a/src/windows/common/LxssMessagePort.cpp +++ b/src/windows/common/LxssMessagePort.cpp @@ -19,7 +19,6 @@ Module Name: // Defines. #define LAUNCH_PROCESS_DEFAULT_BUFFER_SIZE 1024 -#define LAUNCH_PROCESS_DEFAULT_TIMEOUT_MS 30000 LxssMessagePort::LxssMessagePort(_In_ HANDLE MessagePort) : m_messagePort(MessagePort), m_messageEvent(wil::EventOptions::None) { @@ -52,7 +51,7 @@ std::shared_ptr LxssMessagePort::CreateSessionLeader(_In_ HANDLE Clien LX_INIT_CREATE_SESSION Message{{LxInitMessageCreateSession, sizeof(Message)}, MarshalId}; Send(&Message, sizeof(Message)); - auto LocalMessagePort = m_serverPort->WaitForConnection(LAUNCH_PROCESS_DEFAULT_TIMEOUT_MS); + auto LocalMessagePort = m_serverPort->WaitForConnection(c_defaultMessageTimeout); ReleaseConsole.release(); return LocalMessagePort; } @@ -156,7 +155,7 @@ void LxssMessagePort::Receive(_Out_writes_bytes_(Length) PVOID Buffer, _In_ ULON return; } -std::vector LxssMessagePort::Receive() +std::vector LxssMessagePort::Receive(DWORD Timeout) { IO_STATUS_BLOCK IoStatus; std::vector Message; @@ -170,7 +169,7 @@ std::vector LxssMessagePort::Receive() if (Status == STATUS_PENDING) { - WaitForMessage(&IoStatus); + WaitForMessage(&IoStatus, Timeout); Status = IoStatus.Status; SizeReceived = static_cast(IoStatus.Information); } @@ -274,7 +273,7 @@ wil::unique_handle LxssMessagePort::UnmarshalVfsFile(_In_ LXBUS_IPC_HANDLE_ID Vf void LxssMessagePort::WaitForMessage(_In_ PIO_STATUS_BLOCK IoStatus, _In_ DWORD Timeout) const { - const DWORD WaitStatus = WaitForSingleObject(m_messageEvent.get(), LAUNCH_PROCESS_DEFAULT_TIMEOUT_MS); + const DWORD WaitStatus = WaitForSingleObject(m_messageEvent.get(), Timeout); if (WaitStatus == WAIT_TIMEOUT) { IO_STATUS_BLOCK IoStatusCancel; diff --git a/src/windows/common/LxssMessagePort.h b/src/windows/common/LxssMessagePort.h index b94bbeb5b..9f4ea5e10 100644 --- a/src/windows/common/LxssMessagePort.h +++ b/src/windows/common/LxssMessagePort.h @@ -21,6 +21,8 @@ class LxssServerPort; class LxssMessagePort : public LxssPort { public: + static inline DWORD c_defaultMessageTimeout = 30000; + LxssMessagePort(_In_ HANDLE MessagePort); LxssMessagePort(_In_ LxssMessagePort&& Source); LxssMessagePort(_In_ std::unique_ptr&& SourcePointer); @@ -46,7 +48,7 @@ class LxssMessagePort : public LxssPort LXBUS_IPC_PROCESS_ID MarshalProcess(_In_ HANDLE ProcessHandle, _In_ bool TerminateOnClose) const; - std::vector Receive(); + std::vector Receive(DWORD Timeout = c_defaultMessageTimeout); void ReleaseConsole(_In_ LXBUS_IPC_CONSOLE_ID ConsoleId) const; diff --git a/src/windows/service/exe/LxssInstance.cpp b/src/windows/service/exe/LxssInstance.cpp index 3c6cc9803..2700366e5 100644 --- a/src/windows/service/exe/LxssInstance.cpp +++ b/src/windows/service/exe/LxssInstance.cpp @@ -551,7 +551,9 @@ wil::unique_handle LxssInstance::_CreateLxProcess( m_oobeThread = std::thread([this, OobeMessagePort = std::move(OobeMessagePort), registration = std::move(registration)]() mutable { try { - auto Message = OobeMessagePort->Receive(); + // N.B. The LX_INIT_OOBE_RESULT message is only sent once the OOBE process completes, which might be waiting on user input. + // Do no set a timeout here otherwise the OOBE flow will fail if the OOBE process takes longer than expected. + auto Message = OobeMessagePort->Receive(INFINITE); auto* OobeResult = gslhelpers::try_get_struct(gsl::make_span(Message)); THROW_HR_IF(E_INVALIDARG, !OobeResult || (OobeResult->Header.MessageType != LxInitOobeResult)); From 5c5fd4a1b4e760333a49848c300d1698d5b621a5 Mon Sep 17 00:00:00 2001 From: Blue Date: Tue, 30 Sep 2025 13:33:44 -0700 Subject: [PATCH 04/36] Remove no-op GetRuntimeId() call (#13545) --- src/windows/service/exe/LxssUserSession.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/windows/service/exe/LxssUserSession.cpp b/src/windows/service/exe/LxssUserSession.cpp index fcbd6f9e9..2f541d4fe 100644 --- a/src/windows/service/exe/LxssUserSession.cpp +++ b/src/windows/service/exe/LxssUserSession.cpp @@ -2806,8 +2806,6 @@ void LxssUserSessionImpl::_CreateVm() // Create the utility VM and register for callbacks. m_utilityVm = WslCoreVm::Create(m_userToken, std::move(config), vmId); - m_utilityVm->GetRuntimeId(); - if (m_httpProxyStateTracker) { // this needs to be done after the VM has finished in case we fell back to NAT mode From 004bb36f9e5968cc295144f8e973eb9cb9d8a4ff Mon Sep 17 00:00:00 2001 From: Scott Bradnick <84082961+sbradnick@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:08:29 -0400 Subject: [PATCH 05/36] Swap Leap 16.0 in for Leap 15.6 (#13549) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we can have Leap 15.6 AND Leap 16.0 (5 total distros), that would be great ⭐ Tumbleweed SLE 15SP6 SLE 15SP7 Leap 15.6 Leap 16.0 --- distributions/DistributionInfo.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index d93c4e013..b5ac98931 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -43,16 +43,16 @@ } }, { - "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" } } ], From 582e15e4e07d30340ead989b8ea0c4393579bea8 Mon Sep 17 00:00:00 2001 From: Arch Linux Technical User <65091038+archlinux-github@users.noreply.github.com> Date: Wed, 1 Oct 2025 20:08:41 +0200 Subject: [PATCH 06/36] archlinux: Release 2025.10.01.148042 (#13547) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml --- distributions/DistributionInfo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index b5ac98931..a9f4e76f5 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -166,8 +166,8 @@ "FriendlyName": "Arch Linux", "Default": true, "Amd64Url": { - "Url": "https://geo.mirror.pkgbuild.com/wsl/2025.09.01.145298/archlinux-2025.09.01.145298.wsl", - "Sha256": "9b011093c7ad5d0dccd0be785c9d968c30b4fce3957f3f1868f2c1c4415ae841" + "Url": "https://geo.mirror.pkgbuild.com/wsl/2025.10.01.148042/archlinux-2025.10.01.148042.wsl", + "Sha256": "98a5792935c46476f471854bc93344b2b1d63f7947905ce4dd75d20a546db7ea" } } ], From 8313d50f2eeffd0bfa85957a054708f0779d8366 Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 1 Oct 2025 15:35:49 -0700 Subject: [PATCH 07/36] Introduce a new kernel command line argument to collect hvsocket event logs during boot (#13537) * Introduce a new kernel command line argument to collect hvsocket event logs during boot * Cleanup diff * unset env * Add test coverage * Fix format * Remove prefix --- src/linux/init/main.cpp | 107 ++++++++++++++++++++++++++++------ src/shared/inc/lxinitshared.h | 2 + test/windows/UnitTests.cpp | 9 +++ 3 files changed, 99 insertions(+), 19 deletions(-) diff --git a/src/linux/init/main.cpp b/src/linux/init/main.cpp index 7ec3328d8..7156b2514 100644 --- a/src/linux/init/main.cpp +++ b/src/linux/init/main.cpp @@ -3875,6 +3875,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 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 Buffer; @@ -3997,6 +4054,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. // @@ -4024,25 +4112,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; diff --git a/src/shared/inc/lxinitshared.h b/src/shared/inc/lxinitshared.h index 9a4a6dcce..c790bd77a 100644 --- a/src/shared/inc/lxinitshared.h +++ b/src/shared/inc/lxinitshared.h @@ -191,6 +191,8 @@ Module Name: #define WSL_ENABLE_CRASH_DUMP_ENV "WSL_ENABLE_CRASH_DUMP" +#define WSL_DEBUG_ENV "WSL_DEBUG" + #define WSL_DISTRIBUTION_CONF "/etc/wsl-distribution.conf" // diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index d9ffe6793..2aa46b363 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -6147,5 +6147,14 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", VERIFY_ARE_EQUAL(err, L""); } + TEST_METHOD(WslDebug) + { + WSL2_TEST_ONLY(); + + // Verify that hvsocket debug events are logged to dmesg. + WslConfigChange config(LxssGenerateTestConfig({.kernelCommandLine = L"WSL_DEBUG=hvsocket"})); + VERIFY_ARE_EQUAL(LxsstuLaunchWsl(L"dmesg | grep -iF 'vmbus_send_tl_connect_request'"), 0L); + } + }; // namespace UnitTests } // namespace UnitTests From e0c6196cd5185f253040701a375c27959e5b091e Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 1 Oct 2025 15:40:41 -0700 Subject: [PATCH 08/36] Create a persistent install log file to help root cause package upgrade issues (#13500) * Create a persistent install log file to help root cause package upgrade issues * Update src/windows/common/wslutil.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Collect log file in diagnostic script --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- diagnostics/collect-wsl-logs.ps1 | 2 + msipackage/package.wix.in | 10 ++++ src/windows/common/wslutil.cpp | 56 ++++++++++++++++++- src/windows/common/wslutil.h | 2 + src/windows/wslinstall/DllMain.cpp | 20 +++++++ src/windows/wslinstall/wslinstall.def | 1 + src/windows/wslinstaller/exe/WslInstaller.cpp | 13 +++-- 7 files changed, 99 insertions(+), 5 deletions(-) diff --git a/diagnostics/collect-wsl-logs.ps1 b/diagnostics/collect-wsl-logs.ps1 index d8a1b0286..6bdd452f7 100644 --- a/diagnostics/collect-wsl-logs.ps1 +++ b/diagnostics/collect-wsl-logs.ps1 @@ -56,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 diff --git a/msipackage/package.wix.in b/msipackage/package.wix.in index c7ff25b4b..bacededb0 100644 --- a/msipackage/package.wix.in +++ b/msipackage/package.wix.in @@ -397,6 +397,14 @@ Execute="deferred" /> + + + + diff --git a/src/windows/common/wslutil.cpp b/src/windows/common/wslutil.cpp index 2dc9d7876..a06f08fae 100644 --- a/src/windows/common/wslutil.cpp +++ b/src/windows/common/wslutil.cpp @@ -135,6 +135,7 @@ static const std::map g_commonErrors{ X_WIN32(ERROR_INVALID_SECURITY_DESCR), X(VM_E_INVALID_STATE), X_WIN32(STATUS_SHUTDOWN_IN_PROGRESS), + X_WIN32(ERROR_BAD_PATHNAME), X(WININET_E_TIMEOUT)}; #undef X @@ -1344,10 +1345,17 @@ int WINAPI InstallRecordHandler(void* context, UINT messageType, LPCWSTR message try { WSL_LOG("MSIMessage", TraceLoggingValue(messageType, "type"), TraceLoggingValue(message, "message")); + auto type = (INSTALLMESSAGE)(0xFF000000 & (UINT)messageType); + + if (type == INSTALLMESSAGE_ERROR || type == INSTALLMESSAGE_FATALEXIT || type == INSTALLMESSAGE_WARNING) + { + WriteInstallLog(std::format("MSI message: {}", message)); + } + auto* callback = reinterpret_cast*>(context); if (callback != nullptr) { - (*callback)((INSTALLMESSAGE)(0xFF000000 & (UINT)messageType), message); + (*callback)(type, message); } } CATCH_LOG(); @@ -1401,6 +1409,8 @@ int wsl::windows::common::wslutil::UpdatePackage(bool PreRelease, bool Repair) UINT wsl::windows::common::wslutil::UpgradeViaMsi( _In_ LPCWSTR PackageLocation, _In_opt_ LPCWSTR ExtraArgs, _In_opt_ LPCWSTR LogFile, _In_ const std::function& Callback) { + WriteInstallLog(std::format("Upgrading via MSI package: {}. Args: {}", PackageLocation, ExtraArgs != nullptr ? ExtraArgs : L"")); + ConfigureMsiLogging(LogFile, Callback); auto result = MsiInstallProduct(PackageLocation, ExtraArgs); @@ -1409,6 +1419,8 @@ UINT wsl::windows::common::wslutil::UpgradeViaMsi( TraceLoggingValue(result, "result"), TraceLoggingValue(ExtraArgs != nullptr ? ExtraArgs : L"", "ExtraArgs")); + WriteInstallLog(std::format("MSI upgrade result: {}", result)); + return result; } @@ -1417,10 +1429,15 @@ UINT wsl::windows::common::wslutil::UninstallViaMsi(_In_opt_ LPCWSTR LogFile, _I const auto key = OpenLxssMachineKey(KEY_READ); const auto productCode = ReadString(key.get(), L"Msi", L"ProductCode", nullptr); + WriteInstallLog(std::format("Uninstalling MSI package: {}", productCode)); + ConfigureMsiLogging(LogFile, Callback); auto result = MsiConfigureProduct(productCode.c_str(), 0, INSTALLSTATE_ABSENT); WSL_LOG("MsiUninstallResult", TraceLoggingValue(result, "result")); + + WriteInstallLog(std::format("MSI package uninstall result: {}", result)); + return result; } @@ -1451,6 +1468,43 @@ wil::unique_hfile wsl::windows::common::wslutil::ValidateFileSignature(LPCWSTR P return fileHandle; } +void wsl::windows::common::wslutil::WriteInstallLog(const std::string& Content) +try +{ + static std::wstring path = wil::GetWindowsDirectoryW() + L"\\temp\\wsl-install-log.txt"; + + // Wait up to 10 seconds for the log file mutex + wil::unique_handle mutex{CreateMutex(nullptr, true, L"Global\\WslInstallLog")}; + THROW_LAST_ERROR_IF(!mutex); + + THROW_LAST_ERROR_IF(WaitForSingleObject(mutex.get(), 10 * 1000) != WAIT_OBJECT_0); + + wil::unique_handle file{CreateFile( + path.c_str(), GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_ALWAYS, 0, nullptr)}; + + THROW_LAST_ERROR_IF(!file); + + LARGE_INTEGER size{}; + THROW_IF_WIN32_BOOL_FALSE(GetFileSizeEx(file.get(), &size)); + + // Append to the file if its size is below 10MB, otherwise truncate. + if (size.QuadPart < 10 * _1MB) + { + THROW_LAST_ERROR_IF(SetFilePointer(file.get(), 0, nullptr, FILE_END) == INVALID_SET_FILE_POINTER); + } + else + { + THROW_IF_WIN32_BOOL_FALSE(SetEndOfFile(file.get())); + } + + static auto processName = wil::GetModuleFileNameW(); + auto logLine = std::format("{:%FT%TZ} {}[{}]: {}\n", std::chrono::system_clock::now(), processName, WSL_PACKAGE_VERSION, Content); + + DWORD bytesWritten{}; + THROW_IF_WIN32_BOOL_FALSE(WriteFile(file.get(), logLine.c_str(), static_cast(logLine.size()), &bytesWritten, nullptr)); +} +CATCH_LOG(); + winrt::Windows::Management::Deployment::PackageVolume wsl::windows::common::wslutil::GetSystemVolume() try { diff --git a/src/windows/common/wslutil.h b/src/windows/common/wslutil.h index 1d05526cb..26b7a2090 100644 --- a/src/windows/common/wslutil.h +++ b/src/windows/common/wslutil.h @@ -181,6 +181,8 @@ UINT UpgradeViaMsi(_In_ LPCWSTR PackageLocation, _In_opt_ LPCWSTR ExtraArgs, _In UINT UninstallViaMsi(_In_opt_ LPCWSTR LogFile, _In_ const std::function& callback); +void WriteInstallLog(const std::string& Content); + winrt::Windows::Management::Deployment::PackageVolume GetSystemVolume(); } // namespace wsl::windows::common::wslutil diff --git a/src/windows/wslinstall/DllMain.cpp b/src/windows/wslinstall/DllMain.cpp index e574606e2..857a43f1c 100644 --- a/src/windows/wslinstall/DllMain.cpp +++ b/src/windows/wslinstall/DllMain.cpp @@ -23,6 +23,7 @@ Module Name: using unique_msi_handle = wil::unique_any; using namespace wsl::windows::common::registry; +using namespace wsl::windows::common::wslutil; static constexpr auto c_progIdPrefix{L"App."}; static constexpr auto c_protocolProgIdSuffix{L".Protocol"}; @@ -519,6 +520,7 @@ extern "C" UINT __stdcall DeprovisionMsix(MSIHANDLE install) try { WSL_LOG("DeprovisionMsix"); + WriteInstallLog("MSI install: DeprovisionMsix"); const winrt::Windows::Management::Deployment::PackageManager packageManager; const auto result = packageManager.DeprovisionPackageForAllUsersAsync(wsl::windows::common::wslutil::c_msixPackageFamilyName).get(); @@ -542,6 +544,7 @@ extern "C" UINT __stdcall RemoveMsixAsSystem(MSIHANDLE install) try { WSL_LOG("RemoveMsixAsSystem"); + WriteInstallLog("MSI install: RemoveMsixAsSystem"); const winrt::Windows::Management::Deployment::PackageManager packageManager; @@ -571,6 +574,7 @@ extern "C" UINT __stdcall RemoveMsixAsUser(MSIHANDLE install) try { WSL_LOG("RemoveMsixAsUser"); + WriteInstallLog("MSI install: RemoveMsixAsUser"); const winrt::Windows::Management::Deployment::PackageManager packageManager; @@ -640,6 +644,7 @@ extern "C" UINT __stdcall InstallMsixAsUser(MSIHANDLE install) try { WSL_LOG("InstallMsixAsUser"); + WriteInstallLog("MSI install: InstallMsixAsUser"); // RegisterPackageByFamilyNameAsync() cannot be run as SYSTEM. // If this thread runs as SYSTEM, simply skip this step. @@ -683,6 +688,7 @@ try msixFile.Handle.reset(); WSL_LOG("InstallMsix", TraceLoggingValue(msixFile.Path.c_str(), "Path")); + WriteInstallLog("MSI install: InstallMsix"); winrt::Windows::Management::Deployment::PackageManager packageManager; @@ -780,11 +786,25 @@ catch (...) return ERROR_INSTALL_FAILURE; } +extern "C" UINT __stdcall WslFinalizeInstallation(MSIHANDLE install) +{ + try + { + WSL_LOG("WslFinalizeInstallation"); + WriteInstallLog(std::format("MSI install: WslFinalizeInstallation")); + } + CATCH_LOG(); + + return NOERROR; +} + extern "C" UINT __stdcall WslValidateInstallation(MSIHANDLE install) try { WSL_LOG("WslValidateInstallation"); + WriteInstallLog(std::format("MSI install: WslValidateInstallation")); + // TODO: Use a more precise version check so we don't install if the Windows build doesn't support lifted. if (wsl::windows::common::helpers::GetWindowsVersion().BuildNumber < wsl::windows::common::helpers::Vibranium) diff --git a/src/windows/wslinstall/wslinstall.def b/src/windows/wslinstall/wslinstall.def index b04ef18aa..ec3577ff4 100644 --- a/src/windows/wslinstall/wslinstall.def +++ b/src/windows/wslinstall/wslinstall.def @@ -5,6 +5,7 @@ EXPORTS CleanMsixState DeprovisionMsix WslValidateInstallation + WslFinalizeInstallation InstallMsix InstallMsixAsUser RegisterLspCategories diff --git a/src/windows/wslinstaller/exe/WslInstaller.cpp b/src/windows/wslinstaller/exe/WslInstaller.cpp index e28783c4f..47b74e0f7 100644 --- a/src/windows/wslinstaller/exe/WslInstaller.cpp +++ b/src/windows/wslinstaller/exe/WslInstaller.cpp @@ -102,7 +102,7 @@ DWORD WINAPI InstallMsiPackage(LPVOID Context) return 0; } -bool IsUpdateNeeded() +std::pair IsUpdateNeeded() { try { @@ -115,13 +115,15 @@ bool IsUpdateNeeded() TraceLoggingLevel(WINEVENT_LEVEL_INFO), TraceLoggingValue(installedVersion.c_str(), "InstalledVersion")); - return installedVersion.empty() || wsl::windows::common::wslutil::ParseWslPackageVersion(installedVersion) < wsl::shared::PackageVersion; + return std::make_pair( + installedVersion.empty() || wsl::windows::common::wslutil::ParseWslPackageVersion(installedVersion) < wsl::shared::PackageVersion, + installedVersion); } catch (...) { LOG_CAUGHT_EXCEPTION(); - return false; + return std::make_pair(false, L""); } } @@ -132,11 +134,14 @@ std::shared_ptr LaunchInstall() auto lock = mutex.lock_exclusive(); - if (!IsUpdateNeeded()) + auto [updateNeeded, existingVersion] = IsUpdateNeeded(); + if (!updateNeeded) { return {}; } + wsl::windows::common::wslutil::WriteInstallLog(std::format("Starting upgrade via WslInstaller. Previous version: {}", existingVersion)); + // Return an existing install if any if (auto ptr = weak_context.lock(); ptr != nullptr) { From 98f496011874ea441ce41c9a0de64f2feed9f52a Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Wed, 1 Oct 2025 19:49:49 -0400 Subject: [PATCH 09/36] fix: correct sparse VHD command to include `true` (#13512) * fix: correct sparse VHD command to include `true` * Revert all localization strings to f8c26f7c3 except en-US/Resources.resw * fix: run validate-localization.py with --fix option --- localization/strings/en-US/Resources.resw | 2 +- test/windows/SimpleTests.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/localization/strings/en-US/Resources.resw b/localization/strings/en-US/Resources.resw index 27a9f1aca..61526d673 100644 --- a/localization/strings/en-US/Resources.resw +++ b/localization/strings/en-US/Resources.resw @@ -1108,7 +1108,7 @@ Error code: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/test/windows/SimpleTests.cpp b/test/windows/SimpleTests.cpp index 04b44fee8..6adb571e4 100644 --- a/test/windows/SimpleTests.cpp +++ b/test/windows/SimpleTests.cpp @@ -110,7 +110,7 @@ class SimpleTests L"The operation completed successfully. \r\n", L"wsl: Sparse VHD support is currently disabled due to potential data corruption.\r\n" L"To force a distribution to use a sparse vhd, please run:\r\n" - L"wsl.exe --manage --set-sparse --allow-unsafe\r\n", + L"wsl.exe --manage --set-sparse true --allow-unsafe\r\n", 0); std::filesystem::path vhdPath = vhdDir / LXSS_VM_MODE_VHD_NAME; @@ -123,7 +123,7 @@ class SimpleTests std::format(L"{} {} {} {}", WSL_MANAGE_ARG, tempDistro, WSL_MANAGE_ARG_SET_SPARSE_OPTION_LONG, L"true").c_str(), L"Sparse VHD support is currently disabled due to potential data corruption.\r\n" L"To force a distribution to use a sparse vhd, please run:\r\n" - L"wsl.exe --manage --set-sparse --allow-unsafe\r\nError code: Wsl/Service/E_INVALIDARG\r\n", + L"wsl.exe --manage --set-sparse true --allow-unsafe\r\nError code: Wsl/Service/E_INVALIDARG\r\n", L"", -1); From 65eea7b31cdce11b0f5001de56d7bc330bb1db18 Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 2 Oct 2025 20:36:12 -0700 Subject: [PATCH 10/36] Introduce a new wsl.conf config value to allow distributions to opt-in to cgroupv1 mounts (#13546) * Introduce a new wsl.conf config value to allow distributions to opt-in to cgroupv1 mounts * Add test coverage * Fix tmpfs on wsl1 --------- Co-authored-by: Ben Hillis --- src/linux/init/WslDistributionConfig.cpp | 1 + src/linux/init/WslDistributionConfig.h | 7 ++ src/linux/init/config.cpp | 102 +++++++++++++++-------- src/linux/init/config.h | 2 +- test/windows/UnitTests.cpp | 38 +++++++++ 5 files changed, 115 insertions(+), 35 deletions(-) diff --git a/src/linux/init/WslDistributionConfig.cpp b/src/linux/init/WslDistributionConfig.cpp index 4bb4f8c7a..56f5710f6 100644 --- a/src/linux/init/WslDistributionConfig.cpp +++ b/src/linux/init/WslDistributionConfig.cpp @@ -28,6 +28,7 @@ WslDistributionConfig::WslDistributionConfig(const char* configFilePath) 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), diff --git a/src/linux/init/WslDistributionConfig.h b/src/linux/init/WslDistributionConfig.h index 892240e6a..772ffd2ca 100644 --- a/src/linux/init/WslDistributionConfig.h +++ b/src/linux/init/WslDistributionConfig.h @@ -48,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 BootCommand; @@ -71,6 +77,7 @@ struct WslDistributionConfig bool AppendGpuLibPath = true; bool GpuEnabled = true; bool LinkOsLibs = true; + CGroupVersion CGroup = CGroupVersion::v2; // // Values not set by /etc/wsl.conf. diff --git a/src/linux/init/config.cpp b/src/linux/init/config.cpp index e20512795..f36d319d9 100644 --- a/src/linux/init/config.cpp +++ b/src/linux/init/config.cpp @@ -73,6 +73,8 @@ Module Name: #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); @@ -567,7 +569,7 @@ Return Value: // Initialize cgroups based on what the kernel supports. // - ConfigInitializeCgroups(); + ConfigInitializeCgroups(Config); // // Attempt to register the NT interop binfmt extension. @@ -1783,7 +1785,7 @@ Return Value: {LX_WSL2_GUI_APP_SUPPORT_ENV, "1"}}; } -void ConfigInitializeCgroups(void) +void ConfigInitializeCgroups(wsl::linux::WslDistributionConfig& Config) /*++ @@ -1795,7 +1797,7 @@ Routine Description: Arguments: - None. + Config - Supplies the distribution configuration. Return Value: @@ -1805,50 +1807,82 @@ Return Value: try { - - // - // For WSL2 mount cgroup v2. - // - // N.B. Cgroup v2 is not implemented for WSL1. - // + std::vector 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. + // - 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; - } + wil::unique_file Cgroups{fopen(CGROUPS_FILE, "r")}; + THROW_LAST_ERROR_IF(!Cgroups); - 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); + 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()) + + { + 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() diff --git a/src/linux/init/config.h b/src/linux/init/config.h index a08d1f7f8..d8c63f11a 100644 --- a/src/linux/init/config.h +++ b/src/linux/init/config.h @@ -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 Buffer, wsl::linux::WslDistributionConfig& Config); diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index 2aa46b363..610ab5796 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -6156,5 +6156,43 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", VERIFY_ARE_EQUAL(LxsstuLaunchWsl(L"dmesg | grep -iF 'vmbus_send_tl_connect_request'"), 0L); } + TEST_METHOD(CGroupv1) + { + WSL2_TEST_ONLY(); + + auto expectedMount = [](const char* path, const wchar_t* expected) { + auto [out, _] = LxsstuLaunchWslAndCaptureOutput(std::format(L"findmnt -ln '{}' || true", path)); + + VERIFY_ARE_EQUAL(out, expected); + }; + + // Validate that cgroupv2 is mounted by default. + expectedMount("/sys/fs/cgroup", L"/sys/fs/cgroup cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate\n"); + + // Validate that setting cgroup=v1 causes unified cgroups to be mounted. + DistroFileChange wslConf(L"/etc/wsl.conf", false); + wslConf.SetContent(L"[automount]\ncgroups=v1"); + + TerminateDistribution(); + + expectedMount( + "/sys/fs/cgroup/unified", L"/sys/fs/cgroup/unified cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate\n"); + + // Validate that the cgroupv1 mounts are present. + expectedMount("/sys/fs/cgroup/cpu", L"/sys/fs/cgroup/cpu cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpu\n"); + + // Validate that having cgroup_no_v1=all causes the distribution to fall back to v2. + WslConfigChange wslConfig(LxssGenerateTestConfig({.kernelCommandLine = L"cgroup_no_v1=all"})); + + expectedMount("/sys/fs/cgroup/unified", L""); + expectedMount("/sys/fs/cgroup", L"/sys/fs/cgroup cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate\n"); + + auto [dmesg, __] = LxsstuLaunchWslAndCaptureOutput(L"dmesg"); + VERIFY_ARE_NOT_EQUAL( + dmesg.find( + L"Distribution has cgroupv1 enabled, but kernel command line has cgroup_no_v1=all. Falling back to cgroupv2"), + std::wstring::npos); + } + }; // namespace UnitTests } // namespace UnitTests From d4e64b658fb9b7f489bf7edcd7a851d0be12b56b Mon Sep 17 00:00:00 2001 From: Blue Date: Fri, 3 Oct 2025 17:37:40 -0700 Subject: [PATCH 11/36] Add more verbose output to bsdtar to help root cause 'ImportExportStdout' test failures (#13555) --- src/linux/init/main.cpp | 14 ++++++++++---- src/windows/service/exe/LxssUserSession.cpp | 4 ++-- test/windows/UnitTests.cpp | 3 +++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/linux/init/main.cpp b/src/linux/init/main.cpp index 7156b2514..cf103184a 100644 --- a/src/linux/init/main.cpp +++ b/src/linux/init/main.cpp @@ -857,10 +857,10 @@ Return Value: if (WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose)) { - compressionArguments += "v"; + compressionArguments += "vv"; } - const char* arguments[] = { + std::vector arguments{ BSDTAR_PATH, "-C", Source, @@ -872,7 +872,13 @@ Return Value: "-", ".", nullptr}; - execv(BSDTAR_PATH, const_cast(arguments)); + + if (WI_IsFlagSet(Flags, LxMiniInitMessageFlagVerbose)) + { + arguments.emplace(arguments.begin() + 3, "--totals"); + } + + execv(BSDTAR_PATH, const_cast(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", diff --git a/src/windows/service/exe/LxssUserSession.cpp b/src/windows/service/exe/LxssUserSession.cpp index 2f541d4fe..9572ba4ad 100644 --- a/src/windows/service/exe/LxssUserSession.cpp +++ b/src/windows/service/exe/LxssUserSession.cpp @@ -1926,7 +1926,7 @@ HRESULT LxssUserSessionImpl::SetVersion(_In_ LPCGUID DistroGuid, _In_ ULONG Vers if (m_utilityVm->GetConfig().SetVersionDebug) { - commandLine += " -v"; + commandLine += " -vv --totals"; } // Run the bsdtar elf binary expand the tar file using the socket as stdin. @@ -1991,7 +1991,7 @@ HRESULT LxssUserSessionImpl::SetVersion(_In_ LPCGUID DistroGuid, _In_ ULONG Vers if (m_utilityVm->GetConfig().SetVersionDebug) { - commandLine += " -v"; + commandLine += " -vv --totals"; } // Run the bsdtar elf binary to create the tar file using the socket as stdout. diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index 610ab5796..0b42af9fa 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -6080,6 +6080,9 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, []() { LxsstuLaunchWsl(std::format(L"--unregister {}", test_distro)); }); + // The below logline makes it easier to find the bsdtar output when debugging this test case. + fprintf(stderr, "Starting ImportExportStdout test case\n"); + auto commandLine = std::format(L"cmd.exe /c wsl --export {} - | wsl --import {} . -", LXSS_DISTRO_NAME_TEST_L, test_distro); VERIFY_ARE_EQUAL(LxsstuRunCommand(commandLine.data()), 0L); From 9b5659d4b9805084afcf2abb88796cf45dbf88b9 Mon Sep 17 00:00:00 2001 From: Blue Date: Mon, 6 Oct 2025 12:42:32 -0700 Subject: [PATCH 12/36] Respect the distribution manifest ordering when listing distributions (#13561) * Respect the distribution manifest ordering when listing distributions * Fix test * Update test/windows/UnitTests.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- CMakeLists.txt | 4 +- src/shared/inc/JsonUtils.h | 10 ++--- src/windows/common/Distribution.cpp | 2 +- src/windows/common/Distribution.h | 22 ++++++++- test/windows/UnitTests.cpp | 70 +++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 38c3ec9a0..d16b705aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/shared/inc/JsonUtils.h b/src/shared/inc/JsonUtils.h index 19479fd54..e25242440 100644 --- a/src/shared/inc/JsonUtils.h +++ b/src/shared/inc/JsonUtils.h @@ -46,18 +46,18 @@ std::wstring ToJsonW(const T& Value) return wsl::shared::string::MultiByteToWide(ToJson(Value)); } -template +template T FromJson(const char* Value) { try { - auto json = nlohmann::json::parse(Value); + auto json = TJson::parse(Value); T object{}; from_json(json, object); return object; } - catch (const nlohmann::json::exception& e) + catch (const TJson::exception& e) { #ifdef WIN32 @@ -72,10 +72,10 @@ T FromJson(const char* Value) } } -template +template T FromJson(const wchar_t* Value) { - return FromJson(wsl::shared::string::WideToMultiByte(Value).c_str()); + return FromJson(wsl::shared::string::WideToMultiByte(Value).c_str()); } template diff --git a/src/windows/common/Distribution.cpp b/src/windows/common/Distribution.cpp index 1ca3ee759..1820d5f43 100644 --- a/src/windows/common/Distribution.cpp +++ b/src/windows/common/Distribution.cpp @@ -112,7 +112,7 @@ DistributionList ReadFromManifest(const std::wstring& url) content = response.Content().ReadAsStringAsync().get(); } - auto distros = wsl::shared::FromJson(content.c_str()); + auto distros = wsl::shared::FromJson(content.c_str()); if (distros.Distributions.has_value()) { diff --git a/src/windows/common/Distribution.h b/src/windows/common/Distribution.h index 4bbdfa3e6..5792c9a07 100644 --- a/src/windows/common/Distribution.h +++ b/src/windows/common/Distribution.h @@ -58,10 +58,28 @@ struct Distribution struct DistributionList { std::optional> Distributions; - std::optional>> ModernDistributions; + std::optional>> ModernDistributions; std::optional Default; - NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(DistributionList, Distributions, ModernDistributions, Default) + friend void from_json(const nlohmann::ordered_json& nlohmann_json_j, DistributionList& nlohmann_json_t) + { + const DistributionList nlohmann_json_default_obj{}; + NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, Distributions, Default)); + + auto modernDistributions = nlohmann_json_j.find("ModernDistributions"); + if (modernDistributions != nlohmann_json_j.end()) + { + nlohmann_json_t.ModernDistributions.emplace(); + + for (const auto& e : modernDistributions->items()) + { + std::vector distros; + from_json(e.value(), distros); + + nlohmann_json_t.ModernDistributions->emplace_back(e.key(), std::move(distros)); + } + } + } }; constexpr inline auto c_distroUrlRegistryValue = L"DistributionListUrl"; diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index 0b42af9fa..989aaf83e 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -5326,6 +5326,76 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", VERIFY_ARE_EQUAL(error, L""); } + + // Validate that manifest distribution ordering is preserved. + { + auto validateOrder = [](const std::vector& expected) { + auto [out, _] = LxsstuLaunchWslAndCaptureOutput(L"--list --online"); + + auto lines = wsl::shared::string::Split(out, '\n'); + + for (size_t i = 0; i < expected.size(); i++) + { + auto end = lines[i + 4].find_first_of(L" \t"); + VERIFY_ARE_NOT_EQUAL(end, std::wstring::npos); + + auto distro = lines[i + 4].substr(0, end); + + VERIFY_ARE_EQUAL(expected[i], distro); + } + }; + + { + auto manifest = + R"({ + "ModernDistributions": { + "distro1": [ + { + "Name": "distro1", + "FriendlyName": "distro1Name", + "Amd64Url": {"Url": "","Sha256": ""} + } + ], + "distro2": [ + { + "Name": "distro2", + "FriendlyName": "distro2Name", + "Amd64Url": {"Url": "","Sha256": ""} + } + ] + } +})"; + + auto restore = SetManifest(manifest); + validateOrder({L"distro1", L"distro2"}); + } + + { + auto manifest = + R"({ + "ModernDistributions": { + "distro2": [ + { + "Name": "distro2", + "FriendlyName": "distro2Name", + "Amd64Url": {"Url": "","Sha256": ""} + } + ], + "distro1": [ + { + "Name": "distro1", + "FriendlyName": "distro1Name", + "Amd64Url": {"Url": "","Sha256": ""} + } + ] + } +})"; + + auto restore = SetManifest(manifest); + + validateOrder({L"distro2", L"distro1"}); + } + } } TEST_METHOD(ModernInstallEndToEnd) From 9f77522f643bdd1ee5be78d40f886d1b6e84e9a6 Mon Sep 17 00:00:00 2001 From: Blue Date: Mon, 6 Oct 2025 17:19:49 -0700 Subject: [PATCH 13/36] Update the initramfs to set 755 permissions on /init (#13567) --- test/windows/UnitTests.cpp | 9 +++++++++ tools/bin2cpio/CPIOImage.pm | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index 989aaf83e..781221f80 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -6267,5 +6267,14 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", std::wstring::npos); } + TEST_METHOD(InitPermissions) + { + WSL2_TEST_ONLY(); + + auto [out, _] = LxsstuLaunchWslAndCaptureOutput(L"stat -c %a /init"); + + VERIFY_ARE_EQUAL(out, L"755\n"); + } + }; // namespace UnitTests } // namespace UnitTests diff --git a/tools/bin2cpio/CPIOImage.pm b/tools/bin2cpio/CPIOImage.pm index 78bfacfe1..d576cd4aa 100644 --- a/tools/bin2cpio/CPIOImage.pm +++ b/tools/bin2cpio/CPIOImage.pm @@ -40,7 +40,7 @@ use constant TRAILER => "TRAILER!!!"; # like initramfs. # use constant INODE => 0; -use constant MODE => oct("100777"); +use constant MODE => oct("100755"); use constant UID => 0; use constant GID => 0; use constant NLINK => 0; From babf0c24f106508aae16fd5e461489e159b2d24d Mon Sep 17 00:00:00 2001 From: Blue Date: Mon, 6 Oct 2025 17:20:12 -0700 Subject: [PATCH 14/36] Add hypervkvpd.service to the list of discouraged systemd units (#13568) --- distributions/validate-modern.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/distributions/validate-modern.py b/distributions/validate-modern.py index 8649f0dbb..2fc33f61e 100644 --- a/distributions/validate-modern.py +++ b/distributions/validate-modern.py @@ -33,7 +33,8 @@ 'systemd-tmpfiles-setup-dev.service', 'tmp.mount', 'NetworkManager.service', - 'networking.service'] + 'networking.service', + 'hypervkvpd.service'] WSL1_UNSUPPORTED_XATTRS = ['security.selinux', 'security.ima', 'security.evm'] From 491d8d570714a6108fc9f01e556c89ce7fa105a6 Mon Sep 17 00:00:00 2001 From: Hideyuki Nagase Date: Tue, 7 Oct 2025 09:29:18 -0700 Subject: [PATCH 15/36] Update WSLg to 1.0.71 (#13570) Co-authored-by: Hideyuki Nagase --- packages.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.config b/packages.config index 19f51df4d..2cf464ec5 100644 --- a/packages.config +++ b/packages.config @@ -24,7 +24,7 @@ - + From 05d6129c4fca74b29132fb7c78fe7e4d3b4d37c1 Mon Sep 17 00:00:00 2001 From: Ben Hillis Date: Tue, 7 Oct 2025 15:37:41 -0700 Subject: [PATCH 16/36] Implement clean instance terminate when using systemd (#13552) * Implement clean instance terminate when using systemd * pr feedback * more pr feedback --------- Co-authored-by: Ben Hillis --- src/linux/init/init.cpp | 65 ++++++++++++++++----- src/windows/service/exe/WslCoreInstance.cpp | 8 ++- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/src/linux/init/init.cpp b/src/linux/init/init.cpp index 8a481956f..77495eb5e 100644 --- a/src/linux/init/init.cpp +++ b/src/linux/init/init.cpp @@ -129,6 +129,8 @@ void InitEntryUtilityVm(wsl::linux::WslDistributionConfig& Config); void InitTerminateInstance(gsl::span 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); @@ -2507,18 +2509,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; } @@ -2661,10 +2652,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(StopPlan9Server(Message->Force, Config)); + if (!StopPlan9Server(Message->Force, Config)) + { + Channel.SendResultMessage(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(); diff --git a/src/windows/service/exe/WslCoreInstance.cpp b/src/windows/service/exe/WslCoreInstance.cpp index 1765c555f..7dec7f531 100644 --- a/src/windows/service/exe/WslCoreInstance.cpp +++ b/src/windows/service/exe/WslCoreInstance.cpp @@ -477,8 +477,12 @@ bool WslCoreInstance::RequestStop(_In_ bool Force) terminateMessage.Header.MessageSize = sizeof(terminateMessage); terminateMessage.Force = Force; - const auto& terminateResponse = m_initChannel->GetChannel().Transaction(terminateMessage, nullptr, m_socketTimeout); - shutdown = terminateResponse.Result; + m_initChannel->GetChannel().SendMessage(terminateMessage); + auto [message, span] = m_initChannel->GetChannel().ReceiveMessageOrClosed>(m_socketTimeout); + if (message) + { + shutdown = message->Result; + } } CATCH_LOG() From 8540b2b6f5f39d0d36bf1c35fcc2d742787db16a Mon Sep 17 00:00:00 2001 From: Blue Date: Tue, 7 Oct 2025 15:52:56 -0700 Subject: [PATCH 17/36] Add WTI rule to detect usermode crashes (#13574) --- triage/config.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/triage/config.yml b/triage/config.yml index 9a3a4ad20..ae283c537 100644 --- a/triage/config.yml +++ b/triage/config.yml @@ -211,6 +211,15 @@ rules: capture: field1: error + - logline: + provider: Microsoft.Windows.Lxss.Manager + task: LinuxCrash + set: + name: linux-crash + capture: + field3: linux-crash-path + field6: linux-crash-process + - logline: provider: Microsoft.Windows.Lxss.Manager set: wsl-service-logs @@ -256,6 +265,11 @@ actions: debug_message: 'Detected user visible error: $error' skip_similar_issues: false + - foreach: + var: linux-crash + debug_message: 'Found evidence of linux crash: $linux-crash-process (dump: $linux-crash-path)' + skip_similar_issues: false + - foreach: var: disk-attach-error debug_message: 'Found evidence of disk failing to attach. Error: $error, Path: $vhdpath' From 5d097195faf0e2500863c86d50fbc10d2cd604dc Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 8 Oct 2025 15:40:02 -0700 Subject: [PATCH 18/36] Fix potential service deadlock when plugin returns an error from OnVmStarted (#13569) --- src/windows/service/exe/LxssUserSession.cpp | 52 +++++++++++---------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/windows/service/exe/LxssUserSession.cpp b/src/windows/service/exe/LxssUserSession.cpp index 9572ba4ad..cb61109b5 100644 --- a/src/windows/service/exe/LxssUserSession.cpp +++ b/src/windows/service/exe/LxssUserSession.cpp @@ -2814,30 +2814,6 @@ void LxssUserSessionImpl::_CreateVm() try { - auto callback = [this](auto Pid) { - // If the vm is currently being destroyed, the instance lock might be held - // while WslCoreVm's destructor is waiting on this thread. - // Cancel the call if the vm destruction is signaled. - // Note: This is safe because m_instanceLock is always initialized - // and because WslCoreVm's destructor waits for this thread, the session can't be gone - // until this callback completes. - - auto lock = m_instanceLock.try_lock(); - while (!lock) - { - if (m_vmTerminating.wait(100)) - { - return; - } - lock = m_instanceLock.try_lock(); - } - - auto unlock = wil::scope_exit([&]() { m_instanceLock.unlock(); }); - TerminateByClientIdLockHeld(Pid); - }; - - m_utilityVm->RegisterCallbacks(std::bind(callback, _1), std::bind(s_VmTerminated, this, _1)); - // Mount disks after the system distro vhd is mounted in case filesystem detection is needed. _LoadDiskMounts(); @@ -2869,6 +2845,34 @@ void LxssUserSessionImpl::_CreateVm() _VmTerminate(); throw; } + + auto callback = [this](auto Pid) { + // If the vm is currently being destroyed, the instance lock might be held + // while WslCoreVm's destructor is waiting on this thread. + // Cancel the call if the vm destruction is signaled. + // Note: This is safe because m_instanceLock is always initialized + // and because WslCoreVm's destructor waits for this thread, the session can't be gone + // until this callback completes. + + auto lock = m_instanceLock.try_lock(); + while (!lock) + { + if (m_vmTerminating.wait(100)) + { + return; + } + lock = m_instanceLock.try_lock(); + } + + auto unlock = wil::scope_exit([&]() { m_instanceLock.unlock(); }); + TerminateByClientIdLockHeld(Pid); + }; + + // N.B. The callbacks must be registered outside of the above try/catch. + // Otherwise if an exception is thrown, calling _VmTerminate() will trigger the 's_VmTerminated' termination callback + // Which can deadlock since this thread holds the instance lock and HCS can block until the VM termination callback returns before deleting the VM. + + m_utilityVm->RegisterCallbacks(std::bind(callback, _1), std::bind(s_VmTerminated, this, _1)); } _VmCheckIdle(); From c7aad6161166d330099cc48ceab7ee158b8225a2 Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 8 Oct 2025 18:24:31 -0700 Subject: [PATCH 19/36] Improve logging when socket operations fail (#13579) * Don't throw when processing an empty argument * Cleanup diff --- src/linux/init/util.cpp | 14 ++++---- src/linux/init/util.h | 4 ++- src/shared/inc/stringshared.h | 17 ++++++++++ src/windows/common/hvsocket.cpp | 12 ++++--- src/windows/common/hvsocket.hpp | 14 ++++++-- src/windows/common/socket.cpp | 37 ++++++++++++--------- src/windows/common/socket.hpp | 48 +++++++++++++++++++++------ src/windows/service/exe/WslCoreVm.cpp | 5 +-- src/windows/service/exe/WslCoreVm.h | 2 +- 9 files changed, 109 insertions(+), 44 deletions(-) diff --git a/src/linux/init/util.cpp b/src/linux/init/util.cpp index ed214f39f..8befb9380 100644 --- a/src/linux/init/util.cpp +++ b/src/linux/init/util.cpp @@ -537,7 +537,7 @@ Return Value: return Socket; } -wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional SocketBuffer) noexcept +wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional SocketBuffer, const std::source_location& Source) noexcept /*++ @@ -553,6 +553,8 @@ Routine Description: 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 {}; } diff --git a/src/linux/init/util.h b/src/linux/init/util.h index b90fa6cb3..dc744eff3 100644 --- a/src/linux/init/util.h +++ b/src/linux/init/util.h @@ -28,6 +28,7 @@ Module Name: #include #include #include +#include #include "lxinitshared.h" #include "lxdef.h" #include "common.h" @@ -128,7 +129,8 @@ wil::unique_fd UtilConnectToInteropServer(std::optional Pid = {}); wil::unique_fd UtilConnectUnix(const char* Path); -wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std::optional SocketBuffer = {}) noexcept; +wil::unique_fd UtilConnectVsock( + unsigned int Port, bool CloseOnExec, std::optional SocketBuffer = {}, const std::source_location& Source = std::source_location::current()) noexcept; // Needs to be declared before UtilCreateChildProcess(). void UtilSetThreadName(const char* Name); diff --git a/src/shared/inc/stringshared.h b/src/shared/inc/stringshared.h index e00015379..bf0d47e21 100644 --- a/src/shared/inc/stringshared.h +++ b/src/shared/inc/stringshared.h @@ -20,6 +20,7 @@ Module Name: #include #include #include +#include #ifndef WIN32 #include @@ -834,6 +835,22 @@ struct std::formatter } }; +template <> +struct std::formatter +{ + template + static constexpr auto parse(TCtx& ctx) + { + return ctx.begin(); + } + + template + auto format(const std::source_location& location, TCtx& ctx) const + { + return std::format_to(ctx.out(), "{}[{}:{}]", location.function_name(), location.file_name(), location.line()); + } +}; + template <> struct std::formatter { diff --git a/src/windows/common/hvsocket.cpp b/src/windows/common/hvsocket.cpp index d2b730f76..96b426cad 100644 --- a/src/windows/common/hvsocket.cpp +++ b/src/windows/common/hvsocket.cpp @@ -39,15 +39,17 @@ void InitializeWildcardSocketAddress(_Out_ PSOCKADDR_HV Address) } } // namespace -wil::unique_socket wsl::windows::common::hvsocket::Accept(_In_ SOCKET ListenSocket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle) +wil::unique_socket wsl::windows::common::hvsocket::Accept( + _In_ SOCKET ListenSocket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle, _In_ const std::source_location& Location) { wil::unique_socket Socket = Create(); - wsl::windows::common::socket::Accept(ListenSocket, Socket.get(), Timeout, ExitHandle); + wsl::windows::common::socket::Accept(ListenSocket, Socket.get(), Timeout, ExitHandle, Location); return Socket; } -wil::unique_socket wsl::windows::common::hvsocket::Connect(_In_ const GUID& VmId, _In_ unsigned long Port, _In_opt_ HANDLE ExitHandle) +wil::unique_socket wsl::windows::common::hvsocket::Connect( + _In_ const GUID& VmId, _In_ unsigned long Port, _In_opt_ HANDLE ExitHandle, _In_ const std::source_location& Location) { OVERLAPPED Overlapped{}; const wil::unique_event OverlappedEvent(wil::EventOptions::ManualReset); @@ -71,7 +73,7 @@ wil::unique_socket wsl::windows::common::hvsocket::Connect(_In_ const GUID& VmId if (Result != 0) { - socket::GetResult(Socket.get(), Overlapped, INFINITE, ExitHandle); + socket::GetResult(Socket.get(), Overlapped, INFINITE, ExitHandle, Location); } ULONG Timeout = CONNECT_TIMEOUT; @@ -86,7 +88,7 @@ wil::unique_socket wsl::windows::common::hvsocket::Connect(_In_ const GUID& VmId const BOOL Success = ConnectFn(Socket.get(), reinterpret_cast(&Addr), sizeof(Addr), nullptr, 0, nullptr, &Overlapped); if (Success == FALSE) { - socket::GetResult(Socket.get(), Overlapped, INFINITE, ExitHandle); + socket::GetResult(Socket.get(), Overlapped, INFINITE, ExitHandle, Location); } return Socket; diff --git a/src/windows/common/hvsocket.hpp b/src/windows/common/hvsocket.hpp index 4caca792a..08b08a002 100644 --- a/src/windows/common/hvsocket.hpp +++ b/src/windows/common/hvsocket.hpp @@ -19,9 +19,17 @@ Module Name: namespace wsl::windows::common::hvsocket { -wil::unique_socket Accept(_In_ SOCKET ListenSocket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle = nullptr); - -wil::unique_socket Connect(_In_ const GUID& VmId, _In_ unsigned long Port, _In_opt_ HANDLE ExitHandle = nullptr); +wil::unique_socket Accept( + _In_ SOCKET ListenSocket, + _In_ int Timeout, + _In_opt_ HANDLE ExitHandle = nullptr, + const std::source_location& Location = std::source_location::current()); + +wil::unique_socket Connect( + _In_ const GUID& VmId, + _In_ unsigned long Port, + _In_opt_ HANDLE ExitHandle = nullptr, + const std::source_location& Location = std::source_location::current()); wil::unique_socket Create(); diff --git a/src/windows/common/socket.cpp b/src/windows/common/socket.cpp index 74c1aaf56..89d6a8758 100644 --- a/src/windows/common/socket.cpp +++ b/src/windows/common/socket.cpp @@ -17,7 +17,8 @@ Module Name: #include "socket.hpp" #pragma hdrstop -void wsl::windows::common::socket::Accept(_In_ SOCKET ListenSocket, _In_ SOCKET Socket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle) +void wsl::windows::common::socket::Accept( + _In_ SOCKET ListenSocket, _In_ SOCKET Socket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle, _In_ const std::source_location& Location) { CHAR AcceptBuffer[2 * sizeof(SOCKADDR_STORAGE)]{}; DWORD BytesReturned; @@ -29,17 +30,20 @@ void wsl::windows::common::socket::Accept(_In_ SOCKET ListenSocket, _In_ SOCKET if (!Success) { - GetResult(ListenSocket, Overlapped, Timeout, ExitHandle); + GetResult(ListenSocket, Overlapped, Timeout, ExitHandle, Location); } // Set the accept context to mark the socket as connected. - THROW_LAST_ERROR_IF( - setsockopt(Socket, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, reinterpret_cast(&ListenSocket), sizeof(ListenSocket)) == SOCKET_ERROR); + THROW_LAST_ERROR_IF_MSG( + setsockopt(Socket, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, reinterpret_cast(&ListenSocket), sizeof(ListenSocket)) == SOCKET_ERROR, + "From: %hs", + std::format("{}", Location).c_str()); return; } -std::pair wsl::windows::common::socket::GetResult(_In_ SOCKET Socket, _In_ OVERLAPPED& Overlapped, _In_ DWORD Timeout, _In_ HANDLE ExitHandle) +std::pair wsl::windows::common::socket::GetResult( + _In_ SOCKET Socket, _In_ OVERLAPPED& Overlapped, _In_ DWORD Timeout, _In_ HANDLE ExitHandle, _In_ const std::source_location& Location) { const int error = WSAGetLastError(); THROW_HR_IF(HRESULT_FROM_WIN32(error), error != WSA_IO_PENDING); @@ -64,7 +68,7 @@ std::pair wsl::windows::common::socket::GetResult(_In_ SOCKET Sock return {0, 0}; } - THROW_HR_IF(HCS_E_CONNECTION_TIMEOUT, (waitStatus != WAIT_OBJECT_0)); + THROW_HR_IF_MSG(HCS_E_CONNECTION_TIMEOUT, (waitStatus != WAIT_OBJECT_0), "From: %hs", std::format("{}", Location).c_str()); cancelFunction.release(); const bool result = WSAGetOverlappedResult(Socket, &Overlapped, &bytesProcessed, FALSE, &flagsReturned); @@ -83,16 +87,17 @@ std::pair wsl::windows::common::socket::GetResult(_In_ SOCKET Sock return {bytesProcessed, flagsReturned}; } -int wsl::windows::common::socket::Receive(_In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ DWORD Flags, _In_ DWORD Timeout) +int wsl::windows::common::socket::Receive( + _In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ DWORD Flags, _In_ DWORD Timeout, _In_ const std::source_location& Location) { - const int BytesRead = ReceiveNoThrow(Socket, Buffer, ExitHandle, Flags, Timeout); + const int BytesRead = ReceiveNoThrow(Socket, Buffer, ExitHandle, Flags, Timeout, Location); THROW_LAST_ERROR_IF(BytesRead == SOCKET_ERROR); return BytesRead; } int wsl::windows::common::socket::ReceiveNoThrow( - _In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ DWORD Flags, _In_ DWORD Timeout) + _In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ DWORD Flags, _In_ DWORD Timeout, _In_ const std::source_location& Location) { OVERLAPPED Overlapped{}; const wil::unique_event OverlappedEvent(wil::EventOptions::ManualReset); @@ -103,7 +108,7 @@ int wsl::windows::common::socket::ReceiveNoThrow( try { BytesReturned = SOCKET_ERROR; - auto [innerBytes, Flags] = GetResult(Socket, Overlapped, Timeout, ExitHandle); + auto [innerBytes, Flags] = GetResult(Socket, Overlapped, Timeout, ExitHandle, Location); BytesReturned = innerBytes; } catch (...) @@ -116,20 +121,22 @@ int wsl::windows::common::socket::ReceiveNoThrow( return BytesReturned; } -std::vector wsl::windows::common::socket::Receive(_In_ SOCKET Socket, _In_opt_ HANDLE ExitHandle, _In_ DWORD Timeout) +std::vector wsl::windows::common::socket::Receive( + _In_ SOCKET Socket, _In_opt_ HANDLE ExitHandle, _In_ DWORD Timeout, _In_ const std::source_location& Location) { - Receive(Socket, {}, ExitHandle, MSG_PEEK); + Receive(Socket, {}, ExitHandle, MSG_PEEK, Timeout, Location); ULONG Size = 0; THROW_LAST_ERROR_IF(ioctlsocket(Socket, FIONREAD, &Size) == SOCKET_ERROR); std::vector Buffer(Size); - WI_VERIFY(Receive(Socket, gsl::make_span(Buffer), ExitHandle, Timeout) == static_cast(Size)); + WI_VERIFY(Receive(Socket, gsl::make_span(Buffer), ExitHandle, MSG_WAITALL, Timeout, Location) == static_cast(Size)); return Buffer; } -int wsl::windows::common::socket::Send(_In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle) +int wsl::windows::common::socket::Send( + _In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ const std::source_location& Location) { OVERLAPPED Overlapped{}; const wil::unique_event OverlappedEvent(wil::EventOptions::ManualReset); @@ -139,7 +146,7 @@ int wsl::windows::common::socket::Send(_In_ SOCKET Socket, _In_ gsl::span(Buffer.size())); diff --git a/src/windows/common/socket.hpp b/src/windows/common/socket.hpp index 3cab9e675..a72e8ce54 100644 --- a/src/windows/common/socket.hpp +++ b/src/windows/common/socket.hpp @@ -18,16 +18,42 @@ Module Name: namespace wsl::windows::common::socket { -void Accept(_In_ SOCKET ListenSocket, _In_ SOCKET Socket, _In_ int Timeout, _In_opt_ HANDLE ExitHandle); - -std::pair GetResult(_In_ SOCKET Socket, _In_ OVERLAPPED& Overlapped, _In_ DWORD Timeout, _In_ HANDLE ExitHandle); - -int Receive(_In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle = nullptr, _In_ DWORD Flags = MSG_WAITALL, _In_ DWORD Timeout = INFINITE); - -std::vector Receive(_In_ SOCKET Socket, _In_opt_ HANDLE ExitHandle = nullptr, _In_ DWORD Timeout = INFINITE); - -int ReceiveNoThrow(_In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle = nullptr, _In_ DWORD Flags = MSG_WAITALL, _In_ DWORD Timeout = INFINITE); - -int Send(_In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle = nullptr); +void Accept( + _In_ SOCKET ListenSocket, + _In_ SOCKET Socket, + _In_ int Timeout, + _In_opt_ HANDLE ExitHandle, + _In_ const std::source_location& Location = std::source_location::current()); + +std::pair GetResult( + _In_ SOCKET Socket, _In_ OVERLAPPED& Overlapped, _In_ DWORD Timeout, _In_ HANDLE ExitHandle, _In_ const std::source_location& Location); + +int Receive( + _In_ SOCKET Socket, + _In_ gsl::span Buffer, + _In_opt_ HANDLE ExitHandle = nullptr, + _In_ DWORD Flags = MSG_WAITALL, + _In_ DWORD Timeout = INFINITE, + _In_ const std::source_location& Location = std::source_location::current()); + +std::vector Receive( + _In_ SOCKET Socket, + _In_opt_ HANDLE ExitHandle = nullptr, + _In_ DWORD Timeout = INFINITE, + _In_ const std::source_location& Location = std::source_location::current()); + +int ReceiveNoThrow( + _In_ SOCKET Socket, + _In_ gsl::span Buffer, + _In_opt_ HANDLE ExitHandle = nullptr, + _In_ DWORD Flags = MSG_WAITALL, + _In_ DWORD Timeout = INFINITE, + _In_ const std::source_location& Location = std::source_location::current()); + +int Send( + _In_ SOCKET Socket, + _In_ gsl::span Buffer, + _In_opt_ HANDLE ExitHandle = nullptr, + _In_ const std::source_location& Location = std::source_location::current()); } // namespace wsl::windows::common::socket diff --git a/src/windows/service/exe/WslCoreVm.cpp b/src/windows/service/exe/WslCoreVm.cpp index b7b9517cc..adb08bbc3 100644 --- a/src/windows/service/exe/WslCoreVm.cpp +++ b/src/windows/service/exe/WslCoreVm.cpp @@ -879,9 +879,10 @@ WslCoreVm::~WslCoreVm() noexcept WSL_LOG("TerminateVmStop"); } -wil::unique_socket WslCoreVm::AcceptConnection(_In_ DWORD ReceiveTimeout) const +wil::unique_socket WslCoreVm::AcceptConnection(_In_ DWORD ReceiveTimeout, _In_ const std::source_location& Location) const { - auto socket = wsl::windows::common::hvsocket::Accept(m_listenSocket.get(), m_vmConfig.KernelBootTimeout, m_terminatingEvent.get()); + auto socket = + wsl::windows::common::hvsocket::Accept(m_listenSocket.get(), m_vmConfig.KernelBootTimeout, m_terminatingEvent.get(), Location); if (ReceiveTimeout != 0) { THROW_LAST_ERROR_IF(setsockopt(socket.get(), SOL_SOCKET, SO_RCVTIMEO, (const char*)&ReceiveTimeout, sizeof(ReceiveTimeout)) == SOCKET_ERROR); diff --git a/src/windows/service/exe/WslCoreVm.h b/src/windows/service/exe/WslCoreVm.h index e4596fb6d..df664e0ad 100644 --- a/src/windows/service/exe/WslCoreVm.h +++ b/src/windows/service/exe/WslCoreVm.h @@ -61,7 +61,7 @@ class WslCoreVm ~WslCoreVm() noexcept; - wil::unique_socket AcceptConnection(_In_ DWORD ReceiveTimeout = 0) const; + wil::unique_socket AcceptConnection(_In_ DWORD ReceiveTimeout = 0, _In_ const std::source_location& Location = std::source_location::current()) const; enum class DiskType { From 0974c302c0c08079f60af6d09bd03bb236414237 Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 15 Oct 2025 21:42:39 -0700 Subject: [PATCH 20/36] Remove unused LXSS_DISTRO_FLAGS_WSLCORE_MODE (#13603) --- src/windows/service/exe/WslCoreInstance.cpp | 7 ------- src/windows/service/inc/wslservice.idl | 3 +-- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/windows/service/exe/WslCoreInstance.cpp b/src/windows/service/exe/WslCoreInstance.cpp index 7dec7f531..213d2cc22 100644 --- a/src/windows/service/exe/WslCoreInstance.cpp +++ b/src/windows/service/exe/WslCoreInstance.cpp @@ -375,13 +375,6 @@ void WslCoreInstance::Initialize() drvfsMount = m_initializeDrvFs(m_userToken.get()); } - // If not using the WSL init, initialization is complete. - if (WI_IsFlagSet(m_configuration.Flags, LXSS_DISTRO_FLAGS_WSLCORE_MODE)) - { - m_initialized = true; - return; - } - // Create a console manager that will be used to manage session leaders. m_consoleManager = ConsoleManager::CreateConsoleManager(m_initChannel); diff --git a/src/windows/service/inc/wslservice.idl b/src/windows/service/inc/wslservice.idl index f144cd689..c68ad7567 100644 --- a/src/windows/service/inc/wslservice.idl +++ b/src/windows/service/inc/wslservice.idl @@ -103,9 +103,8 @@ cpp_quote("#define LXSS_DISTRO_FLAGS_ENABLE_INTEROP 0x1") cpp_quote("#define LXSS_DISTRO_FLAGS_APPEND_NT_PATH 0x2") cpp_quote("#define LXSS_DISTRO_FLAGS_ENABLE_DRIVE_MOUNTING 0x4") cpp_quote("#define LXSS_DISTRO_FLAGS_VM_MODE 0x8") -cpp_quote("#define LXSS_DISTRO_FLAGS_WSLCORE_MODE 0x10") cpp_quote("#define LXSS_DISTRO_FLAGS_UNCHANGED 0xFFFFFFFE") // Not using ~0 since the inbox tests use that value to validate that invalid flags return an error. -cpp_quote("#define LXSS_DISTRO_FLAGS_ALL (LXSS_DISTRO_FLAGS_ENABLE_INTEROP | LXSS_DISTRO_FLAGS_APPEND_NT_PATH | LXSS_DISTRO_FLAGS_ENABLE_DRIVE_MOUNTING | LXSS_DISTRO_FLAGS_VM_MODE| LXSS_DISTRO_FLAGS_WSLCORE_MODE)") +cpp_quote("#define LXSS_DISTRO_FLAGS_ALL (LXSS_DISTRO_FLAGS_ENABLE_INTEROP | LXSS_DISTRO_FLAGS_APPEND_NT_PATH | LXSS_DISTRO_FLAGS_ENABLE_DRIVE_MOUNTING | LXSS_DISTRO_FLAGS_VM_MODE)") cpp_quote("#define LXSS_DISTRO_FLAGS_DEFAULT (LXSS_DISTRO_FLAGS_ENABLE_INTEROP | LXSS_DISTRO_FLAGS_APPEND_NT_PATH | LXSS_DISTRO_FLAGS_ENABLE_DRIVE_MOUNTING)") cpp_quote("#define LXSS_ENUMERATE_FLAGS_DEFAULT 0x1") From b3a7b7d395bc843ef706709df1d6e31f1be82c39 Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 16 Oct 2025 10:53:49 -0700 Subject: [PATCH 21/36] Add logic to handle partial hvsocket writes and additional logging (#13602) --- src/linux/init/common.h | 8 ++++--- src/shared/inc/SocketChannel.h | 9 ++++---- src/shared/inc/socketshared.h | 21 +++++++++++++++++ src/windows/common/socket.cpp | 41 +++++++++++++++++++++++++++------- 4 files changed, 64 insertions(+), 15 deletions(-) diff --git a/src/linux/init/common.h b/src/linux/init/common.h index eca78c5ad..945d0eab5 100644 --- a/src/linux/init/common.h +++ b/src/linux/init/common.h @@ -54,9 +54,6 @@ Module Name: #include #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& 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; diff --git a/src/shared/inc/SocketChannel.h b/src/shared/inc/SocketChannel.h index 8fb47d023..154d3148f 100644 --- a/src/shared/inc/SocketChannel.h +++ b/src/shared/inc/SocketChannel.h @@ -112,12 +112,13 @@ class SocketChannel #ifdef WIN32 + auto sentBytes = wsl::windows::common::socket::Send(m_socket.get(), span, m_exitEvent); + WSL_LOG( "SentMessage", TraceLoggingValue(m_name, "Name"), - TraceLoggingValue(reinterpret_cast(span.data())->PrettyPrint().c_str(), "Content")); - - wsl::windows::common::socket::Send(m_socket.get(), span, m_exitEvent); + TraceLoggingValue(reinterpret_cast(span.data())->PrettyPrint().c_str(), "Content"), + TraceLoggingValue(sentBytes, "SentBytes")); #else @@ -130,7 +131,7 @@ class SocketChannel { LOG_ERROR("Failed to write message {}. Channel: {}", header->MessageType, m_name); THROW_LAST_ERROR(); - }; + } #endif } diff --git a/src/shared/inc/socketshared.h b/src/shared/inc/socketshared.h index d64a5391e..d07916d6b 100644 --- a/src/shared/inc/socketshared.h +++ b/src/shared/inc/socketshared.h @@ -80,6 +80,27 @@ try #endif if (BytesRead <= 0) { + const auto* Header = reinterpret_cast(Buffer.data()); + +#if defined(_MSC_VER) + + LOG_HR_MSG( + E_UNEXPECTED, + "Socket closed while reading message. Size: %u, type: %i, sequence: %u", + Header->MessageSize, + Header->MessageType, + Header->SequenceNumber); + +#elif defined(__GNUC__) + + LOG_ERROR( + "Socket closed while reading message. Size: {}, type: {}, sequence: {}", + Header->MessageSize, + Header->MessageType, + Header->SequenceNumber); + +#endif + return {}; } diff --git a/src/windows/common/socket.cpp b/src/windows/common/socket.cpp index 89d6a8758..50fe0ae61 100644 --- a/src/windows/common/socket.cpp +++ b/src/windows/common/socket.cpp @@ -138,18 +138,43 @@ std::vector wsl::windows::common::socket::Receive( int wsl::windows::common::socket::Send( _In_ SOCKET Socket, _In_ gsl::span Buffer, _In_opt_ HANDLE ExitHandle, _In_ const std::source_location& Location) { - OVERLAPPED Overlapped{}; const wil::unique_event OverlappedEvent(wil::EventOptions::ManualReset); - WSABUF VectorBuffer = {gsl::narrow_cast(Buffer.size()), const_cast(reinterpret_cast(Buffer.data()))}; + OVERLAPPED Overlapped{}; Overlapped.hEvent = OverlappedEvent.get(); - DWORD BytesWritten{}; - if (WSASend(Socket, &VectorBuffer, 1, &BytesWritten, 0, &Overlapped, nullptr) != 0) + + DWORD Offset = 0; + while (Offset < Buffer.size()) { - DWORD Flags; - std::tie(BytesWritten, Flags) = GetResult(Socket, Overlapped, INFINITE, ExitHandle, Location); + OverlappedEvent.ResetEvent(); + + WSABUF VectorBuffer = { + gsl::narrow_cast(Buffer.size() - Offset), const_cast(reinterpret_cast(Buffer.data() + Offset))}; + + DWORD BytesWritten{}; + if (WSASend(Socket, &VectorBuffer, 1, &BytesWritten, 0, &Overlapped, nullptr) != 0) + { + // If WSASend returns non-zero, expect WSA_IO_PENDING. + if (auto error = WSAGetLastError(); error != WSA_IO_PENDING) + { + THROW_WIN32_MSG(error, "WSASend failed. From: %hs", std::format("{}", Location).c_str()); + } + + DWORD Flags; + std::tie(BytesWritten, Flags) = GetResult(Socket, Overlapped, INFINITE, ExitHandle, Location); + if (BytesWritten == 0) + { + THROW_WIN32_MSG(ERROR_CONNECTION_ABORTED, "Socket closed during WSASend(). From: %hs", std::format("{}", Location).c_str()); + } + } + + Offset += BytesWritten; + if (Offset < Buffer.size()) + { + WSL_LOG("PartialSocketWrite", TraceLoggingValue(Buffer.size(), "MessagSize"), TraceLoggingValue(Offset, "Offset")); + } } - WI_ASSERT(BytesWritten == gsl::narrow_cast(Buffer.size())); + WI_ASSERT(Offset == gsl::narrow_cast(Buffer.size())); - return BytesWritten; + return Offset; } From a445eaa89f6e7a6c76765b71f2e23b3f195dfe75 Mon Sep 17 00:00:00 2001 From: Ben Hillis Date: Thu, 16 Oct 2025 13:06:26 -0600 Subject: [PATCH 22/36] Update Microsoft.NETCore.App.Runtime packages version with fix for CVE-2025-55248 (#13607) Co-authored-by: Ben Hillis --- packages.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.config b/packages.config index 2cf464ec5..73c50375a 100644 --- a/packages.config +++ b/packages.config @@ -8,8 +8,8 @@ - - + + From dab574ebc15494e3d04021013217be3e7664c21a Mon Sep 17 00:00:00 2001 From: Ben Hillis Date: Thu, 16 Oct 2025 13:20:26 -0600 Subject: [PATCH 23/36] Update Microsoft.WSL.DeviceHost package to version 1.0.0-20251015.1 which contains support virtioproxy support for ICMP (#13606) Co-authored-by: Ben Hillis --- packages.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.config b/packages.config index 73c50375a..a20234d20 100644 --- a/packages.config +++ b/packages.config @@ -18,7 +18,7 @@ - + From c1b77b125d8cf97a00feb2d3c43d324e5bf2c228 Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 16 Oct 2025 13:47:32 -0700 Subject: [PATCH 24/36] Notice change from build: 131949882 (#13608) Co-authored-by: WSL notice --- NOTICE.txt | 186 ----------------------------------------------------- 1 file changed, 186 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 80aaf600c..a4a5c44ae 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1762,192 +1762,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -Microsoft.NETCore.App.Runtime.win-arm64 9.0.8 - MIT - - -Copyright (c) 2021 -Copyright (c) Six Labors -(c) Microsoft Corporation -Copyright (c) 2022 FormatJS -Copyright (c) Andrew Arnott -Copyright 2019 LLVM Project -Copyright (c) 1998 Microsoft -Copyright 2018 Daniel Lemire -Copyright (c) .NET Foundation -Copyright 1995-2022 Mark Adler -Copyright 1995-2024 Mark Adler -Copyright (c) 2011, Google Inc. -Copyright (c) 2020 Dan Shechter -(c) 1997-2005 Sean Eron Anderson -Copyright (c) 2015 Andrew Gallant -Copyright (c) 2022, Wojciech Mula -Copyright (c) 2017 Yoshifumi Kawai -Copyright (c) 2022, Geoff Langdale -Copyright (c) 2005-2020 Rich Felker -Copyright (c) 2012-2021 Yann Collet -Copyright (c) Microsoft Corporation -Copyright (c) 2007 James Newton-King -Copyright (c) 1991-2022 Unicode, Inc. -Copyright (c) 2013-2017, Alfred Klomp -Copyright (c) 2018 Nemanja Mijailovic -Copyright 2012 the V8 project authors -Copyright (c) 1999 Lucent Technologies -Copyright (c) 2008-2016, Wojciech Mula -Copyright (c) 2011-2020 Microsoft Corp -Copyright (c) 2015-2017, Wojciech Mula -Copyright (c) 2015-2018, Wojciech Mula -Copyright (c) 2005-2007, Nick Galbreath -Copyright (c) 2015 The Chromium Authors -Copyright (c) 2018 Alexander Chermyanin -Copyright (c) The Internet Society 1997 -Copyright (c) 2004-2006 Intel Corporation -Copyright (c) 2011-2015 Intel Corporation -Copyright (c) 2013-2017, Milosz Krajewski -Copyright (c) 2016-2017, Matthieu Darbois -Copyright (c) The Internet Society (2003) -Copyright (c) .NET Foundation Contributors -(c) 1995-2024 Jean-loup Gailly and Mark Adler -Copyright (c) 2020 Mara Bos -Copyright (c) .NET Foundation and Contributors -Copyright (c) 2012 - present, Victor Zverovich -Copyright (c) 2006 Jb Evain (jbevain@gmail.com) -Copyright (c) 2008-2020 Advanced Micro Devices, Inc. -Copyright (c) 2019 Microsoft Corporation, Daan Leijen -Copyright (c) 2011 Novell, Inc (http://www.novell.com) -Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) -Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors -Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com -Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal -Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. -Portions (c) International Organization for Standardization 1986 -Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers -Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip -Copyright (c) 1980, 1986, 1993 The Regents of the University of California -Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California -Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass - -The MIT License (MIT) - -Copyright (c) .NET Foundation and Contributors - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -Microsoft.NETCore.App.Runtime.win-x64 9.0.8 - MIT - - -Copyright (c) 2021 -Copyright (c) Six Labors -(c) Microsoft Corporation -Copyright (c) 2022 FormatJS -Copyright (c) Andrew Arnott -Copyright 2019 LLVM Project -Copyright (c) 1998 Microsoft -Copyright 2018 Daniel Lemire -Copyright (c) .NET Foundation -Copyright 1995-2022 Mark Adler -Copyright 1995-2024 Mark Adler -Copyright (c) 2011, Google Inc. -Copyright (c) 2020 Dan Shechter -(c) 1997-2005 Sean Eron Anderson -Copyright (c) 2015 Andrew Gallant -Copyright (c) 2022, Wojciech Mula -Copyright (c) 2017 Yoshifumi Kawai -Copyright (c) 2022, Geoff Langdale -Copyright (c) 2005-2020 Rich Felker -Copyright (c) 2012-2021 Yann Collet -Copyright (c) Microsoft Corporation -Copyright (c) 2007 James Newton-King -Copyright (c) 1991-2022 Unicode, Inc. -Copyright (c) 2013-2017, Alfred Klomp -Copyright (c) 2018 Nemanja Mijailovic -Copyright 2012 the V8 project authors -Copyright (c) 1999 Lucent Technologies -Copyright (c) 2008-2016, Wojciech Mula -Copyright (c) 2011-2020 Microsoft Corp -Copyright (c) 2015-2017, Wojciech Mula -Copyright (c) 2015-2018, Wojciech Mula -Copyright (c) 2005-2007, Nick Galbreath -Copyright (c) 2015 The Chromium Authors -Copyright (c) 2018 Alexander Chermyanin -Copyright (c) The Internet Society 1997 -Copyright (c) 2004-2006 Intel Corporation -Copyright (c) 2011-2015 Intel Corporation -Copyright (c) 2013-2017, Milosz Krajewski -Copyright (c) 2016-2017, Matthieu Darbois -Copyright (c) The Internet Society (2003) -Copyright (c) .NET Foundation Contributors -(c) 1995-2024 Jean-loup Gailly and Mark Adler -Copyright (c) 2020 Mara Bos -Copyright (c) .NET Foundation and Contributors -Copyright (c) 2012 - present, Victor Zverovich -Copyright (c) 2006 Jb Evain (jbevain@gmail.com) -Copyright (c) 2008-2020 Advanced Micro Devices, Inc. -Copyright (c) 2019 Microsoft Corporation, Daan Leijen -Copyright (c) 2011 Novell, Inc (http://www.novell.com) -Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) -Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors -Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com -Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal -Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. -Portions (c) International Organization for Standardization 1986 -Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers -Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip -Copyright (c) 1980, 1986, 1993 The Regents of the University of California -Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California -Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass - -The MIT License (MIT) - -Copyright (c) .NET Foundation and Contributors - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- From 9e9ef6f145f996c880874da81f884e41a8b9a852 Mon Sep 17 00:00:00 2001 From: Ben Hillis Date: Tue, 21 Oct 2025 17:00:47 -0700 Subject: [PATCH 25/36] Fix edge cases around .vhd support (#13061) * Fix edge cases around .vhd support * PR feedback Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * pr feedback * remove unneeded scope exit in unit test --------- Co-authored-by: Ben Hillis Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- localization/strings/en-US/Resources.resw | 27 ++++--- src/windows/common/WslClient.cpp | 26 +----- src/windows/common/wslutil.cpp | 7 ++ src/windows/common/wslutil.h | 2 + src/windows/service/exe/LxssUserSession.cpp | 48 ++++++++--- src/windows/service/exe/WslCoreFilesystem.cpp | 4 +- test/windows/SimpleTests.cpp | 4 +- test/windows/UnitTests.cpp | 79 +++++++++++++++++-- 8 files changed, 142 insertions(+), 55 deletions(-) diff --git a/localization/strings/en-US/Resources.resw b/localization/strings/en-US/Resources.resw index 61526d673..890dff2b1 100644 --- a/localization/strings/en-US/Resources.resw +++ b/localization/strings/en-US/Resources.resw @@ -466,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. @@ -546,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] @@ -626,7 +626,7 @@ Build time: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The custom kernel modules vhd in {} was not found: '{}'. + The custom kernel modules VHD in {} was not found: '{}'. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -704,8 +704,13 @@ The system may need to be restarted so the changes can take effect. {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - The specified file must have the .vhdx file extension. + + The specified file must have the {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated The VmSwitch '{}' was not found. Available switches: {} @@ -998,7 +1003,7 @@ Falling back to NAT networking. See Docs - The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: wsl.exe --shutdown + The operation could not be completed because the VHD is currently in use. To force WSL to stop use: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1006,7 +1011,7 @@ Falling back to NAT networking. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx is supported on WSL2 only. + Sparse VHD is supported on WSL2 only. Running WSL as local system is not supported. @@ -1055,7 +1060,7 @@ Falling back to NAT networking. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - This looks like a VHDX file. Use --vhd to import a VHDX instead of a tar. + This looks like a VHD file. Use --vhd to import a VHD instead of a tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1107,7 +1112,7 @@ Error code: {} Sparse VHD support is currently disabled due to potential data corruption. -To force a distribution to use a sparse vhd, please run: +To force a distribution to use a sparse VHD, please run: wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/src/windows/common/WslClient.cpp b/src/windows/common/WslClient.cpp index 04d167a39..7c34582ea 100644 --- a/src/windows/common/WslClient.cpp +++ b/src/windows/common/WslClient.cpp @@ -275,14 +275,6 @@ int ExportDistribution(_In_ std::wstring_view commandLine) } else { - // If exporting to a vhd, ensure the filename ends with the vhdx file extension. - if (WI_IsFlagSet(flags, LXSS_EXPORT_DISTRO_FLAGS_VHD) && - !wsl::windows::common::string::IsPathComponentEqual(filePath.extension().native(), wsl::windows::common::wslutil::c_vhdxFileExtension)) - { - wsl::windows::common::wslutil::PrintMessage(wsl::shared::Localization::MessageRequiresVhdxFileExtension()); - return -1; - } - file.reset(CreateFileW( filePath.c_str(), GENERIC_WRITE, (FILE_SHARE_READ | FILE_SHARE_DELETE), nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr)); @@ -371,22 +363,10 @@ int ImportDistribution(_In_ std::wstring_view commandLine) } else { - bool isVhd = wsl::windows::common::string::IsPathComponentEqual( - filePath.extension().native(), wsl::windows::common::wslutil::c_vhdxFileExtension); - - if (WI_IsFlagSet(flags, LXSS_IMPORT_DISTRO_FLAGS_VHD)) - { - // If importing from a vhd, ensure the filename ends with the vhdx file extension. - if (!isVhd) - { - wsl::windows::common::wslutil::PrintMessage(wsl::shared::Localization::MessageRequiresVhdxFileExtension()); - return -1; - } - } - else + if (WI_IsFlagClear(flags, LXSS_IMPORT_DISTRO_FLAGS_VHD)) { - // Fail if we expect a tar, but the file name has the .vhdx extension. - if (isVhd) + // Fail if expecting a tar, but the file name has the .vhd or .vhdx extension. + if (wsl::windows::common::wslutil::IsVhdFile(filePath)) { wsl::windows::common::wslutil::PrintMessage(wsl::shared::Localization::MessagePassVhdFlag()); return -1; diff --git a/src/windows/common/wslutil.cpp b/src/windows/common/wslutil.cpp index a06f08fae..ca87eff0c 100644 --- a/src/windows/common/wslutil.cpp +++ b/src/windows/common/wslutil.cpp @@ -1155,6 +1155,13 @@ bool wsl::windows::common::wslutil::IsRunningInMsix() return false; } } + +bool wsl::windows::common::wslutil::IsVhdFile(_In_ const std::filesystem::path& path) +{ + return wsl::windows::common::string::IsPathComponentEqual(path.extension().native(), c_vhdFileExtension) || + wsl::windows::common::string::IsPathComponentEqual(path.extension().native(), c_vhdxFileExtension); +} + std::vector wsl::windows::common::wslutil::ListRunningProcesses() { std::vector pids(1024); diff --git a/src/windows/common/wslutil.h b/src/windows/common/wslutil.h index 26b7a2090..41d4b7cc2 100644 --- a/src/windows/common/wslutil.h +++ b/src/windows/common/wslutil.h @@ -122,6 +122,8 @@ void InitializeWil(); bool IsRunningInMsix(); +bool IsVhdFile(_In_ const std::filesystem::path& path); + bool IsVirtualMachinePlatformInstalled(); std::vector ListRunningProcesses(); diff --git a/src/windows/service/exe/LxssUserSession.cpp b/src/windows/service/exe/LxssUserSession.cpp index cb61109b5..d0dcc04da 100644 --- a/src/windows/service/exe/LxssUserSession.cpp +++ b/src/windows/service/exe/LxssUserSession.cpp @@ -927,7 +927,7 @@ HRESULT LxssUserSessionImpl::MoveDistribution(_In_ LPCGUID DistroGuid, _In_ LPCW std::filesystem::path newVhdPath = Location; RETURN_HR_IF(E_INVALIDARG, newVhdPath.empty()); - newVhdPath /= LXSS_VM_MODE_VHD_NAME; + newVhdPath /= distro.VhdFilePath.filename(); auto impersonate = wil::CoImpersonateClient(); @@ -952,7 +952,7 @@ HRESULT LxssUserSessionImpl::MoveDistribution(_In_ LPCGUID DistroGuid, _In_ LPCW // Update the registry location registration.Write(Property::BasePath, Location); - registration.Write(Property::VhdFileName, LXSS_VM_MODE_VHD_NAME); + registration.Write(Property::VhdFileName, newVhdPath.filename().c_str()); revert.release(); @@ -1079,6 +1079,22 @@ HRESULT LxssUserSessionImpl::ExportDistribution(_In_opt_ LPCGUID DistroGuid, _In { const wil::unique_handle userToken = wsl::windows::common::security::GetUserToken(TokenImpersonation); auto runAsUser = wil::impersonate_token(userToken.get()); + + // Ensure the target file has the correct file extension. + if (GetFileType(FileHandle) == FILE_TYPE_DISK) + { + std::wstring exportPath; + THROW_IF_FAILED(wil::GetFinalPathNameByHandleW(FileHandle, exportPath)); + + const auto sourceFileExtension = configuration.VhdFilePath.extension().native(); + const auto targetFileExtension = std::filesystem::path(exportPath).extension().native(); + if (!wsl::windows::common::string::IsPathComponentEqual(sourceFileExtension, targetFileExtension)) + { + THROW_HR_WITH_USER_ERROR( + WSL_E_EXPORT_FAILED, wsl::shared::Localization::MessageRequiresFileExtension(sourceFileExtension.c_str())); + } + } + const wil::unique_hfile vhdFile(CreateFileW( configuration.VhdFilePath.c_str(), GENERIC_READ, (FILE_SHARE_READ | FILE_SHARE_DELETE), nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr)); @@ -1258,13 +1274,9 @@ LxssUserSessionImpl::ImportDistributionInplace(_In_ LPCWSTR DistributionName, _I s_ValidateDistroName(DistributionName); - // Return an error if the path is not absolute or does not end in the .vhdx file extension. + // Return an error if the path is not absolute or does not have a valid VHD file extension. const std::filesystem::path path{VhdPath}; - RETURN_HR_IF( - E_INVALIDARG, - !path.is_absolute() || - (!wsl::windows::common::string::IsPathComponentEqual(path.extension().native(), wsl::windows::common::wslutil::c_vhdFileExtension) && - !wsl::windows::common::string::IsPathComponentEqual(path.extension().c_str(), wsl::windows::common::wslutil::c_vhdxFileExtension))); + RETURN_HR_IF(E_INVALIDARG, !path.is_absolute() || !wsl::windows::common::wslutil::IsVhdFile(path)); const wil::unique_hkey lxssKey = s_OpenLxssUserKey(); std::lock_guard lock(m_instanceLock); @@ -1448,6 +1460,24 @@ HRESULT LxssUserSessionImpl::RegisterDistribution( wil::CreateDirectoryDeep(distributionPath.c_str()); } + // If importing a vhd, determine if it is a .vhd or .vhdx. + std::wstring vhdName{LXSS_VM_MODE_VHD_NAME}; + if ((WI_IsFlagSet(Flags, LXSS_IMPORT_DISTRO_FLAGS_VHD)) && (GetFileType(FileHandle) == FILE_TYPE_DISK)) + { + std::wstring pathBuffer; + THROW_IF_FAILED(wil::GetFinalPathNameByHandleW(FileHandle, pathBuffer)); + + std::filesystem::path vhdPath{std::move(pathBuffer)}; + if (!wsl::windows::common::wslutil::IsVhdFile(vhdPath)) + { + using namespace wsl::windows::common::wslutil; + THROW_HR_WITH_USER_ERROR( + WSL_E_IMPORT_FAILED, wsl::shared::Localization::MessageRequiresFileExtensions(c_vhdFileExtension, c_vhdxFileExtension)); + } + + vhdName = vhdPath.filename(); + } + registration = DistributionRegistration::Create( lxssKey.get(), DistributionId, @@ -1457,7 +1487,7 @@ HRESULT LxssUserSessionImpl::RegisterDistribution( flags, LX_UID_ROOT, PackageFamilyName, - LXSS_VM_MODE_VHD_NAME, + vhdName.c_str(), WI_IsFlagClear(Flags, LXSS_IMPORT_DISTRO_FLAGS_NO_OOBE)); configuration = s_GetDistributionConfiguration(registration, DistributionName == nullptr); diff --git a/src/windows/service/exe/WslCoreFilesystem.cpp b/src/windows/service/exe/WslCoreFilesystem.cpp index 1f026dd19..6fd79b31e 100644 --- a/src/windows/service/exe/WslCoreFilesystem.cpp +++ b/src/windows/service/exe/WslCoreFilesystem.cpp @@ -71,9 +71,7 @@ void wsl::core::filesystem::CreateVhd(_In_ LPCWSTR target, _In_ ULONGLONG maximu wil::unique_handle wsl::core::filesystem::OpenVhd(_In_ LPCWSTR Path, _In_ VIRTUAL_DISK_ACCESS_MASK Mask) { - WI_ASSERT( - wsl::shared::string::IsEqual(std::filesystem::path{Path}.extension().c_str(), windows::common::wslutil::c_vhdFileExtension, true) || - wsl::shared::string::IsEqual(std::filesystem::path{Path}.extension().c_str(), windows::common::wslutil::c_vhdxFileExtension, true)); + WI_ASSERT(wsl::windows::common::wslutil::IsVhdFile(std::filesystem::path{Path})); // N.B. Specifying unknown for device and vendor means the system will determine the type of VHD. VIRTUAL_STORAGE_TYPE storageType{}; diff --git a/test/windows/SimpleTests.cpp b/test/windows/SimpleTests.cpp index 6adb571e4..5a7237986 100644 --- a/test/windows/SimpleTests.cpp +++ b/test/windows/SimpleTests.cpp @@ -109,7 +109,7 @@ class SimpleTests std::format(L"{} {} {} {}", WSL_IMPORT_ARG, tempDistro, vhdDir.wstring(), tar.wstring()).c_str(), L"The operation completed successfully. \r\n", L"wsl: Sparse VHD support is currently disabled due to potential data corruption.\r\n" - L"To force a distribution to use a sparse vhd, please run:\r\n" + L"To force a distribution to use a sparse VHD, please run:\r\n" L"wsl.exe --manage --set-sparse true --allow-unsafe\r\n", 0); @@ -122,7 +122,7 @@ class SimpleTests ValidateOutput( std::format(L"{} {} {} {}", WSL_MANAGE_ARG, tempDistro, WSL_MANAGE_ARG_SET_SPARSE_OPTION_LONG, L"true").c_str(), L"Sparse VHD support is currently disabled due to potential data corruption.\r\n" - L"To force a distribution to use a sparse vhd, please run:\r\n" + L"To force a distribution to use a sparse VHD, please run:\r\n" L"wsl.exe --manage --set-sparse true --allow-unsafe\r\nError code: Wsl/Service/E_INVALIDARG\r\n", L"", -1); diff --git a/test/windows/UnitTests.cpp b/test/windows/UnitTests.cpp index 781221f80..be832f7d5 100644 --- a/test/windows/UnitTests.cpp +++ b/test/windows/UnitTests.cpp @@ -1016,7 +1016,7 @@ class UnitTests L"Error code: Wsl/Service/RegisterDistro/ERROR_FILE_EXISTS\r\n"); commandLine = std::format(L"--import dummy {} {} --version {}", LXSST_IMPORT_DISTRO_TEST_DIR, vhdFileName, version); - validateOutput(commandLine.c_str(), L"This looks like a VHDX file. Use --vhd to import a VHDX instead of a tar.\r\n"); + validateOutput(commandLine.c_str(), L"This looks like a VHD file. Use --vhd to import a VHD instead of a tar.\r\n"); if (!LxsstuVmMode()) { @@ -1557,7 +1557,7 @@ Arguments for managing Windows Subsystem for Linux: Move the distribution to a new location. --set-sparse, -s - 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 Set the default user of the distribution. @@ -1637,11 +1637,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 - 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] @@ -2896,8 +2896,7 @@ Error code: Wsl/InstallDistro/WSL_E_DISTRO_NOT_FOUND WslKeepAlive keepAlive; auto [out, _] = LxsstuLaunchWslAndCaptureOutput(L"--manage test_distro --resize 1500GB", -1); VERIFY_ARE_EQUAL( - L"The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: " - L"wsl.exe " + L"The operation could not be completed because the VHD is currently in use. To force WSL to stop use: wsl.exe " L"--shutdown\r\nError code: Wsl/Service/WSL_E_DISTRO_NOT_STOPPED\r\n", out); } @@ -6276,5 +6275,71 @@ Error code: Wsl/InstallDistro/WSL_E_INVALID_JSON\r\n", VERIFY_ARE_EQUAL(out, L"755\n"); } + TEST_METHOD(ExportImportVhd) + { + WSL2_TEST_ONLY(); + + WslShutdown(); + + constexpr auto vhdPath = L"exported-test-distro.vhd"; + constexpr auto vhdxPath = L"exported-test-distro.vhdx"; + constexpr auto exportedVhdPath = L"exported-vhd.vhd"; + constexpr auto newDistroName = L"imported-test-distro"; + auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [&]() { + LOG_IF_WIN32_BOOL_FALSE(DeleteFile(vhdPath)); + LOG_IF_WIN32_BOOL_FALSE(DeleteFile(vhdxPath)); + LOG_IF_WIN32_BOOL_FALSE(DeleteFile(exportedVhdPath)); + LxsstuLaunchWsl(std::format(L"--unregister {}", newDistroName)); + }); + + // Attempt to export the distribution to a .vhd (should fail). + auto [out, err] = + LxsstuLaunchWslAndCaptureOutput(std::format(L"--export {} {} --format vhd", LXSS_DISTRO_NAME_TEST_L, vhdPath), -1); + VERIFY_ARE_EQUAL( + out, L"The specified file must have the .vhdx file extension.\r\nError code: Wsl/Service/WSL_E_EXPORT_FAILED\r\n"); + VERIFY_ARE_EQUAL(err, L""); + + // Export the distribution to a .vhdx. + std::tie(out, err) = + LxsstuLaunchWslAndCaptureOutput(std::format(L"--export {} {} --format vhd", LXSS_DISTRO_NAME_TEST_L, vhdxPath)); + VERIFY_ARE_EQUAL(out, L"The operation completed successfully. \r\n"); + VERIFY_ARE_EQUAL(err, L""); + + // Convert the .vhdx to .vhd. + LxsstuLaunchPowershellAndCaptureOutput(std::format(L"Convert-VHD -Path '{}' -DestinationPath '{}'", vhdxPath, vhdPath)); + + // Import a new distribution from the .vhd file. + std::tie(out, err) = + LxsstuLaunchWslAndCaptureOutput(std::format(L"--import {} {} {} --vhd", newDistroName, newDistroName, vhdPath)); + VERIFY_ARE_EQUAL(out, L"The operation completed successfully. \r\n"); + VERIFY_ARE_EQUAL(err, L""); + + // Export the newly imported distribution to another .vhd file. + std::tie(out, err) = LxsstuLaunchWslAndCaptureOutput(std::format(L"--export {} {} --format vhd", newDistroName, exportedVhdPath)); + VERIFY_ARE_EQUAL(out, L"The operation completed successfully. \r\n"); + VERIFY_ARE_EQUAL(err, L""); + + // Attempt to export to a .vhdx (should fail). + std::tie(out, err) = LxsstuLaunchWslAndCaptureOutput(std::format(L"--export {} {} --format vhd", newDistroName, vhdxPath), -1); + VERIFY_ARE_EQUAL( + out, L"The specified file must have the .vhd file extension.\r\nError code: Wsl/Service/WSL_E_EXPORT_FAILED\r\n"); + VERIFY_ARE_EQUAL(err, L""); + + // Attempt to import to a non VHD file. + auto tempFile = wsl::windows::common::filesystem::TempFile( + GENERIC_ALL, 0, CREATE_ALWAYS, wsl::windows::common::filesystem::TempFileFlags::None, L"txt"); + + tempFile.Handle.reset(); + + constexpr auto negativeVariationDistro = L"negative-variation-distro"; + std::tie(out, err) = LxsstuLaunchWslAndCaptureOutput( + std::format(L"--import {} {} {} --vhd", negativeVariationDistro, negativeVariationDistro, tempFile.Path), -1); + VERIFY_ARE_EQUAL( + out, + L"The specified file must have the .vhd or .vhdx file extension.\r\nError code: " + L"Wsl/Service/RegisterDistro/WSL_E_IMPORT_FAILED\r\n"); + VERIFY_ARE_EQUAL(err, L""); + } + }; // namespace UnitTests } // namespace UnitTests From cccae113d714f29bde1e17981b009d9ffd29bf7c Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 22 Oct 2025 08:42:54 -0700 Subject: [PATCH 26/36] Localization change from build: 132289123 (#13625) Co-authored-by: WSL localization --- localization/strings/cs-CZ/Resources.resw | 13 +++++++---- localization/strings/da-DK/Resources.resw | 11 ++++++--- localization/strings/de-DE/Resources.resw | 11 ++++++--- localization/strings/en-GB/Resources.resw | 27 ++++++++++++++--------- localization/strings/es-ES/Resources.resw | 15 ++++++++----- localization/strings/fi-FI/Resources.resw | 11 ++++++--- localization/strings/fr-FR/Resources.resw | 13 +++++++---- localization/strings/hu-HU/Resources.resw | 17 +++++++++----- localization/strings/it-IT/Resources.resw | 13 +++++++---- localization/strings/ja-JP/Resources.resw | 13 +++++++---- localization/strings/ko-KR/Resources.resw | 15 ++++++++----- localization/strings/nb-NO/Resources.resw | 11 ++++++--- localization/strings/nl-NL/Resources.resw | 11 ++++++--- localization/strings/pl-PL/Resources.resw | 13 +++++++---- localization/strings/pt-BR/Resources.resw | 21 +++++++++++------- localization/strings/pt-PT/Resources.resw | 13 +++++++---- localization/strings/ru-RU/Resources.resw | 11 ++++++--- localization/strings/sv-SE/Resources.resw | 11 ++++++--- localization/strings/tr-TR/Resources.resw | 15 ++++++++----- localization/strings/zh-CN/Resources.resw | 13 +++++++---- localization/strings/zh-TW/Resources.resw | 19 ++++++++++------ 21 files changed, 201 insertions(+), 96 deletions(-) diff --git a/localization/strings/cs-CZ/Resources.resw b/localization/strings/cs-CZ/Resources.resw index df750b9ce..cf1cc756f 100644 --- a/localization/strings/cs-CZ/Resources.resw +++ b/localization/strings/cs-CZ/Resources.resw @@ -704,8 +704,13 @@ Může být nutné restartovat systém, aby se změny projevily. {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Zadaný soubor musí mít příponu .vhdx. + + Zadaný soubor musí mít příponu {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Zadaný soubor musí mít příponu {} nebo {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch '{}' nebyl nalezen. Dostupné přepínače: {} @@ -1055,7 +1060,7 @@ Návrat k sítím NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Vypadá to na soubor VHDX. Použijte --vhd k importu VHDX místo dehtu. + Vypadá to na soubor VHD. Použijte --vhd k importu virtuálního pevného disku místo dehtu. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1108,7 +1113,7 @@ Kód chyby: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/da-DK/Resources.resw b/localization/strings/da-DK/Resources.resw index 221087228..599bb2bd1 100644 --- a/localization/strings/da-DK/Resources.resw +++ b/localization/strings/da-DK/Resources.resw @@ -704,8 +704,13 @@ Systemet skal muligvis genstartes, så ændringerne kan træde i kraft. {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Den angivne fil skal have filtypenavnet .vhdx. + + The specified file must have the {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch "{}" blev ikke fundet. Tilgængelige switches: {} @@ -1108,7 +1113,7 @@ Fejlkode: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/de-DE/Resources.resw b/localization/strings/de-DE/Resources.resw index 1adaf76f1..1f975691e 100644 --- a/localization/strings/de-DE/Resources.resw +++ b/localization/strings/de-DE/Resources.resw @@ -710,8 +710,13 @@ Das System muss möglicherweise neu gestartet werden, damit die Änderungen wirk {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Die angegebene Datei muss die Dateierweiterung ".vhdx" aufweisen. + + Die angegebene Datei muss die Dateierweiterung {} aufweisen. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch „{}“ wurde nicht gefunden. Verfügbare Switches: {} @@ -1114,7 +1119,7 @@ Fehlercode: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/en-GB/Resources.resw b/localization/strings/en-GB/Resources.resw index 28ca6b6ed..ea4569c3d 100644 --- a/localization/strings/en-GB/Resources.resw +++ b/localization/strings/en-GB/Resources.resw @@ -466,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. @@ -546,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] @@ -626,7 +626,7 @@ Build time: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The custom kernel modules vhd in {} was not found: '{}'. + The customised kernel modules VHD in {} was not found: '{}'. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -704,8 +704,13 @@ The system may need to be restarted so the changes can take effect. {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - The specified file must have the .vhdx file extension. + + The specified file must have the {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated The VmSwitch '{}' was not found. Available switches: {} @@ -1006,7 +1011,7 @@ Falling back to NAT networking. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx is supported on WSL2 only. + Sparse VHD is supported on WSL2 only. Running WSL as local system is not supported. @@ -1055,7 +1060,7 @@ Falling back to NAT networking. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - This looks like a VHDX file. Use --vhd to import a VHDX instead of a tar. + This looks like a VHD file. Use --vhd to import a VHD instead of a tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1107,8 +1112,8 @@ Error code: {} 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 +To force a distribution to use a sparse VHD, please run: +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/es-ES/Resources.resw b/localization/strings/es-ES/Resources.resw index 22c857c8a..c876543da 100644 --- a/localization/strings/es-ES/Resources.resw +++ b/localization/strings/es-ES/Resources.resw @@ -710,8 +710,13 @@ Es posible que sea necesario reiniciar el sistema para que los cambios surtan ef {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - El archivo especificado debe tener la extensión de archivo .vhdx. + + El archivo especificado debe tener la extensión de archivo {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + El archivo especificado debe tener la extensión de archivo {} o {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated No se encontró el VmSwitch '{}'. Modificadores disponibles: {} @@ -1004,7 +1009,7 @@ Revirtiendo a las redes NAT. Ver documentos - No se pudo completar la operación porque el vhdx está actualmente en uso. Para forzar que WSL deje de usar: wsl.exe --shutdown + No se pudo completar la operación porque el VHD está actualmente en uso. Para forzar que WSL deje de usar: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1113,8 +1118,8 @@ Código de error: {} 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 +Para forzar que una distribución use un VHD disperso, ejecuta: +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/fi-FI/Resources.resw b/localization/strings/fi-FI/Resources.resw index ad15f84f7..8268217d4 100644 --- a/localization/strings/fi-FI/Resources.resw +++ b/localization/strings/fi-FI/Resources.resw @@ -704,8 +704,13 @@ Järjestelmä on ehkä käynnistettävä uudelleen, jotta muutokset tulevat voim {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Määritetyn tiedoston tiedostotunnisteen on oltava .vhdx. + + Määritetyllä tiedostolla on oltava tiedostotunniste {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Määritetyllä tiedostolla on oltava tiedostotunniste {} tai {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch-kohdetta {} ei löytynyt. Käytettävissä olevat valitsimet: {} @@ -1108,7 +1113,7 @@ Virhekoodi: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/fr-FR/Resources.resw b/localization/strings/fr-FR/Resources.resw index c8e59a015..a0108b9d0 100644 --- a/localization/strings/fr-FR/Resources.resw +++ b/localization/strings/fr-FR/Resources.resw @@ -711,8 +711,13 @@ Le système devra peut-être être redémarré pour que les modifications prenne {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Le fichier spécifié doit avoir l’extension de fichier .vhdx. + + Le fichier spécifié doit avoir l’extension de fichier {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Le fichier spécifié doit avoir l’extension de fichier {} ou {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated Le VmSwitch « {} » est introuvable. Commutateurs disponibles : {} @@ -1005,7 +1010,7 @@ Retour à la mise en réseau NAT. Voir les documents - Impossible d’effectuer l’opération, car le vhdx est en cours d’utilisation. Pour forcer WSL à arrêter l’utilisation : wsl.exe --shutdown + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1115,7 +1120,7 @@ Code d'erreur : {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/hu-HU/Resources.resw b/localization/strings/hu-HU/Resources.resw index d5daa1962..268d9f9d8 100644 --- a/localization/strings/hu-HU/Resources.resw +++ b/localization/strings/hu-HU/Resources.resw @@ -704,8 +704,13 @@ Lehet, hogy újra kell indítani a rendszert, hogy a módosítások érvénybe l {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - A megadott fájlnak .vhdx kiterjesztésűnek kell lennie. + + A megadott fájlnak {} kiterjesztésűnek kell lennie. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + A megadott fájlnak {} vagy {} kiterjesztésűnek kell lennie. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated A(z) {} VmSwitch nem található. Elérhető kapcsolók: {} @@ -998,7 +1003,7 @@ Visszaállás NAT-hálózatkezelésre. Dokumentumok megtekintése - 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 + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1106,9 +1111,9 @@ Hibakód: {} 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. - 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 + 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 {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/it-IT/Resources.resw b/localization/strings/it-IT/Resources.resw index c3c5b85b9..2597d00c2 100644 --- a/localization/strings/it-IT/Resources.resw +++ b/localization/strings/it-IT/Resources.resw @@ -710,8 +710,13 @@ Potrebbe essere necessario riavviare il sistema per rendere effettive le modific {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Il file specificato deve avere l'estensione vhdx. + + Il file specificato deve avere l'estensione {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Il file specificato deve avere l'estensione {} o {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch '{}' non è stato trovato. Switch disponibili: {} @@ -1004,7 +1009,7 @@ Fallback alla rete NAT. Visualizza documenti - Non è stato possibile completare l'operazione perché vhdx è attualmente in uso. Per forzare l'arresto di WSL, usare: wsl.exe --shutdown + Impossibile completare l'operazione perché il disco rigido virtuale è attualmente in uso. Per forzare l'arresto di WSL, usare: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1114,7 +1119,7 @@ Codice errore: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/ja-JP/Resources.resw b/localization/strings/ja-JP/Resources.resw index b8e08d936..ea8b86420 100644 --- a/localization/strings/ja-JP/Resources.resw +++ b/localization/strings/ja-JP/Resources.resw @@ -710,8 +710,13 @@ Windows バージョン: {} {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - 指定されたファイルには .vhdx ファイル拡張子が必要です。 + + 指定されたファイルには {} ファイル拡張子が必要です。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 指定されたファイルには、{} または {} のファイル拡張子が必要です。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch '{}' が見つかりませんでした。使用可能なスイッチ: {} @@ -1061,7 +1066,7 @@ NAT ネットワークにフォールバックしています。 {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - これは VHDX ファイルのようです。--vhd を使用して、tar ではなく VHDX をインポートします。 + これは VHD ファイルのようです。--vhd を使用して、tar ではなく VHD をインポートします。 {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1114,7 +1119,7 @@ WSL を修復するには任意のキーを押すか、取り消すには CTRL-C スパース VHD のサポートは、データの破損の可能性があるため、現在無効になっています。 ディストリビューションでスパース VHD を強制的に使用するには、次を実行してください。 -wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/ko-KR/Resources.resw b/localization/strings/ko-KR/Resources.resw index b8f439cf0..0bf7edc17 100644 --- a/localization/strings/ko-KR/Resources.resw +++ b/localization/strings/ko-KR/Resources.resw @@ -710,8 +710,13 @@ Windows 버전: {} {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - 지정한 파일의 확장명은 .vhdx여야 합니다. + + 지정한 파일에는 {} 파일 확장명이 있어야 합니다. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 지정한 파일에는 {} 또는 {} 파일 확장명이 있어야 합니다. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch '{}'을(를) 찾을 수 없습니다. 사용 가능한 스위치: {} @@ -1004,7 +1009,7 @@ NAT 네트워킹으로 대체합니다. 문서 보기 - vhdx가 현재 사용 중이므로 작업을 완료할 수 없습니다. WSL을 강제로 사용 중지하려면: wsl.exe --shutdown + VHD가 현재 사용 중이므로 작업을 완료할 수 없습니다. WSL을 강제로 사용 중지하려면: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1061,7 +1066,7 @@ NAT 네트워킹으로 대체합니다. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - VHDX 파일인 것 같습니다. --vhd 사용하여 tar 대신 VHDX를 가져옵니다. + VHD 파일인 것 같습니다. --vhd 사용하여 tar 대신 VHD를 가져옵니다. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1114,7 +1119,7 @@ NAT 네트워킹으로 대체합니다. 데이터 손상 가능성으로 인해 스파스 VHD 지원은 현재 비활성화되어 있습니다. 배포 시 강제로 스파스 VHD를 사용하도록 하려면 다음을 실행하세요. -wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/nb-NO/Resources.resw b/localization/strings/nb-NO/Resources.resw index 21950880c..512cbed55 100644 --- a/localization/strings/nb-NO/Resources.resw +++ b/localization/strings/nb-NO/Resources.resw @@ -704,8 +704,13 @@ Systemet må kanskje startes på nytt slik at endringene kan tre i kraft.{Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Den angitte filen må ha filtypen VHDX. + + Den angitte filen må ha filtypen {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated Finner ikke VmSwitch {}. Tilgjengelige brytere: {} @@ -1108,7 +1113,7 @@ Feilkode: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/nl-NL/Resources.resw b/localization/strings/nl-NL/Resources.resw index 3cf62ef2a..9b5c7a650 100644 --- a/localization/strings/nl-NL/Resources.resw +++ b/localization/strings/nl-NL/Resources.resw @@ -704,8 +704,13 @@ Het systeem moet mogelijk opnieuw worden opgestart, zodat de wijzigingen van kra {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Het opgegeven bestand moet de bestandsextensie .vhdx hebben. + + Het opgegeven bestand moet de bestandsextensie {} hebben. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Het opgegeven bestand moet de bestandsextensie {} of {} hebben. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated Kan de VmSwitch {} niet vinden. Beschikbare switches: {} @@ -998,7 +1003,7 @@ Terugvallen op NAT-netwerken. Documenten weergeven - De bewerking kan niet worden voltooid omdat de VHDX momenteel in gebruik is. Stoppen van WSL forceren: wsl.exe --shutdown + De bewerking kan niet worden voltooid omdat de VHD momenteel in gebruik is. Stoppen van WSL forceren: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/pl-PL/Resources.resw b/localization/strings/pl-PL/Resources.resw index d3abe13fc..d9a55ea4d 100644 --- a/localization/strings/pl-PL/Resources.resw +++ b/localization/strings/pl-PL/Resources.resw @@ -704,8 +704,13 @@ Może być konieczne ponowne uruchomienie systemu, aby zmiany zostały wprowadzo {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Określony plik musi mieć rozszerzenie pliku vhdx. + + Określony plik musi mieć rozszerzenie pliku {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Określony plik musi mieć rozszerzenie pliku {} lub {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated Nie znaleziono przełącznika maszyny wirtualnej „{}”. Dostępne przełączniki: {} @@ -998,7 +1003,7 @@ Powrót do sieci NAT. Zobacz dokumenty - Nie można ukończyć operacji, ponieważ dysk vhdx jest obecnie używany. Aby wymusić zatrzymanie używania protokołu WSL: wsl.exe --shutdown + Nie można ukończyć operacji, ponieważ dysk VHD jest obecnie używany. Aby wymusić zatrzymanie używania protokołu WSL: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1108,7 +1113,7 @@ Kod błędu: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/pt-BR/Resources.resw b/localization/strings/pt-BR/Resources.resw index 69b5d3f88..f891df36b 100644 --- a/localization/strings/pt-BR/Resources.resw +++ b/localization/strings/pt-BR/Resources.resw @@ -633,7 +633,7 @@ Tempo de compilação: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Os módulos de kernel personalizados vhd em {} não foram encontrados: '{}'. + O VHD dos módulos de kernel personalizados em {} não foi encontrado: '{}'. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -711,8 +711,13 @@ Talvez seja necessário reiniciar o sistema para que as alterações entrem em v {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - O arquivo especificado deve ter a extensão de arquivo .vhdx. + + O arquivo especificado deve ter a extensão de arquivo {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + O arquivo especificado deve ter a extensão de arquivo {} ou {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated O VmSwitch '{}' não foi encontrado. Switches disponíveis: {} @@ -1005,7 +1010,7 @@ Voltando à rede NAT. Ver Documentos - 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 + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1062,7 +1067,7 @@ Voltando à rede NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Parece um arquivo VHDX. Use --vhd para importar um VHDX em vez de um tar. + Parece um arquivo VHD. Use --vhd para importar um VHD em vez de um tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1113,9 +1118,9 @@ Código de erro: {} Devido a um problema de compatibilidade atual com o Cliente do Acesso Global Seguro, o Túnel DNS está desabilitado. - O suporte ao VHD esparso está desabilitado no momento devido à 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 + 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 true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/pt-PT/Resources.resw b/localization/strings/pt-PT/Resources.resw index e784fb25d..7faa4c5c0 100644 --- a/localization/strings/pt-PT/Resources.resw +++ b/localization/strings/pt-PT/Resources.resw @@ -626,7 +626,7 @@ Hora da criação: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - O vhd de módulos kernel personalizados em {} não foi encontrado: "{}". + O VHD dos módulos kernel personalizados em {} não foi encontrado: "{}". {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -704,8 +704,13 @@ O sistema poderá ter de ser reiniciado para que as alterações possam ter efei {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - O ficheiro especificado tem de ter a extensão de ficheiro. vhdx. + + O ficheiro especificado tem de ter a extensão de ficheiro {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + O ficheiro especificado tem de ter a extensão de ficheiro {} ou {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated O VmSwitch "{}" não foi encontrado. Interruptores disponíveis: {} @@ -1108,7 +1113,7 @@ Código de erro: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/ru-RU/Resources.resw b/localization/strings/ru-RU/Resources.resw index e31ebc8a1..a76dd9e49 100644 --- a/localization/strings/ru-RU/Resources.resw +++ b/localization/strings/ru-RU/Resources.resw @@ -711,8 +711,13 @@ {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Указанный файл должен иметь расширение VHDX-файла. + + Указанный файл должен иметь расширение файла {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Указанный файл должен иметь расширение файла {} или {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated VmSwitch "{}" не найден. Доступные коммутаторы: {} @@ -1115,7 +1120,7 @@ Поддержка разреженного VHD в настоящее время отключена из-за возможного повреждения данных. Чтобы принудительно использовать разреженный VHD в дистрибутиве, выполните команду: -wsl.exe --manage <имя_дистрибутива> --set-sparse --allow-unsafe +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/sv-SE/Resources.resw b/localization/strings/sv-SE/Resources.resw index bc6c7adb8..40656b8d4 100644 --- a/localization/strings/sv-SE/Resources.resw +++ b/localization/strings/sv-SE/Resources.resw @@ -704,8 +704,13 @@ Systemet kan behöva startas om så att ändringarna kan börja gälla. {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Den angivna filen måste ha filnamnstillägget .vhdx. + + Den angivna filen måste ha filnamnstillägget {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Den angivna filen måste ha filnamnstillägget {} eller {}. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated Det gick inte att hitta VmSwitch {}. Tillgängliga växlar: {} @@ -1108,7 +1113,7 @@ Felkod: {} 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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/tr-TR/Resources.resw b/localization/strings/tr-TR/Resources.resw index b7c86105e..5138898b3 100644 --- a/localization/strings/tr-TR/Resources.resw +++ b/localization/strings/tr-TR/Resources.resw @@ -626,7 +626,7 @@ Derleme zamanı: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - {} içinde vhd özel çekirdek modülleri bulunamadı: '{}'. + {} içinde özel çekirdek modülleri VHD'si bulunamadı: '{}'. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -704,8 +704,13 @@ Değişikliklerin etkili olması için sistemin yeniden başlatılması gerekebi {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - Belirtilen dosyanın .vhdx dosya uzantısı olmalıdır. + + Belirtilen dosyada {} dosya uzantısı olmalıdır. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Belirtilen dosyada {} veya {} dosya uzantısı olmalıdır. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated '{}' VmSwitch bulunamadı. Uygun anahtarlar: {} @@ -1055,7 +1060,7 @@ NAT ağ bağlantısına geri dönülüyor. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Bu bir VHDX dosyası gibi görünüyor. Katran --vhd VHDX içeri aktarın. + Bu bir VHD dosyası gibi görünüyor. Katran --vhd VHD içeri aktarın. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1108,7 +1113,7 @@ Hata kodu: {} Seyrek VHD desteği olası veri bozulması nedeniyle şu anda devre dışıdı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 +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/zh-CN/Resources.resw b/localization/strings/zh-CN/Resources.resw index f9976aa20..66ae91c1d 100644 --- a/localization/strings/zh-CN/Resources.resw +++ b/localization/strings/zh-CN/Resources.resw @@ -710,8 +710,13 @@ Windows: {} {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - 指定的文件必须具有 .vhdx 文件扩展名。 + + 指定的文件必须具有 {} 文件扩展名。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + The specified file must have the {} or {} file extension. + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated 找不到 VmSwitch“{}”。可用开关: {} @@ -1113,8 +1118,8 @@ Windows: {} 由于潜在的数据损坏,目前已禁用稀疏 VHD 支持。 -若要强制分发使用稀疏 vhd,请运行: -wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe +要强制发行版使用稀疏 vhd,请运行: +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/zh-TW/Resources.resw b/localization/strings/zh-TW/Resources.resw index c5b6cdb0f..cb065d038 100644 --- a/localization/strings/zh-TW/Resources.resw +++ b/localization/strings/zh-TW/Resources.resw @@ -632,7 +632,7 @@ Windows 版本: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 找不到 {} 中的自定義核心模組 vhd: '{}'。 + 找不到 {} 中的自訂核心模組 VHD:'{}'。 {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -710,8 +710,13 @@ Windows 版本: {} {Locked="--install "}{Locked="--no-distribution "}Command line arguments, file names and string inserts should not be translated - - 指定的檔案必須有 .vhdx 副檔名。 + + 指定的檔案必須具有 {} 副檔名。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 指定的檔案必須具有 {} 或 {} 副檔名。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated 找不到 VmSwitch '{}'。可用參數: {} @@ -1004,7 +1009,7 @@ Windows 版本: {} 查看文件 - 無法完成作業,因為 vhdx 目前正在使用中。若要強制 WSL 停止使用: wsl.exe --shutdown + 無法完成作業,因為 VHD 目前正在使用中。若要強制 WSL 停止使用: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1061,7 +1066,7 @@ Windows 版本: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 這似乎是 VHDX 檔案。使用 --vhd 匯入 VHDX 而非 tar。 + 這看起來像一個 VHD 文件。使用 --vhd 匯入 VHD 而不是 tar。 {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1112,9 +1117,9 @@ Windows 版本: {} 由於目前與全球安全存取用戶端的相容性問題,已停用 DNS 通道。 - 目前已停用 疏鬆 VHD 支援,因為可能會導致資料損毀。 + 由於可能會導致資料損毀,目前已停用疏鬆 VHD 支援。 若要強制發行版本使用疏鬆 VHD,請執行: -wsl.exe --manage <DistributionName> --set-sparse --allow-unsafe +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated From 3361736a3a178e699b93a39993d792b903b6a07a Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 22 Oct 2025 10:42:21 -0700 Subject: [PATCH 27/36] Localization change from build: 132310101 (#13627) Co-authored-by: WSL localization --- localization/strings/da-DK/Resources.resw | 18 +- localization/strings/en-GB/Resources.resw | 2 +- localization/strings/fi-FI/Resources.resw | 6 +- localization/strings/it-IT/Resources.resw | 12 +- localization/strings/ja-JP/Resources.resw | 78 +- localization/strings/ko-KR/Resources.resw | 16 +- localization/strings/nb-NO/Resources.resw | 10 +- localization/strings/nl-NL/Resources.resw | 22 +- localization/strings/pt-BR/Resources.resw | 22 +- localization/strings/ru-RU/Resources.resw | 16 +- localization/strings/sv-SE/Resources.resw | 6 +- localization/strings/tr-TR/Resources.resw | 10 +- localization/strings/zh-CN/Resources.resw | 10 +- localization/strings/zh-TW/Resources.resw | 3764 ++++++++++----------- 14 files changed, 1996 insertions(+), 1996 deletions(-) diff --git a/localization/strings/da-DK/Resources.resw b/localization/strings/da-DK/Resources.resw index 599bb2bd1..ee816444a 100644 --- a/localization/strings/da-DK/Resources.resw +++ b/localization/strings/da-DK/Resources.resw @@ -466,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. @@ -546,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] @@ -705,11 +705,11 @@ Systemet skal muligvis genstartes, så ændringerne kan træde i kraft. "}Command line arguments, file names and string inserts should not be translated - The specified file must have the {} file extension. + Den angivne fil skal have filtypenavnet {}. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The specified file must have the {} or {} file extension. + Den angivne fil skal have filtypenavnet {} eller {}. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1003,7 +1003,7 @@ Går tilbage til NAT-netværk. Se dokumenter - Handlingen kunne ikke fuldføres, fordi vhdx er i brug i øjeblikket. Sådan tvinges WSL til at stoppe brug: wsl.exe --shutdown + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Går tilbage til NAT-netværk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx understøttes kun på WSL2. + Sparse VHD understøttes kun på WSL2. Kørsel af WSL som lokalt system understøttes ikke. @@ -1060,7 +1060,7 @@ Går tilbage til NAT-netværk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Dette ligner en VHDX-fil. Brug --vhd til at importere en VHDX i stedet for en tar. + Dette ligner en VHD-fil. Brug --vhd til at importere en VHD i stedet for en tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/en-GB/Resources.resw b/localization/strings/en-GB/Resources.resw index ea4569c3d..ffee83270 100644 --- a/localization/strings/en-GB/Resources.resw +++ b/localization/strings/en-GB/Resources.resw @@ -1003,7 +1003,7 @@ Falling back to NAT networking. See Docs - The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: wsl.exe --shutdown + The operation could not be completed because the VHD is currently in use. To force WSL to stop use: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/fi-FI/Resources.resw b/localization/strings/fi-FI/Resources.resw index 8268217d4..9389eff25 100644 --- a/localization/strings/fi-FI/Resources.resw +++ b/localization/strings/fi-FI/Resources.resw @@ -1003,7 +1003,7 @@ Palataan nat-verkkopalveluun. Näytä asiakirjat - Toimintoa ei voitu suorittaa loppuun, koska vhdx on parhaillaan käytössä. WSL:n käytön lopettaminen: wsl.exe --shutdown + Toimintoa ei voitu suorittaa loppuun, koska VHD on parhaillaan käytössä. WSL:n käytön lopettaminen: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Palataan nat-verkkopalveluun. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Harvaa vhdx:ää tuetaan vain WSL2:ssa. + Harvaa virtuaalikiintolevyä tuetaan vain WSL2:ssa. WSL:n suorittamista paikallisena järjestelmänä ei tueta. @@ -1060,7 +1060,7 @@ Palataan nat-verkkopalveluun. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Tämä näyttää VHDX-tiedostolta. --vhd näppäimellä voit tuoda VHDX:n tar-tiedoston sijaan. + Tämä näyttää VHD-tiedostolta. --vhd -näppäimellä voit tuoda VHD:n tar-tiedoston sijaan. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/it-IT/Resources.resw b/localization/strings/it-IT/Resources.resw index 2597d00c2..42e91e645 100644 --- a/localization/strings/it-IT/Resources.resw +++ b/localization/strings/it-IT/Resources.resw @@ -402,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. @@ -472,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. @@ -552,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] @@ -577,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. diff --git a/localization/strings/ja-JP/Resources.resw b/localization/strings/ja-JP/Resources.resw index ea8b86420..db90f6127 100644 --- a/localization/strings/ja-JP/Resources.resw +++ b/localization/strings/ja-JP/Resources.resw @@ -384,13 +384,13 @@ WSL1 を使用するには、"Linux 用 Windows サブシステム" オプショ 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> @@ -400,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 @@ -426,7 +426,7 @@ Linux 用 Windows サブシステムを管理するための引数: --debug-shell 診断のために WSL2 デバッグ シェルを開きます。 - --install [ディストリビューション] [オプション...] + --install [Distro] [Options...] Linux 用 Windows サブシステム ディストリビューションをインストールします。 有効なディストリビューションの一覧を表示するには、'wsl.exe --list --online' を使用します。 @@ -437,16 +437,16 @@ Linux 用 Windows サブシステムを管理するための引数: --fixed-vhd ディストリビューションを保存するための固定サイズのディスクを作成します。 - --from-file <パス> + --from-file <Path> ローカル ファイルからディストリビューションをインストールします。 --legacy レガシ ディストリビューション マニフェストを使用します。 - --location <場所> + --location <Location> ディストリビューションのインストール パスを設定します。 - --name <名前> + --name <Name> ディストリビューションの名前を設定します。 --no-distribution @@ -455,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 ディストリビューションにアタッチしてマウントします。 オプション: @@ -490,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 @@ -516,7 +516,7 @@ Linux 用 Windows サブシステムを管理するための引数: --status Linux 用 Windows サブシステムの状態を表示します。 - --unmount [ディスク] + --unmount [Disk] すべての WSL2 ディストリビューションからディスクのマウントを解除してデタッチします。 引数を指定せずに呼び出した場合、すべてのディスクのマウントを解除してデタッチします。 @@ -535,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] ディストリビューションを一覧表示します。 オプション: @@ -579,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> このディストリビューションの登録を解除し、ルート ファイルシステムを削除します。 {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system "}{Locked="--help @@ -632,7 +632,7 @@ Windows バージョン: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - {} にカスタム カーネル モジュール VHD が見つかりませんでした: '{}'。 + {} にあるカスタム カーネル モジュール VHD が見つかりませんでした: '{}'。 {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1009,7 +1009,7 @@ NAT ネットワークにフォールバックしています。 ドキュメントを表示 - vhdx が現在使用中のため、操作を完了できませんでした。WSL の使用を強制的に停止するには: wsl.exe --shutdown + VHD が現在使用中のため、操作を完了できませんでした。WSL の使用を強制的に停止するには: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1017,7 +1017,7 @@ NAT ネットワークにフォールバックしています。 {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - スパース vhdx は WSL2 でのみサポートされています。 + スパース VHD は WSL2 のみでサポートされています。 ローカル システムとして WSL を実行することはサポートされていません。 diff --git a/localization/strings/ko-KR/Resources.resw b/localization/strings/ko-KR/Resources.resw index 0bf7edc17..ed9735c9e 100644 --- a/localization/strings/ko-KR/Resources.resw +++ b/localization/strings/ko-KR/Resources.resw @@ -402,8 +402,8 @@ Linux 이진 파일을 실행하기 위한 인수: 옵션: --cd <Directory> 지정된 디렉터리를 현재 작업 디렉터리로 설정합니다. - ~가 사용되는 경우 Linux 사용자의 홈 경로가 사용됩니다. 경로가 시작되면 - / 문자를 사용하면 절대 Linux 경로로 해석됩니다. + ~가 사용되는 경우 Linux 사용자의 홈 경로가 사용됩니다. 경로가 + / 문자로 시작하면 절대 Linux 경로로 해석됩니다. 그렇지 않으면 값이 절대 Windows 경로여야 합니다. --distribution, -d <DistroName> @@ -472,7 +472,7 @@ Linux용 Windows 하위 시스템을 관리하기 위한 인수: 배포를 새 위치로 이동합니다. --set-sparse, -s <true|false> - 배포판의 vhdx를 스파스로 설정하여 디스크 공간을 자동으로 회수할 수 있도록 합니다. + 배포판의 VHD를 스파스로 설정하여 디스크 공간을 자동으로 회수할 수 있도록 합니다. --set-default-user <Username> 배포의 기본 사용자를 설정합니다. @@ -552,11 +552,11 @@ Linux용 Windows 하위 시스템 배포를 관리하기 위한 인수: 새 배포에 사용할 버전을 지정합니다. --vhd - 제공된 파일이 tar 파일이 아닌 .vhdx 파일임을 지정합니다. - 이 작업은 지정된 설치 위치에 .vhdx 파일의 복사본을 만듭니다. + 제공된 파일이 tar 파일이 아닌 .vhd 또는 .vhdx 파일임을 지정합니다. + 이 작업은 지정된 설치 위치에 VHD 파일의 복사본을 만듭니다. --import-in-place <Distro> <FileName> - 지정된 .vhdx 파일을 새 배포판로 가져옵니다. + 지정된 VHD 파일을 새 배포판으로 가져옵니다. 이 가상 하드 디스크는 ext4 파일 시스템 형식으로 포맷해야 합니다. --list, -l [Options] @@ -1017,7 +1017,7 @@ NAT 네트워킹으로 대체합니다. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 스파스 vhdx는 WSL2에서만 지원됩니다. + 스파스 VHD는 WSL2에서만 지원됩니다. WSL을 로컬 시스템으로 실행할 수 없습니다. @@ -1118,7 +1118,7 @@ NAT 네트워킹으로 대체합니다. 데이터 손상 가능성으로 인해 스파스 VHD 지원은 현재 비활성화되어 있습니다. -배포 시 강제로 스파스 VHD를 사용하도록 하려면 다음을 실행하세요. +배포 시 강제로 스파스 VHD를 사용하도록 하려면 다음을 실행하세요. wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/nb-NO/Resources.resw b/localization/strings/nb-NO/Resources.resw index 512cbed55..ac808c150 100644 --- a/localization/strings/nb-NO/Resources.resw +++ b/localization/strings/nb-NO/Resources.resw @@ -709,7 +709,7 @@ Systemet må kanskje startes på nytt slik at endringene kan tre i kraft.{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The specified file must have the {} or {} file extension. + Den angitte filen må ha filendelsen {} eller {}. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1003,7 +1003,7 @@ Faller tilbake til NAT-nettverk. Vis dokumenter - Operasjonen kan ikke fullføres fordi VHDX-filen er i bruk. Slik tvinger du WSL til å stoppe bruk: wsl.exe --shutdown + Operasjonen kan ikke fullføres fordi VHD-en er i bruk. Slik tvinger du WSL til å stoppe: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Faller tilbake til NAT-nettverk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx støttes bare på WSL2. + Sparse VHD støttes bare på WSL2. Kjøring av WSL som lokalt system støttes ikke. @@ -1060,7 +1060,7 @@ Faller tilbake til NAT-nettverk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Dette ser ut som en VDHX-fil. Bruk --vhd til å importere en VHDX i stedet for en tar. + Dette ser ut som en VHD-fil. Bruk --vhd til å importere en VHD i stedet for en tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1112,7 +1112,7 @@ Feilkode: {} 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: +Hvis du vil tvinge en distribusjon til å bruke en sparsom VHD, kan du kjøre: wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/nl-NL/Resources.resw b/localization/strings/nl-NL/Resources.resw index 9b5c7a650..925f85153 100644 --- a/localization/strings/nl-NL/Resources.resw +++ b/localization/strings/nl-NL/Resources.resw @@ -420,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. @@ -429,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. @@ -450,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. @@ -463,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. @@ -505,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. @@ -535,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. @@ -546,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] diff --git a/localization/strings/pt-BR/Resources.resw b/localization/strings/pt-BR/Resources.resw index f891df36b..db0bc218c 100644 --- a/localization/strings/pt-BR/Resources.resw +++ b/localization/strings/pt-BR/Resources.resw @@ -383,7 +383,7 @@ Uso: 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] @@ -408,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. @@ -429,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 @@ -466,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. @@ -553,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. @@ -578,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. diff --git a/localization/strings/ru-RU/Resources.resw b/localization/strings/ru-RU/Resources.resw index a76dd9e49..178ba69d8 100644 --- a/localization/strings/ru-RU/Resources.resw +++ b/localization/strings/ru-RU/Resources.resw @@ -460,7 +460,7 @@ Указывает версию, используемую для нового дистрибутива. --vhd-size <MemoryString> - Указывает размер диска для хранения распределения. + Указывает размер диска для хранения дистрибутива. --web-download Скачать дистрибутив из Интернета вместо Microsoft Store. @@ -473,7 +473,7 @@ Переместить дистрибутив в новое местоположение. --set-sparse, -s <true|false> - Задать для VHDX дистрибутива значение "разреженный", чтобы обеспечить автоматическое освобождение дискового пространства. + Задать для VHD дистрибутива значение "разреженный", чтобы обеспечить автоматическое освобождение дискового пространства. --set-default-user <Username> Задать пользователя по умолчанию для дистрибутива. @@ -553,11 +553,11 @@ Указывает версию, используемую для нового дистрибутива. --vhd - Указывает, что предоставленный файл является VHDX-файлом, а не TAR-файлом. - Эта операция создает копию VHDX-файла в указанном расположении установки. + Указывает, что предоставленный файл является файлом VHD или VHDX, а не TAR-файлом. + Эта операция создает копию VHD-файла в указанном расположении установки. --import-in-place <Distro> <FileName> - Импортирует указанный VHDX-файл в качестве нового дистрибутива. + Импортирует указанный VHD-файл в качестве нового дистрибутива. Этот виртуальный жесткий диск должен быть отформатирован с типом файловой системы ext4. --list, -l [параметры] @@ -1010,7 +1010,7 @@ Просмотреть документы - Не удалось завершить операцию, так как VHDX сейчас используется. Чтобы принудительно остановить использование WSL, выполните команду wsl.exe --shutdown + Не удалось завершить операцию, так как VHD сейчас используется. Чтобы принудительно остановить использование WSL, выполните команду wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1018,7 +1018,7 @@ {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Разреженный VHDX поддерживается только в WSL2. + Разреженный VHD поддерживается только в WSL2. Запуск WSL в виде локальной системы не поддерживается. @@ -1067,7 +1067,7 @@ {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Похоже, это VHDX-файл. Используйте --vhd для импорта VHDX вместо TAR. + Похоже, это VHD-файл. Используйте --vhd для импорта VHD вместо tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/sv-SE/Resources.resw b/localization/strings/sv-SE/Resources.resw index 40656b8d4..065ba60cd 100644 --- a/localization/strings/sv-SE/Resources.resw +++ b/localization/strings/sv-SE/Resources.resw @@ -1003,7 +1003,7 @@ Mer information finns på https://aka.ms/wslinstall Visa dokument - 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 + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Mer information finns på https://aka.ms/wslinstall {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx stöds endast på WSL2. + Sparse VHD stöds endast på WSL2. Det finns inte stöd för att köra WSL som lokalt system. @@ -1060,7 +1060,7 @@ Mer information finns på https://aka.ms/wslinstall {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 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. + 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. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/tr-TR/Resources.resw b/localization/strings/tr-TR/Resources.resw index 5138898b3..bcdbd21b4 100644 --- a/localization/strings/tr-TR/Resources.resw +++ b/localization/strings/tr-TR/Resources.resw @@ -466,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. @@ -537,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. @@ -546,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] diff --git a/localization/strings/zh-CN/Resources.resw b/localization/strings/zh-CN/Resources.resw index 66ae91c1d..80dff2a03 100644 --- a/localization/strings/zh-CN/Resources.resw +++ b/localization/strings/zh-CN/Resources.resw @@ -715,7 +715,7 @@ Windows: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The specified file must have the {} or {} file extension. + 指定的文件必须具有 {} 或 {} 文件扩展名。 {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1009,7 +1009,7 @@ Windows: {} 请参阅文档 - 无法完成该操作,因为 vhdx 当前正在使用中。若要强制 WSL 停止使用: wsl.exe --shutdown + 无法完成该操作,因为 VHD 当前正在使用中。强制 WSL 停止使用: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1017,7 +1017,7 @@ Windows: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 仅 WSL2 支持稀疏 vhdx。 + 仅 WSL2 支持稀疏 VHD。 不支持将 WSL 作为本地系统运行。 @@ -1066,7 +1066,7 @@ Windows: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - 这似乎是 VHDX 文件。使用 --vhd 导入 VHDX 而不是 tar。 + 这看起来像一个 VHD 文件。使用 --vhd 导入 VHD,而不是导入 tar。 {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1118,7 +1118,7 @@ Windows: {} 由于潜在的数据损坏,目前已禁用稀疏 VHD 支持。 -要强制发行版使用稀疏 vhd,请运行: +要强制发行版使用稀疏 VHD,请运行: wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/zh-TW/Resources.resw b/localization/strings/zh-TW/Resources.resw index cb065d038..f912dfd3b 100644 --- a/localization/strings/zh-TW/Resources.resw +++ b/localization/strings/zh-TW/Resources.resw @@ -1,1883 +1,1883 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Windows 子系統 Linux 版 - - - WSL - - - Windows 子系統 Linux 版可讓開發人員直接在 Windows 上執行 GNU/Linux 環境 (包括大部分的命令列工具、公用程式和應用程式),而不需要傳統虛擬機器或雙重開機設定的額外負荷。 - - - 磁碟無法中斷連結: {}。如需詳細數據,請在 WSL2 內執行 'dmesg'。 -若要強制 WSL2 停止並中斷連結磁碟,請執行 『wsl.exe {}』。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 磁碟 '{}' 已連結。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 該磁碟區已掛接在 WSL2 內。 - - - 已掛接具有該名稱的磁碟; 請卸載磁碟或選擇新名稱,然後再試一次。 - - - 指定的掛接名稱包含不正確 '/' 字元。請不要使用不正確字元再試一次。 - - - 磁碟已成功掛接為 『/mnt/wsl/{}』。 -注意: 如果您在 /etc/wsl.conf 中修改 automount.root 設定,位置會不一樣。 -若要卸除並卸離磁碟,請執行 'wsl.exe {} {}'。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 磁碟已連結,但無法掛接: {}。 -如需詳細數據,請在 WSL2 內執行 'dmesg'。 -若要中斷連結磁碟,請執行 'wsl.exe {} {}'。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 下列是可安裝的有效發佈清單。 -使用 'wsl.exe {} <Distro>' 安裝. - - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 已設定發佈名稱。 - - - 提供的安裝位置已在使用中。 - - - 具有所提供名稱的發佈已經存在。使用 --name 選擇不同的名稱。 - {Locked="--name "}Command line arguments, file names and string inserts should not be translated - - - 沒有具有所提供名稱的發佈。 - - - 需要系統管理員存取權才能掛接磁碟。 - - - 匯出發佈失敗。 - - - 正在為此次發佈執行 Windows 子系統 Linux 版一次性升級... - - - - 無法啟動,因為有另一個執行個體正以未提高權限的方式執行。不允許同時執行提高權限和未提高權限的執行個體。 - - - - 匯入發布失敗。 - - - 正在安裝 Windows 選用元件: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 正在下載: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 正在安裝: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 正在匯入發佈 - - - 已下載 {}。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - Windows 子系統 Linux 版正在繼續先前的安裝... - - - 無效的發佈名稱: '{}'。 -若要取得有效發佈的清單,請使用 『wsl.exe --list --online'。 - {FixedPlaceholder="{}"}{Locked="--list "}{Locked="--online'"}Command line arguments, file names and string inserts should not be translated - - - Windows 子系統 Linux 版執行個體已終止。 - - - 無效的命令行自變數: {} -請使用 '{} --help' 取得支援的自變數清單。 - {FixedPlaceholder="{}"}{Locked="--help'"}Command line arguments, file names and string inserts should not be translated - - - 命令行自變數 {} 需要值。 -請使用 '{} --help' 取得支援的自變數清單。 - {FixedPlaceholder="{}"}{Locked="--help'"}Command line arguments, file names and string inserts should not be translated - - - 不支援的主控台設定。若要使用此功能,必須停用舊版主控台。 - - - - {} 不是有效的整數。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 此發佈正在進行安裝、解除安裝或轉換。 - - - - 正在啟動 {}... - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法啟動,因為有另一個執行個體正以提高權限的方式執行。不允許同時執行提高權限和未提高權限的執行個體。 - - - - Windows 子系統 Linux 版 沒有已安裝的發佈。 -您可以使用下列指示安裝發佈以解決此問題: - -使用 『wsl.exe --list --online' 列出可用的發佈 -和 『wsl.exe --install <Distro>』 來安裝。 - {Locked="--list "}{Locked="--online'"}{Locked="--install "}Command line arguments, file names and string inserts should not be translated - - - 沒有任何執行中的發佈。 - - - {} (預設) - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - Windows 子系統 Linux 版發佈: - - - 預設通訊群組: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 預設版本: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 取消註冊中。 - - - 找不到使用者。 - - - 有關 WSL 2 的主要差異詳細資訊,請瀏覽 https://aka.ms/wsl2 - - - - 轉換進行中,這可能需要幾分鐘的時間。 - - - 發佈已是要求的版本。 - - - 舊版發佈不支援 WSL 2。 - - - 您目前的電腦設定不支援 WSL2。 -請啟用「虛擬機器平台」選擇性元件,並確保 BIOS 中已啟用虛擬化。 -啟用以下項目,以執行 [虛擬機器平台]: wsl.exe --install --no-distribution -如需詳細資訊,請瀏覽 https://aka.ms/enablevirtualization - {Locked="--install "}{Locked="--no-distribution -"}Command line arguments, file names and string inserts should not be translated - - - 連結太多虛擬硬碟或實體磁碟。 - - - VHD 已透過 wsl.exe --mount, 掛接,請先卸載磁碟再啟動。 - {Locked="--mount,"}Command line arguments, file names and string inserts should not be translated - - - 您目前的電腦設定不支援 WSL1。 -請啟用「Windows 子系統 Linux 版」選用元件以使用 WSL1。 - - - 只有 WSL2 支援此作業。 - - - 使用方式: - --networking-mode - 顯示當前的網路模式。 - - --msal-proxy-path - 顯示 MSAL Proxy 應用程式的路徑。 - - --vm-id - 顯示 WSL 虛擬機器識別碼。 - - --version - 顯示 WSL 套件的版本。 - - -n - 不要列印新行。 - {Locked="--networking-mode -"}{Locked="--msal-proxy-path -"}{Locked="--vm-id -"}{Locked="--version -"}Command line arguments, file names and string inserts should not be translated - - - 用法: - -a - 強制結果使用絕對路徑格式。 - -u - 將 Windows 路徑轉換成 WSL 路徑 (預設)。 - -w - 將 WSL 路徑轉換成 Windows 路徑。 - -m - 在將 WSL 路徑轉換成 Windows 路徑時,使用 '/' 而非 '\\' - -範例: wslpath 'c:\\users' - {Locked="-a -"}{Locked="-u -"}{Locked="-w -"}{Locked="-m -"}Command line arguments and file names should not be translated - - - 在 Windows 子系統 Linux 版上執行系統管理作業 - -使用情況: - /l, /list [Option] - 列出已註冊的發行版本。 - /all - 選擇性地列出所有發行版本,包括 - 目前正在安裝或卸載的發行版本。 - - /running - 只列出目前正在執行的發行版本。 - - /s, /setdefault <DistributionName> - 將發行版本設定為預設值。 - - /t, /terminate <DistributionName> - 終止發行版本。 - - /u, /unregister <DistributionName> - 取消註冊發行版本並刪除根檔案系統。 - {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 - - - Copyright (c) Microsoft Corporation。著作權所有,並保留一切權利。 -如需此產品的隱私權資訊,請瀏覽 https://aka.ms/privacy。 - -使用方式: wsl.exe [Argument] [Options...] [CommandLine] - -用於執行 Linux 二進位檔案的引數: - - 如果未提供命令列,wsl.exe 會啟動預設殼層。 - - --exec, -e <CommandLine> - 執行指定的命令,而不使用預設的 Linux 殼層。 - - --shell-type <standard|login|none> - 使用提供的殼層類型執行指定的命令。 - - -- - 按原樣傳遞剩餘的命令列。 - -選項: - --cd <Directory> - 將指定的目錄設定為目前的工作目錄。 - 如果使用 ~,將會使用 Linux 使用者首頁路徑。如果路徑開頭 - 為 / 字元,它將被解譯為絕對 Linux 路徑。 - 否則,此值必須是絕對 Windows 路徑。 - - --distribution, -d <DistroName> - 執行指定的發行版本。 - - --distribution-id <DistroGuid> - 執行指定的發行版本識別碼。 - - --user, -u <UserName> - 作為指定的使用者執行。 - - --system - 啟動系統發行版本的殼層。 - -用於管理 Windows 子系統 Linux 版的引數: - - --help - 顯示使用資訊。 - - --debug-shell - 開啟 WSL2 偵錯工具進行診斷。 - - --install [Distro] [Options...] - 安裝 Windows 子系統 Linux 版發行版本。 - 對於有效的通訊群組清單,請使用 '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 - 從網際網路下載發行版本,而非從 Microsoft Store 下載。 - - --manage <Distro> <Options...> - 變更發行版本特定選項。 - - 選項: - --move <Location> - 將發行版本移至新位置。 - - --set-sparse, -s <true|false> - 將發行版本的 vhdx 設定為稀疏,允許自動回收磁碟空間。 - - --set-default-user <Username> - 設定發行版本的預設使用者。 - - --resize <MemoryString> - 將發行版本的磁碟大小調整為指定的大小。 - - --mount <Disk> - 在所有 WSL 2 發行版本中連結和掛載實體或虛擬磁碟。 - - 選項: - --vhd - 指定 <Disk> 參照虛擬硬碟。 - - --bare - 將磁碟附加到 WSL2,但不掛載。 - - --name <Name> - 使用掛載點的自訂名稱掛載磁碟。 - - --type <Type> - 掛載磁碟時使用的檔案系統 (若未指定,則預設為 ext4)。 - - --options <Options> - 其他掛載選項。 - - --partition <Index> - 要掛載之磁碟分割的索引 (若未指定,則預設為整個磁碟)。 - - --set-default-version <Version> - 變更新發行版本的預設安裝版本。 - - --shutdown - 立即終止所有執行中的發行版本和 WSL 2 - 輕量型公用程式虛擬機器。 - - 選項: - --force - 終止 WSL 2 虛擬機器,即使有作業正在進行中。可能會導致資料遺失。 - - --status - 顯示 Windows 子系統 Linux 版的狀態。 - - --unmount [Disk] - 從所有 WSL2 發行版本卸載並中斷與磁碟的連結。 - 如果在沒有引數的情況下進行調用,會卸載和中斷與所有磁碟的連結。 - - --uninstall - 自此電腦解除安裝 Windows 子系統 Linux 版套件。 - - --update - 更新 Windows 子系統 Linux 版封裝。 - - 選項: - --pre-release - 下載發行前版本 (如果可用)。 - - --version, -v - 顯示版本資訊。 - -在 Windows 子系統 Linux 版中管理發行版本的引數: - - --export <Distro> <FileName> [Options] - 將發行版本匯出至 tar 檔案。 - 檔案名稱可以是 - 代表標準輸出。 - - 選項: - --format <Format> - 指定匯出格式。支援的值: tar、tar.gz、tar.xz、vhd。 - - --import <Distro> <InstallLocation> <FileName> [Options] - 將指定的 tar 檔案做為新的發行版本。 - 檔案名稱可以是 - 代表標準輸入。 - - 選項: - --version <Version> - 指定要用於新發行版本的版本。 - - --vhd - 指定提供的檔案是 .vhdx 檔案,而非 tar 檔案。 - 此作業會複製指定安裝位置的 .vhdx 檔案。 - - --import-in-place <Distro> <FileName> - 將指定的 .vhdx 檔案匯入為新的發行版本。 - 此虛擬硬碟必須使用 ext4 檔案系統類型進行格式化。 - - --list, -l [Options] - 列出發行版本。 - - 選項: - --all - 列出所有發行版本,包括 - 目前正在安裝或卸載的發行版本。 - - --running - 只列出目前正在執行的發行版本。 - - --quiet, -q - 只顯示發行版本名稱。 - - --verbose, -v - 顯示所有發行版本的詳細資訊。 - - --online, -o - 顯示可用發行版本的清單,以使用 'wsl.exe --install' 安裝。 - - --set-default, -s <Distro> - 將發行版本設定為預設。 - - --set-version <Distro> <Version> - 變更指定發行版本的版本。 - - --terminate, -t <Distro> - 終止指定的發行版本。 - - --unregister <Distro> - 取消註冊發行版本並刪除根檔案系統。 - {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system -"}{Locked="--help -"}{Locked="--debug-shell -"}{Locked="--install "}{Locked="--list "}{Locked="--online'"}{Locked="--enable-wsl1 -"}{Locked="--fixed-vhd -"}{Locked="--from-file "}{Locked="--legacy -"}{Locked="--location "}{Locked="--name "}{Locked="--no-distribution -"}{Locked="--no-launch,"}{Locked="--version "}{Locked="--vhd-size "}{Locked="--web-download -"}{Locked="--manage "}{Locked="--move "}{Locked="--set-sparse,"}{Locked="--set-default-user "}{Locked="--resize "}{Locked="--mount "}{Locked="--vhd -"}{Locked="--bare -"}{Locked="--name "}{Locked="--type "}{Locked="--options "}{Locked="--partition "}{Locked="--set-default-version "}{Locked="--shutdown -"}{Locked="--force -"}{Locked="--status -"}{Locked="--unmount "}{Locked="--uninstall -"}{Locked="--update -"}{Locked="--pre-release -"}{Locked="--version,"}{Locked="--export "}{Locked="--format "}{Locked="--import "}{Locked="--version "}{Locked="--vhd -"}{Locked="--import-in-place "}{Locked="--list,"}{Locked="--all -"}{Locked="--running -"}{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 - - - WSL 版本: {} -核心版本: {} -WSLg 版本: {} -MSRDC 版本: {} -Direct3D 版本: {} -DXCore 版本: {} -Windows 版本: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - MSBuild 版本: {} -認可: {} -建置時間: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 找不到 {} 中指定的自定義核心: '{}'。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 找不到 {} 中的自訂核心模組 VHD:'{}'。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 找不到 {} 中指定的自定義系統發佈,或其格式不正確。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - Copyright (c) Microsoft Corporation。著作權所有,並保留一切權利。 -如需此產品的隱私權資訊,請瀏覽https://aka.ms/privacy。 - -使用方式: wslg.exe [引數] [選項...][CommandLine] - -引數: - --cd <Directory> - 將指定的目錄設定為目前的工作目錄。 - 如果使用 ~,將會使用 Linux 使用者首頁路徑。如果路徑開頭為 - 與 / 字元,它將被解譯為絕對 Linux 路徑。 - 否則,此值必須是絕對 Windows 路徑。 - - --distribution, -d <Distro> - 執行指定的發佈。 - - --user, -u <UserName> - 以指定的使用者執行。 - - --shell-type <standard|login|none> - 使用提供的殼層類型執行指定的命令。 - - --help - 顯示使用資訊。 - - -- - 將剩餘的命令列傳遞為目前。 - {Locked="--cd "}{Locked="--distribution,"}{Locked="--user,"}{Locked="--shell-type "}{Locked="--help -"}Command line arguments, file names and string inserts should not be translated - - - 請按任意鍵繼續... - - - 引數 {} 遺失必要的參數。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 匯出進行中,這可能需要幾分鐘的時間。 - - - 正在匯入,這可能需要幾分鐘的時間。 - - - 已透過 {} 或 /etc/wsl.conf 停用 GUI 應用程式支援。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 正在檢查更新。 - - - 此發佈僅可從 Microsoft Store 取得。 - - - ARM64 上的 wsl.exe --mount 需要 Windows 27653 版或更新版本。 - {Locked="--mount "}Command line arguments, file names and string inserts should not be translated - - - 已安裝最新版的Windows 子系統 Linux 版。 - - - 正在將 Windows 子系統 Linux 版 更新為版本: {}。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 此應用程式需要 Windows 子系統 Linux 版選用元件。 -執行下列項目,以進行安裝: wsl.exe --install --no-distribution -系統可能需要重新啟動,變更才會生效。 - {Locked="--install "}{Locked="--no-distribution -"}Command line arguments, file names and string inserts should not be translated - - - 指定的檔案必須具有 {} 副檔名。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 指定的檔案必須具有 {} 或 {} 副檔名。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 找不到 VmSwitch '{}'。可用參數: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 橋接器網路需要設定 wsl2.vmSwitch。 - - - 無法從 '{}' 擷取清單發佈。{} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法將磁碟 '{}' 連結到 WSL2: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法調整磁碟。 - - - 無法翻譯路徑。 - - - 找不到任何值。 - - - Windows 版本 {} 不支持封裝版本的 Windows 子系統 Linux 版。 -透過 Windows 更新或透過下列方式安裝必要的更新: {} -如需詳細資訊,請造訪 https://aka.ms/wslinstall - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 執行偵錯殼層需要以系統管理員身分執行 wsl.exe。 - - - 發佈 '{}' 的安裝程序失敗,結束代碼: {}。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無效的 GUID 格式: '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中的章節名稱無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中的金鑰名稱無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 預期 {}:{} 中有 {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無效的逸出字元: {}:{} 中的 '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中不明的按鍵 '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中索引鍵 '{}' 的整數值 '{}' 無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中機碼 '{}' 的 IP 值 '{}' 無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中索引鍵 '{}' 的布爾值 '{}' 無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中索引鍵 '{}' 的 mac 地址 '{}' 無效 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法開啟設定檔 {},{} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 在 WSL 設定期間發生錯誤 - - - 無法啟動 『{}』 的系統用戶會話。如需詳細數據,請參閱 journalctl。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 開啟 EventViewer - - - 此發佈不包含預設名稱。使用 --name 來選擇發佈名稱。 - {Locked="--name "}Command line arguments, file names and string inserts should not be translated - - - 無法同時指定 {} 和 {} 自變數。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 引數 {} 需要 {} 引數。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 發佈名稱無效: "{}"。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 使用舊版散發註冊。請考慮改用 tar 型發佈。 - - - 舊版散發註冊不支援 --version 自變數。 - {Locked="--version "}Command line arguments, file names and string inserts should not be translated - - - 發佈 "{}" 是由覆寫資訊清單所提供。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 發佈雜湊不相符。預期: {},實際: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 不正確的十六進位字串: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 安裝舊版發佈時不支援 『{}』。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 已成功安裝發佈。可以透過 『wsl.exe -d {}' 啟動 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中 .wslconfig 專案 '{}' 的記憶體字符串 '{}' 無效 - {FixedPlaceholder="{}"}{Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated - - - 無法在 '{}': {} 中建立交換磁碟 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 此電腦不支援巢狀虛擬化。 - - - 無法建立位址為 '{}'、已指派新位址為 '{}' 的網络端點 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法建立位址範圍為 『{}』 的虛擬網路,已建立範圍為 『{}』、{} 的新網路 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 安全模式已啟用 - 許多功能將會停用 - - - 不支援鏡像網路模式: {}。 -回到 NAT 網路。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 需要 Linux 核心 5.10 版或更新版本 - - - Windows 版本 {}。{} 沒有所需的功能 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 不支援 Hyper-V 防火牆 - - - 不支援 DNS 通道 - - - 使用鏡像網路模式時,wsl2.localhostForwarding 設定沒有作用 - - - 在主機上偵測到 Http Proxy 變更。請重新開機 WSL 以套用變更。 - - - 偵測到 localhost Proxy 設定,但未鏡像到 WSL。NAT 模式中的 WSL 不支援 localhost Proxy。 - - - 偵測到 IPv6 Proxy 設定,但未鏡像到 WSL。NAT 模式中的 WSL 不支援 IPv6。 - - - 偵測到 localhost IPv6 Proxy 設定,但未鏡像到 WSL。WSL 不支援 localhost IPv6 Proxy。 - - - 嘗試解析 Proxy 設定時發生意外的錯誤,Proxy 設定未鏡像到 WSL。 - - - 存取登錄時發生錯誤。路徑: '{}'。錯誤: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法啟動localhost轉送進程。錯誤: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法啟動虛擬網路 - 請執行 : wsl.exe --install --no-distribution 以安裝選擇性元件 Virtual Machine Platform - {Locked="--install "}{Locked="--no-distribution"}Command line arguments, file names and string inserts should not be translated - - - 無法設定 networkingMode {} 的網络,回到 networkingMode {}。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法啟用 Windows 元件 '{}' (結束代碼: {}) - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 外掛程式 '{}' 傳回嚴重錯誤 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 外掛程式 '{}' 傳回嚴重錯誤。錯誤訊息: '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 外掛程式 '{}' 需要較新版本的 WSL。請執行: wsl.exe --update - {FixedPlaceholder="{}"}{Locked="--update"}Command line arguments, file names and string inserts should not be translated - - - 計算機原則已停用 .wslconfig 設定 『{}』。 - {FixedPlaceholder="{}"}{Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated - - - 電腦原則已停用偵錯殼層。 - - - wsl.exe --mount 已由電腦原則停用。 - {Locked="--mount "}Command line arguments, file names and string inserts should not be translated - - - WSL1 已由電腦原則停用。 - - - 請執行 'wsl.exe --set-version {} 2' 以升級至 WSL2。 - {FixedPlaceholder="{}"}{Locked="--set-version "}Command line arguments, file names and string inserts should not be translated - - - WSL 正在完成升級... - - - 更新失敗 (結束代碼: {})。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 解除安裝失敗 (結束代碼: {})。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 記錄檔: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法移除 MSIX 套件 (錯誤: {})。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法安裝 MSIX 套件 (錯誤: {})。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 未安裝執行 WSL 所需的選用元件。 - - - 安裝遺失的元件。 - - - 匯入的檔案不是有效的 Linux 發佈。 - - - 按任意鍵離開... - - - 有新版的 Windows 子系統 Linux 版可供使用。 - - - 更新至版本 {} 或在下方檢視其版本資訊。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 更新 - - - 查看文件 - - - 無法完成作業,因為 VHD 目前正在使用中。若要強制 WSL 停止使用: wsl.exe --shutdown - {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated - - - {} 不是有效的布林值,<true|false> - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 只有 WSL2 支援疏鬆 vhdx。 - - - 系統不支援將 WSL 執行為本機系統。 - - - 效能提示: - - - 在您的 Windows 磁碟驅動器上使用如 {} 的 I/O 密集型操作,效能將會不佳。請考慮將項目檔移至 Linux 檔案系統,以獲得較佳的效能。按兩下下方以深入瞭解。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 檢視文件 - - - 不再顯示 - - - WSL2 虛擬機器已損毀。 - - - 堆棧追蹤已儲存於: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 發佈無法啟動。錯誤碼: {},失敗步驟: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法啟動分佈,因為其虛擬磁碟已損毀。 - - - {}:{} 中的重複設定索引鍵 '{}' (衝突密鑰: {}:{}) 中的 '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {}:{} 中設定索引鍵 '{}' 的值 '{}' 無效 (有效值: {}) - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 正在等候 OOBE 命令完成,以進行散發「{}」... - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法從發佈 {} 讀取屬性 '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 這看起來像一個 VHD 文件。使用 --vhd 匯入 VHD 而不是 tar。 - {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated - - - 無法從Microsoft Store安裝 {}: {} -正在嘗試 Web 下載... - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 尚未設定預設發佈。請提供要安裝的發佈。 - - - 已停用 wsl2.virtio9p,退回到使用 vsock 傳輸的 9p。 - - - WSL 安裝似乎已損毀,(錯誤碼: {})。 -按任意鍵以修復 WSL,或 CTRL-C 取消。 -此提示將在 60 秒內逾時。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 註冊發佈時無法剖析終端機配置檔: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無效的大小: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - {} -錯誤碼: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無效的 JSON 文件。剖析錯誤: {} - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - wsl2.processors 不能超過系統上的邏輯處理器數目 ({} > {}) - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 無法查詢網路模式 - - - 已提供自定義核心模組,但未指定自定義核心。如需詳細資訊,請參閱 https://aka.ms/wslcustomkernel。 - - - 由於目前與全球安全存取用戶端的相容性問題,已停用 DNS 通道。 - - - 由於可能會導致資料損毀,目前已停用疏鬆 VHD 支援。 -若要強制發行版本使用疏鬆 VHD,請執行: -wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe - {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated - - - 無法掛接 {},如需詳細數據,請參閱 dmesg。 - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 處理掛載 -a 的 /etc/fstab 失敗。 - - - 掛接散發磁碟時發生錯誤,它是以唯讀方式掛接為遞補。 -請參閱復原指示: https://aka.ms/wsldiskmountrecovery - - - 無法翻譯 '{}' - {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - - - 發生錯誤。請稍後再試一次。 - - - 關於 - - - 關於 Windows 子系統 Linux 版設定 - - - © Microsoft.著作權所有,並保留一切權利。 - - - 適用於 Linux 的 Windows 子系統設定 - - - Windows 子系統 Linux 版 設定可讓開發人員使用 GUI 應用程式來管理 .wslconfig 檔案。 - {Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated - - - 自動記憶體回收 - - - 偵測到閑置 CPU 使用量後,自動釋放快取的記憶體。設定為緩時釋放的漸進式,以及快取記憶體的即時釋放投遞。 - - - 自動記憶體回收。 - - - 偵測到閑置 CPU 使用量後,自動釋放快取的記憶體。設定為緩時釋放的漸進式,以及快取記憶體的即時釋放投遞。 - - - 已啟用自動 Proxy - - - 讓 WSL 使用 Windows 的 HTTP Proxy 資訊。 - - - 已啟用自動 Proxy。 - - - 讓 WSL 使用 Windows 的 HTTP Proxy 資訊。 - - - 使用最佳作業效果的 DNS 剖析 - - - 僅適用於 wsl2.dnsTunneling 設為 true 時。設定為 true 時,Windows 會從 DNS 要求擷取問題,並嘗試加以解決,並忽略未知的記錄。 - {Locked="wsl2.dnsTunneling"}.wslconfig property key names should not be translated - - - 使用最佳作用的 DNS 剖析。 - - - 僅適用於 wsl2.dnsTunneling 設為 true 時。設定為 true 時,Windows 會從 DNS 要求擷取問題,並嘗試加以解決,並忽略未知的記錄。 - - - 自訂核心 - - - 自訂Linux核心的絕對 Windows 路徑。 - - - 瀏覽核心 - - - 自訂核心 - - - 自訂Linux核心的絕對 Windows 路徑。 - - - 自訂核心模組 - - - 自訂Linux核心模組 VHD 的絕對 Windows 路徑。 - - - 瀏覽核心模組 - - - 自訂核心模組 - - - 自訂Linux核心模組 VHD 的絕對 Windows 路徑。 - - - 自訂系統發行版 - - - 瀏覽發行套件 - - - 指定要載入為自訂系統發行版的 VHD 路徑,主要用於在 WSL 中啟用 GUI 應用程式。[在此深入了解系統發行]。 - {Locked="["}{Locked="]"}The text in between the delimiters [ ] is made into a hyperlink in code, and the delimiters are removed - - - https://aka.ms/wslgsystemdistro - {Locked}Uri to the Microsoft WSLg architecture devblog - - - 自訂系統發行版 - - - 指定要載入為自訂系統發行版的 VHD 路徑,主要用於在 WSL 中啟用 GUI 應用程式。 - - - 啟用偵錯主控台 - - - 布林值,可開啟輸出控制台視窗,該視窗會在啟動 WSL 2 發行版執行個體時顯示 dmesg 的內容。 - - - 啟用偵錯主控台。 - - - 布爾值,可開啟輸出控制台視窗,該視窗會在啟動 WSL 2 發行例項時顯示診斷訊息的內容。 - - - 預設 VHD 大小 - - - 僅新建立之發佈之可擴充 WSL 虛擬硬碟 (VHD) 的預設大小上限。 - - - 重設大小 - - - 預設 VHD 大小 - - - 只針對新建的發佈指定可擴充 WSL 虛擬硬碟 (VHD) 的預設大小上限,以 MB 為單位。 - - - 開發人員 - - - 文件 - - - https://aka.ms/wsldocs - {Locked}Uri to Microsoft WSL documentation - - - 變更 DrvFS 模式 - - - 變更 WSL 中的跨作業系統檔案存取實作。 - - - 已啟用 DNS Proxy - - - 只有在 wsl2.networkingMode 設為 NAT 時才適用。布爾值會通知 WSL 將 Linux 中的 DNS 伺服器設定為主機上的 NAT。設定為 false 會將 DNS 伺服器從 Windows 鏡像到 Linux。 - {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated - - - 已啟用 DNS Proxy。 - - - 只有在 wsl2.networkingMode 設定為 NAT 時才適用。布爾值會通知 WSL 將 Linux 中的 DNS 伺服器設定為主機上的 NAT。設定為 false 會將 DNS 伺服器從 Windows 鏡像到 Linux。 - - - 已啟用 DNS 通道 - - - 變更從 WSL 到 Windows 進行 DNS 要求的 Proxy 處理方式。 - - - 已啟用 DNS 通道。 - - - 變更從 WSL 到 Windows 進行 DNS 要求的 Proxy 處理方式。 - - - 檔案系統 - - - 啟用 GUI 應用程式 - - - 用於開啟或關閉 GUI 應用程式支援 ([WSLg]) WSL 的布爾值。 - - - https://aka.ms/wslgproject - {Locked}Uri to the Microsoft GitHub WSLg project - - - 啟用 GUI 應用程式。 - - - 用於開啟或關閉 GUI 應用程式支援 (在 WSL 中稱為 WSL g) 的布林值。 - - - 啟用硬體效能計數器 - - - 啟用 Linux 的硬體效能計數器。 - - - 啟用硬體效能計數器。 - - - 啟用 Linux 的硬體效能計數器。 - - - 已啟用 Hyper-V 防火牆 - - - 啟用 Hyper-V 防火牆,允許 Windows 防火牆規則以及 Hyper-V 流量專用的規則,以篩選 WSL 網路流量。 - - - 已啟用 Hyper-V 防火牆。 - - - 啟用 Hyper-V 防火牆,允許 Windows 防火牆規則以及 Hyper-V 流量專用的規則,以篩選 WSL 網路流量。 - - - 主機位址回送 - - - 只有在 wsl2.networkingMode 設為鏡像時才適用。設定為 True 時,將允許容器透過指派給主機的 IP 位址連線到主機,或允許主機連線到容器。請注意,一律可以使用 127.0.0.1 回送位址 - 此選項也允許使用所有額外指派的本機 IP 位址。 - {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated - - - 主機位址回送。 - - - 僅適用於 wsl2.networkingMode 設為鏡像時。設定為 True 時,將允許容器透過指派給主機的 IP 位址連線到主機,或允許主機連線到容器。請注意,一律可以使用 127.0.0.1 回送位址 - 此選項也允許使用所有額外指派的本機 IP 位址。 - - - 已忽略的連接埠 - - - 只有在 wsl2.networkingMode 設為鏡像時才適用。指定 Linux 應用程式可以繫結到哪些埠,而這些埠不會自動轉送,也不會在 Windows 中納入考慮。格式應為逗號分隔清單,例如: 3000,9000,9090。 - {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated - - - 重設連接埠 - - - 已忽略的連接埠 - - - 僅適用於 wsl2.networkingMode 設為鏡像時。指定 Linux 應用程式可以繫結到哪些埠,而這些埠不會自動轉送,也不會在 Windows 中納入考慮。應以逗號分隔清單格式化,例如 3000、9000、9090。 - - - 初始自動 Proxy 逾時 - - - 僅適用於 wsl2.autoProxy 設為 true 時。設定 WSL 啟動 WSL 容器時,WSL 等候擷取 HTTP Proxy 資訊的時間) (毫秒。如果在此時間之後解析 Proxy 設定,則必須重新啟動 WSL 實例,才能使用擷取的 Proxy 設定。 - {Locked="wsl2.autoProxy"}.wslconfig property key names should not be translated - - - 重設逾時 - - - 初始自動 Proxy 逾時 - - - 僅適用於 wsl2.autoProxy 設為 true 時。設定啟動 WSL 容器時,WSL 將等候擷取 HTTP Proxy 資訊的時間,以毫秒為單位。如果在此時間之後解析 Proxy 設定,則必須重新啟動 WSL 實例,才能使用擷取的 Proxy 設定。 - - - 核心命令列 - - - 其他核心命令列引數。 - - - 啟用 localhost 轉送 - - - 布林值,指定繫結至 WSL 2 VM 中萬用字元或 localhost 的連接埠是否應可透過 localhost:port 從主機連結。 - - - 啟用 localhost 轉送。 - - - 布林值,指定繫結至 WSL 2 VM 中萬用字元或 localhost 的連接埠是否應可透過 localhost、冒號、連接埠從主機連結。 - - - {0} MB - - - 記憶體與處理器 - - - 記憶體大小 - - - 要指派給 WSL 2 VM 的記憶體。 - - - 重設大小 - - - 記憶體大小 - - - 要指派給 WSL 2 VM 的記憶體指定量,以 MB 為單位。 - - - {0} 毫秒 - - - 啟用巢狀虛擬化 - - - 開啟或關閉巢狀虛擬化的布爾值,可讓其他巢狀 VM 在 WSL 2 內執行。 - - - 已啟用巢狀虛擬化。 - - - 開啟或關閉巢狀虛擬化的布爾值,可讓其他巢狀 VM 在 WSL 2 內執行。 - - - 網路模式 - - - 指定 WSL 的網路模式。 - - - 網路模式。 - - - 指定 WSL 的網路模式。 - - - 網路功能 - - - 您可以跨作業系統處理所有檔案! - - - 跨 OS 存取檔案 - - - 從 Linux 存取 Windows 檔案 - - - 您可以依序瀏覽至 ‘/mnt’ 與 Windows 磁碟機代號 (如範例所示的 C 磁碟機),藉以在 Linux 中存取 Windows 檔案: - -'cd /mnt/c' - - - 使用檔案總管存取 Linux 檔案 - - - 您可以瀏覽至 '\\wsl.localhost\' 按一下 ‘Linux’ 圖示,從檔案總管檢視 Linux 檔案。 - {Locked="\\wsl.localhost\"}Url addresses should not be translated. - - - 從 WSL 啟動 Windows 檔案和程式 - - - 即使在使用 WSL 時,您也可以直接從 bash 執行 Windows 可執行檔。請嘗試執行 -'powershell.exe /c start .',以在目前的資料夾中開啟檔案總管。 - {Locked="/c start ."}Command line arguments and file names should not be translated - - - 從 Windows 存取 Linux 網路應用程式 - - - 如果您是在 Linux 發行版本中建置網路應用程式 (例如在 NodeJS 或 SQL 伺服器上執行的應用程式),可以使用 localhost (方式與平常相同) 透過 Windows 應用程式 (例如 Edge 或 Chrome 網際網路瀏覽器) 加以存取。這代表如果您啟動接聽連接埠 3000 的 Linux 伺服器,即可透過 Windows 上的 Edge 前往 [http://localhost:3000] 加以存取。 - {Locked="http://localhost:3000"}Url addresses should not be translated. - - - http://localhost:3000 - {Locked}Uri to the localhost on port 3000 - - - 鏡像模式網路功能 - - - WSL 也包含稱為「鏡像模式」的新網路模式,加入了 IPv6 支援等進階功能,並且能夠存取區域網路中的網路應用程式。 - - - 深入了解如何跨 OS 存取檔案 - - - https://aka.ms/wslfilesystems - {Locked}Uri to the Working across Windows and Linux file systems documentation - - - 歡迎使用 Windows 子系統 Linux 版 - - - WSL 非常適合用來嘗試不同的 Linux 發行版本。 - - - 發行版本管理 - - - 深入了解基本 WSL 命令 - - - https://aka.ms/wslcommands - {Locked}Uri to the basic WSL commands documentation - - - 深入了解如何匯入任何 Linux 發行版本 - - - https://aka.ms/wslcustomdistro - {Locked}Uri to the import any linux distribution to use with WSL documentation - - - 列出可安裝的 WSL 發行版本命令 - - - 'wsl.exe -l -o' - {Locked="-l -o"}Command line arguments and file names should not be translated - - - 安裝具名 WSL 發行版本命令 - - - 'wsl.exe --install <DistroName>' - {Locked="--install "}Command line arguments, file names and string inserts should not be translated - - - 列出可用的 WSL 發行版本命令 - - - 'wsl.exe -l' - {Locked="-l"}Command line arguments and file names should not be translated - - - Docker Desktop 非常適合與 WSL 搭配使用,可協助您利用 Linux 容器進行開發。 - -搭配使用 Docker Desktop 與 WSL 的優點有: - -• 您可以使用相同的 Docker 精靈和映像,在 WSL 或 Windows 中執行 Docker 命令。 -• 您可以使用 WSL 中的 Windows 磁碟自動掛接,在 Windows 和 Linux 之間平順無礙地分享檔案和資料夾。 -• 您可以透過 WSL 的互通性,使用偏好的 Windows 工具和編輯器處理 Linux 程式碼和檔案,反之亦然。 - - - Docker Desktop 整合 - - - 深入了解如何搭配使用 WSL 與 Docker - - - https://aka.ms/wsldocker - {Locked}Uri to the Docker remote containers on WSL 2 documentation - - - 您可利用 Windows 子系統 Linux 版 (WSL),直接在 Windows 中執行偏好的 Linux 工具,公用程式、應用程式和工作流程。 - -請花一些時間預覽最受社群喜愛的一些功能,或查看我們提供的詳盡文件。 - - - 歡迎使用 WSL - - - 設定最佳做法 - - - https://aka.ms/wslsetup - {Locked}Uri to the Best Practices for Setup Documentation - - - 開始使用 Linux - - - https://aka.ms/wslgettingstarted - {Locked}Uri to the Getting Started with Linux Documentation - - - Windows 子系統 Linux 版 (WSL) 文件 - - - https://aka.ms/wsldocs - {Locked}Uri to the Microsoft WSL Documentation - - - 您可以透過原生 Windows 互動使用圖形化 Linux 應用程式,例如 alt-tab、啟動 [開始] 功能表、工作列、釘選,以及剪下貼上功能。 - - - GUI 應用程式 - - - WSL 可將 Windows GPU 用於機器學習工作流程 - -在 WSL 中執行的 Linux 二進位檔案可自動使用 Windows GPU,以加快效能速度。您只需使用與一般 Linux 機器相同的操作方式,安裝並執行這些工作流程即可。您可以利用許多不同方式開始使用,包含在 Docker 容器中執行 CUDA (如有 NVIDIA 顯示卡),一直到在 AMD、Intel 或 NVIDIA 顯示卡上使用 DirectML 執行 PyTorch 或 TensorFlow。請參閱下方的入門指南深入了解。 - - - GPU 加速 - - - 深入了解 GPU 加速 - - - https://aka.ms/wslgpu - {Locked}Uri to the GPU acceleration for ML in WSL documentation - - - 深入了解 WSL GUI 應用程式 - - - https://aka.ms/wslguiapps - {Locked}Uri to the Run GUI apps on the WSL documentation - - - 以下列出可嘗試的應用程式 (您可以鍵入 'sudo apt install <應用程式名稱>`,藉此在 Ubuntu 中安裝所有這些應用程式) - - • gedit – 基本文字編輯器 - • audacity – 錄製及編輯音訊檔案 - • blender – 製作 3D 動畫和視覺效果 - • gimp – 編輯相片 - • nautilus – Linux 檔案總管 - • vlc – 影片播放器 - - - 您可以跨 Windows 和 Linux 作業系統,輕鬆存取網路應用程式。 - - - 網路整合 - - - 深入了解網路應用程式 - - - https://aka.ms/wslnetworking - {Locked}Uri to the Accessing network applications with WSL documentation - - - 深入了解鏡像模式網路功能 - - - https://aka.ms/wslmirroredmode - {Locked}Uri to the WSL Mirrored Mode networking documentation - - - 您可以直接從 VS Code 完全使用 WSL 作為開發環境。 - - - VS Code 整合 - - - 深入了解如何搭配使用 WSL 與 VS Code - - - https://aka.ms/wslvscode - {Locked}Uri to the using Visual Studio Code with WSL documentation - - - 安裝方式 - - - 安裝 VS Code 之後,即可從 Windows 終端機安裝遠端 WSL 延伸模組: - -'code –install-extension ms-vscode-remote.remote-wsl' - - - 使用 Visual Studio Code 開啟 WSL 專案 - - - 如要透過 WSL 發行版本使用 VS Code 開啟專案,請開啟該發行版本的命令列,然後執行 'code .' 來開啟專案檔案。 - -您也可以透過 VS Code 本身的命令選擇區,使用更多 VS Code 遠端選項。在鍵盤上按 “SHIFT+CTRL+P” 開啟命令選擇區,然後鍵入 ‘Remote-WSL’ 來查看可用的 VS Code 遠端選項清單。這樣做可讓您在遠端工作階段中重新開啟資料夾,並指定要開啟的發行版本等。 - - - 如何使用 - - - 選用功能 - - - 隱私權聲明 - - - https://go.microsoft.com/fwlink/?linkid=2234882 - {Locked}Uri to the Microsoft Privacy Policy - - - 處理器計數 - - - 要指派給WSL 2 VM 的邏輯處理器數目。 - - - 重設計數 - - - 處理器計數 - - - 要指派給WSL 2 VM 的邏輯處理器數目。 - - - 相關連結 - - - 版本資訊 - - - https://aka.ms/wslreleases - {Locked}Uri to Microsoft WSL release notes - - - 啟用安全模式 - - - 以「安全模式」執行 WSL,此模式會停用許多功能,並用於復原處於錯誤狀態的發佈。 - - - 啟用安全模式。 - - - 以「安全模式」執行 WSL,此模式會停用許多功能,並用於復原處於錯誤狀態的發佈。 - - - 關於 - - - 開發人員 - - - Distro 管理 - - - Docker Desktop 整合 - - - 檔案系統 - - - 一般 - - - GPU 加速 - - - GUI 應用程式 - - - 啟動 wsl.exe - - - 記憶體與處理器 - - - 網路功能 - - - 網路整合 - - - 歡迎使用 WSL - - - 選用功能 - - - 設定 - - - VS Code 整合 - - - 新增功能 - - - 跨檔案系統工作 - - - 問題 - - - https://aka.ms/wslproject - {Locked}Uri to Microsoft WSL issues - - - 預設啟用疏鬆 VHD - - - 啟用時,任何新建立的 VHD 都會自動設定為疏鬆。 - - - 預設啟用疏鬆 VHD。 - - - 啟用時,任何新建立的 VHD 都會自動設定為疏鬆。 - - - 交換檔案位置 - - - 交換虛擬硬碟的絕對 Windows 路徑。 - - - 瀏覽交換檔案 - - - 交換檔案位置 - - - 交換虛擬硬碟的絕對 Windows 路徑。 - - - 交換大小 - - - 要新增多少交換空間至 WSL 2 VM,0 表示沒有交換檔。當記憶體需求超過硬體裝置的限制時,交換記憶體是磁碟型 RAM 所使用。 - - - 重設大小 - - - 交換大小 - - - 要新增至 WSL 2 VM 的交換空間,以 MB 為單位。0 表示沒有交換檔。當記憶體需求超過硬體裝置的限制時,交換記憶體是磁碟型 RAM 所使用。 - - - 啟用 VirtIO - - - 使用 virtiofs 而非方案 9 存取主機檔案,加快速度。 - - - 啟用 Virtio 9p - - - 使用 virtio 傳輸,從主機啟用 9P 檔案系統掛接。 - - - VM 閒置逾時 - - - VM 在關機前閒置的毫秒數。 - - - 重設逾時 - - - VM 閒置逾時 - - - VM 在關機前閒置的毫秒數。 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Windows 子系統 Linux 版 + + + WSL + + + Windows 子系統 Linux 版可讓開發人員直接在 Windows 上執行 GNU/Linux 環境 (包括大部分的命令列工具、公用程式和應用程式),而不需要傳統虛擬機器或雙重開機設定的額外負荷。 + + + 磁碟無法中斷連結: {}。如需詳細數據,請在 WSL2 內執行 'dmesg'。 +若要強制 WSL2 停止並中斷連結磁碟,請執行 『wsl.exe {}』。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 磁碟 '{}' 已連結。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 該磁碟區已掛接在 WSL2 內。 + + + 已掛接具有該名稱的磁碟; 請卸載磁碟或選擇新名稱,然後再試一次。 + + + 指定的掛接名稱包含不正確 '/' 字元。請不要使用不正確字元再試一次。 + + + 磁碟已成功掛接為 『/mnt/wsl/{}』。 +注意: 如果您在 /etc/wsl.conf 中修改 automount.root 設定,位置會不一樣。 +若要卸除並卸離磁碟,請執行 'wsl.exe {} {}'。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 磁碟已連結,但無法掛接: {}。 +如需詳細數據,請在 WSL2 內執行 'dmesg'。 +若要中斷連結磁碟,請執行 'wsl.exe {} {}'。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 下列是可安裝的有效發佈清單。 +使用 'wsl.exe {} <Distro>' 安裝. + + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 已設定發佈名稱。 + + + 提供的安裝位置已在使用中。 + + + 具有所提供名稱的發佈已經存在。使用 --name 選擇不同的名稱。 + {Locked="--name "}Command line arguments, file names and string inserts should not be translated + + + 沒有具有所提供名稱的發佈。 + + + 需要系統管理員存取權才能掛接磁碟。 + + + 匯出發佈失敗。 + + + 正在為此次發佈執行 Windows 子系統 Linux 版一次性升級... + + + + 無法啟動,因為有另一個執行個體正以未提高權限的方式執行。不允許同時執行提高權限和未提高權限的執行個體。 + + + + 匯入發布失敗。 + + + 正在安裝 Windows 選用元件: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 正在下載: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 正在安裝: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 正在匯入發佈 + + + 已下載 {}。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Windows 子系統 Linux 版正在繼續先前的安裝... + + + 無效的發佈名稱: '{}'。 +若要取得有效發佈的清單,請使用 『wsl.exe --list --online'。 + {FixedPlaceholder="{}"}{Locked="--list "}{Locked="--online'"}Command line arguments, file names and string inserts should not be translated + + + Windows 子系統 Linux 版執行個體已終止。 + + + 無效的命令行自變數: {} +請使用 '{} --help' 取得支援的自變數清單。 + {FixedPlaceholder="{}"}{Locked="--help'"}Command line arguments, file names and string inserts should not be translated + + + 命令行自變數 {} 需要值。 +請使用 '{} --help' 取得支援的自變數清單。 + {FixedPlaceholder="{}"}{Locked="--help'"}Command line arguments, file names and string inserts should not be translated + + + 不支援的主控台設定。若要使用此功能,必須停用舊版主控台。 + + + + {} 不是有效的整數。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 此發佈正在進行安裝、解除安裝或轉換。 + + + + 正在啟動 {}... + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法啟動,因為有另一個執行個體正以提高權限的方式執行。不允許同時執行提高權限和未提高權限的執行個體。 + + + + Windows 子系統 Linux 版 沒有已安裝的發佈。 +您可以使用下列指示安裝發佈以解決此問題: + +使用 『wsl.exe --list --online' 列出可用的發佈 +和 『wsl.exe --install <Distro>』 來安裝。 + {Locked="--list "}{Locked="--online'"}{Locked="--install "}Command line arguments, file names and string inserts should not be translated + + + 沒有任何執行中的發佈。 + + + {} (預設) + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Windows 子系統 Linux 版發佈: + + + 預設通訊群組: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 預設版本: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 取消註冊中。 + + + 找不到使用者。 + + + 有關 WSL 2 的主要差異詳細資訊,請瀏覽 https://aka.ms/wsl2 + + + + 轉換進行中,這可能需要幾分鐘的時間。 + + + 發佈已是要求的版本。 + + + 舊版發佈不支援 WSL 2。 + + + 您目前的電腦設定不支援 WSL2。 +請啟用「虛擬機器平台」選擇性元件,並確保 BIOS 中已啟用虛擬化。 +啟用以下項目,以執行 [虛擬機器平台]: wsl.exe --install --no-distribution +如需詳細資訊,請瀏覽 https://aka.ms/enablevirtualization + {Locked="--install "}{Locked="--no-distribution +"}Command line arguments, file names and string inserts should not be translated + + + 連結太多虛擬硬碟或實體磁碟。 + + + VHD 已透過 wsl.exe --mount, 掛接,請先卸載磁碟再啟動。 + {Locked="--mount,"}Command line arguments, file names and string inserts should not be translated + + + 您目前的電腦設定不支援 WSL1。 +請啟用「Windows 子系統 Linux 版」選用元件以使用 WSL1。 + + + 只有 WSL2 支援此作業。 + + + 使用方式: + --networking-mode + 顯示當前的網路模式。 + + --msal-proxy-path + 顯示 MSAL Proxy 應用程式的路徑。 + + --vm-id + 顯示 WSL 虛擬機器識別碼。 + + --version + 顯示 WSL 套件的版本。 + + -n + 不要列印新行。 + {Locked="--networking-mode +"}{Locked="--msal-proxy-path +"}{Locked="--vm-id +"}{Locked="--version +"}Command line arguments, file names and string inserts should not be translated + + + 用法: + -a + 強制結果使用絕對路徑格式。 + -u + 將 Windows 路徑轉換成 WSL 路徑 (預設)。 + -w + 將 WSL 路徑轉換成 Windows 路徑。 + -m + 在將 WSL 路徑轉換成 Windows 路徑時,使用 '/' 而非 '\\' + +範例: wslpath 'c:\\users' + {Locked="-a +"}{Locked="-u +"}{Locked="-w +"}{Locked="-m +"}Command line arguments and file names should not be translated + + + 在 Windows 子系統 Linux 版上執行系統管理作業 + +使用情況: + /l, /list [Option] + 列出已註冊的發行版本。 + /all - 選擇性地列出所有發行版本,包括 + 目前正在安裝或卸載的發行版本。 + + /running - 只列出目前正在執行的發行版本。 + + /s, /setdefault <DistributionName> + 將發行版本設定為預設值。 + + /t, /terminate <DistributionName> + 終止發行版本。 + + /u, /unregister <DistributionName> + 取消註冊發行版本並刪除根檔案系統。 + {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 + + + Copyright (c) Microsoft Corporation. 著作權所有,並保留一切權利。 +如需有關此產品的隱私權資訊,請造訪 https://aka.ms/privacy。 + +使用方式: wsl.exe [Argument] [Options...] [CommandLine] + +用於執行 Linux 二進位檔的引數: + + 如果未提供任何命令列,wsl.exe 會啟動預設殼層。. + + --exec, -e <CommandLine> + 執行指定的命令,而不使用預設的 Linux 殼層。 + + --shell-type <standard|login|none> + 使用提供的殼層類型執行指定的命令。. + + -- + 依原樣傳遞其餘的命令列。 + +選項: + --cd <Directory> + 將指定的目錄設定為目前的工作目錄。 + 如果使用 ~,則會使用 Linux 使用者的常用路徑。如果路徑的開頭為 + / 字元,它則會被解譯為絕對 Linux 路徑。 + 否則,該值必須是絕對 Windows 路徑。 + + --distribution, -d <DistroName> + 執行指定的發佈。 + + --distribution-id <DistroGuid> + 執行指定的發佈識別碼。 + + --user, -u <UserName> + 以指定使用者身分執行。 + + --system + 啟動系統發佈的殼層。 + +用於管理 Linux 版 Windows 子系統的引數: + + --help + 顯示使用方式資訊。 + + --debug-shell + 開啟用於診斷用途的 WSL2 偵錯殼層。 + + --install [Distro] [Options...] + 安裝 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 + 從網際網路下載發佈,而非從 Microsoft Store 下載。 + + --manage <Distro> <Options...> + 變更 distro 指定選項。 + + 選項: + --move <Location> + 將發佈移動到新位置。 + + --set-sparse, -s <true|false> +將 distro 的 VHD 設為疏鬆,允許磁碟空格自動回收。 + + --set-default-user <Username> + 設定發佈的預設使用者。 + + --resize <MemoryString> + 將發佈的磁碟大小調整為指定大小。 + + --mount <Disk> + 在所有 WSL 2 發行版本中連結和掛接實體或虛擬磁碟。 + + 選項: + --vhd + 指定 <Disk> 參考虛擬硬碟。 + + --bare + 將磁碟連結到 WSL2,但不要掛接。 + + --name <Name> + 使用掛接點的自訂名稱掛接磁碟。 + + --type <Type> + 掛接磁碟時要使用的檔案系統,如果未指定,則預設為 ext4。 + + --options <Options> + 其他掛接選項。 + + --partition <Index> + 要掛接之磁碟分割的索引,如果未指定,則預設為整個磁碟。 + + --set-default-version <Version> + 為新的發行版本變更預設安裝版本。 + + --shutdown + 立即終止所有正在執行的發行版本和 WSL 2 + 輕量型公用程式虛擬機器。 + + 選項: + --force + 結束 WSL 2 虛擬機器,即使作業正在進行中。可能會造成資料遺失。 + + --status + 顯示 Linux 版 Windows 子系統的狀態。 + + --unmount [Disk] + 從所有 WSL2 發行版本卸載並中斷連結磁碟。 + 如果呼叫時沒有引數,則卸載並中斷連結所有磁碟。 + + --uninstall + 從此電腦取消安裝 Linux 套件的 Windows 子系統。 + + --update + 更新 Linux 版 Windows 子系統套件。 + + 選項: + --pre-release + 下載預先發行版本 (如果有提供)。 + + --version, -v + 顯示版本資訊。 + +用於在 Linux 版 Windows 子系統中管理發行版本的引數: + + --export <Distro> <FileName> [Options] + 將發行版本匯出至 tar 檔案。 + stdout 的檔案名稱可以是 -。 + + 選項: + --format <Format> + 指定匯出格式。支援的值: tar、tar.gz、tar.xz、vhd。 + + --import <Distro> <InstallLocation> <FileName> [Options] + 匯入指定的 tar 檔案以做為新發行版本。 + 標準輸出的檔案名稱可以是 -。 + + 選項: + --version <Version> + 指定要用於新發行版本的版本。 + + --vhd + 指定提供的檔案是 .vhd 或 .vhdx 檔案,而不是 tar 檔案。 + 此作業會在指定的安裝位置複製 .vhdx 檔案。 + + --import-in-place <Distro> <FileName> + 匯入指定的 VHD 檔案以做為新發行版本。 + 此虛擬硬碟必須格式化為 ext4 檔案系統類型。 + + --list, -l [Options] + 列出發行版本。 + + Options: + --all + 列出所有發行版本,包括 + 目前正在安裝或解除安裝的發行版本。 + + --running + 僅列出目前正在執行的發行版本。 + + --quiet, -q + 只顯示發行版本名稱。 + + --verbose, -v + 顯示所有發行版本的詳細資訊 + + --online, -o + 顯示可使用 'wsl.exe --install' 安裝的可用發行版本清單。 + + --set-default, -s <Distro> + 將發行版本設定為預設值。 + + --set-version <Distro> <Version> + 變更指定發行版本的版本。 + + --terminate, -t <Distro> + 終止指定的發行版本。 + + --unregister <Distro> + 取消註冊發行版本並刪除根檔案系統。 + {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system +"}{Locked="--help +"}{Locked="--debug-shell +"}{Locked="--install "}{Locked="--list "}{Locked="--online'"}{Locked="--enable-wsl1 +"}{Locked="--fixed-vhd +"}{Locked="--from-file "}{Locked="--legacy +"}{Locked="--location "}{Locked="--name "}{Locked="--no-distribution +"}{Locked="--no-launch,"}{Locked="--version "}{Locked="--vhd-size "}{Locked="--web-download +"}{Locked="--manage "}{Locked="--move "}{Locked="--set-sparse,"}{Locked="--set-default-user "}{Locked="--resize "}{Locked="--mount "}{Locked="--vhd +"}{Locked="--bare +"}{Locked="--name "}{Locked="--type "}{Locked="--options "}{Locked="--partition "}{Locked="--set-default-version "}{Locked="--shutdown +"}{Locked="--force +"}{Locked="--status +"}{Locked="--unmount "}{Locked="--uninstall +"}{Locked="--update +"}{Locked="--pre-release +"}{Locked="--version,"}{Locked="--export "}{Locked="--format "}{Locked="--import "}{Locked="--version "}{Locked="--vhd +"}{Locked="--import-in-place "}{Locked="--list,"}{Locked="--all +"}{Locked="--running +"}{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 + + + WSL 版本: {} +核心版本: {} +WSLg 版本: {} +MSRDC 版本: {} +Direct3D 版本: {} +DXCore 版本: {} +Windows 版本: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + MSBuild 版本: {} +認可: {} +建置時間: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 找不到 {} 中指定的自定義核心: '{}'。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 找不到 {} 中的自訂核心模組 VHD:'{}'。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 找不到 {} 中指定的自定義系統發佈,或其格式不正確。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + Copyright (c) Microsoft Corporation。著作權所有,並保留一切權利。 +如需此產品的隱私權資訊,請瀏覽https://aka.ms/privacy。 + +使用方式: wslg.exe [引數] [選項...][CommandLine] + +引數: + --cd <Directory> + 將指定的目錄設定為目前的工作目錄。 + 如果使用 ~,將會使用 Linux 使用者首頁路徑。如果路徑開頭為 + 與 / 字元,它將被解譯為絕對 Linux 路徑。 + 否則,此值必須是絕對 Windows 路徑。 + + --distribution, -d <Distro> + 執行指定的發佈。 + + --user, -u <UserName> + 以指定的使用者執行。 + + --shell-type <standard|login|none> + 使用提供的殼層類型執行指定的命令。 + + --help + 顯示使用資訊。 + + -- + 將剩餘的命令列傳遞為目前。 + {Locked="--cd "}{Locked="--distribution,"}{Locked="--user,"}{Locked="--shell-type "}{Locked="--help +"}Command line arguments, file names and string inserts should not be translated + + + 請按任意鍵繼續... + + + 引數 {} 遺失必要的參數。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 匯出進行中,這可能需要幾分鐘的時間。 + + + 正在匯入,這可能需要幾分鐘的時間。 + + + 已透過 {} 或 /etc/wsl.conf 停用 GUI 應用程式支援。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 正在檢查更新。 + + + 此發佈僅可從 Microsoft Store 取得。 + + + ARM64 上的 wsl.exe --mount 需要 Windows 27653 版或更新版本。 + {Locked="--mount "}Command line arguments, file names and string inserts should not be translated + + + 已安裝最新版的Windows 子系統 Linux 版。 + + + 正在將 Windows 子系統 Linux 版 更新為版本: {}。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 此應用程式需要 Windows 子系統 Linux 版選用元件。 +執行下列項目,以進行安裝: wsl.exe --install --no-distribution +系統可能需要重新啟動,變更才會生效。 + {Locked="--install "}{Locked="--no-distribution +"}Command line arguments, file names and string inserts should not be translated + + + 指定的檔案必須具有 {} 副檔名。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 指定的檔案必須具有 {} 或 {} 副檔名。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 找不到 VmSwitch '{}'。可用參數: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 橋接器網路需要設定 wsl2.vmSwitch。 + + + 無法從 '{}' 擷取清單發佈。{} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法將磁碟 '{}' 連結到 WSL2: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法調整磁碟。 + + + 無法翻譯路徑。 + + + 找不到任何值。 + + + Windows 版本 {} 不支持封裝版本的 Windows 子系統 Linux 版。 +透過 Windows 更新或透過下列方式安裝必要的更新: {} +如需詳細資訊,請造訪 https://aka.ms/wslinstall + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 執行偵錯殼層需要以系統管理員身分執行 wsl.exe。 + + + 發佈 '{}' 的安裝程序失敗,結束代碼: {}。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無效的 GUID 格式: '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中的章節名稱無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中的金鑰名稱無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 預期 {}:{} 中有 {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無效的逸出字元: {}:{} 中的 '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中不明的按鍵 '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中索引鍵 '{}' 的整數值 '{}' 無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中機碼 '{}' 的 IP 值 '{}' 無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中索引鍵 '{}' 的布爾值 '{}' 無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中索引鍵 '{}' 的 mac 地址 '{}' 無效 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法開啟設定檔 {},{} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 在 WSL 設定期間發生錯誤 + + + 無法啟動 『{}』 的系統用戶會話。如需詳細數據,請參閱 journalctl。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 開啟 EventViewer + + + 此發佈不包含預設名稱。使用 --name 來選擇發佈名稱。 + {Locked="--name "}Command line arguments, file names and string inserts should not be translated + + + 無法同時指定 {} 和 {} 自變數。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 引數 {} 需要 {} 引數。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 發佈名稱無效: "{}"。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 使用舊版散發註冊。請考慮改用 tar 型發佈。 + + + 舊版散發註冊不支援 --version 自變數。 + {Locked="--version "}Command line arguments, file names and string inserts should not be translated + + + 發佈 "{}" 是由覆寫資訊清單所提供。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 發佈雜湊不相符。預期: {},實際: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 不正確的十六進位字串: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 安裝舊版發佈時不支援 『{}』。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 已成功安裝發佈。可以透過 『wsl.exe -d {}' 啟動 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中 .wslconfig 專案 '{}' 的記憶體字符串 '{}' 無效 + {FixedPlaceholder="{}"}{Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated + + + 無法在 '{}': {} 中建立交換磁碟 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 此電腦不支援巢狀虛擬化。 + + + 無法建立位址為 '{}'、已指派新位址為 '{}' 的網络端點 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法建立位址範圍為 『{}』 的虛擬網路,已建立範圍為 『{}』、{} 的新網路 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 安全模式已啟用 - 許多功能將會停用 + + + 不支援鏡像網路模式: {}。 +回到 NAT 網路。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 需要 Linux 核心 5.10 版或更新版本 + + + Windows 版本 {}。{} 沒有所需的功能 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 不支援 Hyper-V 防火牆 + + + 不支援 DNS 通道 + + + 使用鏡像網路模式時,wsl2.localhostForwarding 設定沒有作用 + + + 在主機上偵測到 Http Proxy 變更。請重新開機 WSL 以套用變更。 + + + 偵測到 localhost Proxy 設定,但未鏡像到 WSL。NAT 模式中的 WSL 不支援 localhost Proxy。 + + + 偵測到 IPv6 Proxy 設定,但未鏡像到 WSL。NAT 模式中的 WSL 不支援 IPv6。 + + + 偵測到 localhost IPv6 Proxy 設定,但未鏡像到 WSL。WSL 不支援 localhost IPv6 Proxy。 + + + 嘗試解析 Proxy 設定時發生意外的錯誤,Proxy 設定未鏡像到 WSL。 + + + 存取登錄時發生錯誤。路徑: '{}'。錯誤: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法啟動localhost轉送進程。錯誤: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法啟動虛擬網路 - 請執行 : wsl.exe --install --no-distribution 以安裝選擇性元件 Virtual Machine Platform + {Locked="--install "}{Locked="--no-distribution"}Command line arguments, file names and string inserts should not be translated + + + 無法設定 networkingMode {} 的網络,回到 networkingMode {}。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法啟用 Windows 元件 '{}' (結束代碼: {}) + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 外掛程式 '{}' 傳回嚴重錯誤 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 外掛程式 '{}' 傳回嚴重錯誤。錯誤訊息: '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 外掛程式 '{}' 需要較新版本的 WSL。請執行: wsl.exe --update + {FixedPlaceholder="{}"}{Locked="--update"}Command line arguments, file names and string inserts should not be translated + + + 計算機原則已停用 .wslconfig 設定 『{}』。 + {FixedPlaceholder="{}"}{Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated + + + 電腦原則已停用偵錯殼層。 + + + wsl.exe --mount 已由電腦原則停用。 + {Locked="--mount "}Command line arguments, file names and string inserts should not be translated + + + WSL1 已由電腦原則停用。 + + + 請執行 'wsl.exe --set-version {} 2' 以升級至 WSL2。 + {FixedPlaceholder="{}"}{Locked="--set-version "}Command line arguments, file names and string inserts should not be translated + + + WSL 正在完成升級... + + + 更新失敗 (結束代碼: {})。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 解除安裝失敗 (結束代碼: {})。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 記錄檔: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法移除 MSIX 套件 (錯誤: {})。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法安裝 MSIX 套件 (錯誤: {})。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 未安裝執行 WSL 所需的選用元件。 + + + 安裝遺失的元件。 + + + 匯入的檔案不是有效的 Linux 發佈。 + + + 按任意鍵離開... + + + 有新版的 Windows 子系統 Linux 版可供使用。 + + + 更新至版本 {} 或在下方檢視其版本資訊。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 更新 + + + 查看文件 + + + 無法完成作業,因為 VHD 目前正在使用中。若要強制 WSL 停止使用: wsl.exe --shutdown + {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated + + + {} 不是有效的布林值,<true|false> + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 只有 WSL2 支援稀疏 VHD。 + + + 系統不支援將 WSL 執行為本機系統。 + + + 效能提示: + + + 在您的 Windows 磁碟驅動器上使用如 {} 的 I/O 密集型操作,效能將會不佳。請考慮將項目檔移至 Linux 檔案系統,以獲得較佳的效能。按兩下下方以深入瞭解。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 檢視文件 + + + 不再顯示 + + + WSL2 虛擬機器已損毀。 + + + 堆棧追蹤已儲存於: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 發佈無法啟動。錯誤碼: {},失敗步驟: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法啟動分佈,因為其虛擬磁碟已損毀。 + + + {}:{} 中的重複設定索引鍵 '{}' (衝突密鑰: {}:{}) 中的 '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {}:{} 中設定索引鍵 '{}' 的值 '{}' 無效 (有效值: {}) + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 正在等候 OOBE 命令完成,以進行散發「{}」... + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法從發佈 {} 讀取屬性 '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 這看起來像一個 VHD 文件。使用 --vhd 匯入 VHD 而不是 tar。 + {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated + + + 無法從Microsoft Store安裝 {}: {} +正在嘗試 Web 下載... + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 尚未設定預設發佈。請提供要安裝的發佈。 + + + 已停用 wsl2.virtio9p,退回到使用 vsock 傳輸的 9p。 + + + WSL 安裝似乎已損毀,(錯誤碼: {})。 +按任意鍵以修復 WSL,或 CTRL-C 取消。 +此提示將在 60 秒內逾時。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 註冊發佈時無法剖析終端機配置檔: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無效的大小: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + {} +錯誤碼: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無效的 JSON 文件。剖析錯誤: {} + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + wsl2.processors 不能超過系統上的邏輯處理器數目 ({} > {}) + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 無法查詢網路模式 + + + 已提供自定義核心模組,但未指定自定義核心。如需詳細資訊,請參閱 https://aka.ms/wslcustomkernel。 + + + 由於目前與全球安全存取用戶端的相容性問題,已停用 DNS 通道。 + + + 由於可能會導致資料損毀,目前已停用稀疏 VHD 支援。 +若要強制發行版本以使用稀疏 VHD,請執行: +wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe + {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated + + + 無法掛接 {},如需詳細數據,請參閱 dmesg。 + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 處理掛載 -a 的 /etc/fstab 失敗。 + + + 掛接散發磁碟時發生錯誤,它是以唯讀方式掛接為遞補。 +請參閱復原指示: https://aka.ms/wsldiskmountrecovery + + + 無法翻譯 '{}' + {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated + + + 發生錯誤。請稍後再試一次。 + + + 關於 + + + 關於 Windows 子系統 Linux 版設定 + + + © Microsoft.著作權所有,並保留一切權利。 + + + 適用於 Linux 的 Windows 子系統設定 + + + Windows 子系統 Linux 版 設定可讓開發人員使用 GUI 應用程式來管理 .wslconfig 檔案。 + {Locked=".wslconfig"}Command line arguments, file names and string inserts should not be translated + + + 自動記憶體回收 + + + 偵測到閑置 CPU 使用量後,自動釋放快取的記憶體。設定為緩時釋放的漸進式,以及快取記憶體的即時釋放投遞。 + + + 自動記憶體回收。 + + + 偵測到閑置 CPU 使用量後,自動釋放快取的記憶體。設定為緩時釋放的漸進式,以及快取記憶體的即時釋放投遞。 + + + 已啟用自動 Proxy + + + 讓 WSL 使用 Windows 的 HTTP Proxy 資訊。 + + + 已啟用自動 Proxy。 + + + 讓 WSL 使用 Windows 的 HTTP Proxy 資訊。 + + + 使用最佳作業效果的 DNS 剖析 + + + 僅適用於 wsl2.dnsTunneling 設為 true 時。設定為 true 時,Windows 會從 DNS 要求擷取問題,並嘗試加以解決,並忽略未知的記錄。 + {Locked="wsl2.dnsTunneling"}.wslconfig property key names should not be translated + + + 使用最佳作用的 DNS 剖析。 + + + 僅適用於 wsl2.dnsTunneling 設為 true 時。設定為 true 時,Windows 會從 DNS 要求擷取問題,並嘗試加以解決,並忽略未知的記錄。 + + + 自訂核心 + + + 自訂Linux核心的絕對 Windows 路徑。 + + + 瀏覽核心 + + + 自訂核心 + + + 自訂Linux核心的絕對 Windows 路徑。 + + + 自訂核心模組 + + + 自訂Linux核心模組 VHD 的絕對 Windows 路徑。 + + + 瀏覽核心模組 + + + 自訂核心模組 + + + 自訂Linux核心模組 VHD 的絕對 Windows 路徑。 + + + 自訂系統發行版 + + + 瀏覽發行套件 + + + 指定要載入為自訂系統發行版的 VHD 路徑,主要用於在 WSL 中啟用 GUI 應用程式。[在此深入了解系統發行]。 + {Locked="["}{Locked="]"}The text in between the delimiters [ ] is made into a hyperlink in code, and the delimiters are removed + + + https://aka.ms/wslgsystemdistro + {Locked}Uri to the Microsoft WSLg architecture devblog + + + 自訂系統發行版 + + + 指定要載入為自訂系統發行版的 VHD 路徑,主要用於在 WSL 中啟用 GUI 應用程式。 + + + 啟用偵錯主控台 + + + 布林值,可開啟輸出控制台視窗,該視窗會在啟動 WSL 2 發行版執行個體時顯示 dmesg 的內容。 + + + 啟用偵錯主控台。 + + + 布爾值,可開啟輸出控制台視窗,該視窗會在啟動 WSL 2 發行例項時顯示診斷訊息的內容。 + + + 預設 VHD 大小 + + + 僅新建立之發佈之可擴充 WSL 虛擬硬碟 (VHD) 的預設大小上限。 + + + 重設大小 + + + 預設 VHD 大小 + + + 只針對新建的發佈指定可擴充 WSL 虛擬硬碟 (VHD) 的預設大小上限,以 MB 為單位。 + + + 開發人員 + + + 文件 + + + https://aka.ms/wsldocs + {Locked}Uri to Microsoft WSL documentation + + + 變更 DrvFS 模式 + + + 變更 WSL 中的跨作業系統檔案存取實作。 + + + 已啟用 DNS Proxy + + + 只有在 wsl2.networkingMode 設為 NAT 時才適用。布爾值會通知 WSL 將 Linux 中的 DNS 伺服器設定為主機上的 NAT。設定為 false 會將 DNS 伺服器從 Windows 鏡像到 Linux。 + {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated + + + 已啟用 DNS Proxy。 + + + 只有在 wsl2.networkingMode 設定為 NAT 時才適用。布爾值會通知 WSL 將 Linux 中的 DNS 伺服器設定為主機上的 NAT。設定為 false 會將 DNS 伺服器從 Windows 鏡像到 Linux。 + + + 已啟用 DNS 通道 + + + 變更從 WSL 到 Windows 進行 DNS 要求的 Proxy 處理方式。 + + + 已啟用 DNS 通道。 + + + 變更從 WSL 到 Windows 進行 DNS 要求的 Proxy 處理方式。 + + + 檔案系統 + + + 啟用 GUI 應用程式 + + + 用於開啟或關閉 GUI 應用程式支援 ([WSLg]) WSL 的布爾值。 + + + https://aka.ms/wslgproject + {Locked}Uri to the Microsoft GitHub WSLg project + + + 啟用 GUI 應用程式。 + + + 用於開啟或關閉 GUI 應用程式支援 (在 WSL 中稱為 WSL g) 的布林值。 + + + 啟用硬體效能計數器 + + + 啟用 Linux 的硬體效能計數器。 + + + 啟用硬體效能計數器。 + + + 啟用 Linux 的硬體效能計數器。 + + + 已啟用 Hyper-V 防火牆 + + + 啟用 Hyper-V 防火牆,允許 Windows 防火牆規則以及 Hyper-V 流量專用的規則,以篩選 WSL 網路流量。 + + + 已啟用 Hyper-V 防火牆。 + + + 啟用 Hyper-V 防火牆,允許 Windows 防火牆規則以及 Hyper-V 流量專用的規則,以篩選 WSL 網路流量。 + + + 主機位址回送 + + + 只有在 wsl2.networkingMode 設為鏡像時才適用。設定為 True 時,將允許容器透過指派給主機的 IP 位址連線到主機,或允許主機連線到容器。請注意,一律可以使用 127.0.0.1 回送位址 - 此選項也允許使用所有額外指派的本機 IP 位址。 + {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated + + + 主機位址回送。 + + + 僅適用於 wsl2.networkingMode 設為鏡像時。設定為 True 時,將允許容器透過指派給主機的 IP 位址連線到主機,或允許主機連線到容器。請注意,一律可以使用 127.0.0.1 回送位址 - 此選項也允許使用所有額外指派的本機 IP 位址。 + + + 已忽略的連接埠 + + + 只有在 wsl2.networkingMode 設為鏡像時才適用。指定 Linux 應用程式可以繫結到哪些埠,而這些埠不會自動轉送,也不會在 Windows 中納入考慮。格式應為逗號分隔清單,例如: 3000,9000,9090。 + {Locked="wsl2.networkingMode"}.wslconfig property key names should not be translated + + + 重設連接埠 + + + 已忽略的連接埠 + + + 僅適用於 wsl2.networkingMode 設為鏡像時。指定 Linux 應用程式可以繫結到哪些埠,而這些埠不會自動轉送,也不會在 Windows 中納入考慮。應以逗號分隔清單格式化,例如 3000、9000、9090。 + + + 初始自動 Proxy 逾時 + + + 僅適用於 wsl2.autoProxy 設為 true 時。設定 WSL 啟動 WSL 容器時,WSL 等候擷取 HTTP Proxy 資訊的時間) (毫秒。如果在此時間之後解析 Proxy 設定,則必須重新啟動 WSL 實例,才能使用擷取的 Proxy 設定。 + {Locked="wsl2.autoProxy"}.wslconfig property key names should not be translated + + + 重設逾時 + + + 初始自動 Proxy 逾時 + + + 僅適用於 wsl2.autoProxy 設為 true 時。設定啟動 WSL 容器時,WSL 將等候擷取 HTTP Proxy 資訊的時間,以毫秒為單位。如果在此時間之後解析 Proxy 設定,則必須重新啟動 WSL 實例,才能使用擷取的 Proxy 設定。 + + + 核心命令列 + + + 其他核心命令列引數。 + + + 啟用 localhost 轉送 + + + 布林值,指定繫結至 WSL 2 VM 中萬用字元或 localhost 的連接埠是否應可透過 localhost:port 從主機連結。 + + + 啟用 localhost 轉送。 + + + 布林值,指定繫結至 WSL 2 VM 中萬用字元或 localhost 的連接埠是否應可透過 localhost、冒號、連接埠從主機連結。 + + + {0} MB + + + 記憶體與處理器 + + + 記憶體大小 + + + 要指派給 WSL 2 VM 的記憶體。 + + + 重設大小 + + + 記憶體大小 + + + 要指派給 WSL 2 VM 的記憶體指定量,以 MB 為單位。 + + + {0} 毫秒 + + + 啟用巢狀虛擬化 + + + 開啟或關閉巢狀虛擬化的布爾值,可讓其他巢狀 VM 在 WSL 2 內執行。 + + + 已啟用巢狀虛擬化。 + + + 開啟或關閉巢狀虛擬化的布爾值,可讓其他巢狀 VM 在 WSL 2 內執行。 + + + 網路模式 + + + 指定 WSL 的網路模式。 + + + 網路模式。 + + + 指定 WSL 的網路模式。 + + + 網路功能 + + + 您可以跨作業系統處理所有檔案! + + + 跨 OS 存取檔案 + + + 從 Linux 存取 Windows 檔案 + + + 您可以依序瀏覽至 ‘/mnt’ 與 Windows 磁碟機代號 (如範例所示的 C 磁碟機),藉以在 Linux 中存取 Windows 檔案: + +'cd /mnt/c' + + + 使用檔案總管存取 Linux 檔案 + + + 您可以瀏覽至 '\\wsl.localhost\' 按一下 ‘Linux’ 圖示,從檔案總管檢視 Linux 檔案。 + {Locked="\\wsl.localhost\"}Url addresses should not be translated. + + + 從 WSL 啟動 Windows 檔案和程式 + + + 即使在使用 WSL 時,您也可以直接從 bash 執行 Windows 可執行檔。請嘗試執行 +'powershell.exe /c start .',以在目前的資料夾中開啟檔案總管。 + {Locked="/c start ."}Command line arguments and file names should not be translated + + + 從 Windows 存取 Linux 網路應用程式 + + + 如果您是在 Linux 發行版本中建置網路應用程式 (例如在 NodeJS 或 SQL 伺服器上執行的應用程式),可以使用 localhost (方式與平常相同) 透過 Windows 應用程式 (例如 Edge 或 Chrome 網際網路瀏覽器) 加以存取。這代表如果您啟動接聽連接埠 3000 的 Linux 伺服器,即可透過 Windows 上的 Edge 前往 [http://localhost:3000] 加以存取。 + {Locked="http://localhost:3000"}Url addresses should not be translated. + + + http://localhost:3000 + {Locked}Uri to the localhost on port 3000 + + + 鏡像模式網路功能 + + + WSL 也包含稱為「鏡像模式」的新網路模式,加入了 IPv6 支援等進階功能,並且能夠存取區域網路中的網路應用程式。 + + + 深入了解如何跨 OS 存取檔案 + + + https://aka.ms/wslfilesystems + {Locked}Uri to the Working across Windows and Linux file systems documentation + + + 歡迎使用 Windows 子系統 Linux 版 + + + WSL 非常適合用來嘗試不同的 Linux 發行版本。 + + + 發行版本管理 + + + 深入了解基本 WSL 命令 + + + https://aka.ms/wslcommands + {Locked}Uri to the basic WSL commands documentation + + + 深入了解如何匯入任何 Linux 發行版本 + + + https://aka.ms/wslcustomdistro + {Locked}Uri to the import any linux distribution to use with WSL documentation + + + 列出可安裝的 WSL 發行版本命令 + + + 'wsl.exe -l -o' + {Locked="-l -o"}Command line arguments and file names should not be translated + + + 安裝具名 WSL 發行版本命令 + + + 'wsl.exe --install <DistroName>' + {Locked="--install "}Command line arguments, file names and string inserts should not be translated + + + 列出可用的 WSL 發行版本命令 + + + 'wsl.exe -l' + {Locked="-l"}Command line arguments and file names should not be translated + + + Docker Desktop 非常適合與 WSL 搭配使用,可協助您利用 Linux 容器進行開發。 + +搭配使用 Docker Desktop 與 WSL 的優點有: + +• 您可以使用相同的 Docker 精靈和映像,在 WSL 或 Windows 中執行 Docker 命令。 +• 您可以使用 WSL 中的 Windows 磁碟自動掛接,在 Windows 和 Linux 之間平順無礙地分享檔案和資料夾。 +• 您可以透過 WSL 的互通性,使用偏好的 Windows 工具和編輯器處理 Linux 程式碼和檔案,反之亦然。 + + + Docker Desktop 整合 + + + 深入了解如何搭配使用 WSL 與 Docker + + + https://aka.ms/wsldocker + {Locked}Uri to the Docker remote containers on WSL 2 documentation + + + 您可利用 Windows 子系統 Linux 版 (WSL),直接在 Windows 中執行偏好的 Linux 工具,公用程式、應用程式和工作流程。 + +請花一些時間預覽最受社群喜愛的一些功能,或查看我們提供的詳盡文件。 + + + 歡迎使用 WSL + + + 設定最佳做法 + + + https://aka.ms/wslsetup + {Locked}Uri to the Best Practices for Setup Documentation + + + 開始使用 Linux + + + https://aka.ms/wslgettingstarted + {Locked}Uri to the Getting Started with Linux Documentation + + + Windows 子系統 Linux 版 (WSL) 文件 + + + https://aka.ms/wsldocs + {Locked}Uri to the Microsoft WSL Documentation + + + 您可以透過原生 Windows 互動使用圖形化 Linux 應用程式,例如 alt-tab、啟動 [開始] 功能表、工作列、釘選,以及剪下貼上功能。 + + + GUI 應用程式 + + + WSL 可將 Windows GPU 用於機器學習工作流程 + +在 WSL 中執行的 Linux 二進位檔案可自動使用 Windows GPU,以加快效能速度。您只需使用與一般 Linux 機器相同的操作方式,安裝並執行這些工作流程即可。您可以利用許多不同方式開始使用,包含在 Docker 容器中執行 CUDA (如有 NVIDIA 顯示卡),一直到在 AMD、Intel 或 NVIDIA 顯示卡上使用 DirectML 執行 PyTorch 或 TensorFlow。請參閱下方的入門指南深入了解。 + + + GPU 加速 + + + 深入了解 GPU 加速 + + + https://aka.ms/wslgpu + {Locked}Uri to the GPU acceleration for ML in WSL documentation + + + 深入了解 WSL GUI 應用程式 + + + https://aka.ms/wslguiapps + {Locked}Uri to the Run GUI apps on the WSL documentation + + + 以下列出可嘗試的應用程式 (您可以鍵入 'sudo apt install <應用程式名稱>`,藉此在 Ubuntu 中安裝所有這些應用程式) + + • gedit – 基本文字編輯器 + • audacity – 錄製及編輯音訊檔案 + • blender – 製作 3D 動畫和視覺效果 + • gimp – 編輯相片 + • nautilus – Linux 檔案總管 + • vlc – 影片播放器 + + + 您可以跨 Windows 和 Linux 作業系統,輕鬆存取網路應用程式。 + + + 網路整合 + + + 深入了解網路應用程式 + + + https://aka.ms/wslnetworking + {Locked}Uri to the Accessing network applications with WSL documentation + + + 深入了解鏡像模式網路功能 + + + https://aka.ms/wslmirroredmode + {Locked}Uri to the WSL Mirrored Mode networking documentation + + + 您可以直接從 VS Code 完全使用 WSL 作為開發環境。 + + + VS Code 整合 + + + 深入了解如何搭配使用 WSL 與 VS Code + + + https://aka.ms/wslvscode + {Locked}Uri to the using Visual Studio Code with WSL documentation + + + 安裝方式 + + + 安裝 VS Code 之後,即可從 Windows 終端機安裝遠端 WSL 延伸模組: + +'code –install-extension ms-vscode-remote.remote-wsl' + + + 使用 Visual Studio Code 開啟 WSL 專案 + + + 如要透過 WSL 發行版本使用 VS Code 開啟專案,請開啟該發行版本的命令列,然後執行 'code .' 來開啟專案檔案。 + +您也可以透過 VS Code 本身的命令選擇區,使用更多 VS Code 遠端選項。在鍵盤上按 “SHIFT+CTRL+P” 開啟命令選擇區,然後鍵入 ‘Remote-WSL’ 來查看可用的 VS Code 遠端選項清單。這樣做可讓您在遠端工作階段中重新開啟資料夾,並指定要開啟的發行版本等。 + + + 如何使用 + + + 選用功能 + + + 隱私權聲明 + + + https://go.microsoft.com/fwlink/?linkid=2234882 + {Locked}Uri to the Microsoft Privacy Policy + + + 處理器計數 + + + 要指派給WSL 2 VM 的邏輯處理器數目。 + + + 重設計數 + + + 處理器計數 + + + 要指派給WSL 2 VM 的邏輯處理器數目。 + + + 相關連結 + + + 版本資訊 + + + https://aka.ms/wslreleases + {Locked}Uri to Microsoft WSL release notes + + + 啟用安全模式 + + + 以「安全模式」執行 WSL,此模式會停用許多功能,並用於復原處於錯誤狀態的發佈。 + + + 啟用安全模式。 + + + 以「安全模式」執行 WSL,此模式會停用許多功能,並用於復原處於錯誤狀態的發佈。 + + + 關於 + + + 開發人員 + + + Distro 管理 + + + Docker Desktop 整合 + + + 檔案系統 + + + 一般 + + + GPU 加速 + + + GUI 應用程式 + + + 啟動 wsl.exe + + + 記憶體與處理器 + + + 網路功能 + + + 網路整合 + + + 歡迎使用 WSL + + + 選用功能 + + + 設定 + + + VS Code 整合 + + + 新增功能 + + + 跨檔案系統工作 + + + 問題 + + + https://aka.ms/wslproject + {Locked}Uri to Microsoft WSL issues + + + 預設啟用疏鬆 VHD + + + 啟用時,任何新建立的 VHD 都會自動設定為疏鬆。 + + + 預設啟用疏鬆 VHD。 + + + 啟用時,任何新建立的 VHD 都會自動設定為疏鬆。 + + + 交換檔案位置 + + + 交換虛擬硬碟的絕對 Windows 路徑。 + + + 瀏覽交換檔案 + + + 交換檔案位置 + + + 交換虛擬硬碟的絕對 Windows 路徑。 + + + 交換大小 + + + 要新增多少交換空間至 WSL 2 VM,0 表示沒有交換檔。當記憶體需求超過硬體裝置的限制時,交換記憶體是磁碟型 RAM 所使用。 + + + 重設大小 + + + 交換大小 + + + 要新增至 WSL 2 VM 的交換空間,以 MB 為單位。0 表示沒有交換檔。當記憶體需求超過硬體裝置的限制時,交換記憶體是磁碟型 RAM 所使用。 + + + 啟用 VirtIO + + + 使用 virtiofs 而非方案 9 存取主機檔案,加快速度。 + + + 啟用 Virtio 9p + + + 使用 virtio 傳輸,從主機啟用 9P 檔案系統掛接。 + + + VM 閒置逾時 + + + VM 在關機前閒置的毫秒數。 + + + 重設逾時 + + + VM 閒置逾時 + + + VM 在關機前閒置的毫秒數。 + \ No newline at end of file From 2715a79fb47f1c10c02bf21c16e150d623c3deef Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 23 Oct 2025 08:27:52 -0700 Subject: [PATCH 28/36] Localization change from build: 132360042 (#13630) Co-authored-by: WSL localization --- localization/strings/cs-CZ/Resources.resw | 8 +- localization/strings/de-DE/Resources.resw | 14 +-- localization/strings/es-ES/Resources.resw | 4 +- localization/strings/fi-FI/Resources.resw | 8 +- localization/strings/fr-FR/Resources.resw | 36 +++--- localization/strings/hu-HU/Resources.resw | 146 +++++++++++----------- localization/strings/it-IT/Resources.resw | 10 +- localization/strings/nl-NL/Resources.resw | 8 +- localization/strings/pl-PL/Resources.resw | 10 +- localization/strings/pt-BR/Resources.resw | 4 +- localization/strings/pt-PT/Resources.resw | 74 +++++------ localization/strings/sv-SE/Resources.resw | 78 ++++++------ localization/strings/tr-TR/Resources.resw | 6 +- localization/strings/zh-CN/Resources.resw | 76 +++++------ 14 files changed, 241 insertions(+), 241 deletions(-) diff --git a/localization/strings/cs-CZ/Resources.resw b/localization/strings/cs-CZ/Resources.resw index cf1cc756f..37ff5f596 100644 --- a/localization/strings/cs-CZ/Resources.resw +++ b/localization/strings/cs-CZ/Resources.resw @@ -626,7 +626,7 @@ Potvrzení změn: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Vhd vlastních modulů jádra v {} se nenašel: {}. + VHD vlastních modulů jádra v {} se nenašel: {}. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1003,7 +1003,7 @@ Návrat k sítím NAT. Zobrazit dokumentaci - Operaci nešlo dokončit, protože se vhdx právě používá. Vynucení ukončení používání WSL: wsl.exe --shutdown + Operaci nešlo dokončit, protože se VHD právě používá. Vynucení ukončení používání WSL: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Návrat k sítím NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Zhuštěný soubor vhdx je podporován pouze pro WSL2. + Zhuštěný VHD je podporován pouze pro WSL2. Spouštění WSL jako místního systému se nepodporuje. @@ -1112,7 +1112,7 @@ Kód chyby: {} 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: +Pokud chcete distribuci vynutit použití prořídlého VHD, spusťte: wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/de-DE/Resources.resw b/localization/strings/de-DE/Resources.resw index 1f975691e..7ae69d66a 100644 --- a/localization/strings/de-DE/Resources.resw +++ b/localization/strings/de-DE/Resources.resw @@ -381,7 +381,7 @@ Verbrauch: {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 - Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. + Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. Datenschutzinformationen zu diesem Produkt finden Sie unter https://aka.ms/privacy. Syntax: wsl.exe [Argument] [Optionen...] [CommandLine] @@ -632,7 +632,7 @@ Buildzeit: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Die benutzerdefinierte Kernelmodul-VHD in "{}" wurde nicht gefunden: "{}". + Die benutzerdefinierte Kernelmodule-VHD in {} wurde nicht gefunden: „{}“. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -715,7 +715,7 @@ Das System muss möglicherweise neu gestartet werden, damit die Änderungen wirk {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - The specified file must have the {} or {} file extension. + Die angegebene Datei muss die Dateierweiterung {} oder {} besitzen. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1009,7 +1009,7 @@ Fallback auf NAT-Netzwerk. Dokumente anzeigen - Der Vorgang konnte nicht abgeschlossen werden, da die VHDX zurzeit verwendet wird. So erzwingen Sie, dass WSL die Verwendung beendet: wsl.exe --shutdown + Der Vorgang konnte nicht abgeschlossen werden, da die VHD zurzeit verwendet wird. So erzwingen Sie, dass WSL die Verwendung beendet: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1017,7 +1017,7 @@ Fallback auf NAT-Netzwerk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - VHDX mit geringer Dichte wird nur für WSL2 unterstützt. + VHD mit geringer Dichte wird nur unter WSL2 unterstützt. Das Ausführen von WSL als lokales System wird nicht unterstützt. @@ -1066,7 +1066,7 @@ Fallback auf NAT-Netzwerk. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Dies scheint eine VHDX-Datei zu sein. Verwenden Sie --vhd anstelle eines TAR-Archivs, um eine VHDX-Datei zu importieren. + Dies sieht wie eine VHD-Datei aus. Verwenden Sie „--vhd “, um eine VHD anstelle eines „tar“ zu importieren. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1118,7 +1118,7 @@ Fehlercode: {} 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: +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 {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/es-ES/Resources.resw b/localization/strings/es-ES/Resources.resw index c876543da..f7c2ef53a 100644 --- a/localization/strings/es-ES/Resources.resw +++ b/localization/strings/es-ES/Resources.resw @@ -1017,7 +1017,7 @@ Revirtiendo a las redes NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Vhdx disperso solo se admite en WSL2. + El VHD disperso solo se admite en WSL2. No se admite la ejecución de WSL como sistema local. @@ -1066,7 +1066,7 @@ Revirtiendo a las redes NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Parece un archivo VHDX. Use --vhd para importar un VHDX en lugar de una tar. + Parece un archivo VHD. Usa --vhd para importar un VHD en lugar de una tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/fi-FI/Resources.resw b/localization/strings/fi-FI/Resources.resw index 9389eff25..c7fe5e365 100644 --- a/localization/strings/fi-FI/Resources.resw +++ b/localization/strings/fi-FI/Resources.resw @@ -546,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] @@ -571,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. diff --git a/localization/strings/fr-FR/Resources.resw b/localization/strings/fr-FR/Resources.resw index a0108b9d0..94dc69e6a 100644 --- a/localization/strings/fr-FR/Resources.resw +++ b/localization/strings/fr-FR/Resources.resw @@ -383,13 +383,13 @@ Utilisation : 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. @@ -398,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. @@ -414,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. @@ -422,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. @@ -439,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é. @@ -473,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. @@ -542,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. @@ -553,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] @@ -590,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. + Annule l’inscription de la distribution et supprime le système de fichiers racine. {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system "}{Locked="--help "}{Locked="--debug-shell @@ -1018,7 +1018,7 @@ Retour à la mise en réseau NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Le vhdx partiellement alloué est pris en charge uniquement sur WSL2. + Le VHD partiellement alloué est pris en charge uniquement sur WSL2. L’exécution de WSL en tant que système local n’est pas prise en charge. @@ -1067,7 +1067,7 @@ Retour à la mise en réseau NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Cela ressemble à un fichier VHDX. Utilisez --vhd pour importer un VHDX au lieu d’un tar. + Cela ressemble à un fichier VHD. Utilisez --vhd pour importer un VHD au lieu d’un tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/hu-HU/Resources.resw b/localization/strings/hu-HU/Resources.resw index 268d9f9d8..0185cb926 100644 --- a/localization/strings/hu-HU/Resources.resw +++ b/localization/strings/hu-HU/Resources.resw @@ -394,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 @@ -431,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. @@ -571,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. {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system "}{Locked="--help @@ -1011,7 +1011,7 @@ Visszaállás NAT-hálózatkezelésre. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - A ritka vhdx csak WSL2 esetén támogatott. + A ritka VHD csak WSL2 esetén támogatott. A WSL helyi rendszerként való futtatása nem támogatott. @@ -1060,7 +1060,7 @@ Visszaállás NAT-hálózatkezelésre. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Ez egy VHDX-fájlnak tűnik. VHDX importálásához használja a --vhd formátumot tar helyett. + Ez egy VHD-fájlnak tűnik. VHD importálásához használja a --vhd formátumot tar helyett. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/it-IT/Resources.resw b/localization/strings/it-IT/Resources.resw index 42e91e645..f6a5cfb3f 100644 --- a/localization/strings/it-IT/Resources.resw +++ b/localization/strings/it-IT/Resources.resw @@ -1017,7 +1017,7 @@ Fallback alla rete NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - VHDX di tipo sparse supportato solo in WSL2. + Disco rigido virtuale di tipo sparse supportato solo in WSL2. L'esecuzione di WSL come sistema locale non è supportata. @@ -1066,7 +1066,7 @@ Fallback alla rete NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sembra un file VHDX. Usa --vhd per importare un VHDX anziché un tar. + Questo sembra un file disco rigido virtuale. Usa --vhd per importare un disco rigido virtuale anziché un tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1117,9 +1117,9 @@ Codice errore: {} A causa di un problema di compatibilità con Accesso globale sicuro, il tunneling DNS è attualmente disabilitato. - 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 true --allow-unsafe + 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 {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/nl-NL/Resources.resw b/localization/strings/nl-NL/Resources.resw index 925f85153..f6fc34f06 100644 --- a/localization/strings/nl-NL/Resources.resw +++ b/localization/strings/nl-NL/Resources.resw @@ -626,7 +626,7 @@ Buildtijd: {} {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - De VHD van de aangepaste kernelmodules in {} is niet gevonden: {}. + De aangepaste kernelmodules VHD in {} is niet gevonden: {}. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ Terugvallen op NAT-netwerken. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Sparse vhdx wordt alleen ondersteund op WSL2. + Sparse VHD wordt alleen ondersteund op WSL2. Het uitvoeren van WSL als lokaal systeem wordt niet ondersteund. @@ -1060,7 +1060,7 @@ Terugvallen op NAT-netwerken. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Dit ziet eruit als een VHDX-bestand. Gebruik --vhd om een VHDX te importeren in plaats van een tar. + Dit ziet eruit als een VHD-bestand. Gebruik --vhd om een VHD te importeren in plaats van een tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated @@ -1112,7 +1112,7 @@ Foutcode: {} 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 {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/pl-PL/Resources.resw b/localization/strings/pl-PL/Resources.resw index d9a55ea4d..f6c820b2e 100644 --- a/localization/strings/pl-PL/Resources.resw +++ b/localization/strings/pl-PL/Resources.resw @@ -466,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. @@ -546,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] @@ -1011,7 +1011,7 @@ Powrót do sieci NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Rozrzedzony dysk vhdx jest obsługiwany tylko w systemie WSL2. + Rozrzedzony dysk VHD jest obsługiwany tylko w systemie WSL2. Uruchamianie podsystemu WSL jako systemu lokalnego nie jest obsługiwane. diff --git a/localization/strings/pt-BR/Resources.resw b/localization/strings/pt-BR/Resources.resw index db0bc218c..ca04f13b4 100644 --- a/localization/strings/pt-BR/Resources.resw +++ b/localization/strings/pt-BR/Resources.resw @@ -1018,7 +1018,7 @@ Voltando à rede NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Há suporte para vhdx esparso somente no WSL2. + O VHD esparso é compatível apenas com o WSL2. A execução do WSL como sistema local não é suportada. @@ -1119,7 +1119,7 @@ Código de erro: {} 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: +Para forçar uma distribuição a usar um VHD esparso, execute: wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/pt-PT/Resources.resw b/localization/strings/pt-PT/Resources.resw index 7faa4c5c0..904cc284a 100644 --- a/localization/strings/pt-PT/Resources.resw +++ b/localization/strings/pt-PT/Resources.resw @@ -376,38 +376,38 @@ Utilização: 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. @@ -415,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. @@ -450,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. @@ -482,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. @@ -497,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 @@ -505,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. @@ -515,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. @@ -531,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> @@ -546,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] @@ -1003,7 +1003,7 @@ A reverter para a rede NAT. Ver Documentos - 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 + 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 {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ A reverter para a rede NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - O vhdx disperso é suportado apenas em WSL2. + O VHD disperso é suportado apenas no WSL2. A execução do WSL como sistema local não é suportada. @@ -1060,7 +1060,7 @@ A reverter para a rede NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Este parece ser um ficheiro VHDX. Utilize --vhd para importar um ficheiro VHDX em vez de tar. + Este parece ser um ficheiro VHD. Utilize --vhd para importar um ficheiro VHD em vez de um tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/sv-SE/Resources.resw b/localization/strings/sv-SE/Resources.resw index 065ba60cd..8e41d9218 100644 --- a/localization/strings/sv-SE/Resources.resw +++ b/localization/strings/sv-SE/Resources.resw @@ -376,16 +376,16 @@ Användning: 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. @@ -396,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. @@ -420,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 @@ -441,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. @@ -453,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. @@ -488,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: @@ -546,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. @@ -574,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. diff --git a/localization/strings/tr-TR/Resources.resw b/localization/strings/tr-TR/Resources.resw index bcdbd21b4..2a8376302 100644 --- a/localization/strings/tr-TR/Resources.resw +++ b/localization/strings/tr-TR/Resources.resw @@ -1003,7 +1003,7 @@ NAT ağ bağlantısına geri dönülüyor. Belgeleri Göster - vhdx şu anda kullanımda olduğundan işlem tamamlanamadı. WSL'yi durmaya zorlamak için şunu kullanın: wsl.exe --shutdown + İşlem tamamlanamadı çünkü VHD şu anda kullanımda. WSL'yi durmaya zorlamak için şu komutu kullanın: wsl.exe --shutdown {Locked="--shutdown"}Command line arguments, file names and string inserts should not be translated @@ -1011,7 +1011,7 @@ NAT ağ bağlantısına geri dönülüyor. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Seyrek vhdx yalnızca WSL2'de desteklenir. + Seyrek VHD yalnızca WSL2'de desteklenir. WSL'nin yerel sistem olarak çalıştırılması desteklenmez. @@ -1111,7 +1111,7 @@ Hata kodu: {} Küresel Güvenli Erişim İstemcisiyle ilgili mevcut bir uyumluluk sorunu nedeniyle DNS Tünelleme devre dışı bırakıldı. - Seyrek VHD desteği olası veri bozulması nedeniyle şu anda devre dışıdır. + 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 true --allow-unsafe {Locked="--manage "}{Locked="--set-sparse "}{Locked="--allow-unsafe"}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/zh-CN/Resources.resw b/localization/strings/zh-CN/Resources.resw index 80dff2a03..6188c44f8 100644 --- a/localization/strings/zh-CN/Resources.resw +++ b/localization/strings/zh-CN/Resources.resw @@ -407,16 +407,16 @@ 否则,该值必须是绝对 Windows 路径。 --distribution, -d <DistroName> - 运行指定的分发版。 + 运行指定的发行版。 --distribution-id <DistroGuid> - 运行指定的分发版 ID。 + 运行指定的发行版 ID。 --user, -u <UserName> 以指定用户身份运行。 --system - 为系统分发版启动 shell。 + 为系统发行版启动 shell。 用于管理适用于 Linux 的 Windows 子系统的参数: @@ -427,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 @@ -503,10 +503,10 @@ 要装载的分区的索引(如果未指定)默认为整个磁盘。 --set-default-version <Version> - 更改新分发版的默认安装版本。 + 更改新发行版的默认安装版本。 --shutdown - 立即终止所有正在运行的分发版和 WSL 2 + 立即终止所有正在运行的发行版和 WSL 2 轻型实用工具虚拟机。 选项: @@ -517,7 +517,7 @@ 显示适用于 Linux 的 Windows 子系统状态。 --unmount [磁盘] - 从所有 WSL2 分发版中卸载和分离磁盘。 + 从所有 WSL2 发行版中卸载和分离磁盘。 如果在没有参数的情况下调用,则卸载和分离所有磁盘。 --uninstall @@ -533,10 +533,10 @@ --version, -v 显示版本信息。 -用于在适用于 Linux 的 Windows 子系统中管理分发版的参数: +用于在适用于 Linux 的 Windows 子系统中管理发行版的参数: --export <Distro> <FileName> [选项] - 将分发版导出到 tar 文件。 + 将发行版导出到 tar 文件。 文件名可以是 - for stdout。 选项: @@ -544,7 +544,7 @@ 指定导出格式。支持的值: tar、tar.gz、tar.xz、vhd。 --import <Distro> <InstallLocation> <FileName> [选项] - 将指定的 tar 文件作为新分发版导入。 + 将指定的 tar 文件作为新发行版导入。 文件名可以是 - for stdin。 选项: @@ -552,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> - 取消注册分发版并删除根文件系统。 + 取消注册发行版并删除根文件系统。 {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system "}{Locked="--help "}{Locked="--debug-shell From a231b6b5f98100429ffa12756af5fc0ff8911f16 Mon Sep 17 00:00:00 2001 From: Ben Hillis Date: Thu, 23 Oct 2025 08:28:13 -0700 Subject: [PATCH 29/36] Fix WslDistributionConfig to not default-initialize FeatureFlags or NetworkingMode optional fields (#13629) Co-authored-by: Ben Hillis --- src/linux/init/WslDistributionConfig.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/linux/init/WslDistributionConfig.h b/src/linux/init/WslDistributionConfig.h index 772ffd2ca..df7475c17 100644 --- a/src/linux/init/WslDistributionConfig.h +++ b/src/linux/init/WslDistributionConfig.h @@ -84,8 +84,8 @@ struct WslDistributionConfig // bool GuiAppsEnabled = false; - std::optional FeatureFlags = 0; - std::optional NetworkingMode = LxMiniInitNetworkingModeNone; + std::optional FeatureFlags; + std::optional NetworkingMode; std::optional VmId; // From 296fe805b989ed1f0ec2886e4045a39422e5d696 Mon Sep 17 00:00:00 2001 From: Blue Date: Sat, 25 Oct 2025 12:09:22 -0700 Subject: [PATCH 30/36] Localization change from build: 132491007 (#13639) Co-authored-by: WSL localization --- localization/strings/cs-CZ/Resources.resw | 10 +- localization/strings/es-ES/Resources.resw | 92 +++++------ localization/strings/nb-NO/Resources.resw | 184 +++++++++++----------- localization/strings/pl-PL/Resources.resw | 2 +- 4 files changed, 144 insertions(+), 144 deletions(-) diff --git a/localization/strings/cs-CZ/Resources.resw b/localization/strings/cs-CZ/Resources.resw index 37ff5f596..cdc9329bf 100644 --- a/localization/strings/cs-CZ/Resources.resw +++ b/localization/strings/cs-CZ/Resources.resw @@ -466,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. @@ -546,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] @@ -1060,7 +1060,7 @@ Návrat k sítím NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Vypadá to na soubor VHD. Použijte --vhd k importu virtuálního pevného disku místo dehtu. + This looks like a VHD file. Use --vhd to import a VHD instead of a tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated diff --git a/localization/strings/es-ES/Resources.resw b/localization/strings/es-ES/Resources.resw index f7c2ef53a..8f764d915 100644 --- a/localization/strings/es-ES/Resources.resw +++ b/localization/strings/es-ES/Resources.resw @@ -382,57 +382,57 @@ Uso: 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. @@ -450,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. @@ -462,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. @@ -472,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. @@ -481,63 +481,63 @@ 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. - El nombre de archivo puede ser - para stdout. + El nombre de archivo puede ser: para stdout. Opciones: --format <Format> @@ -545,18 +545,18 @@ Argumentos para administrar distribuciones en Subsistema de Windows para Linux: --import <Distro> <InstallLocation> <FileName> [Options] Importa el archivo tar especificado como una nueva distribución. - El nombre de archivo puede ser - para stdin. + El nombre de archivo puede ser : para stdin. Opciones: --version <Version> 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] @@ -564,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. diff --git a/localization/strings/nb-NO/Resources.resw b/localization/strings/nb-NO/Resources.resw index ac808c150..6f7539470 100644 --- a/localization/strings/nb-NO/Resources.resw +++ b/localization/strings/nb-NO/Resources.resw @@ -375,63 +375,63 @@ Bruk: {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 - 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. + 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 @@ -440,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. {Locked="--exec,"}{Locked="--shell-type "}{Locked="--cd "}{Locked="--distribution,"}{Locked="--distribution-id "}{Locked="--user,"}{Locked="--system "}{Locked="--help diff --git a/localization/strings/pl-PL/Resources.resw b/localization/strings/pl-PL/Resources.resw index f6c820b2e..10e0fd728 100644 --- a/localization/strings/pl-PL/Resources.resw +++ b/localization/strings/pl-PL/Resources.resw @@ -1060,7 +1060,7 @@ Powrót do sieci NAT. {FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated - Wygląda to na plik VHDX. Użyj polecenia --vhd , aby zaimportować plik VHDX zamiast tar. + This looks like a VHD file. Use --vhd to import a VHD instead of a tar. {Locked="--vhd "}Command line arguments, file names and string inserts should not be translated From fdfe1eb8439370c9eb6780467abc1e3f08f90eb1 Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Tue, 28 Oct 2025 17:45:41 -0400 Subject: [PATCH 31/36] fedora: Add Fedora 43 to the distribution list (#13643) Six months have gone by, so it's time for another Fedora release. In addition to the general Fedora updates this release, the WSL image is now properly suffixed. --- distributions/DistributionInfo.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index a9f4e76f5..f330ba56c 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -172,10 +172,23 @@ } ], "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" From 64160a40f0dd9d6d78e407fd435a44e261f0ee5a Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 30 Oct 2025 10:25:03 -0700 Subject: [PATCH 32/36] Make the sample WSL_POST_BUILD_COMMAND more resilient (#13652) --- UserConfig.cmake.sample | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UserConfig.cmake.sample b/UserConfig.cmake.sample index 540834f8d..75927c4e8 100644 --- a/UserConfig.cmake.sample +++ b/UserConfig.cmake.sample @@ -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) \ No newline at end of file From ae4347d9df6232cd37c2c96339cee93a8f58cc41 Mon Sep 17 00:00:00 2001 From: Blue Date: Thu, 30 Oct 2025 11:42:48 -0700 Subject: [PATCH 33/36] Notice change from build: 132846777 (#13654) Co-authored-by: WSL notice --- NOTICE.txt | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/NOTICE.txt b/NOTICE.txt index a4a5c44ae..71b6e1d42 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1762,6 +1762,192 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.NETCore.App.Runtime.win-arm64 9.0.10 - MIT + + +Copyright (c) 2021 +Copyright (c) Six Labors +(c) Microsoft Corporation +Copyright (c) 2022 FormatJS +Copyright (c) Andrew Arnott +Copyright 2019 LLVM Project +Copyright (c) 1998 Microsoft +Copyright 2018 Daniel Lemire +Copyright (c) .NET Foundation +Copyright 1995-2022 Mark Adler +Copyright 1995-2024 Mark Adler +Copyright (c) 2011, Google Inc. +Copyright (c) 2020 Dan Shechter +(c) 1997-2005 Sean Eron Anderson +Copyright (c) 2015 Andrew Gallant +Copyright (c) 2022, Wojciech Mula +Copyright (c) 2017 Yoshifumi Kawai +Copyright (c) 2022, Geoff Langdale +Copyright (c) 2005-2020 Rich Felker +Copyright (c) 2012-2021 Yann Collet +Copyright (c) Microsoft Corporation +Copyright (c) 2007 James Newton-King +Copyright (c) 1991-2022 Unicode, Inc. +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2018 Nemanja Mijailovic +Copyright 2012 the V8 project authors +Copyright (c) 1999 Lucent Technologies +Copyright (c) 2008-2016, Wojciech Mula +Copyright (c) 2011-2020 Microsoft Corp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2015-2018, Wojciech Mula +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2015 The Chromium Authors +Copyright (c) 2018 Alexander Chermyanin +Copyright (c) The Internet Society 1997 +Copyright (c) 2004-2006 Intel Corporation +Copyright (c) 2011-2015 Intel Corporation +Copyright (c) 2013-2017, Milosz Krajewski +Copyright (c) 2016-2017, Matthieu Darbois +Copyright (c) The Internet Society (2003) +Copyright (c) .NET Foundation Contributors +(c) 1995-2024 Jean-loup Gailly and Mark Adler +Copyright (c) 2020 Mara Bos +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2012 - present, Victor Zverovich +Copyright (c) 2006 Jb Evain (jbevain@gmail.com) +Copyright (c) 2008-2020 Advanced Micro Devices, Inc. +Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2011 Novell, Inc (http://www.novell.com) +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors +Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com +Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Portions (c) International Organization for Standardization 1986 +Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers +Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip +Copyright (c) 1980, 1986, 1993 The Regents of the University of California +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass + +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.NETCore.App.Runtime.win-x64 9.0.10 - MIT + + +Copyright (c) 2021 +Copyright (c) Six Labors +(c) Microsoft Corporation +Copyright (c) 2022 FormatJS +Copyright (c) Andrew Arnott +Copyright 2019 LLVM Project +Copyright (c) 1998 Microsoft +Copyright 2018 Daniel Lemire +Copyright (c) .NET Foundation +Copyright 1995-2022 Mark Adler +Copyright 1995-2024 Mark Adler +Copyright (c) 2011, Google Inc. +Copyright (c) 2020 Dan Shechter +(c) 1997-2005 Sean Eron Anderson +Copyright (c) 2015 Andrew Gallant +Copyright (c) 2022, Wojciech Mula +Copyright (c) 2017 Yoshifumi Kawai +Copyright (c) 2022, Geoff Langdale +Copyright (c) 2005-2020 Rich Felker +Copyright (c) 2012-2021 Yann Collet +Copyright (c) Microsoft Corporation +Copyright (c) 2007 James Newton-King +Copyright (c) 1991-2022 Unicode, Inc. +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2018 Nemanja Mijailovic +Copyright 2012 the V8 project authors +Copyright (c) 1999 Lucent Technologies +Copyright (c) 2008-2016, Wojciech Mula +Copyright (c) 2011-2020 Microsoft Corp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2015-2018, Wojciech Mula +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2015 The Chromium Authors +Copyright (c) 2018 Alexander Chermyanin +Copyright (c) The Internet Society 1997 +Copyright (c) 2004-2006 Intel Corporation +Copyright (c) 2011-2015 Intel Corporation +Copyright (c) 2013-2017, Milosz Krajewski +Copyright (c) 2016-2017, Matthieu Darbois +Copyright (c) The Internet Society (2003) +Copyright (c) .NET Foundation Contributors +(c) 1995-2024 Jean-loup Gailly and Mark Adler +Copyright (c) 2020 Mara Bos +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2012 - present, Victor Zverovich +Copyright (c) 2006 Jb Evain (jbevain@gmail.com) +Copyright (c) 2008-2020 Advanced Micro Devices, Inc. +Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2011 Novell, Inc (http://www.novell.com) +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors +Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com +Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Portions (c) International Organization for Standardization 1986 +Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers +Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip +Copyright (c) 1980, 1986, 1993 The Regents of the University of California +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass + +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + --------------------------------------------------------- --------------------------------------------------------- From d48ece45a4b3ea81a496f7caf2209d2d3fcdf961 Mon Sep 17 00:00:00 2001 From: AlmaLinux Autobot <107999298+almalinuxautobot@users.noreply.github.com> Date: Thu, 30 Oct 2025 21:29:45 +0100 Subject: [PATCH 34/36] chore(distributions): Almalinux auto-update - 20251030 17:08:25 (#13653) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- distributions/DistributionInfo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index f330ba56c..78278bbc7 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -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" } }, { From bafd381aec7c2a75bdd7ef946de0795ab62c276b Mon Sep 17 00:00:00 2001 From: Arch Linux Technical User <65091038+archlinux-github@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:15:59 +0100 Subject: [PATCH 35/36] archlinux: Release 2025.11.01.150831 (#13661) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml --- distributions/DistributionInfo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index 78278bbc7..c9082c5d1 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -166,8 +166,8 @@ "FriendlyName": "Arch Linux", "Default": true, "Amd64Url": { - "Url": "https://geo.mirror.pkgbuild.com/wsl/2025.10.01.148042/archlinux-2025.10.01.148042.wsl", - "Sha256": "98a5792935c46476f471854bc93344b2b1d63f7947905ce4dd75d20a546db7ea" + "Url": "https://fastly.mirror.pkgbuild.com/wsl/2025.11.01.150831/archlinux-2025.11.01.150831.wsl", + "Sha256": "9dbac892c38c94fd22a8988eff4e072778f3f445378d33a81474a2b88cb04562" } } ], From 09c17eb6c6f7b678654bccd59ab7ad060dc2192e Mon Sep 17 00:00:00 2001 From: Scott Bradnick <84082961+sbradnick@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:56:49 -0500 Subject: [PATCH 36/36] Remove SLE15SP6; add SLE16.0 (#13647) --- distributions/DistributionInfo.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json index c9082c5d1..6c2a7b127 100644 --- a/distributions/DistributionInfo.json +++ b/distributions/DistributionInfo.json @@ -58,21 +58,21 @@ ], "SUSE": [ { - "Name": "SUSE-Linux-Enterprise-15-SP6", - "FriendlyName": "SUSE Linux Enterprise 15 SP6", + "Name": "SUSE-Linux-Enterprise-15-SP7", + "FriendlyName": "SUSE Linux Enterprise 15 SP7", "Default": false, "Amd64Url": { - "Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20250618.0/SUSE-Linux-Enterprise-15-SP6-15.6.x86_64-23.23-Build23.23.wsl", - "Sha256": "0x8f1101972eab1e503993a183e34851920935988f2d5dd1574e336e470101e0e6" + "Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20250903.0/SUSE-Linux-Enterprise-15-SP7-15.7.x86_64-27.32-Build27.32.wsl", + "Sha256": "0x1e53279af609b9d67b108bc31f1318c3317338595298ef8dfbf7a5728ab8a093" } }, { - "Name": "SUSE-Linux-Enterprise-15-SP7", - "FriendlyName": "SUSE Linux Enterprise 15 SP7", + "Name": "SUSE-Linux-Enterprise-16.0", + "FriendlyName": "SUSE Linux Enterprise 16.0", "Default": true, "Amd64Url": { - "Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20250903.0/SUSE-Linux-Enterprise-15-SP7-15.7.x86_64-27.32-Build27.32.wsl", - "Sha256": "0x1e53279af609b9d67b108bc31f1318c3317338595298ef8dfbf7a5728ab8a093" + "Url": "https://github.com/SUSE/WSL-instarball/releases/download/v20251104.0/SUSE-Linux-Enterprise-16.0-16.0.x86_64-1.3-Build1.3.wsl", + "Sha256": "0xb91f901ba96910fa65218ef0e6aaae7b9980bd11fed63cb3507878aa8915d726" } } ],