Skip to content

Giữ cho bản phân phối WSL luôn hoạt động ​

Nhiều người mới làm quen với WSL2 sẽ gặp một "thắc mắc": rõ ràng đã cài đặt Linux, nhưng tại sao vừa đóng terminal một lúc thì nó lại "tự tắt máy"? Tại sao nó không thể chạy liên tục?

Bài viết này trước tiên mô tả hiện tượng này, sau đó giải thích vì sao Microsoft thiết kế WSL như vậy, và cuối cùng hướng dẫn cách dùng WSL Dashboard để khởi động một bản phân phối Linux ở chế độ keep-alive (giữ hoạt động).

1. Hiện trạng: sau khi đóng terminal, Linux nhanh chóng tự tắt ​

Bạn đã từng trải qua tình huống sau chưa?

  1. Mở terminal của một bản phân phối Linux nào đó, Linux tự động khởi động mà không cần chạy bất kỳ lệnh nào;
  2. Sau khi đóng cửa sổ terminal, Linux không tiếp tục chạy — sau khoảng 60 giây, nó bị tự động tắt;
  3. Mở lại terminal, Linux lại tự động khởi động, cứ thế lặp đi lặp lại.

NOTE

"Thời gian chờ không hoạt động" (idle timeout) mặc định của WSL2 là khoảng 60 giây: khi không có tiến trình nào đang chạy trong bản phân phối (ví dụ khi bạn đóng tất cả các terminal), máy ảo WSL sẽ tự động tắt để giải phóng tài nguyên hệ thống như bộ nhớ.

Hành vi này là thiết kế mặc định của WSL2, không phải lỗi, cũng không phải sự cố.

2. Vì sao Microsoft lại thiết kế WSL như vậy? ​

2.1 Bản chất WSL2 là máy ảo hạng nhẹ ​

WSL2 chạy nhân Linux hoàn chỉnh thông qua máy ảo hạng nhẹ Hyper-V (utility VM). Mỗi bản phân phối đang chạy đều thực sự chiếm tài nguyên bộ nhớ. Nếu tất cả các bản phân phối đều thường trú ở chế độ nền, một máy chạy đồng thời nhiều bản phân phối sẽ lãng phí hàng trăm MB, thậm chí vài GB bộ nhớ, làm chậm toàn bộ hệ thống.

2.2 Triết lý thiết kế cấp phát tài nguyên theo nhu cầu ​

Triết lý thiết kế của Windows là "cấp phát tài nguyên theo nhu cầu, không dùng thì giải phóng":

  • Với đa số người dùng: mở terminal = cần Linux; đóng terminal = tạm thời không cần;
  • Chỉ một số ít người dùng cần Linux chạy 7×24 giờ không gián đoạn.

Vì vậy WSL áp dụng chiến lược "khởi động theo nhu cầu, dừng khi không hoạt động", để bộ nhớ và các tài nguyên khác tự động trả lại cho hệ thống khi không cần.

2.3 Ví dụ tương tự: ra khỏi phòng thì tiện tay tắt đèn ​

Việc WSL "tự tắt khi không hoạt động" giống như ra khỏi phòng thì tiện tay tắt đèn: tiết kiệm điện, hiệu quả hơn. Nhưng với những người "cần phòng luôn sáng" thì lại rất phiền — và đó chính là nguồn gốc của nhu cầu keep-alive.

TIP

Nếu bạn cần Linux chạy thường trú (ví dụ triển khai dịch vụ, chạy tác vụ định kỳ, dựng máy chủ phát triển...), hãy đọc chương tiếp theo và dùng WSL Dashboard để giữ bản phân phối hoạt động.

3. Dùng WSL Dashboard để khởi động một Linux keep-alive ​

WSL Dashboard cung cấp hai cách đơn giản để giữ cho bản phân phối Linux của bạn luôn chạy.

Cách 1: Nhấp vào nút "Khởi động" ​

Trong danh sách "Các bản phân phối Linux đã cài đặt" của WSL Dashboard:

  1. Tìm bản phân phối bạn muốn giữ hoạt động;
  2. Nhấp vào nút "Khởi động" ở dòng của bản phân phối đó.

Sau khi nhấp, bản phân phối ngay lập tức được đánh thức và chạy liên tục; chỉ cần bạn không chủ động dừng nó, nó sẽ không bị tự động tắt vì không hoạt động. Cách này phù hợp với nhu cầu giữ hoạt động tạm thời khi bạn "ngay bây giờ" cần Linux chạy liên tục.

Cách 2: Tích chọn "Tự động khởi động bản phân phối này khi Windows khởi động." ​

Trong danh sách "Các bản phân phối Linux đã cài đặt" của WSL Dashboard:

  1. Nhấp vào nút "Cài đặt" ở dòng của bản phân phối mục tiêu để mở cửa sổ cài đặt;
  2. Trong cửa sổ, tích chọn "Tự động khởi động bản phân phối này khi Windows khởi động.";
  3. Lưu cài đặt.

Sau khi tích chọn, mỗi lần Windows khởi động/đăng nhập, bản phân phối sẽ tự động khởi động, không cần bất kỳ thao tác thủ công nào — "khởi động là giữ hoạt động ngay". Cách này phù hợp với các tình huống cần Linux trực tuyến lâu dài (như máy chủ phát triển, dịch vụ thường trú).

TIP

  • Chỉ cần tạm thời → dùng Cách 1 (nhấp "Khởi động");
  • Cần trực tuyến lâu dài → dùng Cách 2 (tích chọn "Tự động khởi động bản phân phối này khi Windows khởi động.").