Hướng dẫn
Sửa các lỗi WSL 2 thường gặp trên Windows: 0x80370102, 0x80070003, 0x8007019e, 0x800705b4 và hơn thế nữa
Bắt đầu từ đây: danh sách kiểm 5 phút
Làm theo thứ tự. Bước 3 và 4 cần PowerShell chạy bằng quyền quản trị (bấm phải vào nút Start → Terminal (Admin) hoặc Windows PowerShell (Admin)).
Cập nhật WSL.
wsl --updateDừng hẳn WSL. Lệnh này kết thúc mọi distro và máy ảo tiện ích của WSL 2.
wsl --shutdownKiểm tra cả hai tính năng Windows đã bật. Cả hai dòng nên ghi
Enabled.Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform | Select-Object FeatureName, State Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux | Select-Object FeatureName, StateNếu có tính năng nào đang tắt, bật bằng chính các lệnh của Microsoft, rồi khởi động lại (xem Restart khác với Shut down):
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartKiểm tra hypervisor có khởi động cùng Windows. Nếu thấy
hypervisorlaunchtype Off, hãy bật lên rồi khởi động lại:bcdedit /enum | findstr -i hypervisorlaunchtype bcdedit /set hypervisorlaunchtype Auto- Kiểm tra ảo hóa trong BIOS. Task Manager → Performance → CPU phải ghi Virtualization: Enabled. Nếu không, xem Cách bật ảo hóa trong BIOS; nếu chưa chắc cách đọc kết quả, xem Cách kiểm tra ảo hóa đã bật chưa.
Mỗi lỗi xảy ra ở khâu nào
WSL 2 khởi động theo một chuỗi. Hỏng ở khâu nào thì ra mã lỗi khác nhau, nên mã lỗi cho biết bạn cần sửa khâu nào.
Tra mã lỗi
| Mã hoặc thông báo | Thường nghĩa là | Xem |
|---|---|---|
0x80370102 "The virtual machine could not be started because a required feature is not installed" | Ảo hóa BIOS đang tắt, thiếu Virtual Machine Platform, tắt kiểu khởi động hypervisor, ảo hóa lồng nhau, hoặc hypervisor bên thứ ba quá cũ | 0x80370102 |
0x80070003 "Installation failed" | Ứng dụng mới đang được lưu ở ổ không phải ổ hệ thống, hoặc ảo hóa đang tắt | 0x80070003 |
0x8007019e "WslRegisterDistribution failed" | Chưa bật tính năng Windows Subsystem for Linux | 0x8007019e |
0x80040154 sau khi cập nhật Windows | Tính năng WSL bị tắt trong lúc cập nhật | 0x80040154 |
0x80040306 khi cài | Đang bật legacy console | 0x80040306 |
0x8000FFFF "unexpected failure" | Thiếu quyền quản trị, WSL hoặc Windows cũ, hoặc hỏng tệp hệ thống | 0x8000FFFF |
0x800704ec "blocked by group policy" | Một chính sách đang chặn WSL | Chạy wsl --update; nếu vẫn lỗi, liên hệ người quản trị |
0x800705b4 kèm CreateVm | Máy ảo WSL được tạo nhưng không bao giờ phản hồi | 0x800705b4 |
| Cài đặt đứng ở 0.0% | Tải từ Store bị kẹt | Cài đặt bị đứng |
| WSL không phản hồi | Dịch vụ hoặc máy ảo WSL bị treo | WSL bị treo |
Ổ C: đầy | Ổ đĩa của distro nằm trên C: | Dời WSL |
0x80370102: máy ảo không khởi động được
Thông báo của Microsoft: "The virtual machine could not be started because a required feature is not installed." Cách sửa là bật tính năng Windows Virtual Machine Platform và bảo đảm ảo hóa đã bật trong BIOS. Làm theo thứ tự:
- BIOS/UEFI: ảo hóa phải bật. Xem cách bật.
- CPU: phải hỗ trợ SLAT (second level address translation), có từ Intel Core thế hệ 1 và AMD Opteron. CPU cũ hơn như Core 2 Duo không chạy được WSL 2 dù các tính năng cài xong.
Có phải máy ảo không? Nếu Windows của bạn chạy trong một máy ảo, hãy bật ảo hóa lồng nhau trên máy chủ (PowerShell quyền quản trị, thay
<VMName>):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true- Tính năng: bật Virtual Machine Platform rồi khởi động lại (lệnh ở danh sách kiểm phía trên).
- Khởi động hypervisor:
bcdedit /enum | findstr -i hypervisorlaunchtypekhông được ghiOff. Nếu ghiOff, chạybcdedit /set hypervisorlaunchtype Autorồi khởi động lại. - Hypervisor khác: VMware Workstation phải từ 15.5.5 trở lên và VirtualBox từ 6 trở lên mới chạy chung được với Hyper-V, hoặc phải tắt chúng đi.
- Máy ảo Azure: ảo hóa lồng nhau không được hỗ trợ khi bật Trusted Launch, nên hãy tắt Trusted Launch cho máy ảo đó.
0x80070003: cài đặt thất bại
Microsoft nêu hai nguyên nhân cho 0x80070003:
- Distro WSL phải nằm trên ổ hệ thống (thường là
C:). Hãy kiểm tra nơi Windows lưu ứng dụng mới: trên Windows 11 vào Settings → System → Storage → Advanced storage settings → Where new content is saved; trên Windows 10 vào Settings → System → Storage → Change where new content is saved. Đặt ứng dụng mới vềC:rồi cài lại. - Ảo hóa đang tắt trong BIOS (cùng một thông báo được ghi nhận cho
0x80070003và0x80370102). Xem danh sách kiểm.
Nếu C: gần đầy, hãy giải phóng chỗ trước, về sau dời distro sang ổ khác bằng wsl --export và wsl --import.
0x8007019e: chưa bật tính năng WSL
WslRegisterDistribution failed with error 0x8007019e nghĩa là thành phần tuỳ chọn Windows Subsystem for Linux đang tắt. Bật nó ở Control Panel → Programs and Features → Turn Windows features on or off → tích Windows Subsystem for Linux (và Virtual Machine Platform cho WSL 2), hoặc bằng PowerShell quyền quản trị:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Rồi khởi động lại.
0x80040154 và 0x80040306
0x80040154sau khi cập nhật Windows: tính năng WSL có thể bị tắt trong lúc cập nhật. Bật lại bằng các lệnh trong danh sách kiểm và khởi động lại.0x80040306khi cài đặt: WSL không hỗ trợ legacy console. Mởcmd.exe, bấm phải thanh tiêu đề → Properties, bỏ tích Use legacy console, bấm OK.
0x8000FFFF: lỗi không xác định
Microsoft mô tả đây là lỗi bất ngờ ("thảm hoạ") với nhiều nguyên nhân có thể. Kiểm tra theo thứ tự:
- Bạn đang chạy bằng quyền quản trị.
- WSL đã cập nhật:
wsl --update, và cả Windows nữa. - Bạn dùng
wsl --installđúng cách và nêu đúng tên distro muốn cài. wsl --shutdown, rồi thử lại.- Tệp hệ thống bị hỏng: từ dấu nhắc lệnh quyền quản trị chạy
SFC /SCANNOW, rồiDISM /Online /Cleanup-Image /RestoreHealth.
0x800705b4: máy ảo không phản hồi
Mã này không có trong trang xử lý sự cố của Microsoft, nên phần dưới đây là kinh nghiệm thực tế chứ không phải quy trình chính thức.
Bạn thấy gì: cài hoặc mở distro chạy khoảng 30 giây rồi lỗi 0x800705b4 trong thông báo có chữ CreateVm. 0x800705b4 là mã "hết thời gian chờ" chung của Windows: WSL đã tạo máy ảo của nó, nhưng máy ảo không bao giờ phản hồi.
Nguyên nhân thường gặp: hai tính năng WSL của Windows bị tắt rồi bật lại mà không khởi động lại thật sự ở giữa. Tắt một tính năng bằng /norestart chỉ để lại thay đổi ở trạng thái chờ, vậy mà DISM và PowerShell có thể báo tính năng là Disabled ngay lập tức, và báo Enabled ngay sau khi bật lại, trước khi có gì thực sự được áp dụng. Ở lần khởi động kế tiếp, Windows áp dụng cả "tắt" lẫn "bật" cùng lúc, nền ảo hóa có thể bị hỏng, nên máy ảo của WSL không khởi động đúng được.
Cách sửa là một chu trình sạch:
Tắt cả hai tính năng:
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart- Khởi động lại Windows (Start → Power → Restart).
- Bật lại cả hai tính năng (hai lệnh
/enable-featuretrong danh sách kiểm). - Khởi động lại Windows một lần nữa.
Nếu chu trình sạch không giúp được, hãy kiểm tra dịch vụ Hyper-V Host Compute có chạy được không (Get-Service vmcompute) và báo lỗi trên WSL issues trên GitHub kèm các thông tin ở mục Cần gửi gì khi nhờ người khác giúp.
Restart khác với Shut down
Trợ giúp của chính lệnh shutdown trong Windows mô tả /r là tắt hoàn toàn rồi khởi động lại. Điều này quan trọng vì khi bật Fast Startup, Shut down rồi bật máy lại không phải là khởi động lại hoàn toàn: Windows lưu một phần trạng thái và tiếp tục từ đó. Thay đổi tính năng tuỳ chọn được áp dụng trong lúc Windows khởi động, nên sau khi bật một tính năng, hãy luôn dùng:
- Start → Power → Restart, hoặc
shutdown /r /t 0(khởi động lại ngay lập tức, nên hãy lưu công việc trước).
WSL bị treo hoặc không phản hồi
wsl --shutdownrồi chạy lại.Nếu vẫn treo, khởi động lại dịch vụ WSL (PowerShell quyền quản trị). Bản WSL cài từ Store dùng WslService; WSL tích hợp sẵn trong Windows trước đây dùng
LxssManager, và Microsoft nêu rằng WslService đã thay thế nó:Restart-Service WslService- Khởi động lại Windows.
Cài đặt đứng ở 0.0% hoặc chỉ hiện trợ giúp
Đứng ở 0.0%: cách xử lý của Microsoft là tải trước rồi mới cài:
wsl --install --web-download -d Ubuntuwsl --installchỉ in ra trợ giúp: nghĩa là WSL đã cài một phần. Hãy liệt kê tên rồi cài một distro theo tên:wsl --list --online wsl --install -d Ubuntu- Store không cập nhật được:
wsl --update --web-downloadtải bản cập nhật từ GitHub thay vì Microsoft Store.
Dời WSL sang ổ khác
Khi C: đầy, FAQ của Microsoft có ghi cách dời một distro: xuất ra, huỷ đăng ký, rồi nhập lại từ vị trí mới. Thay Ubuntu bằng đúng tên hiện ra ở wsl -l -v, và D:\WSLDistros\Ubuntu bằng thư mục đích của bạn (tạo thư mục trước).
wsl --shutdown
wsl --export Ubuntu D:\WSLDistros\Ubuntu\ext4.vhdx --format vhd
wsl --unregister Ubuntu
wsl --import-in-place Ubuntu D:\WSLDistros\Ubuntu\ext4.vhdx
Distro được nhập lại sẽ không tự có người dùng quen thuộc của bạn. Hãy đặt lại bên trong distro, trong /etc/wsl.conf:
[user]
default=tencuaban
Sau đó chạy wsl --terminate Ubuntu và mở lại distro. Nếu bạn muốn sao lưu dạng tar thay vì VHD, wsl --export Ubuntu D:\backup\ubuntu.tar rồi wsl --import Ubuntu D:\WSLDistros\Ubuntu D:\backup\ubuntu.tar --version 2 cũng làm được việc đó.
Docker Desktop chiếm làm distro mặc định
wsl -l -v đánh dấu distro mặc định bằng dấu sao. Nếu đó là docker-desktop, lệnh wsl thường sẽ mở nó thay vì Linux của bạn. Hãy đặt distro của bạn làm mặc định:
wsl --set-default Ubuntu
Cần gửi gì khi nhờ người khác giúp
Microsoft yêu cầu các thông tin này khi báo lỗi WSL, và chúng cũng giúp mọi người trên diễn đàn đỡ mất thời gian:
- Bản build Windows:
cmd.exe /c ver(hoặcwinver) - Phiên bản WSL và kernel:
wsl --versionvàwsl --status - Distro chạy WSL 1 hay WSL 2:
wsl -l -v - Nội dung chính xác của thông báo lỗi và mã lỗi
- Máy là máy thật hay máy ảo
- Điều gì đã thay đổi ngay trước khi hỏng (cập nhật Windows, bật hoặc tắt tính năng, cập nhật BIOS)
Câu hỏi thường gặp
Lỗi 0x80370102 trong WSL nghĩa là gì?
Máy ảo không khởi động được vì thiếu một tính năng cần thiết. Cách sửa theo Microsoft: bật tính năng Windows Virtual Machine Platform, bảo đảm ảo hóa đã bật trong BIOS, kiểm tra hypervisor khởi động cùng Windows, rồi khởi động lại.
Có phải cài lại Windows để sửa WSL 2 không?
Gần như không bao giờ. Các nguyên nhân ở đây (cài đặt BIOS, tính năng Windows, kiểu khởi động hypervisor, thay đổi tính năng áp dụng dở, thiếu bản cập nhật) đều sửa được mà không cần cài lại Windows.
WSL 2 có chạy trên Windows 10 và bản Home không?
Có. Microsoft nêu rõ WSL 2 có trên mọi bản Windows dành cho máy tính để bàn, kể cả Windows 10 Home và Windows 11 Home. Trên Windows 10 x64 cần bản 1903 build 18362.1049 trở lên, còn lệnh một dòng wsl --install cần bản 2004 (build 19041) trở lên.
Chạy wsl --unregister có an toàn không?
Lệnh này xoá vĩnh viễn distro và mọi dữ liệu bên trong. Hãy sao lưu bằng wsl --export trước và chắc chắn tệp sao lưu đã có rồi mới unregister.
Vì sao phải khởi động lại sau khi bật các tính năng?
Windows áp dụng thay đổi tính năng tuỳ chọn trong lúc khởi động. Cho đến khi khởi động lại thật sự, thay đổi mới chỉ ở trạng thái chờ, và đó là lý do một thay đổi áp dụng dở có thể làm hỏng WSL.
Nguồn tham khảo
- Microsoft Learn: Troubleshooting Windows Subsystem for Linux (tiếng Anh)
- Microsoft Learn: Manual installation steps for older versions of WSL (tiếng Anh; lệnh dism, yêu cầu build)
- Microsoft Learn: Install WSL (tiếng Anh)
- Microsoft Learn: Basic commands for WSL (tiếng Anh)
- Microsoft Learn: WSL FAQ (tiếng Anh; bản Home, dời distro, nested virtualization, WslService)
- WSL issues trên GitHub (nơi báo lỗi)
Bài liên quan
Chạy máy Android và hồ sơ trình duyệt ngay trên PC của bạn
ADSSPEED quản lý nhiều hồ sơ trình duyệt và hồ sơ điện thoại Android trong một ứng dụng, mỗi hồ sơ có cấu hình máy, proxy và tự động hoá riêng.