ADSSPEED

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

Tác giả ADSSPEED Team · Đăng · Cập nhật · 10 phút đọc

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)).

  1. Cập nhật WSL.

    wsl --update
  2. Dừ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 --shutdown
  3. Kiể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, State

    Nế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 /norestart
  4. Kiể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
  5. 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.

Các lỗi WSL 2 xuất hiện ở đâu trong chuỗi khởi động Năm bước từ trên xuống: bật ảo hóa trong BIOS; bật tính năng Windows; hypervisor khởi động cùng Windows; máy ảo WSL được tạo; distro được cài và đăng ký. Lỗi 0x80370102 xuất hiện ở ba bước đầu, 0x8007019e ở bước tính năng, 0x800705b4 khi tạo máy ảo, và 0x80070003 khi cài đặt. 1 · Ảo hóa đã BẬT trong BIOS 0x80370102 2 · Tính năng: Virtual Machine Platform + WSL 0x80370102 · 0x8007019e · 0x80040154 3 · Hypervisor khởi động cùng Windows 0x80370102 (hypervisorlaunchtype Off) 4 · Máy ảo của WSL được tạo 0x800705b4 (CreateVm quá giờ) 5 · Distro được cài và đăng ký 0x80070003 (nơi lưu khi cài) Sửa khâu đầu tiên bị lỗi; các khâu sau phụ thuộc vào nó.
Mã lỗi chỉ ra khâu nào trong chuỗi bị hỏng.

Tra mã lỗi

Mã hoặc thông báoThườ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ắt0x80070003
0x8007019e "WslRegisterDistribution failed"Chưa bật tính năng Windows Subsystem for Linux0x8007019e
0x80040154 sau khi cập nhật WindowsTính năng WSL bị tắt trong lúc cập nhật0x80040154
0x80040306 khi càiĐang bật legacy console0x80040306
0x8000FFFF "unexpected failure"Thiếu quyền quản trị, WSL hoặc Windows cũ, hoặc hỏng tệp hệ thống0x8000FFFF
0x800704ec "blocked by group policy"Một chính sách đang chặn WSLChạy wsl --update; nếu vẫn lỗi, liên hệ người quản trị
0x800705b4 kèm CreateVmMáy ảo WSL được tạo nhưng không bao giờ phản hồi0x800705b4
Cài đặt đứng ở 0.0%Tải từ Store bị kẹtCài đặt bị đứng
WSL không phản hồiDịch vụ hoặc máy ảo WSL bị treoWSL 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ự:

  1. BIOS/UEFI: ảo hóa phải bật. Xem cách bật.
  2. 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.
  3. 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
  4. 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).
  5. Khởi động hypervisor: bcdedit /enum | findstr -i hypervisorlaunchtype không được ghi Off. Nếu ghi Off, chạy bcdedit /set hypervisorlaunchtype Auto rồi khởi động lại.
  6. 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.
  7. 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 0x80070003 và 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

  • 0x80040154 sau 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.
  • 0x80040306 khi 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ự:

  1. Bạn đang chạy bằng quyền quản trị.
  2. WSL đã cập nhật: wsl --update, và cả Windows nữa.
  3. Bạn dùng wsl --install đúng cách và nêu đúng tên distro muốn cài.
  4. wsl --shutdown, rồi thử lại.
  5. 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ồi DISM /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:

  1. 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
  2. Khởi động lại Windows (Start → Power → Restart).
  3. Bật lại cả hai tính năng (hai lệnh /enable-feature trong danh sách kiểm).
  4. 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

  1. wsl --shutdown rồi chạy lại.
  2. 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
  3. 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 Ubuntu
  • wsl --install chỉ 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-download tả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ặc winver)
  • Phiên bản WSL và kernel: wsl --version và 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

  1. Microsoft Learn: Troubleshooting Windows Subsystem for Linux (tiếng Anh)
  2. Microsoft Learn: Manual installation steps for older versions of WSL (tiếng Anh; lệnh dism, yêu cầu build)
  3. Microsoft Learn: Install WSL (tiếng Anh)
  4. Microsoft Learn: Basic commands for WSL (tiếng Anh)
  5. Microsoft Learn: WSL FAQ (tiếng Anh; bản Home, dời distro, nested virtualization, WslService)
  6. 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.