不用裝雙系統,直接在 Windows 上體驗 Linux

03-26

「Microsoft Loves Linux!」

說出這句話的不是所謂的 IT 領域那些技術專傢或者是意見領袖,而是時任微軟 CEO 的薩蒂亞 · 納德拉,在 2015 年的一次活動中,這位第三任微軟 CEO 脫口而出的這句話,讓這個曾經開源界最大敵人的微軟,正式擁抱這個開源世界最大的操作系統:Linux。

其實在雲計算領域,微軟很早之前就讓其 Azure 支持多個流行的 Linux 發行版,但對於普通消費者而言,真正的變化發生在後面的 Windows 10:微軟宣佈將會在 Windows 10 內置 Linux,而采用的技術上並非是所謂的「虛擬化」技術——也就是說,這個子系統的 Linux 完全是原生運行在 Windows 10 上的。

WSL 技術實現原理

而微軟給這個 Linux 系統命名為:Windows Subsystem for Linux,而對於有些系統極客而言,這個名字實在太熟悉瞭,因為在 Windows 7 之前,微軟也曾經內置過一個 UNIX 子系統,可以原生運行 UNIX 二進制程序,他的名字叫做:Windows Services for UNIX。

即便如此,對於很多普通用戶而言,Windows Subsystem for Linux 也隻是嘗鮮的玩物罷瞭,但對於不少軟件開發、系統極客而言,無需通過虛擬機以及雙系統的形式體驗 Linux ,並且可以實現系統級別的文件互操作,實在是太具有吸引力瞭。而今天我們就一起來體驗探索一番。

如何啟動 Linux 子系統

微軟從 Windows 10 周年更新(build 14393)開始內置 Windows Subsystem for Linux 組件框架,隻不過這項功能當時還隻能稱作是 Beta 版,而在 Windows 秋季創意者更新中,安裝 Linux 子系統變的更為簡單——可以直接通過 Microsoft Store 來下載子系統,而可選擇的發行版也從最初的隻有 Ubuntu 變成可以選擇 Suse、Ubuntu、Debian、甚至是用來進行網絡安全工作 Kail Linux。

目前 Microsoft Store 有多款 Linux 發行版可供選擇

隻不過如果你想要體驗這些發行版還需要進行一些簡單操作,畢竟 Windows Subsystem for Linux 組件框架並非是默認選中的。

首先我們需要確認自己的 Windows 10 版本,以下的操作方法隻適用與 Windows 10 秋季創意者更新(Windows 10 build 16299)以上版本,如果你是 Windows 10 周年更新,安裝 Linux 子系統的安裝辦法你可以檢索「 Bash on Windows」自行探索安裝方法。此外,系統必須是 64 位操作系統。

開啟「適用於 Linux 的 Windows 子系統」

以上均確認後,打開 「控制面板」— > 「程序和功能」,在左邊的「啟用和關閉 Windows 功能」裡面勾選「適用於 Linux 的 Windows 子系統」,然後點擊確定(這一步有可能需要重啟)。

接著打開 Microsoft Store,搜索喜歡的 Linux 發行版,這裡我選擇的是我比較熟悉的 Linux 發行版 Ubuntu,然後點擊安裝。對於初學者來說,Ubuntu/ Debian 系的發行版具有非常完善的包管理系統,方便新手快速上手。

安裝完畢之後,你就可以在 Windows 開始菜單中找到「Ubuntu」這個應用瞭!換言之,現在你的 Windows 10 中就已經成功安裝發行版為 Ubuntu 的 Linux 子系統。

Ubuntu 子系統設置與基本命令

在開始菜單中打開 Ubuntu 後,Ubuntu 會進行較長時間的安裝和初始化,之後會提示你設置 Linux 的用戶名和密碼,需要註意的是這個用戶名和密碼和 Windows 並不通用。

設置密碼是非明文的,不會像 Windows 那樣使用「*** 」替代,所以你隻要盲打點擊確認即可,建議密碼使用復雜密碼,有些發行版會有強制要求。

輸入完成之後,系統會提示你如何提權操作,之後會自動以剛才新設置的用戶名登錄 Ubuntu。

我安裝 Linux 第一件事就是查看內核版本以及系統系統版本,在 Ubuntu 下直接輸入以下命令來查看內核版本號:

uname -r

這時系統會顯示:4.4.0-43-Microsoft,這表示 Linux 內核版本為:4.4.0-43。

至於系統版本號,可以使用:sudo lsb_release -a 來查看,系統會輸出:

這表示 Ubuntu 版本為 16.04。為 Ubuntu 的長期支持版本。

更換 Linux 子系統的軟件源並更新軟件

