Bash on Ubuntu on Windows 的簡單使用


前一陣子,Heresy 有寫了一篇《Windows 10 將可以跑 Linux 的 Bash shell 和 Ubuntu 的程式了》來介紹微軟即將在新版 Windows 10 內做的一個往 Linux 方向靠攏的功能了~

而雖然這項功能應該是要等到夏天的 Windows 10 年度更新才會有,不過目前在 Windows 10 Insider Preview 的 Fast Ring 最新的預覽版、Build 14316 裡面(官方介紹),就可以搶先體驗這個功能了!Heresy 看到之後,就立刻把筆記電腦切到 Insider Preview 了、準備試玩了~ XD

不過很遺憾的是,在把 Windows 10 從正式版切換到 Insider Preview 後,並沒有辦法馬上偵測到預覽版的更新…Heresy 甚至去下載了比較舊的預覽版 ISO、透過 ISO 強制更新到 Insider Preview 的版本,Windows Update 還是沒辦法偵測到更新… orz
後來是電腦又放了幾天,他才能抓到 Build 14316、並開始更新。總覺得,微軟這方面做的還真糟糕啊…

而由於「Bash on Ubuntu on Windows」這項功能,就算在 Windows 10 的預覽版中,也還是屬於比較進階的 Beta 功能,所以預設是沒有啟用的。如果要啟用這項功能的話,可以參考官方的「Installation Guide」(MSDN),他的流程基本上如下:

  1. 開啟「開發人員模式」

    他的方法是先按下鍵盤的 Win + I、開啟「設定」的視窗,然後點選「更新與安全性」,並點選左側最下方的「開發人員專用」;這時候右側會顯示「使用開發人員功能」的選項,請選擇「開發人員模式」。

  2. 開啟 Windows Subsystem for Linux

    接下來,可以透過搜尋「開啟或關閉 Windows 功能」,來開啟「Windows 功能」的視窗。

    或者,也可以在「設定」中,點選「系統」中的「應用程式與功能」,然後選取右側最下方的「程式與功能」,之後在新開啟的視窗中點選左側的「開啟或關閉 Windows 功能」,也可以叫出同樣的視窗。

    而在「Windows 功能」視窗中,應該可以看到「Windows Subsystem for Linux (Beta)」這個項目,請把他勾選起來、並按下「確定」,然後按照指示重新開機。

    這邊要注意的,是這項功能只存在於 64 位元的 Windows,如果是 32 位元的 Windows 是無法使用的。

    另外,如果懶得用圖形介面慢慢找的話,也可以用 PowerShell 的命令(需要系統管理者權限):

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

  3. 下載 User -mode 映像檔並安裝

    都準備好了之後,接下來就是開啟一個命令提示字元視窗,並執行「bash」這個指令, 他就會跳出即將安裝的提示,這時候就可以輸入「Y」、讓他開始下載映像檔、並進行安裝了~


在完成安裝後,在開始選單內,應該就會有「Bash on Ubuntu on Windows」 的連結(右圖),之後只要點選他,就可以開啟這個 Bash 的環境了~

或者,在命令提示字元中直接執行「bash」,也可以進入這個 shell 環境;如果想要執行單一指令的話,也可以透過「bash -c "ls"」這樣的命令來執行。

而由於他算是 Ubuntu 的系統(可以這樣講嗎?),所以使用上的方法,也就請參考 Ubuntu 的教學了~如果要安裝軟體的話,則可以透過「apt」這系列的指令(維基百科)來完成,算是滿方便的。

至於他的系統版本,Heresy 試著簡單看了一下,基本上如下:

root@localhost:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:        14.04
Codename:       trusty

root@localhost:~# uname -a
Linux localhost 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

在系統硬體的方面,他可以直接抓到實體的 CPU,但是沒辦法取得顯示卡的型號,其他的硬體看來也無法存取。

而如果要存取本來磁碟機上的檔案,則非常的方便,以「C:\Windows」來說,在這個環境下的路徑就是「/mnt/c/Windows」。

