Cài một Linux Distributions bất kỳ lên WSL

Hôm nay có việc cần cài đặt Redis Stack, và mình không thể tìm thấy nó trên Debian 12 (Bookworm).Xem qua thì chỉ có Ubuntu và Debian 11 Bullseye là có hỗ trợ Tự build từ source code thì đơn giản với mình, nhưng vấn đề là đôi khi có những package không hỗ trợ […]

Cài một Linux Distributions bất kỳ lên WSL

Hôm nay có việc cần cài đặt Redis Stack, và mình không thể tìm thấy nó trên Debian 12 (Bookworm).
Xem qua thì chỉ có Ubuntu và Debian 11 Bullseye là có hỗ trợ

Tự build từ source code thì đơn giản với mình, nhưng vấn đề là đôi khi có những package không hỗ trợ như thế này thì sao.

Thế là mình quyết định hạ cấp xuống 11.

Và thật may mắn khi mà Windows có cái này:

https://learn.microsoft.com/en-us/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package

Thật tuyệt vời đúng như phong cách tài liệu của Microsoft:
Chẳng giúp được cái gì cả!

Thế thôi, trích xuất và import vào WSL2 thôi.

Chuẩn bị

Windows đã được cài đặt WSL 2

Docker

Thực hiện

Chuẩn bị Debian 11 distribution tarball

Cách nhanh nhất cho cái rootfs này là trích xuất từ chính Docker Image.
Bạn có thể sử dụng để lấy bất cứ cái nào bạn thích cũng được

Command theo thứ tự thôi. Ở đây mình dùng Powershell7 và Windows Terminal

PS C:\Users\levie> docker run --rm -itd --name bull debian:bullseye bash
d432ce14da3598c96356adfd318abe1831da1573d82bbd88685bc27f0cfdbed1
PS C:\Users\levie> docker export d432ce14da3598c96356adfd318abe1831da1573d82bbd88685bc27f0cfdbed1 > debian-11.tarCode language: PowerShell (powershell)

Lệnh đầu tiên, sẽ chạy một container với tên là bull (khỏi cũng được nhưng có thì tắt cho gọn), và detach nó ra để khỏi cần mở termial mới lên.
Sau khi chạy sẽ có ID của container xuất hiện, như ở đây là:

d432ce14da3598c96356adfd318abe1831da1573d82bbd88685bc27f0cfdbed1Code language: PowerShell (powershell)

Lệnh tiếp theo, xuất container đó ra thành một tarball.
Thế là xong, giờ tắt container đi cho gọn:
PS C:\Users\levie> docker stop bull

Import RootFS tarball vào WSL2

Lệnh Import như sau:

wsl --import Debian .\WSLStorage\Debian\ .\debian-11.tarCode language: PowerShell (powershell)

Bao gồm:

wsl --import Debian: Import vào WSL với tên Debian

.\WSLStorage\Debian\ : Vị trí lưu file .ext4, cần tạo trước folder này. Có thể nói đây là file Disk Image của distribution này.
Như ví dụ này mình tạo ngay ở folder C:\Users\levie\WSLStorage\Debian (dấu . tương ứng folder hiện tại)

Làm ơn tạo trước folder này kẻo lỗi nhé.

PS C:\Users\levie> mkdir WSLStorage\Debian11

    Directory: C:\Users\levie\WSLStorage

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           01/01/2024 00:00 PM                Debian11

PS C:\Users\levie>

.\debian-11.tar : File RootFS trích xuất từ Docker ở trên.
Cấu trúc đường dẫn tương tự folder trên.

Import in progress, this may take a few minutes.
The operation completed successfully.
Báo vậy có nghĩa là thành công rồi nhé.

root@VIETDAN-PC:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseyeCode language: Bash (bash)

Lưu ý

Vì đây không phải là một bản phân phối chính thức từ Microsoft, nên bạn cần phải thực hiện thêm user, tuỳ chỉnh thủ công nhé.

Cách này phù hợp với những người biết mình đang cần cái gì và phải làm gì.

Còn nếu không thì cứ im lặng và cài phiên bản Linux phù hợp thôi.

Mình đi cài Ubuntu để chạy Redis-Stack đây!

A
WRITTEN BY

ArcLight

Responses (0 )