win10 win11 wsl2 从0打造linux开发环境构建(持续更新)
- 1.操作系统 windows+bash
- 1.1 Windows 子系统 wsl2 部署
- 1.2确认系统是否支持Virtualization
- 1.3确认是否启用wsl组件
- 1.4确认是否启用wsl2版本
- 1.5怎么将 WSL 1 上的 Ubuntu 转换到 WSL 2
- 1.6如果没有安装过,安装一个 Linux 发行版
- 1.7更新源
- 1.8安装依赖
- 1.9 共享文件夹
- 1.10 安装Windows Terminal
- 1.11 更新WSL GUI APP 支持
- 1.12 自定义wsl子应用的快捷方式
- 1.13 添加中文输入法(搭建失败待调试)
- 1.14 在 WSL 2 中装载 Linux 磁盘
- 1.15 在wsl2 中装载闪存 Arduino 或访问智能卡读卡器
- 1.16 wsl 镜像定制与导出和导入
- 1.17 wsl 防火墙设置
- 1.18 root和其他用户密码忘记的修复方法
- 1.19 同时使用wsl1+wsl2
- 1.20 wsl2 怎么启用ipv6
- 1.21 修改hostname
- 1.22 怎么样从win10 LTSC 2021 安装微软商店
- 1.23 WSL2 的 2.0 更新彻底解决网络问题
- 2. 操作系统 Deepin、UOS
- 3. 操作系统 windows+虚拟机
- 4. **Visual Studio Code **
建议收藏,持续更新
2023/11/30 WSL2 的 2.0 更新解决网络问题,(ipv6,自动释放内存,dns处理等)
2023/10/13 怎么样从win10 LTSC 2021 安装微软商店
2022/7/17 怎么修改hostname
2022/6/29 wsl2 怎么启用ipv6?
2022/6/29 怎么同时使用wsl1+wsl2
2022/6/28 更新内核替换教程
2022/5/14 root和其他用户密码忘记的修复方法
2022/5/11 wsl防火墙设置
2022/4/24 添加 SD卡映射、最新编译的内核驱动
2022/4/15 第一版
1.操作系统 windows+bash
全世界都知道win是linux最好的发行版 !
一种新型的嵌入式开发系统平台构建方式,从16年开始,windows10开发者计划版本,就有bash子系统,到今天已经演变的非常稳定、流畅、无缝切换。
对嵌入式来说这是一种很完美的开发方式,win平台的“祖传工具”可以继续用,同时可以直接操作Ubuntu的应用,硬件配置不再像是虚拟机一样阉割过,而是公用一套基础外设,文件系统互通。
借助最新的WSL服务,可以在一个窗口下,同时启动windows软件,和linux系统内的IDE软件。
可以鼠标右键直接打开linux终端。
1.1 Windows 子系统 wsl2 部署
版本需要大于等于2004
1.2确认系统是否支持Virtualization
如果disable
要在 Windows 10(2004)上启用虚拟机平台,请以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1.3确认是否启用wsl组件
以管理员身份打开 PowerShell 工具并运行以下命令。小心不要在命令中输入错误或遗漏任何字符:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
1.4确认是否启用wsl2版本
wsl -l -v
#输出
Name State Version
Ubuntu Stopped 1 //如果是2 就跳到0.1.4.7更新源
1.5怎么将 WSL 1 上的 Ubuntu 转换到 WSL 2
首先需要启用组件
使用管理员打开Powershell并运行
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
启用后会要求重启计算机
其次更新WSL2内核
从https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi获取WSL2 Linux内核更新包并运行
查看目前的WSL版本
wsl -l -v
#输出
Name State Version
Ubuntu Stopped 1
执行更新
wsl --set-version Ubuntu 2 // Ubuntu 的名字要和系统安装的一致
#输出
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。
不存在具有提供分部的名称
切换的镜像名字打错了
需要把指令改成
wsl --set-version Ubuntu-20.04 2 //镜像名字需要和已安装的一致
成功
完成后重新检测
wsl -l -v
#输出
Name State Version
Ubuntu Stopped 2
修改默认启动版本
wsl --set-default-version 2
1.6如果没有安装过,安装一个 Linux 发行版
有了 WSL 和必要的虚拟化技术,接下来您要做的就是从 Microsoft Store 中选择并安装 Linux 发行版。
有几种不同的发行版可供选择,包括 OpenSUSE、Pengwin、Fedora Remix 和 Alpine Linux。但是我个人推荐debain。
要在 Windows 10 上安装 Ubuntu,请打开 Microsoft Store 应用,搜索 “debain”,然后单击“获取”按钮
下面安装的是debain
首次启动需要,从系统应用点一下Debain,让他系统初始化。
输入用户名和密码
启动成功示意图:
1.7更新源
更新源清华源
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt-get update
1.8安装依赖
Debian/Ubuntu
sudo apt-get install wget make unzip git libc6-i386 gcc libgl1-mesa-dev libglu1-mesa-dev gdb-multiarch libc6-i386 lib32stdc++6 lib32z1 lib32ncurses6 -y
1.9 共享文件夹
右键把文件映射成网络驱动器
资源管理器输入:\\wsl$
把文件夹快捷方式到桌面
1.10 安装Windows Terminal
把debian配置到windows terminal
关于配置详见 https://docs.microsoft.com/zh-cn/windows/terminal/
1.11 更新WSL GUI APP 支持
win+q 能直接搜到子系统内的APP软件并且打开!
管理员powershell
wsl --update
wsl --shutdown
1.12 自定义wsl子应用的快捷方式
正常来说在linux安装的gui应用都可以在win+Q里面检索到
如果它没有,怎么把自定义的应用添加到这里?
1)仔细看了一下这个快捷方式的属性
2)启动的子程序的指令 如下,按照这个格式把自己的应用添加就行 ,如果你的应用不行,也许需要把应用放置在/usr/bin 下面
C:\Windows\System32\wslg.exe ~ -d Debian giggle
C:\Users\reasonss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Debian
C:\Users\reasonss\AppData\Local\Temp\WSLDVCPlugin\Debian
1.13 添加中文输入法(搭建失败待调试)
sudo apt install dbus-x11 im-config fonts-noto fcitx fcitx-pinyin fcitx-sunpinyin
//用sudo vi/etc/locale.gen
zh_CN.UTF-8
//vi ~/.profile
export LANG=zh_CN.UTF-8
export INPUT_METHOD=fcitx # wayland输入法
export XMODIFIERS=@im=fcitx # x11输入法
export GTK_IM_MODULE=fcitx # gtk输入法
export QT_IM_MODULE=fcitx # qt输入法
1.14 在 WSL 2 中装载 Linux 磁盘
https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk
1.15 在wsl2 中装载闪存 Arduino 或访问智能卡读卡器
视频介绍
https://www.youtube.com/watch?v=I2jOuLU4o8E
https://docs.microsoft.com/en-us/windows/wsl/connect-usb
**管理员powershell **
winget install --interactive --exact dorssel.usbipd-win
//需要重启电脑才生效
**wsl shell **
sudo apt-get install usbip hwdata
**管理员powershell **
查看需要映射的BUSID是什么,如果不知道可以通过插拔查询id的变化。
usbipd.exe wsl list //找到需要映射的busid号
usbipd.exe wsl attach --busid 2-14 //执行以后可以看到state里面已经有debian
映射成功。
如果fdisk -l找不到这个东西也许是没有驱动,编译自己定制版本的内核
https://github.com/dorssel/usbipd-win/wiki/WSL-support#building-your-own-usbip-enabled-wsl-2-kernel
经过重新编译内核并且重新加载后。系统终于加载这个sd卡成功
成功定制好的内核,可以直接用
Linux mogu-laptop 5.10.102.1-microsoft-standard-WSL2+ #3 SMP Fri Apr 22 17:24:10 CST 2022 x86_64 GNU/Linux
百度云盘
链接:https://pan.baidu.com/s/11ByhBdEcI9HPULvQ5Nm2UQ?pwd=jxnb
提取码:jxnb
使用方式
Create a .wslconfig file on /mnt/c/Users/<user>/ and add a reference to the created image with the following.
[wsl2]
kernel=c:\\users\\<user>\\usbip-bzImage
重启电脑 uname -a 看看编译日期
1.16 wsl 镜像定制与导出和导入
https://docs.microsoft.com/zh-cn/windows/wsl/enterprise
1.17 wsl 防火墙设置
自从某一次系统更新重启后,发现特别卡、ssh卡,映射sd卡也卡
后面发现是防火墙规则的问题
所以需要把 wsl
、wslg
、usbipd
这三个应用都添加到防火墙应用、以及入站规则里面
win+q
搜索 Defender
把下面两个wsl重要的程序的给添加到防火墙
“C:\Windows\System32\wsl.exe”
“C:\Windows\System32\wslg.exe”
把wsl wslg的规则全打开
还有usbipd全部规则
1.18 root和其他用户密码忘记的修复方法
1、以管理员身份打开 PowerShell ;
2、输入命令 wsl.exe --user root ;
3、命令 passwd root 修改 root 用户密码。
其他同理
1.19 同时使用wsl1+wsl2
以管理员身份打开powershell
输入如下
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
设置对应的发行版本基于的wsl版本
wsl --shutdown
wsl --set-version Ubuntu-18.04 2
wsl --set-version Ubuntu-20.04 1
就行了
1.20 wsl2 怎么启用ipv6
详见1.23 WSL2 的 2.0 更新彻底解决网络问题
1.21 修改hostname
如果不存在就自己创建
vim /etc/wsl.conf
[network]
hostname = node01
generateHosts = false
wsl --shutdown
1.22 怎么样从win10 LTSC 2021 安装微软商店
最近拿到了一台台式机 装了win 10 LTSC 2021
发现里面没有微软商店,装了一圈还是不行 ,最后发现是微软商店的域名给网安部门封了,所以安装完下面后,手机开个热点吧
1.按照Python后用下面的Git进行新的微软商店安装包拉取
https://github.com/Goojoe/LTSC-ADD-Microsoft-Store
2.手机开热点让电脑联网进行应用商城访问
1.23 WSL2 的 2.0 更新彻底解决网络问题
微软 WSL2 到 2.0 版本,带来了以下特性:
-
支持自动回收内存
-
支持自动释放 WSL2 虚拟硬盘空间
-
支持和 Windows 使用相同的网络(镜像网络)
-
支持 DNS Tunneling
-
支持 Windows 设置的代理
-
支持 Windows 防火墙
-
支持 Multicast
详细可以前往:Windows Subsystem for Linux September 2023 update
开启方法:
wsl --update --pre-release
把 WSL2 更新到 2.0.0 或以上版本
在 %userprofile%.wslconfig 中写入以下内容然后保存:
[experimental]
autoMemoryReclaim=gradual # 可以在 gradual 、dropcache 、disabled 之间选择
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
sparseVhd=true
- 然后运行
wsl --manage 发行版名字 --set-sparse true
启用稀疏 VHD 允许 WSL2 的硬盘空间自动回收,比如
wsl --manage Ubuntu --set-sparse true
然后你会发现,WSL2 和 Windows 主机的网络互通而且 IP 地址相同了,还支持 IPv6 了,并且从外部(比如局域网)可以同时访问 WSL2 和 Windows 的网络。
这波升级彻底带回以前 WSL1 那时候的无缝网络体验了,并且 Windows 防火墙也能过滤 WSL 里的包了,再也不需要什么桥接网卡、端口转发之类的操作了。并且 WSL2 的内存占用和硬盘空间都可以自动回收了!
另外,使用 VSCode - WSL 插件的,建议去 VSCode 设置里把自动端口转发关掉(Remote: Auto Forward Ports),避免冲突,因为 WSL2 更新之后新的网络已经是和你的 Windows 使用相同网络了,不再需要端口转发了。
最后,如果你在 WSL 里使用 docker,那需要将 autoMemoryReclaim 配置为 dropcache 或者 disabled,然后在 /etc/docker/daemon.json 里添加一句 “iptables”: false ,否则你可能无法正常使用 docker。
更多详见 https://devblogs.microsoft.com/commandline/windows-subsystem-for-linux-september-2023-update/
2. 操作系统 Deepin、UOS
关于deepin系统安装见官网https://www.deepin.org/zh/
关于uos系统安装见官网 https://home.uniontech.com/
UOS是Linux在中国的商业发行版,主要开发工作由Deepin团队完成,UOS与Deepin的关系就像是Fedora和Redhat RHEL那样。
UOS现阶段是直接供给政府部门使用,我记得微信分享三个人可以获得家庭版的免费密钥。
Deepin从19年开始整个系统就是UOS的试验田,有最新的功能,同时也有最多的bug。
现在的UOS怎么说呢,windows有的软件它都有,我把它作为主力开发系统深度使用3年半,他的生态已经接近完整,随时可以打操作系统战。
里面可以直接跑windows软件,基于wine,adobe全家桶、office全家桶、钉钉都有。
里面可以直接跑安卓app ,基于linux内核。
里面有大量的linux平台软件,有微信原生linux版。
3. 操作系统 windows+虚拟机
不做详述
4. **Visual Studio Code **
下载地址:http://vscode.bianjiqi.net/
微软公司第一次向开发者们提供了一款**真正的跨平台,**运行于 Mac OS X、Windows和 Linux 之上的编辑器。
VsCode 是集成全世界所有开源工具一身的万能IDE,涂鸦、乐鑫、Arduino、RT-Thread 等各种嵌入式厂家都有在上面开发自己的工具库
如果你用的是2.1.1 windows+bash 作为开发环境,把VScode装到windows环境,他能够在win上直接开发子系统里面的代码,而且不是类似于虚拟机共享文件夹的形式进行。并且能够直接调试代码,提交git等。
4.1 VS code的快捷键
是跟着练一遍,效率会提高很多
https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
4.2 插件