之前我說過使用 Ubuntu /debian 系最大的好處就是可以使用「軟件源」進行軟件安裝,使用 Ubuntu 自帶的 deb 包管理系統安裝軟件可以減少直接下載源碼編譯的麻煩,所以這裡就要用到「apt-get」系列命令瞭。

因為默認的軟件源是 Ubuntu 的官方源,我們可以選擇替換為國內的軟件源,比如說阿裡雲鏡像的軟件源。

在當前命令行下面輸入:

sudo-i

提權後輸入密碼,使用 root 權限登錄。然後接下來備份當前源,輸入以下命令:

cp /etc/apt/sources.list /etc/apt/sources.list.old

不難看出管理源的文件就是 sources.list,我們選擇編輯它,編輯器我這裡選用的是 vim,所以命令是:

vim /etc/apt/sources.list

使用 vim 後會進入命令模式,敲鍵盤上的 「i」鍵鍵入編輯模式,然後復制下面這段代碼(拷貝代碼,然後在編輯器上鼠標右擊就可以復制):

# deb cdrom: [ Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 ( 20160420.1 ) ] / xenial main restricted deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

完成之後再敲鍵盤上的「esc」退出編輯模式,然後再輸入 :wq 點擊保存並退出編輯器 vim。

編輯軟件源

緊接著我們更新軟件源讓編輯的文件生效:

apt-get update

這裡我們就將 Ubuntu 的軟件源切換到阿裡雲的源瞭。

之後再輸入:apt-get upgrade 對當前系統的軟件和類庫進行來更新。如果不出意外系統會自動對現有的軟件包進行更新,經過這一系列的操作,目前 Ubuntu 的軟件以及類庫都是最新的,而系統版本也升級到 Ubuntu 16.04.4 LTS。

啟用 SSH 並使用 SSH 客戶端登錄

雖說通過 App 或者應用的形式在 Windows 10 上體驗 Linux 是一個不賴的選擇,但對於很多軟件開發的朋友而言,使用 Windows 內置的 CMD 或者 PowerShell 來操作 Linux 依舊有著很多不習慣。而最為關鍵的是當需要對文件進行操作時,使用交互命令遠不如使用 SFTP 來的更為「簡單粗暴」。因此隻要通過配置 SSH 遠程登錄,就可以像管理遠程服務器那樣來操作這個 Linux 系統瞭。

首先,因為 Ubuntu 系統限制,所以我們需要可以為 root 用戶設置新密碼,這裡輸入:

sudo passwd root

配置好之後,未來使用 SSH 客戶端或者 SFTP 客戶端登錄系統時,我們就可以直接使用 root 權限進行登錄,就不用使用之前的 sudo -i 提權操作瞭。

其次按照常規,我們使用 cp 命令將 SSH 相關配置文件進行備份:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

之後使用 vim 編輯器編輯 「sshd_config」文件:

sudo vim /etc/ssh/sshd_config

鍵盤上點擊 「i」後進入編輯模式,編輯並調整以下設置項:

