terminal+wsl2+arch

結合 windows terminalwsl2,能夠很好地將 linux 開發環境結合到 win 平臺下,再加上 Arch 的加持,簡直爽到炸裂。html

總的思路是首先在 win 中安裝 windows terminal ,並開啓 wsl2,而後安裝 arch,設置 X server,最後就是 happy codingnode

Windows Terminal

在微軟商店中搜索下載便可,可稍做修改,參考 Windows Terminalpython

個人基本配置以下,主要設置了字體以及開啓了透明度。linux

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "copyOnSelect": false,
    "copyFormatting": false,

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "colorScheme": "One Half Dark",
            "fontFace": "FiraCode Nerd Font",
            "fontSize": 11,
            "padding": "0, 0, 0, 0",
            "useAcrylic": true,
            "acrylicOpacity": 0.8,
            "cursorShape": "emptyBox",
       		"antialiasingMode": "cleartype",
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "Command Prompt",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{a5a97cb8-8961-5535-816d-772efe0c6a3f}",
                "hidden": false,
                "name": "Arch",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Arch/home/kiven/",
                "icon": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Archlinux-icon-crystal-64.svg/1200px-Archlinux-icon-crystal-64.svg.png"
            },
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu-20.04/home/kiven/"

            }
        ]
    },

    // 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":
    [
        // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json.
        // These two lines additionally bind them to Ctrl+C and Ctrl+V.
        // To learn more about selection, visit https://aka.ms/terminal-selection
        { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
        { "command": "paste", "keys": "ctrl+v" },

        // Press Ctrl+Shift+F to open the search box
        { "command": "find", "keys": "ctrl+shift+f" },

        // Press Alt+Shift+D to open a new pane.
        // - "split": "auto" makes this pane open in the direction that provides the most surface area.
        // - "splitMode": "duplicate" makes the new pane use the focused pane's profile.
        // To learn more about panes, visit https://aka.ms/terminal-panes
        { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
    ]
}

複製代碼

wsl2

wsl2 要求系統版本應該在 win10, version 2004, build 19041 及以上。git

首先須要開啓 wsl,可經過 控制面板->程序->啓用或關閉 Windows 功能->勾選 適用於 Linux 的 Windows 子系統 和 虛擬機平臺 來開啓,或者以管理員身份打開 powershell,運行以下命令來啓動須要的組件github

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
複製代碼

重啓以後,須要在 此處 下載並安裝適用於 x64 計算機的最新 wsl2 Linux 內核更新包。web

最後,打開 powershell,運行以下命令,將 wsl 的默認版本設置爲 wsl2docker

wsl --set-default-version 2
複製代碼

簡單來講,wsl 和 wsl2 的區別在於,wsl 是指令翻譯的形式來實現 linux 功能,而 wsl2 則是基於 hyper-v 虛擬技術。shell

Arch

Arch 對人的吸引力我就不贅述了。npm

安裝 arch wsl

yuk7/ArchWSL - Releases 中下載 Arch.zip,根據 yuk7/ArchWSL -Wiki 進行安裝。

換源更新

進入 arch wsl 中後,執行如下命令(root 身份)

passed  # 設置 root 密碼
複製代碼

vim 或者 nano 打開 /etc/pacman.d/mirrorlist,將 China 下面的源取消註釋。

執行以下命令

# 初始化 keyring
pacman-key --init
pacman-key --populate
pacman -Syu
複製代碼

vim 打開 /etc/pacman.conf,取消 #Color 註釋,在文件末尾加上

[archlinuxcn]
Server = https://mirrors.aliyun.com/archlinuxcn/$arch
複製代碼

執行以下命令

pacman -Syy
pacman -S archlinuxcn-keyring
複製代碼

建立用戶

通常使用普通用戶進行操做,防止誤操做致使 linux 沒法運行。

# 新建用戶,-m 爲用戶建立家目錄,-G wheel 將用戶添加到 wheel 用戶組
useradd -m -G wheel <youname>
# 設置密碼
passwd <youname>
複製代碼

編輯 /etc/sudoers,將 # $wheel ALL=(ALL) ALL 的註釋去掉,使得 wheel 組用戶可以使用 root 權限。

在 powershell 中進入到 Arch.exe 所在文件夾,設置 wsl 默認登錄用戶和默認的 wsl

.\Arch.exe config --default-user <youname>
wsl -s Arch
複製代碼

安裝經常使用軟件

# 基本 linux 命令集
sudo pacman -S base-devel
# yay
sudo pacman -S yay
# yay 換源
yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save
# 其它一些經常使用的指令
sudo pacman -S neofetch lolcat bat tree
# git openssh man-pages
sudo pacman -S git openssh man-pages
# 安裝 firacode 字體
sudo pacman -S nerd-fonts-fira-code
複製代碼

安裝 zsh

sudo pacman -S zsh
# 改變當前用戶默認的 shell
chsh -s /bin/zsh
複製代碼
# 使用 antigen 管理 zsh 插件
sudo yay -S antigen
複製代碼

.zshrc 中添加

# Start antigen
# Load antigen -- plugin manager
source /usr/share/zsh/share/antigen.zsh
# Load oh-my-zsh
antigen use oh-my-zsh

antigen bundle git
antigen bundle zsh-users/zsh-completions; rehash
antigen bundle pip
antigen bundle command-not-found
antigen bundle zsh-users/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-autosuggestions

# Antigen done
antigen apply
# End antigen
複製代碼
# 安裝 starship 美化命令行提示
sudo pacman -S starship
複製代碼

參考 starship,在 .zshrc 中添加

eval "$(starship init zsh)"
複製代碼

執行 exec $SHELL 便可看到更新的效果。

安裝 pyqt5 環境

sudo pacman -S python python-pip
sudo pacman -S pyenv
sudo pacman -S python-pipenv
sudo pacman -S pyqt5
sudo pacman -S qt5-tools
複製代碼

.zshrc 中添加

# set pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi
複製代碼

安裝 node 開發環境

sudo pacman -S nvm
複製代碼

.zshrc 中添加

source /usr/share/nvm/init-nvm.sh
複製代碼
# 安裝 node v10.15
nvm install v10.15.0
# 設置默認版本
nvm use v10.15.0
複製代碼
# 安裝 yarn
sudo pacman -S yarn
# 安裝 nrm
npm install -g nrm
# 查看有哪些源
nrm ls
# 選擇 taobao 源
nrm usr taobao
複製代碼

啓用 X Server 圖形環境

win 安裝 VcXsrv

首先在 windows 上安裝 VcXsrv

找到軟件的安裝路徑,對兩個可執行文件 vcxsrv.exexlaunch.exe 進行操做:右擊->屬性->兼容性->更改高 DPI 設置->勾選替代高 DPI 縮放行爲,目的是使得 VcXsrc 在高分辨率的顯示屏上具備清晰的顯示效果。

打開 xlaunch.exe,一路默認,在 Extra settings 界面中,勾選 Disable acess control,在 Additional parameters for VcXsrv 裏填寫 -ac,而後保存配置文件,而後就能夠雙擊該文件直接啓動或者移至 Startup 文件夾中開機自啓。

配置 arch

# 首先須要安裝 xorg
sudo pacman -S xorg xorg-xinit
複製代碼

.zshrc 中添加

# wsl settings
export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0
export LIBGL_ALWAYS_INDIRECT=1
複製代碼

配置顯示輸出地址

編輯 /etc/X11/Xwrapper.config,修改或增長

allowed_users=anybody
複製代碼

而後就能夠經過 xeyes 命令來測試顯示是否正常了。

問題

大部分問題均可以參考 Known issues 來解決。

對於有些 gui 是沒法用 vcxsrv 的 multi window 的方式來呈現的,例如 dwm,這時候能夠選擇 one large window 來顯示。

最後

到此,基本環境已經搭建完畢,能夠很好地在 win 中使用 arch,同時還能夠在 arch 中使用 win 中的命令,例如能夠在任意位置 code . 打開 vscode,還可使用 explorer.exe . 打開 win 的資源管理器,還能夠在 win 中下載 docker desktop,以後在 arch 中直接使用 docker,十分方便。

參考

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息