terminal+wsl2+arch

结合 windows terminalwsl2,可以很好地将 linux 开发环境结合到 win 平台下,再加上 Arch 的加持,简直爽到炸裂。

总的思路是首先在 win 中安装 windows terminal ,并开启 wsl2,然后安装 arch,设置 X server,最后就是 happy coding

Windows Terminal

在微软商店中搜索下载即可,可稍作修改,参考 Windows Terminal

我的基本配置如下,主要设置了字体以及开启了透明度。

{
    "$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 及以上。

首先需要开启 wsl,可通过 控制面板->程序->启用或关闭 Windows 功能->勾选 适用于 Linux 的 Windows 子系统 和 虚拟机平台 来开启,或者以管理员身份打开 powershell,运行如下命令来启动需要的组件

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

重启之后,需要在 此处 下载并安装适用于 x64 计算机的最新 wsl2 Linux 内核更新包。

最后,打开 powershell,运行如下命令,将 wsl 的默认版本设置为 wsl2

wsl --set-default-version 2

简单来说,wsl 和 wsl2 的区别在于,wsl 是指令翻译的形式来实现 linux 功能,而 wsl2 则是基于 hyper-v 虚拟技术。

Arch

Arch 对人的吸引力我就不赘述了。

安装 arch wsl

yuk7/ArchWSL - Releases 中下载 Arch.zip,根据 yuk7/ArchWSL -Wiki 进行安装。

换源更新

进入 arch wsl 中后,执行以下命令(root 身份)

passwd  # 设置 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,十分方便。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容