sl2還是比較火的, 很多小伙伴已經用起來了
本文針對最開始windows配置以及各個組件安裝偶成進行了描述,同時針對網絡配置和自啟動進行了總結。
20230509:unbuntu默認沒有ssh,新增ssh服務配置,另外按照評論區朋友建議,該方式不建議做生產用途,可用于個人學習和測試,穩定性可靠性受限于個人能力無法驗證。
安裝WSL2需要啟用windows功能中的虛擬機平臺和適用于Linux的Windows子系統
可以直接使用Windows+R快捷鍵,在打開的「運行」窗口中直接執行optionalfeatures打開「Windows 功能」,或者在控制面板中打開「Windows 功能」啟用需要的功能,然后重新啟動。
升級WSL2, https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi,下載直接安裝
內核版本不對時,啟動的可能報錯,WslRegisterDistribution failed with error: 0x800701bc
可以通過PowerShell或者cmd使用下面的命令設置默認版本
; 設置默認版本2
wsl --set-default-version 2
若要將默認版本設置為 WSL1 或 WSL2,請將<Version>替換為數字 1 或 2,表示對于安裝新的 Linux 發行版,你希望默認使用哪個版本的 WSL,例如:
搜索Linux,可以安裝Ubuntu發行版本或者其他版本
直接打開應用程序即可
啟動時需要輸入用戶名密碼,成功啟動界面如下
執行 wsl -l -v命令查詢,Running為運行狀態
wsl可以直接進入,也可以 -d 指定版本,例如如下命令,但需要確保發型版本在電腦上已經安裝
wsl -d ubuntu-18.04
關閉Linux
# 全部掛你
wsl --shutdown
# 關閉指定的
wsl -t ununtu-22.04
刪除Linux版本
wsl --unregister 發行版名稱
windows上可以直接訪問Linux目錄,也可以在linux中建立ssh服務之后通過ssh訪問
wsl通過虛擬網卡與Windows通信,windows通過物理網卡與外界通信。
Windows下的虛擬網卡IP需要跟WSL內部的路由配置保持一致,一般作為其網關,如果不對需要修改。
路由查詢
網卡配置,注意一下,wsl里面ip可用ifconfig查詢,和外面不一定一個網段,看上面wsl的路由掩碼是255.255.240.0,不是整個C段都掩了就能明白。因此vEthernet上的虛擬網關配置的掩碼也需要注意,可以配置255.255.0.0,按照上圖路由查詢,配置172.30.64.1。
windows下命令行配置轉發,需要管理員身份,listen配置是物理機監聽配置,connect映射到wsl的端口,connectaddress可以直接配置wsl的IP
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.30.70.xxx
查詢DNS配置
cat /etc/resolv.conf
nameserver可以保持跟網關一直,例如172.30.64.1
WSL操作可能包錯,需要執行命令sudo apt install systemctl安裝systemctl
wsl shutdown
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
安裝systemctl可能報錯,可以采用 sudo aptitude install systemctl,如果aptitude未安裝,可以使用命令sudo apt-get install aptitude安裝
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
win10操作系統重,systemd在wsl2中默認是不啟動的,可以通過如下方式安裝程序并啟動。互聯網上查了很多方法,這個方法感覺最簡單。
# 安裝
sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
ps --no-headers -o comm 1
如果狀態是init,則沒有啟動
win11修改配置即可,我是win10系統,不支持,沒有試驗該方法。
vi /etc/wsl.conf
確保配置為true
參考 在WSL2的Ubuntu里配置systemd 。
# 如果在線下載不了,可以離線下載上傳到Ubuntu
wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
# ??
sudo cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
# 不需要理會?
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
EOF
apt update
sudo apt install -y systemd-genie
多用戶設置
systemctl set-default multi-user.target
wsl --shutdown
wsl genie -s
sudo ssh-keygen -A
sudo e2label /dev/sdb cloudimg-rootfs
sudo systemctl disable multipathd.service
在你的~/.profile末尾加入下面的命令
# Are we in the bottle?
if [[ ! -v INSIDE_GENIE ]]; then
read -t 3 -p "yn? * Preparing to enter genie bottle (in 3s); abort? "
echo
if [[ $yn !="y" ]]; then
echo "Starting genie:"
exec /usr/bin/genie -s
fi
fi
wsl安裝的ubuntu可能默認沒有ssh服務,安裝ssh服務,并創建登錄相關文件
sudo apt-get install openssh-server
sudo ssh-keygen -A
修改支持密碼認證登錄
# 打開sshd配置
sudo vim /etc/ssh/sshd_config
# 設置密碼認證,該配置存在,需要放開備注
PasswordAuthentication yes
# 保存退出
# 重啟
sudo systemctl restart sshd
使用物理機配置的映射端口來訪問ssh
自從 Apple 推出使用其新的高性能 ARM 芯片的新 Mac 之后,第三方軟件開發人員就一直不停嘗試,試圖在新硬件上啟動和運行可替代的操作系統。上個月初,一些開發人員在 M1 Mac 上啟動了 Windows 10 和 Fedora Linux 虛擬機,但是這并不算操作系統的替代使用。在開發 M1 Mac 替代操作系統中,獲得最大突破是專門從事 ARM 設備虛擬機的公司 Corellium 的團隊。該團隊設法移植了 Linux,并使其在 M1 Mac Mini 上 “完全可用”。
新的 Linux 端口使得 Ubuntu 首次在 Apple 的 M1 Macs 運行。Corellium 已成功將 Ubuntu 移植到 M1 Macs 上,并發布了一個教程供其他人遵循。修改后的 Ubuntu 版本啟動后會加載到常規用戶界面中,并包括 USB 支持。
盡管 M1 芯片和 Apple 的其他芯片共享著很多組件,但它是非標準化的,因此創建 Linux 驅動程序以確保 Ubuntu 正常運行并不容易。
蘋果公司在設計 M1 Mac 時并未考慮到雙系統或替代系統。蘋果公司軟件工程高級副總裁 Craig Federighi 此前曾指出官方無意支持以本地方式啟動其他操作系統,例如 Windows 或 Linux。虛擬機看似是蘋果公司建議用戶使用其它操作系統的唯一方法,但這并沒有阻止人們創建自己的端口。
Hector Martin 是一個常常將 Linux 在各種硬件上運行的開發人員,他也正試圖將 Linux 移植到 M1 Macs 上。這些開發人員大多被蘋果 M1 芯片提供的性能優勢吸引,在基于 ARM 的 MAC 上運行 Linux 想必是無聲的。“可以運行 Linux 的 ARM 筆記本電腦已經讓我期待很久了,” Linux 創造者 Linus Torvalds 在 11 月表示,“除了操作系統外,新版的蘋果 Air 幾乎是完美的。”
Corellium 首席技術辦公室 Chris Wade 昨天在 Twitter 上宣布了團隊工作的最新進展。他在博客上寫道:“研究蘋果 M1,不僅是為了創造新的 Linux 端口,這也是我們安全研究的一部分。”
該博客文章提供了 Corellium 在此過程中克服的諸多障礙,包括處理 Apple 的 SoC 是如何創建更多 CPU 內核的,處理 Apple 專有的中斷控制器等等。除此之外,Corellium 還添加了預加載器,該預加載器充當 Linux 的包裝程序,并作為啟動處理器內核的緩沖。
這篇文章包括在 M1 Mac 上安裝 Ubuntu 的教程,還有一個 Github 存儲庫(corellium /linux-m1),用戶可以從中下載。按照這些步驟操作,用戶最終可以直接從 USB 啟動操作系統。但是,目前距離 Boot Camp 風格的雙系統還有很長的路要走。即使 Corellium 團隊已經公布了教程,但其所需的步驟仍比大多數用戶想像的更為復雜,所以不建議普通用戶把它作為日常驅動程序。
“這個新端口在 Mac Mini M1 上 “完全可用”,并且可以通過 USB 啟動完整的 Ubuntu 桌面。”Corellium 的首席技術官 Chris Wade 稱,“但是,用戶將需要一個 USB-C 加密狗才能使網絡正常工作,并且運行端口需要對 Linux 和自定義內核有所了解。Corellium 近期會發布有關該過程的教程。”
Corellium 團隊表示,蘋果不使用傳統方式來啟動其 CPU。首先,它引導加載程序運行一種名為 Mach 目標文件格式(Mach-O)的可執行文件,該可執行文件以名為 IMG4 的簽名包裝器格式進行包裝。隨著啟動更多 CPU 內核,情況變得更加復雜,它們將從內存映射 I / O(MMIO)寄存器指定的地址開始運行內核。
蘋果公司設計了自己的控制器,該控制器超出了通常的 ARM 通用中斷控制器(GIC)標準。定時器中斷被導向快速中斷請求(FIQ),這不是標準化程序,反映了較舊的 32 位 ARM 系統。Corellium 團隊稱,必須提供一組處理器間中斷(IPI)才能使多個處理器進行通信。
Corellium 團隊具有處理 FIQ 支持的經驗,并早已為 Apple 的大多數非標準方法做好了準備。它的處理方法之一是,添加一個預加載程序,充當 Linux 的包裝程序,從而導致 OS 在 M1 處理器上啟動。
該小組沒有用于 M1 Mac 的接口,因此不得不尋找替代輸入路線。在藍牙、USB 主機和 PCIe 上的 xHCI USB 主機中,他們選擇了 USB 主機并與 I2C 上的芯片進行交互。
建立正確的 USB 連接后,他們可以連接鍵盤,鼠標和閃存驅動器。這為運行正常的桌面 Linux 發行版提供了可能性。
Corellium 在解決 Apple 操作系統保護方面有一些經驗。此前它為安全研究人員提供了虛擬 iPhone,以幫助進行漏洞探索。這一舉動激怒了蘋果,使得它于 2019 年 8 月以版權為由向 Corellium 提起訴訟。蘋果后來在 2020 年 1 月指控 Corellium 違反了數字千年版權法案(DMCA),而法官在 12 月駁回了其侵犯版權的控告。關于其他數字千年版權法案指控的裁決已被推遲。
Corellium 此次利用其開發 Sandcastle 項目的經驗,編寫用于新 Apple SoC 的 Linux 驅動程序。幸運的是,Apple 正式允許在 Apple Silicon Macs 上引導自定義內核,因此替換程序開發者們無需利用漏洞來導向內核。與其他 64 位 ARM SoC 相比,Apple Silicon 的固件接口和啟動過程非常不同。經過一些工作,Corellium 團隊設法增加了對足夠硬件接口的支持,從而成功在 M1 Mac Mini 上引導 Linux Ubuntu。
用戶可以下載 Corellium 共享的有關如何啟動 Ubuntu 的說明。關于此說明,簡單概括,首先需要下載其實時映像(從用于 Raspberry Pi 的 ARM64 Ubuntu 構建中稍作修改),然后將映像復制到外部 USB 驅動器(需要至少 16GB 的容量),將 USB 驅動器連接到 Mac Mini 的 USB-C 端口,啟動進入初始操作系統界面,安裝自定義內核(Corellium 提供了安裝腳本),最后使用默認憑據登錄。
Corellium 也稱,安裝過程不是很友好,因此不建議初學者在 Mac Mini 上使用 Linux。此外,M1 的機器學習核心沒有 GPU 加速或支持,因此不要企圖在新系統上玩游戲或運行機器學習任務。但對于 PC 硬件和 Linux 的發燒友來說,這仍然是個令人振奮的消息。此外,Linux 創造者 Linus Torvalds 也稱,Apple Silicon MacBooks 所提供的性能和電池壽命是首屈一指的,因此它們非常適合進行實時編程。