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

2 篇文章 0 订阅

建议收藏,持续更新
2024/3/22 VsCode 连接不上 WSL2 ?
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终端。
效果展示见:https://www.bilibili.com/video/BV1ka41167kA?spm_id_from=333.337.search-card.all.click

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内核

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,让他系统初始化。

输入用户名和密码

启动成功示意图:
image.png

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$

把文件夹快捷方式到桌面

image.png

1.10 安装Windows Terminal

image.png

把debian配置到windows terminal

image.png

关于配置详见 https://docs.microsoft.com/zh-cn/windows/terminal/

1.11 更新WSL GUI APP 支持

win+q 能直接搜到子系统内的APP软件并且打开!
image.png

管理员powershell

 wsl --update  
 wsl --shutdown

image.png

1.12 自定义wsl子应用的快捷方式

正常来说在linux安装的gui应用都可以在win+Q里面检索到

image.png

如果它没有,怎么把自定义的应用添加到这里?

1)仔细看了一下这个快捷方式的属性

image.png

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号

image.png

usbipd.exe wsl attach --busid 2-14  //执行以后可以看到state里面已经有debian

image.png

映射成功。

image.png

如果fdisk -l找不到这个东西也许是没有驱动,编译自己定制版本的内核

https://github.com/dorssel/usbipd-win/wiki/WSL-support#building-your-own-usbip-enabled-wsl-2-kernel

经过重新编译内核并且重新加载后。系统终于加载这个sd卡成功

image.png

成功定制好的内核,可以直接用

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
4. 然后运行 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/

1.24 VSCode 无法连接 WSL2 的常见问题及解决方案

问题原因

VSCode 自动更新到新版本,但 WSL2 下的 VSCode 未同步更新,导致连接异常

删除 用户目录下 .vscode-server , 重新登录
具体操作步骤如下:

reasonss@Laptop:~$ cp  -r .vscode-server .vscode-server-bk
reasonss@Laptop:~$ rm -rf .vscode-server
reasonss@Laptop:~$ code .
Installing VS Code Server for x64 (d037ac076cee195194f93ce6fe2bdfe2969cc82d)
Downloading: 100%
Unpacking: 100%
Unpacked 1522 files and folders to /home/reasonss/.vscode-server/bin/d037ac076cee195194f93ce6fe2bdfe2969cc82d.

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 等各种嵌入式厂家都有在上面开发自己的工具库
image.pngimage.pngimage.png

如果你用的是2.1.1 windows+bash 作为开发环境,把VScode装到windows环境,他能够在win上直接开发子系统里面的代码,而且不是类似于虚拟机共享文件夹的形式进行。并且能够直接调试代码,提交git等。

image.png

4.1 VS code的快捷键

是跟着练一遍,效率会提高很多
https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf

4.2 插件

image.png

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交叉编译之王 hahaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值