🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # WSL WSL 是 Windows Subsystem for Linux 的简称, 可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生虚拟机开销。 由于 WSL2 是通过 Hyper-V 虚拟机实现的,理论上和标准 Linux 已经无差异,实际目前还有[一些缺陷待改进](https://link.zhihu.com/?target=http%3A//aka.ms/wsl2),但已经可以使用 docker 了。 据官方测试,I/O 性能有了显著提升,解压缩提升20倍,常规文件操作提升5-6倍。无需担心虚拟机性能开销,因为开启 Hyper-V 后,win32 也是运行在虚拟机里的…… **在新版本中,WSL 与文件资源管理器进行了集成,已安装 WSL 的用户在打开文件资源管理器后将会看到那只熟悉的 Linux 小企鹅。** # wsl 命令 (manjaro 为例) ``` wsl --unregister # 注销指定的子系统 wsl --set-version <Distro> 2 # 将已有的发行版无缝升级到 WSL2 wsl --set-default-version 2 # 将 WSL 2 设置为默认版本 wsl -l --all -v # 查看已安装的 linux发行版本 wslconfig /l, # 可以看到所有已安装的发行版 wslconfig /setdefault manjaro # 设置默认发行版 wslconfig /u <DistributionName> # 卸载删除wsl wsl -d manjaro # 运行子系统,直接进入 Linux shell 命令行 ``` # [LxRunOffline](https://github.com/DDoSolitary/LxRunOffline) 工具 一款非常实用的 WSL 管理软件:[LxRunOffline](https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL0REb1NvbGl0YXJ5L0x4UnVuT2ZmbGluZQ),它可以安装任意发行版到任意目录、转移已安装的 WSL 目录、备份 WSL、设置默认用户和修改环境变量等操作,完全碾压`wsl`、`wslconfig`这些简陋原生管理命令。 ## 安装 ~~~ scoop install lxrunoffline ~~~ 命令: ``` LxRunOffline.exe move -n Ubuntu-18.04 -d E:\\WSL\\Ubuntu-18.04 # 通过 LxRunOffline 转移安装位置 ``` # Manjaro WSL2 > https://github.com/sileshn/ManjarWSL 这里以 `manjaro` 为实例名 ``` # Set "Windows Terminal" as default terminal $manjaro.exe config --default-term wt ``` ## 进入系统 命令行运行 `manjaro.exe`,进入系统: ``` # 生成并排序中国镜像站列表, 推荐选择 TUNA(清华) / USTC(科大) $pacman-mirrors -i -c China -m rank # 强制更新软件源索引列表,并更新系统软件包 $pacman-key --init # 初始化key $pacman -Syy manjaro-keyring # 尝试安装manjaro-keyring软件包,是否导入key选择y,会安装失败, $是否选择删除已下载文件时选n $pacman -Syyu # 强制更新软件源索引列表,并更新系统软件包 # 安装 yay $sudo pacman -S yay # 安装 C++ 基础编译环境 $pacman -S base-devel --needed ``` ## 创建用户 ~~~bash passwd # 初始化root密码 useradd -m -s /bin/bash 用户名 # 创建用户 passwd 用户名 # 初始化用户密码 ~~~ 编辑`/etc/sudoers`文件,在`root`一行(大约79行)之下添加下列代码,设置 sudo 权限: ``` 用户名 ALL=(ALL) ALL # 用户名 ALL=(ALL) NOPASSWD: ALL # 设置 sudo 权限,并且无需输入密码 ``` 执行下面指令切换至用户账户: ``` su 用户名 ``` ## 个人账户配置 **👺后续操作都是在用户账户里操作了❗** ``` # 安装 oh-my-zsh $yay -S zsh $sh -c "$(curl -fsSL https://raw.fastgit.org/ohmyzsh/ohmyzsh/master/tools/install.sh)" ``` 1. 安装字体 为了防止终端可能会出现乱码,也是因为你的电脑不支持那么多字体,所以我们需要先安装扩展字体。 Powerlevel10k 作者推荐使用 [Meslo Nerd Font](https://link.zhihu.com/?target=https%3A//github.com/romkatv/powerlevel10k%23meslo-nerd-font-patched-for-powerlevel10k) 字体,Download these four ttf files: * [MesloLGS NF Regular.ttf](https://link.zhihu.com/?target=https%3A//github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%2520NF%2520Regular.ttf) * [MesloLGS NF Bold.ttf](https://link.zhihu.com/?target=https%3A//github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%2520NF%2520Bold.ttf) * [MesloLGS NF Italic.ttf](https://link.zhihu.com/?target=https%3A//github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%2520NF%2520Italic.ttf) * [MesloLGS NF Bold Italic.ttf](https://link.zhihu.com/?target=https%3A//github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%2520NF%2520Bold%2520Italic.ttf) Double-click on each file and click "Install". This will make`MesloLGS NF`font available to all applications on your system. WSL配置字体其实就是配置终端的字体,点击设置会自动跳转到一个json格式的文档。 将文档中对应部分换成下面这个,对应的美化配置都有注释,可自行调整: ~~~json "defaults": { // Put settings here that you want to apply to all profiles. "acrylicOpacity": 0.8, //背景透明度 // "useAcrylic": true, // 启用毛玻璃 //"backgroundImage": "C:\\Users\\Liu\\Pictures\\ubuntu.jpg", //背景图片 // "backgroundImageOpacity": 0.5, //图片透明度 "backgroundImageStretchMode": "fill", //填充模式 "icon": "C:\\Users\\Liu\\Pictures\\最近\\1121490.png", //图标 "fontFace": "MesloLGS NF", //字体 "fontSize": 14, //文字大小 //"colorScheme": "Solarized Light", //主题 "cursorColor": "#FFFFFF", //光标颜色 "cursorShape": "bar" //光标形状 }, ~~~ ## 别名 alias ➜ `vim ~/.bashrc` 增加如下 ``` alias cdc='cd /mnt/c/' alias cdd='cd /mnt/d/' alias cde='cd /mnt/e/' alias tf='tail -500f' alias hg='history|grep' alias cls='clear' alias ssh-a='ssh user@host' alias untar='sudo tar -xzvf' ``` ## 语言 修改`/etc/locale.gen`文件,取消下面两行的注释: ~~~bash en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 ~~~ 然后执行下面的代码初始化语言环境: ~~~bash sudo locale-gen ~~~ 修改文件`~/.bashrc`,加入以下几行,初始化环境变量: ~~~bash export LC_CTYPE=zh_CN.UTF-8 export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" export DISPLAY=localhost:0 export PULSE_SERVER=tcp:127.0.0.1 ~~~ 然后为了保险,执行下面指令以恢复`~.bashrc`的运行权限: ``` sudo chmod 644 ~/.bashrc ``` ## WSL 默认登陆用户 在 Windows 系统命令行中,用下面的指令设置 WSL 默认登陆用户: ``` manjaro config --default-user 用户名 ``` ## 启用桌面图形环境 Windows 系统中,在 SourceForge 上下载[VcXsrv 最新版](https://link.zhihu.com/?target=https%3A//sourceforge.net/projects/vcxsrv/),安装后,执行`xlaunch`快捷方式。 ---- 由于 DrvFs 文件系统的权限问题,导致 Windows 原有 NTFS 文件系统中的文件在 WSL 下权限全部变成`0777`,即在执行`ls`或`cd`命令后,显示结果的背景色会出现问题。解决方法之一为在`.zshrc`文件末添加 ~~~ # Change ls colours LS_COLORS="ow=01;36;40" && export LS_COLORS # make cd use the ls colours zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}" autoload -Uz compinit compinit ~~~ 并加载设置 ~~~ source ~/.zshrc ~~~ 1. VS Code 设置 在 Windows 侧打开 VS Code。如果前述操作无误,VS Code 会自动提醒安装`Remote - WSL`插件。安装完成后选择 Manjaro 并连接,VS Code 及`Remote - WSL`插件将自动安装在远程机上。 Windows 盘符挂载于 WSL 侧`/mnt`文件夹,WSL 挂载于 Windows 侧`<folderpath to setup>/rootfs`文件夹。 至此,绝大多数通用 WSL 配置已完成,你应该可以直接上手开发了。最后祝你:开发愉快,再见。 ## 桌面 每次在打开WSL的app前确保 MobaXterm 正在运行,并保证右上角 Xserver 为开启状态。 MobaXterm默认设置是不允许windows粘贴板上的内容直接复制到 app 上的,所以需要调整默认设置:进入settings -> 选中 X11 选项卡 -> 将clipboard 框里选择为 disable 就可以了。 进入桌面只需在MobaXterm输入`startxfce4`,然后就会加载desktop和pannel等控件(建议使用单窗口模式)。 1. 正常使用VSCode-Insiders连接到WSL进行编程 2. 需要使用到QT编程,则需要打开MobaXterm(建议使用多窗口模式) # 后续教程 [My WSL2 and Windows Terminal setup · Garry Trinder](https://garrytrinder.github.io/2020/12/my-wsl2-windows-terminal-setup) # 参考 [利用WSL打造Arch开发环境](https://zhuanlan.zhihu.com/p/51270874) [installing WSL on Windows 10](https://docs.microsoft.com/en-us/windows/wsl/install-win10). [pxlrbt/move-wsl: Easily move your WSL distros VHDX file to a new location](https://github.com/pxlrbt/move-wsl) [https://docs.microsoft.com/en-us/windows/wsl/](https://docs.microsoft.com/en-us/windows/wsl/)