內建Linux子系統,Windows 10將可執行Ubuntu與Bash工具


                                微軟在3月30日於舊金山舉辦為期三天的Build 2016開發者大會。除了發布一些新的產品計畫之外,還公佈了Windows 10的重大更新。這個重大更新,指的就是Windows 10將可以執行Bash on Ubuntu,也就是Ubuntu的應用程式能夠直接在Windows 10下執行,賦予開發者更方便的自由軟體開發環境。


Ubuntu將可以在Windows 10下原生執行!


BASH神功各大OS平台皆膜拜,唯微軟OS不理會

有關於BASH (Bourne-Again SHell),是一種*nix Shell的一種,早在1989年就誕生,原先是計畫在GNU作業系統上,但後來被應用在各種類Unix的作業系統之上,像是Linux家族(如知名的Ubuntu、Fedora等等)以及Apple的Mac OS X 10.4,都把BASH作為預設的Shell。此外,Bash也被移植到Microsoft Windows上的Cygwin與MinGW,或是能直接在MS-DOS上使用的DJGPP專案,就連早期的Novell NetWare,以及現在Android平台上面的Terminal(終端機),也都有BASH的蹤跡。


微軟在Build 2016開發者大會中,宣佈將讓把Bash帶到Windows環境,讓「Windows就是你的家目錄」


由於BASH具有跨平台的特性,在自由開源軟體社群中,許多軟體的安裝程式、Linux的安裝步驟、各式Daemon或service設定與載入過程,幾乎都是以Bash script來撰寫,加上不少軟體工程師在撰寫跨平台軟體時,尤其是手機軟體Apps時,更會接觸到BASH,而不是微軟的PowerShell或DOS Prompt。

為了跨平台App開發,使用Linux幾乎是必備

對於程式設計師來說,要開發跨平台應用程式時,微軟的開發工具大多只能支援自家Windows平台,但Linux的應用程式開源開發環境,不只可以開發Linux跨平台的App,稍微修改一下,就能夠移植到Windows的平台。對蘋果OS X、iOS開發者來說,由於該OS基於BSD系統,其包含了Bash與GNU的各式開發工具,因此程式設計師只要攜帶一台MacBook,就可以開發OS X、iOS、Linux等App。而Google Android OS更是以Linux為根基,必須安裝Ubuntu或其他Linux作業系統來開發其App,因此程式設計師必須在PC安裝雙作業系統,以便能在Windows和Linux平台下通吃。

也就是說,在當今開源、跨平台的行動應用時代,開發軟體選擇微軟的Windows開發工具已不吃香了,選擇在*nix環境開發才是王道。雖說在Windows平台,其實也有所謂的Cygwin、MinGW等類Unix Command Line工具,以及coLinux這類的雙系統模擬環境,能夠讓DOS Prompt也可執行Bash或其他GNU Tools,但這些工具畢竟功能有限,完整開發程式時還是建議使用原生作業系統比較實際!

若選擇在同一機器安裝虛擬機(如VirtualBox或VMware)來跑*nix,其執行速度又不像原生速度那樣快。因此,當今對程式開發者來說,若他主要工作電腦是Windows平台的話,都會另外安裝一套Linux的原生執行環境,以用來編譯、執行與測試開發出來的App。


要在單一電腦執行多作業系統,通常選虛擬機器是最快的,但執行效能總是無法跟原生效能相比。圖為Ubuntu在VMware下執行的狀況


向Linux靠攏,微軟終於支援Bash

為讓程式開發者在設計Apps時,也能直接選擇使用Windows 10來開發,而不是另外安裝一套Linux來開發,微軟在3/30的Build 2016開發者大會中,宣佈正與Canonical (Ubuntu的公司)合作,將把Ubuntu Linux Subsystem引進Windows 10中,使Windows 10也能原生直接執行BASH,以鼓勵程式開發者不用再安裝Linux了,直接在Windows 10的Command Prompt下,就可以執行 bash,然後進入 bash 的開發環境!


微軟在Build 2016開發者大會,示範在Windows 10的Command Prompt下執行bash環境,並秀出其該環境下所屬的Ubuntu 14.04.4 LTS子系統 (目前是Ubuntu 14.04版,不久之後將更新為16.04版)。



在Bash on Windows下,以gcc來組譯一個C語言程式,並以readelf來解譯該執行檔ELF64的檔頭內容,是完全符合Unix – System V的格式。


除了bash之外,微軟也表示將開源軟體下的所有Command-line(命令列)工具,都帶到Windows平台來,包含vi、emacs等文字編輯器。

Ubuntu on Windows誕生:Windows Subsystem for Linux

Canonical也表示,透過與微軟的合作,雙方將就Windows和Ubuntu的核心整併起來,在Windows 10的Kernel端內建Windows Subsystem for Linux,以便與User模式端的Ubuntu做連結,因此不只是可以執行 Bash,其他像是 apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch...等工具都能執行。


將Linux的使用者模式與工具整合進Windows,這樣就可以直接在Windows執行,不用再透過虛擬機了!



Windows Subsystem for Linux的核心架構說明


簡單來說,Windows的Subsystem for Linux,有點像是WINE的相反工具。WINE是嘗試讓Windows的應用程式能夠在Linux環境下執行(例如PlayOnLinux、Crossover就是建構於WINE基礎下的整合性工具,讓Microsoft Office也能在Linux下執行),而這次Ubuntu on Windows則是可以讓Linux下的軟體能夠原生在Windows下執行。

當然,以雙方合作部份,目前僅就Command-line工具做整併,同時也在相容性上做最佳化,以讓各種Bash Tools能夠在Windows Command Prompt下完美運作。至於X Window等GUI執行環境部份,其實微軟本身的Windows GUI很成熟了,似乎沒必要再跑一套X Window,因此這部份是否整併則尚未提及。


目前整合中,當然還是有些相容性問題(例如top就不能執行),微軟還在克服中


多系統平台已是主流,支援越多越有利

Windows能執行Ubuntu的Command-line工具,是否意味著未來的Windows 應用程式,只要是該程式有跨平台的話,在Windows環境下安裝前,就會先要求你先安裝Bash for Windows工具,或者強制幫你安裝。就如同你安裝完遊戲時,Setup工具就會順便安裝DirectX、.NET Runtime等程式套件一樣。

總之,多系統早已是未來電腦的主流。先前蘋果推出Bootcamp讓你的Mac除了既有的OS X,也能安裝Windows;而2014年有不少大陸平板業者,推出了Windows + Android雙作業系統的平板電腦;甚至有些手機可以選擇開機時進入Windows Mobile系統或Android系統;就連NAS產品也開始都要講求能支援雙系統(例如QNAP的Ubuntu + QTS或Android + QTS);而單板電腦早就可以執行多種作業系統的環境(例如Raspberry Pi,只是無法同時執行就是了)。

因此,主作業系統再包含另一套子系統(通常是*nix系統),將成為趨勢。這點我們已從OS X支援BSD Unix這點可以看到,而Android本身就是Linux環境。如今我們可以樂見Windows支援Ubuntu之後,將吸引更多自由軟體作者在Windows平台開發各式軟體,讓Windows的應用程式更多、更壯大。

以上來自:http://www.pcdiy.com.tw/detail/3780        


[圖擷取自網路,如有疑問請私訊]

本篇
不想錯過? 請追蹤FB專頁!    
前一頁 後一頁