Thử sử dụng Windows Subsystem for Linux
Windows Subsystem for Linux được release cũng khá lâu rồi nhưng mà hôm nay Đạt mới dùng thử thì thấy tuyệt vời như ông
Windows Subsystem for Linux (WSL) là gì
Là “thứ” cho phép mình chạy linux tools như grep, vi, cat trên windows như đang chạy trên linux. WSL còn cho phép mình cài đặt các chương trình linux bằng apt-get
nếu mình đang dùng ubuntu.
Cài đặt như thế nào?
- Bạn cần có windows 10
- Làm theo hướng dẫn ở đây https://docs.microsoft.com/en-us/windows/wsl/install-win10
Mở Powershell (ở admin mode) rồi chạy lệnh
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Sau đó cài Ubuntu https://www.microsoft.com/store/productId/9NBLGGH4MSV6
Các bạn có thể chọn distribution khác nếu thích
Sau khi cài xong thì tada bạn có được linux trên Windows như hình
Làm sao cài đặt các phần mêm như git?
Hệt như đang chạy Ubuntu
sudo apt-get install git
Làm sao xem được file ở ổ C?
Ổ C được mount vào /mnt/c
Các ổ khác cũng được mount vào cùng thư mục /mnt
cd /mnt/c
Windows Subsystem for Linux (WSL) hoạt động thế nào
-
Windows Subsystem for Linux (WSL) về bản chất giống như một công cụ thông dịch giữa các tools chạy trên *NIX và Windows Kernels.
-
Các hệ điều hành có 2 phần. Một phần là kernel (gọi là kernel space trong *nix) và user-mode(gọi là user space trong *nix). Kernel và user-mode nói chuyện với nhau thông qua một thứ gọi là system call.
-
System call của Windows khác với system call của *NIX nên các phần mềm của *NIX không thể chạy được trên Windows. Ở đây Microsoft đã xây dựng Windows Subsystem for Linux (WSL) nằm ở giữa user-mode (bash, git, Ruby, etc) và Windows Kernel và nó làm nhiệm vụ “thông dịch viên”.
-
Lúc này những tool được viết trên *NIX có thể chạy trên Windows vì khi nó thực hiện system call, WSL trả lời hệt như trên *NIX nên mấy cái tool này cứ hoạt động bình thường mà không biết là nó đang chạy trên Windows
Hình minh họa
Đọc - Xem thêm
Learn About Windows Console & Windows Subsystem For Linux (WSL)
Bash on Ubuntu on Windows has been making a lot of waves since it was announced at //Build 2016 in April 2016. But as with any new technology, many people have questions including: How does Bash on Ubuntu on Windows (Bash) work? What is Windows...
Mình có thể thực hiện những thao tác phức tạp hơn trên Subsystem này không vậy anh?
Ví dụ quyền root như thế nào, có ssh được không, các package cài bằng apt-get lưu ở đâu, hay có thể cài anaconda và tạo virtual enviroment như mình làm bình thường trên Linux được không? (Em muốn tham khảo để chuyển sang dùng thử chứ như hiện tại thì font chữ của jupyter notebook trên Windows xấu quá )
Làm được hết chứ em.
còn muốn vào cái ubuntu này thì không cần ssh, mở ubuntu console lên là được
Lưu vào trên máy của em bình thường thôi
Còn cụ thể ở đâu thì em xem ở đây:
Where is the Ubuntu file system root directory in Windows Subsystem for Linux and vice versa?
Anh nghĩ là được, em có thể thử.
Góp ý, bạn nào muốn chạy GUI trên WSL thì cứ download 1 X-server nào đó, eg. Xming hay Vcxsrv. Rồi vô
~/.bashrc
và bỏ thêm linenếu như bạn không muốn reboot cái shell lại thì cứ gỏ
Rồi bạn chỉ cần test nó bằng cách chạy cái X-server bạn đã download, rồi chạy 1 cái program GUI nào đó, chẳng hạng như Gvim
Nếu như bạn làm đúng thì máy sẽ hiện thêm 1 cái window nữa, như sau.
Voila, and you’re done.
WSL làm được hết mọi lệnh của Linux, kể cả cài phần mềm từ apt-get
Compile C++ khá tiện
Chém gió thêm tí
Nếu như bạn hay phải dùng WSL với kí tự Unicode thì WSL mặc định của Win 10 là một sự lựa chọn rất tồi. Không như Terminal của Linux có thể load được mọi kí tự Unicode của các ngôn ngữ, WSL của Windows dựa vào locate của Windows, mà Windows hỗ trợ Unicode trên cmd/powershell đâu có tốt :v Dù codepage của WSL mặc định là UTF-8 nhưng bạn không thể dùng IME trên đó, paste dãy kí tự tiếng Trung, tiếng Nhật mà không đúng font hỗ trợ thì chỉ thấy 1 dãy ô vuông thôi
Chưa kể, nếu như bạn không dùng Win 10 mà vẫn muốn cài WSL thì bạn sẽ nghĩ đến việc cài Cygwin, nhưng cài Cygwin có vẻ hơi nặng nề và rườm rà :3
Mình recommend công cụ này:
mintty/wsltty
wsltty - Mintty as a terminal for Bash on Ubuntu on Windows / WSL
Cũng như WSL mặc định của Win 10, wsltty chạy được các lệnh Bash trên Ubuntu. Điểm cộng của nó là hỗ trợ kí tự của các ngôn ngữ rất tốt, dùng IME thoải mái, y như Terminal xịn
hehe
anh cho em hỏi nếu cài đặt jdk ở win 10 thì có cần cài ở WSL nữa không ạ ?
Trước đây mình cũng hay dùng WSL và thấy nó cũng khá hay. Thực ra là WSL nó interpreter command của nó sang powershell command.
không cần đâu bạn.
Không sử dụng được các lệnh javac và java khi chạy trên WSL nha bạn. Mình vừa thử xong
tại vì cách cài đặt biến môi trường của windows khi bạn sử dụng với ps(hoặc cmd) khác với wsl. Có cách cấu hình như sau:
thế đó
Mình set path rồi mà vẫn không được bạn à
Mình tham khảo link này làm đc rồi bạn
stackoverflow.com
Installing Oracle JDK on Windows subsystem for Linux
Java hỗ trợ Windows mà? Cần gì WSL???
Chắc anh Đạt viết bài về WSL hay quá nên bạn ý định dùng WSL thay luôn cmd anh
Anh cùng từng mê WSL, nghĩ chắc khỏi cài máy ảo Linux. Nhưng xài xong thấy cmd hay powershell render utf-8 quá cùi, chữ trên WSL bị ? nhiều nên thôi
Em dùng wsl không bao giờ sướng bằng hàng gốc thật. Em công nhận shell của linux hơn ms-dos của win nhiều! Mình dùng cmd hay ps toàn lỗi utf-8. Còn terminal(zsh) dùng có bị sao đâu :v. Mà kể ra powershell có chocolatey cũng tốt nhưng ít package dùng quá! Ít ra mac còn có homebrew
P/s: Bạn nào muốn dùng cmd tốt thì tải cmder về mà dùng. Hàng chất lượng cao đi kèm git luôn
Lỗi phổ biến nhất của cmder/ConEmu là lặp lại kí tự Unicode. Lỗi này xảy ra đối với tuỳ phiên bản Win 10, nhưng để tránh lỗi lặt vặt (mà cực kì phiền toái này) thì tốt nhất là nên tránh nó ra.
Issue: Cmder duplicate character 'Á'
Issue: WriteConsoleW used with ConEmu duplicates Chinese characters output
Bonus phiền phức:
Issue: wrong cursor position when typing chinese
Mình đã dùng thử cmder và đã bỏ.
Nếu các bạn không quan tâm đến kí tự Unicode, thì dùng cmder cũng tốt.
Có điểm khác biệt nào giữa dùng terminal trên win10 vs trên máy ảo không anh ?
terminal (wsl) trên win 10 chủ yếu là lệnh nó dịch sang powershell và nó có vài điểm bất tương đồng. Dùng terminal gốc của linux sẽ tốt vì nó dùng đúng chính xác với hệ điều hành unix(linux)
Powershell liên quan gì ở đây vậy em?
Bên trên anh Đạt đã nói rồi mà, bản chất WSL là một component ở tầng Kernel để thông dịch system call của phần mềm *UNIX sang Windows Kernel. Giống như kiểu “giả lập môi trường” vậy
Powershell hay cmd chỉ đơn giản là môi trường dòng lệnh thôi. Em thử gõ
bash
trên cmd hay Powershell xem, y hệt nhau và cùng chạy WSLđâu ra vậy, làm gì có dịch sang powershell @_@
Cygwin hay MSYS2 cũng làm gì có dịch sang powershell mà vẫn mô phỏng Linux được đó thôi, ông Microsoft làm hẳn cái subsystem mà phải đi dịch sang powershell thì thua 2 ông kia à?