WSL2 安裝ArchLinux
安裝ubuntu測試
從win10商店下載完直接運行一般會出錯
The WSL optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Error: 0x8007007e
Press any key to continue...
需要運行命令打開WSL的功能,以管理員身份打開powershell運行以下命令
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
安裝完成后會提示重啟,重啟會更新一些組件延后正常打開就會安裝了,安裝提示輸入用戶名和密碼就可以正常進入系統了。
PS:修改root用戶的密碼
sudo -s #切換到root用戶
passwd #設置密碼
配置國內源/etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
執行更新
apt-get update
apt-get upgrade
可能出現broken dependencies,或者出現unmet dependencies,執行以下命令
sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove
安裝Windows Terminal和美化
使用WSL配合windows termianl使用更佳
從win10商店安裝直接使用,通過win+r打開運行wt.exe就可以快捷打開
簡單美化一下
打開設置,選擇開啟Json文件,其中是Terminal的配置文件
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
// You can add more global application settings here.
// To learn more about global settings, visit https://aka.ms/terminal-global-settings
// If enabled, selections are automatically copied to your clipboard.
"copyOnSelect": false,
// If enabled, formatted data is also copied to your clipboard
"copyFormatting": false,
"profiles":
{
"defaults":
{
// Put settings here that you want to apply to all profiles.
},
"list":
[
{
// Make changes here to the powershell.exe profile.
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"useAcrylic" : true,
"hidden": false
},
{
// Make changes here to the cmd.exe profile.
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "命令提示符",
"commandline": "cmd.exe",
"useAcrylic" : true,
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
},
{
"guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
"hidden": false,
"name": "Ubuntu-20.04",
"source": "Windows.Terminal.Wsl"
}
]
},
// Add custom color schemes to this array.
// To learn more about color schemes, visit https://aka.ms/terminal-color-schemes
"schemes": [],
// Add custom actions and keybindings to this array.
// To unbind a key combination from your defaults.json, set the command to "unbound".
// To learn more about actions and keybindings, visit https://aka.ms/terminal-keybindings
"actions":
[
{ "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
{ "command": "paste", "keys": "ctrl+v" },
{ "command": "find", "keys": "ctrl+shift+f" },
{ "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
]
}
其中profiles對應着每一個終端的配置,添加
"useAcrylic" : true
開啟亞克力特效,還可以設置字體等(fontFace),方法類似
開啟WSL2
以管理員身份打開Powershell,運行一下命令開啟虛擬機平台可選功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
安裝Linux內核更新包
- 適用於 x64 計算機的 WSL 2 Linux 內核更新包
- 適用於 ARM64 計算機的 WSL 2 Linux 內核更新包
設置WSL2為默認版本
wsl --set=default-version 2
嘗試切換原來的為wsl的ubuntu為wsl2
wsl --set-version Ubuntu-20.04 2 #--set-version后跟開發版的名字再跟wsl版本
出現以下提示
正在進行轉換,這可能需要幾分鍾時間...
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
轉換完成。
查看,發現版本已經改變了
wsl -l -v
下載 yuk7/ArchWSL,下載最新的zip包,解壓運行Arch.exe,會在目錄下生成系統運行文件,Arch就可以使用了
Arch初始化配置
首先打開/etc/pacman.conf配置文件,配置一下源,打開
[multilib]
Include = /etc/pacman.d/mirrorlist
結尾添加archlinuxcn的源
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
更新一下源
pacman -Syy
初始化一下
pacman-key --init
pacman-key --populate
pacman -S archlinuxcn-keyring
更新
pacman -Syyu #強烈建議先更新再進行下面的操作
給當前賬號設置密碼
passwd
安裝一些基本的軟件
pacman -S base base-devel git curl wget zsh yay
新建用戶
useradd -m -G wheel -s /bin/bash <用戶名>
passwd <用戶名>
將文件/etc/sudoers中的wheel ALL=(ALL) ALL那一行前面的注釋去掉
vim /etc/sudoers #文件為只讀文件,不要嘗試修改文件權限,強制保存命令 :w !sudo tee %
回到 Windows 中 Arch.exe 所在目錄,打開命令提示符並運行 Arch.exe config --default-user $用戶名,設置啟動默認用戶
PS:如果修改sudoers出現問題而又沒有備份可以重新安裝sudo解決
安裝ohmyzsh
- 設置代理
WSL1 和 WSL2 網絡的區別
在 WSL1 時代,由於 Linux 子系統和 Windows 共享了網絡端口,所以訪問 Windows 的代理非常簡單。例如 Windows 的代理客戶端監聽了 8000 端口,那么只需要在 Linux 子系統中執行如下命令,就可以讓當前 session 中的請求通過代理訪問互聯網。
export ALL_PROXY="http://127.0.0.1:8000"
但是 WSL2 基於 Hyper-V 運行,導致 Linux 子系統和 Windows 在網絡上是兩台各自獨立的機器,從 Linux 子系統訪問 Windows 首先需要找到 Windows 的 IP。
配置 WSL2 訪問 Windows 上的代理
有兩個關鍵步驟: 1. WSL2 中配置的代理要指向 Windows 的 IP; 2. Windows 上的代理客戶端需要允許來自本地局域網的請求;
由於 Linux 子系統也是通過 Windows 訪問網絡,所以 Linux 子系統中的網關指向的是 Windows,DNS 服務器指向的也是 Windows,基於這兩個特性,我們可以將 Windows 的 IP 讀取出來。
例如,在 Ubuntu 子系統中,通過 cat /etc/resolv.conf 查看 DNS 服務器 IP。
# This file was automatically generated by WSL. To stop
automatic generation of this file, add the following entry to /etc/wsl.conf:# [network]# generateResolvConf = falsenameserver 172.19.80.1
可以看到 DNS 服務器是 172.19.80.1,通過環境變量 ALL_PROXY 配置代理:
export ALL_PROXY="http://172.19.80.1:7890"
7890 是 Windows 上運行的代理客戶端的端口,記得要在 Windows 代理客戶端上配置允許本地局域網請求。
-
安裝
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -
可以設置主題,打開配置文件~/.zshrc
修改 ZSH_THEME="agnoster" #是當前比較熱門的主題主題已經運用上了但是一會發現是亂碼,見亂碼問題
-
安裝插件
# 自動語法高亮 git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # 在輸入命令時會給出建議的命令 git clone git://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -
修改配置信息
plugins=(git zsh-syntax-highlighting zsh-autosuggestions) -
使配置生效
source ~/.zshrc
