Windows虚拟机系列:win10 win11 wsl2 从0打造linux开发环境构建(持续更新)




建议收藏,持续更新
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卡也卡
后面发现是防火墙规则的问题

所以需要把 wslwslgusbipd这三个应用都添加到防火墙应用、以及入站规则里面

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
  1. 然后运行
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 插件

在这里插入图片描述







老王-嵌入式linux

win10 win11 wsl2 从0打造linux开发环境构建(持续更新)

posted @ 2024-01-12 20:09  坦笑&&life  阅读(9)  评论(0编辑  收藏  举报  来源