雖然都是自己寫的,還是貼個原文連結吧,如果文章裡的圖片錯亂了,可能就是我貼錯了,去看原文吧。
⚠ 多圖警告
WSL2相比於WSL1前者更類似於虛擬機器器,配合上Windoes Terminal的漂亮介面以及通過localhost直接存取,讓人直呼真香!
那麼WSL2真香嗎?
WSL2理所當然的可以執行docker,你可以把一些mysql、redis之類的服務放在docker容器裡執行。
當有一天你會發現在使用systemctl
命令的時候會報這樣的錯誤:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
出現這個問題是有解決方案的,去google搜尋也能找到教學,但是點進教學連線我就默默地離開了頁面(完全不想看)。
既然systemctl存在這樣的問題,那其他地方也可能存在著問題,不如就直接使用虛擬機器器了。
在這裡預設為你覺得WSL2有問題才考慮使用虛擬機器器的,那麼你的裝置一定開啟了Hyper-V功能。
另外的,如果你沒有使用過WSL2或者電腦系統為Windows10家庭版(Windows11家庭版),那麼你需要參考下面的操作(具體操作方式請自行搜尋,下面幾步並非全部都是完成)。
控制面板>程式>啟用或關閉Windows功能
中開啟Hyper-V功能就可以。寫這篇部落格時的,最新server lts版本是22.04,目前沒有測試18.04。
經過前幾步的設定後應該可以在Win選單中搜尋到Hyper-V 管理器,開啟後介面如下:
點選右側操作欄目的新建>虛擬機器器後會出現設定引導
點選下一步進行設定
在這裡需要制指定一下虛擬機器器的名稱和虛擬機器器的存放位置。
如果是長期使用並且安裝較多軟體的話儘量選擇一個儲存空間足夠的位置。
設定完成後點選下一步繼續。
這裡選擇第二代,然後下一步。
記憶體先使用預設的1024MB動態記憶體,後期可以調整記憶體大小。
先選擇Default Switch,預設的網路連線用來連線網際網路,後面裝完系統後需要再新增一個網路卡來固定虛擬機器器IP用來SSH連線使用。
選擇預設後點選下一步。
暫時選擇不新增虛擬硬碟,點選下一步繼續。
點選完成等待虛擬機器器設定建立完成。
點選Hyper-V管理器主介面上前面幾步建立的虛擬機器器
在彈出介面上依次點選SCSI控制器>硬碟機>新增
在點選新增後我們可以看到如下的介面,可以看到能夠使用虛擬硬碟和離線的虛擬硬碟。
當我們有空閒的硬碟時可以考慮使用物理硬碟。
這裡先選擇建立虛擬硬碟,點選新建按鈕
接下來回進入到虛擬硬碟建立引導。
這裡可以看到有三種模式。
當想要建立一個長期使用的虛擬機器器時建議選擇固定大小並分配較大容量。
現在做設定演示屬於臨時性的並且硬碟IO非常低,這裡我選擇動態擴充套件。
給硬碟一個名稱並指定位置,建議放在建立的虛擬機器器目錄下。
接下來是指定硬碟大小,如果是固定硬碟大小模式,這裡指定之後硬碟就會被初始化為指定的大小。
如果是選擇的動態擴充套件,這裡建立的虛擬硬碟檔案小於這個最大值。
當然可以選擇複製物理硬碟或其他虛擬硬碟的內容到新的虛擬硬碟。
磁碟設定完成後會看到如下資訊
再點選SCSI控制器>DVD驅動器>新增>映像檔案
選擇下載好的Ubuntu22.04系統映象。
點選韌體,調整啟動順序為如圖所示:
點選安全,把啟用安全啟動去掉勾選,然後點選確定儲存。
到這裡虛擬機器器的基本設定已經完成了,接下來就是啟動安裝系統了。
在主介面上選中我們建立的虛擬機器器右擊連線,在彈出視窗中點選啟動。
等待幾秒後會出現選擇選單,這裡我們選擇第一項安裝系統。
經過等待幾十秒後出出現語言選擇介面,然後選擇English
選擇正常安裝
網路設定我們預設使用DHCP,這裡不要修改否則可能安裝完成後無法連線網際網路。
這個eth0網路卡就的Hyper-V的Default Switch,它的IP地址是系統開機自動分配的,我們無法固定這個IP,後面將通過再新增一個網路卡的方式實現固定IP連線SSH。
代理設定和源設定預設就可以
硬碟分割區選擇,第一個方案,繼續。想自定義分割區可以參考:UbuntuServer2204分割區
這是預設提供的分割區方案,我們可以看到free space還有60G+的空間。
選擇中free space後回車,選擇Create Logical Volume
設定如下設定後選擇Create繼續
設定完成後選擇Done繼續,會有一個確認提示,選擇Continue。
接下來就是常見的使用者資訊設定了,設定完成後繼續。
這裡要選擇上ssh服務,如圖所示。
這一步是Snaps軟體安裝,一個都不要選,後面自己安裝需要的軟體。
接下來會進入安裝階段,等待出現Reboot Now選項。
選中reboot now,進行重啟,這裡一定會出錯,不過沒有關係,直接強制關機虛擬機器器就可以了。
接下來我們再次啟動虛擬機器器就可以進入系統了。
在Hyper-V管理器主介面點選右側的虛擬交換機管理器,點選新建虛擬網路交換機>內部>建立虛擬交換機
按照如圖所示的進行設定:
關閉虛擬機器器的系統,點選選中虛擬機器器進行設定。
選中新增硬體>網路介面卡>新增
虛擬交換選中上面建立的10.10.10.254。
完成後儲存虛擬機器器設定。
在控制面板>網路和Internet>網路連線
裡可以看到上面設定的虛擬網路卡。
需要給這個網路卡設定固定的IP地址
啟動虛擬機器器的系統,進入系統後切換到root使用者
sudo su
更新軟體源
apt update
安裝net-tools
apt install net-tools
編輯/etc/netplan
下的唯一一個yaml檔案
vi /etc/netplan/00-installer-config.yaml
檔案預設內容為:
# This is the network config written by 'subiquity'
network:
ethernets:
eth0:
dhcp4: true
version: 2
這裡的網路卡不一定都是eht,也可能是ens
需要新增一個網路卡eth1,修改這個檔案內容為:
# This is the network config written by 'subiquity'
network:
ethernets:
eth0:
dhcp4: true
eth1:
dhcp4: false
addresses: [10.10.10.1/24]
version: 2
應用設定
netplan apply
如果設定沒有錯誤,在windows實體機器上ssh [email protected]
就可以連線到虛擬機器器的Ubuntu了。
修改C:\Windows\System32\drivers\etc\hosts
檔案,在檔案末尾新增
10.10.10.1 vmlinux1
在命令列中ssh ubuntu@vmlinux1
就可以連線到系統了。
開啟windows terminal,到設定中新增一項設定。
這裡我沒有設定圖示,如果需要的話可以自行設定。
這樣每次連線僅輸入密碼就可以了,如果覺得輸入密碼比較麻煩可以設定一下RSA金鑰。
如果想要像WSL一樣在資源管理器裡就可以瀏覽linux檔案,可以參考:sftp對映為win磁碟
要掛載物理硬碟必要條件是電腦是雙硬碟的,這裡要注意掛載的是硬碟不是分割區。
首先將要掛載的物理硬碟清空所有分割區(推薦使用 DiskGenius 來操作):
右擊磁碟選擇離線。
得到如下狀態的磁碟:
在虛擬機器器設定視窗依次點選SCSI控制器>硬碟機>物理硬碟
只有存在離線的物理硬碟這裡才能識別到具體的硬碟
完成後確定儲存設定。
需要注意的是掛載了物理磁碟後就不能再使用檢查點了,需要關閉檢查點後才能啟動開機。
需要注意系統安裝到物理硬碟上後,如果BIOS的第一啟動項是這個硬碟的話,是完全可以啟動的。
所以要設定一下BIOS讓這個硬碟不會在第一啟動位