01/10/2018, 17:12

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

Windows Command Line Tools For Developers

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

Trọng Nghĩa viết 19:27 ngày 01/10/2018

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

Mai Anh Dũng viết 19:15 ngày 01/10/2018

Làm được hết chứ em.

quyền root như thế nào

có ssh được không

image

còn muốn vào cái ubuntu này thì không cần ssh, mở ubuntu console lên là được

image

các package cài bằng apt-get lưu ở đâu

Lưu vào trên máy của em bình thường thôi

letd@letd-PC:~$ which git
/usr/bin/git

Còn cụ thể ở đâu thì em xem ở đây:

askubuntu.com
July

Where is the Ubuntu file system root directory in Windows Subsystem for Linux and vice versa?

windows-subsystem-for-linux
asked by July on 10:06AM - 21 Apr 16

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?

Anh nghĩ là được, em có thể thử.

Aster-Dynos viết 19:24 ngày 01/10/2018

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 line

export DISPLAY=:0.0

nếu như bạn không muốn reboot cái shell lại thì cứ gỏ

source ~/.bashrc

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

gvim ~/.bashrc

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.

Phan Bá Hải viết 19:24 ngày 01/10/2018

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

HK boy viết 19:19 ngày 01/10/2018

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:

GitHub

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

Nguyen Kien viết 19:17 ngày 01/10/2018

anh cho em hỏi nếu cài đặt jdk ở win 10 thì có cần cài ở WSL nữa không ạ ?

Aragami1408 viết 19:22 ngày 01/10/2018

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.

anh cho em hỏi nếu cài đặt jdk ở win 10 thì có cần cài ở WSL nữa không ạ ?

không cần đâu bạn.

Nguyen Kien viết 19:14 ngày 01/10/2018

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

Aragami1408 viết 19:17 ngày 01/10/2018

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:

export JAVA_HOME="/mnt/c/Path/to/jdk/bin"
export PATH="JAVA_HOME:$PATH"

thế đó

Nguyen Kien viết 19:25 ngày 01/10/2018

Mình set path rồi mà vẫn không được bạn à

Nguyen Kien viết 19:25 ngày 01/10/2018

Mình tham khảo link này làm đc rồi bạn

stackoverflow.com
Saurabh Mishra

Installing Oracle JDK on Windows subsystem for Linux

java, linux, windows, windows-subsystem-for-linux
asked by Saurabh Mishra on 02:09PM - 07 Apr 16

Phan Bá Hải viết 19:23 ngày 01/10/2018

Java hỗ trợ Windows mà? Cần gì WSL???

Aragami1408 viết 19:15 ngày 01/10/2018

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

Phan Bá Hải viết 19:19 ngày 01/10/2018

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

Aragami1408 viết 19:27 ngày 01/10/2018

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

HK boy viết 19:21 ngày 01/10/2018

tải cmder về mà dùng

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.

github.com/cmderdev/cmder

Issue: Cmder duplicate character 'Á'

opened by herbert-h on 2017-09-07
Hi,
when I type or something makes show the Á character, it's appear duplicated on cmder screen, like ÁÁ.
I'm using the last...
github.com/Maximus5/ConEmu

Issue: WriteConsoleW used with ConEmu duplicates Chinese characters output

opened by Nelson-numerical-software on 2016-11-09
closed by Maximus5 on
Versions
ConEmu build: 161023 x64 stable
OS version: Windows 10 x64 (1607)
Microsoft Windows [version 10.0.14959] cmd
Problem description
WriteConsoleW duplicates chinese characters
Steps to reproduce
Actual results
Output:...
drawing-cjk

Bonus phiền phức:

github.com/Maximus5/ConEmu

Issue: wrong cursor position when typing chinese

opened by terrywh on 2017-02-23
closed by terrywh on 2017-05-26
Versions
ConEmu build: 170118 x64
OS version: Windows 10 x64 15031
Used shell version (cmd)
Problem description
after typing in chinese, the cursor stops at a...
drawing-cjk other-windows

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.

Nguyen Kien viết 19:27 ngày 01/10/2018

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 ?

Aragami1408 viết 19:24 ngày 01/10/2018

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)

Phan Bá Hải viết 19:13 ngày 01/10/2018

chủ yếu là lệnh nó dịch sang powershell

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

viết 19:24 ngày 01/10/2018

terminal (wsl) trên win 10 chủ yếu là lệnh nó dịch sang powershell

đâ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 à?

Bài liên quan
0