Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

【WSL】Windows Subsystem for Linux 安裝及基本配置!

Tags: ccedil linux bash

WSL 是什麼,能吃嗎

  • Windows Subsystem for Linux(簡稱WSL)是一個為在 Windows 10 上能夠原生運行Linux二進制可執行文件(ELF格式)的兼容層。
  • 它是由微軟與 Canonical 公司合作開發,目標是使純正的 Ubuntu 16.04 "Xenial Xerus" 映像能下載和解壓縮到用戶的本地電腦,並且映像內的工具和實用工具能在此子系統上原生運行。
  • WSL 提供了一個微軟開發的 Linux 兼容內核接口(不包含 Linux 代碼),使得 Linux 用戶模式的二進制文件能在其上執行。
  • 運行原理很像是 Linux 上 Wine 的 Windows 版。

官方 Github Repo

  • Bash On Windows
  • 如果遇到 bug 或是想要有新的 feature,請上去發 Issues。

Release Note

  • Bash On Windows - Release Notes
  • 可以在這裡看到最新的 Windows Insider Preview 中 WSL 被改進了什麼東西,和出現了什麼bug。

安裝方法

    • 以下僅考慮正式 Release 的 Windows 版本(Insider 請去看 Release Note)
    • 如果你的電腦不是 Intel 的 64 位元架構的話(例如x86、arm架構)
      • 請買新電腦
    • 如果你的 Windows OS 組建低於 14393
      • 請升級您的 Windows
    • 如果你的 Windows OS 組建是 14393
      • 我還是建議升級您的 Windows,因為這個版本的功能不是很完整,使用時會遇到很多坑
      • 如果真的要安裝可以,請參考 15063 的 WSL 安裝方法
    • 如果你的 Windows OS 組建是 15063
        • 開啟 WSL 有兩種方法,一個是用圖形介面,一個是下指令,可以自由選擇。
        • 方法一
            • 請打開 Windows【設定】(快捷鍵 Win+I)

            • 打開【更新與安全性】,進去【開發人員專用】分頁,勾選【開發人員模式】

            • 這時系統可能會叫你重開機,如果有的話,請重開
            • 進到【設定】裡的【APP】,然後點選畫面右方(有時會在畫面最下方)的【程式與功能】

            • 然後點選【開啟或關閉 Windows 功能】,在裡面找到【適用於 Linux 的 Windows 子系統(搶鮮版(Beta))】勾選後按【確定】

        • 方法二
          • 打開管理員權限的 Powershell,輸入以下指令
            Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
        • 跑了一陣子之後 Windows 會叫你重新開機,然後請重新開機。
        • 重開機完後 WSL 已經安裝完成。
        • 接下來要安裝 Ubuntu 的映像
        • 叫出【執行】(快捷鍵 Win+R),輸入【bash】後按確定

      • 接下來他會問一推問題,請依照需求回答,例如使用者帳號密碼之類的。
      • 以後要打開他可以直接叫出【執行】(快捷鍵 Win+R),輸入【bash】後按確定後打開。
        • 其執行檔位置在【C:WindowsSystem32bash.exe】
      • WSL 的管理方法
        lxrun
        在 LX 子系統上執行系統管理作業

        使用方式:
        /install - 安裝子系統
        選擇性引數:
        /y - 不提示使用者接受或建立子系統使用者
        /uninstall - 解除安裝子系統
        選擇性引數:
        /full - 執行完整解除安裝
        /y - 不提示使用者確認
        /setdefaultuser - 設定 bash 將以其身分啟動的子系統使用者。若該使用者不存在,將會建立該使用者。
        選擇性引數:
        username - 提供使用者名稱
        /y - 若提供使用者名稱,不提示建立密碼
        /update - 更新子系統的套件索引
  • 如果你的 Windows OS 組建是 16215 以上
    • 首先先參考 15063 的 WSL 安裝方式
    • 然後到 Windows Store 上下載喜歡的 Linux 映像
    • Ubuntu
    • openSUSE Leap 42
    • SUSE Linux Enterprise Server 12
  • 官方說明文件

注意事項

  • 當最後一個 bash.exe 結束的時候,就會把所有 WSL 的程序(包含背景執行的)結束,因此當有背景執行的 WSL 程式時,記得不要把所有的 bash.exe 都關掉。
  • 因為 WSL 沒有 systemd,因此裝在系統上的服務不會自己開起來,要手動的打開
    sudo service XXX-service start
  • 使用 gdb 的時候,有時候某些 libary 載入到記憶體上的位置會和正常的Linux不一樣,因此打 CTF 的 Pwn 時,在 WSL 上的結果很有可能不符合預期。
  • 無法在上面使用虛擬化技術,因此在上面無法使用 VirtualBox 或是 kvm (qemu) 之類的東西,不過 qemu 的管理器可以使用,但只能用來管理其他電腦上的 qemu。
  • 當你在上面開啟 port 的時候,要注意不會跟其他 Windows 程式衝到。並且當你想要讓其他人能連到的話,需要去 Windows 的防火牆中設定,讓某些 port 能夠通行。
  • 可以在 WSL 中執行 Windows 的 exe 程式,不過檔案需要放在 Windows 的目錄中,而不是 WSL 的 Linux 目錄上。

