介绍
自从WSL2进入Insider Preview以来,我就一直在使用WSL2进行业务开发,但是它将很快正式发布,并且由于内部使用它的人数正在增加,我将写一篇文章,其中包括组织知识。
我想念本地主机,依此类推...
WSL2
关于WSL2
一种允许Linux在Windows的Windows子系统上运行的技术。
与WSL1不同,它是使用VM(Hyper-V)实现的。但是,与普通VM不同,它具有高速启动,Windows和Linux之间协作以及无需VM管理的优点。
已启用WSL
让我们通过参考
文档进行设置。
1 2 3 4 5 6 7 8 | # Windows Subsystem for Linuxのインストール dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 仮想マシンプラットフォームの有効化 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 再起動後、wslコマンドが利用可能になるはずなのでWSLのデフォルトバージョンを2に設定 wsl --set-default-version 2 |
操作系统选择
从Microsoft Store或Internet获取WSL的图像。
令人敬畏的WSL支持的发行版
我觉得本文中介绍的Ubuntu 18.04 LTS具有很多当前信息。似乎Ubuntu 20.04LTS也已发布到商店。
就个人而言,它是非官方的,但是我想推荐它,因为ArchWSL运作良好,并且在开发它时没有很多麻烦。
WSL配置(.wslconfig)
您可以在
我有内存限制,已启用SWAP。
对于
设置项目,我认为"管理Linux发行版"已详细说明。
1 2 3 | [wsl2] memory=8G swap=4G |
Windows终端
由Microsoft开发的终端,与WSL2的发布同时发布。我们正在以某种方式开发以替换现有的内置终端...
在预览版本发布后,立即出现了许多错误,例如突然崩溃和显示崩溃,但是现在它已经发布,它是稳定的。
绘图又快又漂亮,因此处理诸如Vim之类的丰富CUI程序非常舒适。
它与PowerShell,WSL和Azure具有高度的亲和力,并且添加WSL发行版非常方便,因为它未经许可就添加了启动选项。
我的设置将默认配置文件设置为Ubuntu,配色方案个人使用铁板吸血鬼。
我还设置了
窗格拆分,但是我使用的是tmux,所以我用的不多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "profiles": { "defaults": { // Put settings here that you want to apply to all profiles "fontFace": "Hackgen Console", "fontSize": 14, "colorScheme": "Dracula" }, "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": "cmd", "commandline": "cmd.exe", "hidden": false }, { "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}", "hidden": false, "name": "Ubuntu", "source": "Windows.Terminal.Wsl", "commandline": "wsl ~ -d Ubuntu" }, { "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" } ] }, // Add custom color schemes to this array "schemes": [ // 個人的に { "name" : "Dracula", "background" : "#282A36", "black" : "#21222C", "blue" : "#BD93F9", "brightBlack" : "#6272A4", "brightBlue" : "#D6ACFF", "brightCyan" : "#A4FFFF", "brightGreen" : "#69FF94", "brightPurple" : "#FF92DF", "brightRed" : "#FF6E6E", "brightWhite" : "#FFFFFF", "brightYellow" : "#FFFFA5", "cyan" : "#8BE9FD", "foreground" : "#F8F8F2", "green" : "#50FA7B", "purple" : "#FF79C6", "red" : "#FF5555", "white" : "#F8F8F2", "yellow" : "#F1FA8C" } ], "keybindings": [ // ペイン分割と移動。Vim風にしています。 { "command": { "action": "splitPane", "split": "vertical" }, "keys": "ctrl+shift+e" }, { "command": { "action": "splitPane", "split": "horizontal" }, "keys": "ctrl+shift+d" }, { "command": { "action": "splitPane", "split": "auto" }, "keys": "alt+shift+|" }, { "command": { "action": "moveFocus", "direction": "down" }, "keys": "ctrl+shift+j" }, { "command": { "action": "moveFocus", "direction": "left" }, "keys": "ctrl+shift+h" }, { "command": { "action": "moveFocus", "direction": "right" }, "keys": "ctrl+shift+l" }, { "command": { "action": "moveFocus", "direction": "up" }, "keys": "ctrl+shift+k" } ] } |
VSCode远程开发
这是一个Suguremono,可以在指定的连接目标位置打开VS Code。它涵盖了SSH,Docker和WSL。
只需将Remote Development Extension Pack插入VS Code,就可以完成。
登录到WSL终端,然后
1 | code . |
只需运行
在WSL中打开目录。方便的。
Ubuntu18.04 LTS(20.04 LTS)
设置Docker
systemd
Systemd越来越依赖于最新的Linux发行版,但是WSL上的Linux被禁用,因为它使用了Microsoft自己的Linux内核。
当然,您可以不使用systemd进行开发,但是由于自动启动有点麻烦,因此我介绍了genie(将在以后描述)来运行systemd。
genie
https://github.com/arkane-systems/geni
使用wsl启动systemd的便捷工具。
因为您需要dotnet运行时,所以请遵循指南
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 18.04 wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y aspnetcore-runtime-5.0 # 20.04 LTS wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y aspnetcore-runtime-5.0 |
设置dotnet运行时后,请按照sprite安装说明进行操作
1 | curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash |
执行以下命令以安装
1 2 | sudo apt update sudo apt install systemd-genie |
这样就完成了sprite设置,在外壳上
1 2 3 4 5 6 7 8 | # Ubuntu 18.04 LTS用 genie -c bash # Arch等々 genie -s # systemd起動確認 sudo systemctl status |
通过执行
,将启动新的shell并可以启动systemd。
某些服务已失败,但是到目前为止开发还没有问题。我感到不舒服,所以我希望有一天能解决它。
问题
停止在genie 1.31或更高版本中的"正在等待systemd .... !!"
如
https://github.com/arkane-systems/genie#warning-timing-out中所述,其行为是等待所有系统服务正常启动,但到目前为止,在已设置的环境中服务将被阻止,因为它们将无法启动。等待几秒钟后,可以再次按Ctrl C和
登录后,停止启动失败的服务。需要时再考虑。
1 2 3 4 5 6 | # 以下のコマンドで失敗しているサービスを一覧できます sudo systemctl list-units --state failed # 筆者の環境で失敗していたサービスたち sudo systemctl mask systemd-remount-fs.service sudo systemctl disable ssh.service multipathd.service multipathd.socket |
Docker
我们将根据官方指南进行操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io sudo gpasswd -a $USER docker # 再ログイン後 docker run hello-world # docker-compose sudo apt install python3-pip pip3 install -U docker-compose docker-compose -v |
使用GUI应用程序
最近与Web相关的开发仅需要Docker和VS Code,但是使用诸如Cypress之类的浏览器的测试工具具有Headless模式,但是无法使用GUI的开发却很困难。
因此,我在Windows端设置了X Server,以便可以通过WSL启动GUI。
X服务器
X410
Microsoft Store
我正在收费使用。一旦设置了防火墙,这很容易,因为仅通过启动应用程序即可将其驻留在未经许可的情况下。
操作也相当稳定。
VcXsrv
SourceForge
单击此处以获取大量用户和信息。免费。
启动设置中的
-
显示设置
- 多个Windows(可选)
-
新客户
- 没有客户
-
额外设定
- 剪贴板:真
- 本机opengl:true
- 禁用访问控制:false
-
VcXsrv的附加参数
-
-ac
-
建议使用
进行设置。
###常见
两者都很常见,但控制面板-