Port 8022(因為 Windows 10 的 SSH 端口已經默認被占用,所以我換成瞭一個新的端口) (去掉前面的 #)ListenAddress 0.0.0.0 UsePrivilegeSeparation no(原來是 yes 改成 no) PermitRootLogin yes ( 修改成 yes ) ( 在前面加上 # ) StrictModes yes PasswordAuthentication yes(原來是 no,改成 yes)

之後點擊 「Esc」退出編輯模式,直接輸入 :wq 退出並保存。

編輯配置文件並啟動 SSH

然後輸入命令:service ssh start 啟動 SSH。

如何驗證已經可以訪問呢?我們首先打開 SSH 客戶端,比如我目前使用 Xshell,選擇「新建會話」。

之後在新建的會話設置框的「連接」中添加如下內容:

名稱:WSL(這個隨便填) 協議:SSH 主機:127.0.0.1(本機環回接口) 端口號:8022

之後在「用戶身份驗證」中輸入驗證方法,方法選擇 「Password」,然後在輸入用戶名:root,密碼選擇剛才新設置的 root 密碼,最後點擊確定。

然後在左側的會話管理器找到剛才設置的新會話,雙擊後如果顯示如下圖所示的界面就算是成功瞭!

除瞭使用 Xshell 這種 SSH 客戶端進行服務器操作之外,還可以使用 Xftp 進行文件上傳和管理,唯一的區別是在新建會話處,協議選擇「SFTP」,端口號和之前 Xshell 使用的端口號一致即可,點擊確認之後出現類似 FTP 管理的界面就算是成功瞭!這樣你就可以使用更為直觀的工具來訪問 WSL 系統的文件目錄。新建文件上傳文件也變得更為簡單。

開啟圖形化界面

比起 Windows 和 macOS,Linux 很多時候給普通用戶都是冰冷的命令行形象,這讓很多 Linux 初學者望而卻步;但實際上 Linux 是可以使用我們所說的 GUI 圖形化界面的,隻不過圖形化界面並沒有默認安裝,這裡我嘗試手動安裝一個圖形化桌面。

由於屬於 Linux 子系統的限制,因此安裝一些比較「重」的圖形化界面組件會大量消耗系統資源,因此我選擇較為輕量級的圖形化桌面組件:MATE,也是 Ubuntu MATE 的默認桌面組件,當然另一個輕量級桌面 xfce 體驗也不錯。

首先在終端中輸入以下命令安裝 Mate 桌面:

sudo apt-get install mate-desktop-environment

這一步命令就是安裝完整的 MATE 桌面,這個過程相當長,因為 WSL 默認沒有桌面環境,對應的相關組件也沒有安裝,所以安裝桌面會將相關的組件以及依賴都一並安裝。

安裝圖形化界面以及 VNC 服務端

緊接著我們需要安裝可以訪問圖形化界面的軟件,這裡使用圖形化遠程訪問工具:VNC;你可以理解成 Windows 電腦中的遠程訪問。當然 VNC 服務端 WSL 也是不會默認安裝的,所以需要輸入以下命令安裝:

sudo apt-get install vnc4server

安裝完畢之後需要修改 VNC 的默認啟動桌面,這時候輸入:

sed -i 's$x-window-manager$mate-session$' ~/.vnc/xstartup

將默認啟動桌面改成 Mate 桌面啟動,然後輸入:vncserver 啟動服務端(第一次啟動需要設置連接密碼)。這裡 WSL 端就基本設置完畢瞭。

之後我們需要在 PC 上安裝 VNC 的客戶端,我這裡選擇的是 Realvnc,然後直接選擇 Chrome 應用版本,在 Chrome 商店中添加為 Chrome 獨立應用。

打開 realvnc 並在地址欄中輸入:127.0.0.1:1 ,點連接並輸入連接密碼,如果不出意外,你就可以看到安裝有 mate 桌面的 Ubuntu 界面瞭!

可視化桌面的終端裡面,你可以輸入 sudo apt-get install firefox 來安裝 Firefox 瀏覽器,不一會兒你可以在左上角菜單欄的「Applications」中的「Internet」中找到 Firefox 瀏覽器啦!好瞭,接下來還能做什麼就自己去探索吧!

圖形化的 Linux 界面 一起動手做:搭建本地靜態網站

經過以上的折騰,其實你應該對 WSL 有瞭比較清楚的認識瞭,其實對於很多開發者而言,WSL 最大的好處在於更接近項目生產環境,雖說 Windows 本身有 IIS 網頁服務器可供選擇。但目前大部分網站服務器系統都采用的是 Linux,而網頁服務器也多是使用 Apache,所以在 WSL 在本機完成部署調試後可能會接近實際一些。所以這裡我們做一個小實踐:將開發好的一個靜態網站部署到 WSL 裡面並可以直接訪問。

首先,我們要確保 WSL 中安裝有 Apache 網頁服務器,所以嘗試安裝(使用超級用戶權限),在終端中輸入:

apt-get install apache2

安裝完畢之後在終端中輸入以下命令開啟 Apache 網頁服務器:

service apache2 start

當終端裡面顯示諸如「 * Starting Apache httpd web server apache2」之後,打開本機的網頁瀏覽器,訪問:http://127.0.0.1 ,當顯示以下頁面就表示 Apache 網頁服務器已經生效!

接下來我們嘗試將自己開發的靜態網頁項目傳到對應的目錄中,這裡我們打開 Xftp 這個遠程文件工具,連接到 WSL 這個站點,然後訪問 /var/www/html 這個目錄,然後將項目文件夾傳到該目錄下方。

例如我現在傳過去的網頁全景項目名為「xuyi」,那麼傳好後我打開瀏覽器,訪問:http://127.0.0.1/xuyi 就可以看到做好的網頁的效果啦!如果你是使用 chrome 訪問的話,Wappalyzer 擴展還可以顯示出當前網站項目使用的框架等。

結語

至此,我們已經較為完整的體驗瞭 Windows Subsystem for Linux 的一些基礎玩法,其實在我看來,Windows 10 下的 Linux 子系統更多的是補充原本 Windows 10 在開發領域上的一些不足,讓軟件開發 / 網絡開發人員可以以較低的成本來實現與生成環境的一致性,也不用再為瞭開發而安裝雙系統甚至虛擬機瞭。當然在本次體驗中我並沒有更深入的探索,比如說在 WSL 中安裝 PHP 環境以及 Mysql 數據庫,所以如果你對 Linux 感興趣,想要在 Windows 10 上探索 Linux,系統原生支持的 WSL 不妨一試。

精彩圖片
文章評論 相關閱讀
© 2016 看看新聞 http://www.kankannews.cc/