額外的東西

  • ssh server
    • 跟 Windows 10 內建的 ssh server 衝突,所以記得要改 port 或是關 Windows 10 的 ssh 功能
    • 安裝 ssh-server
      sudo apt install openssh-server
    • 修改【/etc/ssh/sshd_config】內的這些東西
      AllowUsers
      PasswordAuthentication yes
      UsePrivilegeSeparation no
    • 然後要手動啟動 ssh-server 他
      sudo service ssh --full-restart
  • 圖形介面
    • 我個人推薦使用的 X Server 是 VcXsrv Windows X Server
    • 安裝完之後請在啟動裡面加入有內容的 .bat 檔,讓 X Server 可以每次開機都直接啟動
      • 開啟啟動資料夾可以直接【執行】【shell:startup】
        @echo 0
        start "" "C:Program FilesVcXsrvvcxsrv.exe" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl
        exit
    • 然後進到 bash 裡面,在使用者的環境變數裡面增?
      DISPLAY=127.0.0.1:0
    • 如果使用DISPLAY=:0的話,本機上沒有問題,但是ssh -X的時候就會出現問題。
    • 加入環境變數的方法有很多種,我個人的做法是在【~/.bashrc】裡面加入。
      export DISPLAY=127.0.0.1
  • Ubuntu Desktop
    • 裝上這個,你就有 firefox、gnome-terminal、gedit、Libre Office 等等東西可以用了
      sudo apt install ubuntu-desktop
  • Hime
    • 參考這個
    • 不過有幾點要注意,第一個是要開啟【支援遠端用戶端程式】
    • 然後在 VcXsrv 中 Ctrl-Space 這個組合鍵無法使用,因此需替換成 Shift-Space
    • 最後記得加上以下的環境變數
      export GTK_IM_MODULE=hime
      export QT_IM_MODULE=hime
  • 聲音
    • 我個人的做法是安裝 pulse audio,然後這裡有別人編好的版本
    • 然後解壓縮後執行裡面的bin/pulseaudio.exe
    • 接下來回到 bash 裡面,執行
      sudo add-apt-repository ppa:therealkenc/wsl-pulseaudio
      sudo apt install --no-install-recommends libpulse0 pavucontrol
    • 然後可能要寫個 script 讓他自動重啟,因為他好像一段時間沒有播放聲音就會自己關掉。
    • 如果還有問題請參考這裡
  • VLC
      • 這個純粹就只是為了好玩用的,不一定要裝 😛
      • 記得確定 pulse audio 有打開喔。
        sudo apt install vlc
      • bash 中輸入 vlc 打開之後
      • 【Tools】->【Video】->【Output】->【Color ASCII art video output】->【OK】
      • 把 vlc 關掉
      • 把環境變數的 DISPLAY 刪掉(或是改成空字串)
      • 執行
        cvlc
      • 欣賞漂亮的 ASCII Art 吧
  • Visual Studio Code
    • 在 Windows 上的 VS Code 中的設定中加入以下內容,即可將 WSL 的 bash 變成預設的 shell。
      "terminal.integrated.shell.windows": "C:\WINDOWS\Sysnative\bash.exe",
      "terminal.external.windowsExec": "C:\WINDOWS\Sysnative\bash.exe",
    • 但是目前沒辦法把 VS Code 裝在 WSL。有興趣可以看這裡
  • PTT
  • 安裝 WSL 在其他磁碟
    • 請參考這個
  • 改裝成 Arch
    • 先下載 Arch 的映像
    • 解開後 chroot 進去 arch 的 Live CD 根目錄上
    • 照著這個安裝教學安裝
    • 裝完之後,把所有的 bash.exe 都關掉
    • 用檔案總管進到【使用者目錄/AppData/Local/lxss】裡,找到 Arch 的根目錄,把它【移動】到最外面
    • 把 Arch 的根目錄重新命名成 rootfs
    • 打開 bash 測試是否成功

WSL 技術原理

 
 

周逸 Yi Chou

Microsoft Student Partners in Taiwan
專長:C/C++、C#'PHP
GitHub:qazwsxedcrfvtg14

Share the post

【WSL】Windows Subsystem for Linux 安裝及基本配置!

×

Subscribe to Msdn Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The Msdn Blogs.

Get updates delivered right to your inbox!

Thank you for your subscription

×