至於子系統的檔案、還有 Home 目錄,則是放在「c:\Users\Heresy\AppData\Local\lxss\」(使用者名稱請自行更換)這個資料夾下;由於他是隱藏資料夾,底下也有不少隱藏的資料夾,所以建議調整一下檔案總管的設定,會比較好找。

Heresy 這邊剛裝好的時候,他用了 529MB,以現在來說不算大;不過如果之後要裝一堆東西的話,磁碟使用量是會持續上升的。 ^^"

如果玩到後來,把這個 Linux 子系統搞爛了要怎麼辦?微軟有提供「lxrun」這個指令,可以用來管理這個子系統;當有問題的時候,可以透過「lxrun /uninstall」把整個子系統移除,然後再重新執行「lxrun /install」,就可以恢復到初始狀態了~

而這個環境可以拿來幹嘛呢?Heresy 自己是想把他當成 Linux 下的編譯測試環境,所以就著裝了 git、g++、make、libboost 等等必要的工具,看來都沒問題、可以正常使用。

但是另一方面,在惡搞的過程中,也發現他有不少限制。像是想裝 Unbutu-desktop 或 gnome 的話,基本上都會錯誤、無法完成安裝(不意外就是了 ^^"),所以看來是不可能在這邊跑圖形介面了~ XD

(記得是「libavahi-common-data」這個套件裝不起來)

而實際上,微軟也直說了,目標設計就是命令提示字元,所以應該不會有 GUI 的可能性了。


這篇的介紹大概寫到這裡了。

為什麼會想用這東西呢?Heresy 個人是覺得,用這個子系統來做跨平台程式的維護(編譯測試),應該算是一個相對方便的方案!因為這樣檔案都在同一台電腦上、甚至都是同一份,可以很簡單地同時確認在 Windows 的 Visual C++ 和 Linux 的 g++ 下的編譯狀態,而不用把檔案到處複製。

那為什麼不用虛擬機器呢?虛擬機器要使用的資源基本上應該還是比較多的,不管是硬碟、還是記憶體,消耗都相對大;不過在 Heresy 來看,這套子系統最大的好處,就是要開始用基本上根本不用等!直接開啟、直接使用,不像 VM 還要等虛擬機器開機完…

總之,由於現在這還是 Fast Ring、最不穩定的預覽版,所以 Heresy 應該還不會把主力機器換成這版本;不過等他出了正式版,Heresy 應該就會裝起來,把它弄成固定的 g++ 編譯環境了吧~

廣告

關於 Heresy
https://kheresy.wordpress.com

9 Responses to Bash on Ubuntu on Windows 的簡單使用

  1. 引用通告: Ubuntu 16 遇到的 g++ 5.x ABI 不相容問題 | Heresy's Space

  2. 引用通告: Windows 10 Creators Update 1703 正式推出 | Heresy's Space

  3. q says:

    請問要怎麼把在windows寫好的cpp檔案直接用子程式呼叫到linux裡compile呢

    按讚數

    • Heresy says:

      抱歉,看不懂你的問題到底是想幹嘛?
      如果是要在 Linux 環境編譯的話,基本上就是跟在 Linux 上完全一樣啊?這邊的子程式是指什麼?

      按讚數

  4. 引用通告: 在 Windows 寫 Linux 程式:Visual Studio + Windows Subsystem for Linux | Heresy's Space

  5. 引用通告: Windows 10 年度更新推出!RS1 1607 | Heresy's Space

  6. 引用通告: 解決 Windows 10 無法切換語系、輸入中文的問題 | Heresy's Space

  7. 引用通告: Windows 10 桌上型電腦的 Miracast | Heresy's Space

  8. Heresy says:

    不仅是命令行 Windows 10 也可以运行 Linux 的图形界面程序了
    http://www.cnbeta.com/articles/491841.htm
    嚇到了 @@

    按讚數

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: