# 建立Linux環境 ## Linux Linux 是一種**自由且開放**的**類 Unix** 作業系統,原本是單指作業系統的 kernal,但是因為通常會包含許多工具,因此現在常以 Linux 表示使用 Linux kernal 的作業系統。 由於 Linux 是遵照 **GNU/GPL** 這個條款,因此所有人以及組織都可以自由地使用、修改、再發布。 有別於當前全球個人電腦最常使用的作業系統 Windows 以及 MacOS,Linux 是開源的作業系統。所謂的開源也就是程式碼公開,並且允許所有人遵照指定的 Licence 對這份程式碼進行修改、補強等等,前面提到的 GNU/GPL 就是其中一種 Licence。 除此之外, Linux 還具有很高的安全性、移植性以及穩定性。 為什麼我們要先提到 Linux 呢? 要回答這個問題,首先要先了解 Linux 主要運用在哪些地方。 由於 Linux 的高安全性以及高穩定性,許多的**網站伺服器**都是採用 Linux 作業系統,除此之外,常見的 **Android**、**MacOS** 也都是建立在 Linux 上的作業系統。 那麼既然我們要學習網頁安全以及滲透測試,自然就需要了解我們的目標使用的作業系統囉!除此之外,透過學習如何使用 Linux 也可以習慣使用命令列操作,最後幾乎手不需離開鍵盤就可以完成許多工作呢! 現在常見的 Linux 發行版有 Debian、Ubuntu、Fedora ...等等,而所謂的發行版(distribution) 也就是 Linux kernal 再加上許多的工具、套件等等所組合成的作業系統,大致上可以依照安裝軟體的方式不同分成兩類,分別是 RPM 以及 dpkg。 接下來我會使用 Ubuntu 作為主要使用的作業系統,但話說回來,由於現在大家常用的仍然是 Windows 以及 MacOS,如果要使用 Linux 作業系統,除了重灌以外可以**使用虛擬機**。 ## 虛擬機 Virtual Machine 虛擬機是一種特殊的軟體,可以讓我們在電腦當中建立隔離的環境,執行其他系統或是軟體。主要是透過軟體來類比硬體的功能,來模擬出一個機器原有的運作方式。 目前常見模擬作業系統的虛擬機有 VirtualBox 、 VMware 、 Hyper-V ...等等。而接下來我會使用 VirtualBox 以及輕量的 Hyper-V ── WSL2 進行說明。 大家可以自行選擇要使用 VirtualBox 或是 WSL2,下面會分別說明兩個虛擬機的安裝方式。 至於不使用 WSL1 是為了後面使用 Docker 比較方便,所以使用 WSL2。 ## 使用 VirtualBox 接下來會說明如何下載並安裝 VirtualBox,這裡使用的版本是 **6.1.26**。 ### Step 1: 前往 VirtualBox 官網,並下載 VirtualBox 前往 [VirtualBox 官網](https://www.virtualbox.org/),可以看到這樣的畫面: ![](https://i.imgur.com/fksPfyd.jpg =600x) 點擊 **Download VirtualBox** 後會看到這個畫面: ![](https://i.imgur.com/hiNk7KN.jpg =600x) 選擇相對應的平台,就會開始下載最新版本的 VirtualBox 了。由於我是使用 Windows ,所以選擇 **Windows hosts**。 如果需要過去的版本,可以到 [Download VirtualBox (Old Builds)](https://www.virtualbox.org/wiki/Download_Old_Builds) 當中尋找。 ### Step 2: 安裝 VirtualBox 將下載的檔案開啟後,就會進到安裝精靈 選擇**下一步** ![](https://i.imgur.com/anHZDVz.jpg =490x) 選擇**下一步** ![](https://i.imgur.com/qUGBmP6.jpg =490x) 選擇**下一步** ![](https://i.imgur.com/29SKUe8.jpg =490x) 選擇**是** ![](https://i.imgur.com/xMaxuAX.jpg =490x) 選擇**安裝**,等待安裝完成 ![](https://i.imgur.com/FiKAtfr.jpg =490x) 選擇**完成**,到這邊就完成 VirtualBox 的安裝了。 ![](https://i.imgur.com/8eyVyLd.jpg =490x) 到這邊我們已經安裝好虛擬機了,接下來要下載 Ubuntu 20.04 LTS,並新增到 VirtualBox 當中。 ## Step3: 下載 Ubuntu 20.04 LTS 前往 [Ubuntu 官網](https://ubuntu.com/download/desktop)下載 Ubuntu 20.04 LTS Desktop。 選擇 **Download** ![](https://i.imgur.com/GmljoRv.jpg =600x) ## Step4: 新增至 VirtualBox 下載完成後,到 VirtualBox 當中選擇**新增** ![](https://i.imgur.com/BGJGpx7.jpg =600x) 隨意輸入名稱、選擇虛擬機資料存放位置。 類型選擇 **Linux**, 版本選擇 **Ubuntu (64-bit)** 接下來選擇**下一個** ![](https://i.imgur.com/A7LucsF.jpg =460x) 接下來要選擇這台虛擬機的記憶體大小,建議 2GB(2048MB) 以上。 ![](https://i.imgur.com/KTUuiSD.jpg =460x) 選擇**建立** ![](https://i.imgur.com/pk5aFc1.jpg =460x) 選擇**下一個** ![](https://i.imgur.com/EYWhMYw.jpg =460x) 建議選擇**動態分配**,接下來選擇**下一個** ![](https://i.imgur.com/a4F9TfL.jpg =460x) 接下來要決定虛擬機的硬碟大小,這裡建議 20GB 以上。 ![](https://i.imgur.com/b2AAUID.jpg =460x) 到這邊就做好了虛擬機的基礎設定,接下來啟動虛擬機。 選擇**啟動** ![](https://i.imgur.com/BFWERpz.jpg =600x) 接下來要插入我們剛剛下載的 Ubuntu 20.04 LTS iso 檔案。 選擇**資料夾圖案** ![](https://i.imgur.com/zyJP30D.jpg) 選擇加入,並選擇剛剛下載的檔案。 ![](https://i.imgur.com/V2nvtpP.jpg =600x) 選擇後,檔案就會出現在下方,確定後選擇**選擇** ![](https://i.imgur.com/2u8DggZ.jpg =600x) 接下來選擇**開始** ![](https://i.imgur.com/OEl4lAs.jpg) 建議語言選擇 English,接下來選擇 **Install Ubuntu** ![](https://i.imgur.com/9NkxjKt.jpg =600x) 接下來選擇鍵盤語言,建議選擇 **English (US)** ![](https://i.imgur.com/xin5C3w.jpg =600x) 選擇 **Continue** ![](https://i.imgur.com/rxprFhb.jpg =600x) 這裡會警告會刪除所有的檔案,但是不用擔心,因為 VirtualBox 會規畫出一塊與本機 OS 完全隔離的空間,所以並不會刪除原本存在在電腦中檔案喔! 選擇 **Install Now** ![](https://i.imgur.com/mZtqwF1.jpg =600x) 選擇 **Continue** ![](https://i.imgur.com/F7wAHqk.jpg =600x) 接下來要選擇位置,這裡選擇 **Taipei** ![](https://i.imgur.com/SJSCeF0.jpg =600x) 最後要設定 Ubuntu 的帳號與電腦名稱。 設定後選擇 **Continue** ![](https://i.imgur.com/RrGqqac.jpg =600x) 接下來等待一段時間,出現這個畫面時選擇 **Restart Now** ![](https://i.imgur.com/z91ye3B.jpg =600x) 點擊 **Enter** ![](https://i.imgur.com/1VTLi7n.png =600x) 啟動後會出現登入的畫面,選擇剛剛建立的帳號。 ![](https://i.imgur.com/D5SzrWt.jpg =600x) 輸入密碼後按下 Enter。 ![](https://i.imgur.com/NEhZ1lq.jpg =600x) 到這裡就安裝結束了。 ### Step5: 插入 Guest Additions (選用) Guest Additions 可以提供本機與虛擬機之間的雙向互動,包含**雙向資料夾**、**雙向剪貼簿**以及**雙向托放**,除此之外,也可以讓虛擬機畫面的大小與視窗大小同步變化。 因為這些功能還蠻實用也很方便,所以建議使用。 首先要安裝所需的套件,需要先開啟終端機(Terminal)。 在桌面點擊滑鼠右鍵,選擇 **Open in Terminal** ![](https://i.imgur.com/IpnsDiR.jpg =600x) 接下來輸入以下指令下載 `gcc`, `make`, `perl`: ```bash= sudo apt install gcc make perl ``` 輸入後會問 `Do you want to continue? [Y/n]`,可以輸入 `Y` 或是直接按下 Enter 繼續。 ![](https://i.imgur.com/7sC5l3w.jpg =600x) 等待安裝完成後,到畫面上方選擇**裝置>插入 Guest Additions CD 映像...** ![](https://i.imgur.com/38b2iq4.jpg =600x) 選擇 **Run** ![](https://i.imgur.com/doeTBNh.jpg =600x) 輸入密碼,並選擇 **Authenticate** ![](https://i.imgur.com/PFeZKlV.jpg =600x) 等待下載完成後點擊 Enter ![](https://i.imgur.com/Ir1yo88.jpg =600x) 重新開啟虛擬機,點擊畫面右上方的 **X**,選擇**關閉電腦電源**,再選擇**確定**。 之後如果要關閉虛擬機也是一樣的步驟。 ![](https://i.imgur.com/vpLBSvl.jpg =600x) 最後啟動虛擬機 ![](https://i.imgur.com/DI3k2jc.jpg =600x) 這樣就完成囉! 可以縮放一下虛擬機畫面大小,看看畫面有沒有隨著改變來確認是否完成安裝。 ![](https://i.imgur.com/PgE3Mlu.jpg =600x) 如果要開啟雙向剪貼簿或是雙向資料夾等等,都可以到**裝置**設定,下圖是開啟雙向剪貼簿的方式: ![](https://i.imgur.com/Z9iyAao.jpg =600x) ## 使用 WSL2 WSL2,也就是 Windows Subsystem for Linux,是一款在 Windows 上可以直接執行 Linux 作業系統的 VM,因此如果要使用 WSL2 必須要是 Windows 系統喔! ### Step1: 啟用 WSL 這個選用功能預設是關閉的,所以我們需要先啟用。 **以系統管理員身分執行 PowerShell** 並執行: ```bash= dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` ### Step2: 檢查執行 WSL2 的需求 詳細來說,如果你要使用 WSL2,需要符合以下幾個條件: 1. 使用 Windows10 作業系統 2. x64 系統的 Windows10 版本應在 1903 (含)以上 (組件 18362 以上) 3. ARM64 系統的 Windows10 版本應在 2004 (含)以上 (組件 19041 以上) 可以透過 **windows 鍵 + R** 呼叫執行介面,並輸入 **winver**,然後選擇**確定**。 可以閱讀 [Microsoft 官方文件](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10)。 ![](https://i.imgur.com/R4N0atC.jpg =480x) 接下來就可以看到版本以及組建了。 ![](https://i.imgur.com/Eu1gDQr.jpg =480x) ### Step3: 啟用虛擬機器功能 確定自己的 Windows10 版本是可以支援 WSL2 後,接下來要啟用虛擬機器功能。 **以系統管理員身分執行 PowerShell** 並執行: ```bash= dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` 接下來重新啟動電腦。 ### Step4: 下載 Linux 核心更新套件 - [適用於 x64 系統](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi) - [適用於 ARM 系統](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi) 下載完成後,執行下載的更新套件。 ### Step5: 將 WSL 2 設定為預設版本 在 PowerShell 當中輸入: ```bash= wsl --set-default-version 2 ``` ### Step6: 安裝 Ubuntu 20.04 LTS 虛擬機的部分已經安裝完畢,接下來要安裝 Ubuntu,使用的版本是 **20.04 LTS**。 首先到 Microsoft Store 搜尋 Ubuntu,並找到 **Ubuntu 20.04 LTS**。 選擇 **取得**,並且選擇 **安裝** ![](https://i.imgur.com/qoAhCIy.jpg =600x) ### Step7: 設定帳號密碼 第一次開啟 Ubuntu 會要求你輸入一組帳號密碼,輸入密碼時如果沒有顯示密碼是正常的,這樣可以避免密碼被看到。 由於我已經有下載過了,所以這邊就不示範設定的方式。 ### Step8: 安裝 Windows Terminal (選用) 個人喜歡使用 Windows Terminal 來操作 WSL 以及 CMD、PowerShell,除了方便以外,也提供許多個人化的功能,十分推薦大家來安裝使用。 在 Microsoft Store 當中搜尋 Windows Terminal 一樣選擇 **取得**,並且選擇 **安裝** ![](https://i.imgur.com/xaucdhD.jpg =600x) 安裝後選擇上方的下拉箭頭,並選擇**設定** ![](https://i.imgur.com/GDsvAAm.jpg) 在這裡可以把 Ubuntu 20.04 設定成預設啟動的系統。 ![](https://i.imgur.com/mCaBP8J.jpg =600x) ### Step9: 設定 WSL2 為預設架構 在 PowerShell 當中輸入以下指令: ```bash= wsl --set-default-version 2 ``` 到這邊就設定完成囉! 如果有遇到任何問題,可以參考 [Microsoft 官方文件](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10),或是在底下留言。 ## 更改 WSL2 預設佔用空間的磁碟(選用) 由於 WSL2 預設會將資料通通塞在 系統碟(C:\ ),為了預防日後 WSL2 肥大,可以提前更改儲存位置至其他地方,下面以 D:\ 為範例: **先確認子系統名稱** ```bash= wsl.exe --list ``` ![](https://i.imgur.com/ofu4P0D.png) **Export Ubuntu** ```bash= mkdir D:\backup wsl --export Ubuntu-20.04 D:\backup\ubuntu.tar ``` **Unregister the same distribution to remove it from the C: drive:** ```bash= wsl --unregister Ubuntu-20.04 ``` **Import Ubuntu** ```bash= mkdir D:\wsl wsl --import Ubuntu-20.04 D:\wsl\ D:\backup\ubuntu.tar ``` **By default Ubuntu will use root as the default user, to switch back to previous user** Go to the Ubuntu App Folder run command(use CMD) to set default user ```bash= cd %userprofile%\AppData\Local\Microsoft\WindowsApps dir ``` ![](https://i.imgur.com/F5oPcWJ.png =500x) ```bash= ubuntu2004 config --default-user <username> ``` **Finish!** ## 參考資料 - [鳥哥的 Linux 私房菜 第一章、Linux是什麼與如何學習](http://linux.vbird.org/linux_basic/0110whatislinux.php) - [Windows 10 上適用於 Linux 的 Windows 子系統安裝指南](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10) - [wikipedia - Linux](https://zh.wikipedia.org/zh-tw/Linux) - [wikipedia - 虛擬機器](https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8) - [wikipedia - Linux 發行版](https://zh.wikipedia.org/zh-tw/Linux%E5%8F%91%E8%A1%8C%E7%89%88) - [Desktop Operating System Market Share Worldwide](https://gs.statcounter.com/os-market-share/desktop/worldwide) - [What is open source?](https://opensource.com/resources/what-open-source) - [move-wsl2-file-system-to-another-drive](https://superuser.com/questions/1550622/move-wsl2-file-system-to-another-drive) ###### tags: `第 13 屆 iT 邦幫忙鐵人賽`