Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )

2023-05-16

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )

  • 1. WSL 简介
    • 1.1 什么是 WSL ?
    • 1.2 WSL1 与 WSL2
  • 2. 安装 WSL
    • 2.1 安装 WSL1
      • (1)启用“适用于 Linux 的 Windows 子系统”可选功能
      • (2)重启电脑
      • (3)安装 Linux 发行版,如 Ubuntu
      • (4)启动 Linux 子系统
    • 2.2 升级到 WSL2
      • (1)开启“虚拟机平台”可选功能
      • (2)重启电脑
      • (3)下载 Linux 内核更新包
      • (4)设置 WSL 版本
  • 3. 使用 WSL
    • 3.1 启动和退出 Linux 子系统
    • 3.2 文件系统
      • 如何在 Linux 应用中使用 Windows 文件?
      • 不要使用 Windows 应用和工具更改 Linux 文件!
    • 3.3 换源
  • 4. 安装图形界面
    • 4.1 Xfce4 + VcXsrv
      • (1)安装 VcXsrv
      • (2)安装 Xfce4 桌面
      • (3)设置与启动桌面
    • 4.2 Gnome + VcXsrv
      • (1)安装 VcXsrv
      • (2)安装 Gnome 图形界面
      • (3)设置 systemd
      • (4)设置与启动桌面
  • 参考链接

前言:最近刚换一台新的电脑,在准备安装 Win10 / Linux 双系统时,了解到 Win10 推出了 WSL 功能,于是决定体验一下。

1. WSL 简介

1.1 什么是 WSL ?

要想使用 Linux 系统,以前通常有两种方式:(1)使用虚拟机,(2)直接使用 Linux 系统。使用虚拟机时开销较大;直接使用 Linux 系统虽然可以带来最流畅的体验,但是与 Windows 系统之间进行切换时比较麻烦,一次只能使用一个系统。

为此,微软开发了适用于 Linux 的 Windows 子系统,称为 WSL,可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。简单点来说,有了 WSL,就可以在 Windows 系统中像运行软件一样运行 Linux 系统。

1.2 WSL1 与 WSL2

在这里插入图片描述
将适用于 Linux 的 Windows 子系统从 WSL 1 升级到 WSL 2 的主要区别和优势是:

  • 提高文件系统性能,
  • 支持完全的系统调用兼容性。

WSL 2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL 2 不是传统的 VM 体验。

2. 安装 WSL

2.1 安装 WSL1

(1)启用“适用于 Linux 的 Windows 子系统”可选功能

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。可以使用命令行的方式,也可以使用图形界面的方式。

图形界面方式

在【设置 -> 更新与安全->开发者选项】中开启【开发人员模式】
在这里插入图片描述
在【程序和功能 -> 启用或关闭 Windows 功能】中勾选【适用于 Linux 的 Windows 子系统】
在这里插入图片描述

命令行方式

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

(2)重启电脑

(3)安装 Linux 发行版,如 Ubuntu

在 Microsoft Store 中下载并安装需要的 Linux 发行版
在这里插入图片描述

(4)启动 Linux 子系统

至此,Linux 子系统就相当于 Windows 系统上安装的一个软件,可以在开始菜单子启动。

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。
在这里插入图片描述
至此,已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

可打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 18362 或更高版本中可用),检查分配给每个已安装的 Linux 分发版的 WSL 版本:wsl -l -v

PS C:\Users\user-name> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

2.2 升级到 WSL2

(1)开启“虚拟机平台”可选功能

同样地,可以采用图形界面的操作方式,也可以采用命令行的方式。

图形界面方式
在之前的基础上,勾选【虚拟机平台】。
在这里插入图片描述
命令行方式

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

(2)重启电脑

(3)下载 Linux 内核更新包

下载最新包:适用于 x64 计算机的 WSL Linux 内核更新包

然后双击运行,安装
在这里插入图片描述

(4)设置 WSL 版本

PS C:\Users\user-name> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。

说明:

  • 若要将分发版设置为受某一 WSL 版本支持,请运行:
wsl --set-version <distribution name> <versionNumber>

请确保将 <distribution name> 替换为你的分发版的实际名称,并将 <versionNumber> 替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

  • 如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:
wsl --set-default-version 2

从 WSL 1 更新到 WSL 2 可能需要几分钟才能完成,具体取决于目标分发版的大小。如果--set-default-version 未列出,则表示你的 OS 不支持它,你需要更新到版本 1903(内部版本 18362)或更高版本。

3. 使用 WSL

3.1 启动和退出 Linux 子系统

进入 Linux 子系统有以下几种方式:
(1)和正常软件一样启动,如在开始菜单中点击其图标、双击桌面快捷方式
(2)在 Windows 中打开一个终端,如 PowerShell,输入命令wsl
(3)在终端中输入命令Linux 发行版名称.exe,如ubuntu20.04.exe

退出 Linux 子系统的方式:
(1)直接关闭终端
(2)在终端中输入命令exit,此时退出了 WSL,然后输入命令 wsl -t Ubuntu-20.04,关闭 ubuntu 子系统。

  1. 使用 wsl命令进入 Linux 子系统时,进入的目录是当前打开终端的位置,使用 PowerShell 终端时,所在位置为/mnt/c/Users/windows-login-name。使用 ubuntu2004.exe命令进入 Linux 子系统时,进入的目录是所在位置为/home/linux-login-name

  2. 常用的 wsl 命令:

# 列出所有分发的名称、运行状态、对应的 WSL 版本
wsl -l -v
# 终止指定的 Linux 分发
wsl -t <distro>
# 注销分发
wsl --unregister <distro>
# 终止所有正在运行的分发和 WSL2 轻型工具虚拟机
wsl --shutdown

3.2 文件系统

如何在 Linux 应用中使用 Windows 文件?

WSL 的优势之一是可以通过 Windows 和 Linux 应用或工具访问文件。

WSL 将计算机的固定驱动器装载到 Linux 分发版中的 /mnt/<drive> 文件夹下。 例如,你的 C: 驱动器装载在/mnt/c/

例如,使用装载的驱动器,可以使用 Visual Studio 或 VS Code 编辑 C:\dev\myproj\ 中的代码,并通过 /mnt/c/dev/myproj 访问相同的文件,在 Linux 中生成/测试该代码。

重要说明: 使用 WSL 的主要限制之一是不支持使用 Windows 应用或工具直接访问/更改 Linux 发行版文件系统中的文件。

不要使用 Windows 应用和工具更改 Linux 文件!

C:\Users\windows-login-name\AppData\Local\Packages\目录下有一个以CanonicalGroupLimited开头的文件夹,Linux 子系统相关的文件都存储在该文件夹里面。需要特别注意的是:任何情况下都不要使用 Windows 应用和工具更改该目录里面的 Linux 文件!
在这里插入图片描述
正确的做法:
将工作文件存放在 Windows 文件系统中,这样不仅能够在 Windows 中直接进行访问,还能在 Linux 中通过 /mnt/<drive>/<path> (例如 /mnt/c/dev/project/...) 进行访问,从而避免了在 Windows 和 Linux 系统中来回拷贝文件。

总之,为了避免丢失文件或污染文件数据,需要遵循下面三条准则:

  • 如果想要使用 Windows 和 Linux 工具访问、创建、修改文件,请将文件存储在Windows 文件系统中。
  • 通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件时,请使用 \\wsl$\<DistroName>\
  • 千万不要使用寻找 AppData目录中的文件的方式,通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件。

计算机的存储设备上存储了与每个文件、目录相关的文件元数据(例如:权限、拥有者、时间戳等),Windows 和 Linux 中文件元数据的表示方式是不同的。因此,通过 Windows 应用、工具、脚本、终端来访问、创建、修改位于AppData目录中的 Linux 子系统中的文件时,会造成数据污染或损坏 Linux 环境,导致需要卸载和重新安装 Linux 子系统。

3.3 换源

使用 Linux 子系统时,为了提高软件的安装速度,需要将软件源换成国内的镜像源。

(1)备份原来的数据源配置文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

(2)修改数据源配置文件

sudo vi /etc/apt/sources.list

这里使用中科大的源 (此处是 20.04 版本的源,对应版本名称为focal,如果是其他版本则替换为对应的版本名即可)。

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

i键进入编辑模式,修改后,按 ESC 键退出编辑模式,输入:wq保存并退出。

(3)更新源,升级软件(可选):

sudo apt-get update
sudo apt-get upgrade

4. 安装图形界面

WSL 工具的目的是使用户能够视需要在 Windows 上运行 Bash 和核心 Linux 命令行工具。WSL 尚不支持 GUI 桌面或应用程序 (例如 Gnome、KDE 等) 。

对于 Linux 技术使用得还不太熟练的可以自行安装图形界面,以方便使用。

安装图形界面有多种方案可供选择,下面介绍其中使用最多的两种。

取决于使用的是 WSL1 还是 WSL2、Ubuntu 18.04 及以下版本还是 Ubuntu 20.04 版本,图形界面的安装方法有所不同。

4.1 Xfce4 + VcXsrv

安装 xfce4 桌面,然后设置 xrdp 远程连接,再使用 VcXsrv 进行显示(也可以用 VNC 软件进行显示)。

(1)安装 VcXsrv

X-Windows 显示服务器程序有多种:VcXsrv Windows X Server、Xming、Cygwin X Server。这里选择 VcXsrv,免费开源,在 SourceForget 上评价不错,下载地址为 https://sourceforge.net/projects/vcxsrv/

下载后安装,打开XLaunch,选择:“one large window”,Display number 设置成0,
在这里插入图片描述
选择【start no client】
在这里插入图片描述
勾选 【Disable access control】
在这里插入图片描述

可以点击 【save configuration】,将配置保存为文件,下次直接打开配置文件就可以了。
在这里插入图片描述
点击完成后,将会弹出一个黑色窗口,开始监听 Linux 的显示服务请求。

(2)安装 Xfce4 桌面

Xfce 是一种轻量级的桌面,基于GTK2.0,和旧版 Gnome 界面类似,可以运行在很多 Linux 发行版上,包括 Ubuntu 。

sudo apt-get install xfce4

(3)设置与启动桌面

设置显示器的地址。

sudo vim ~/.bashrc
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
source ~/.bashrc

实际上,上面的做法等价于:
在 Windows 中打开 PowerShell,输入 ipconfig 命令,可以查看到 Windows 与 Ubuntu 虚拟机进行通信的网络地址。
在这里插入图片描述
然后,通过 export DISPLAY=192.168.104.97:0命令告诉桌面程序应该去哪里寻找在本地运行的 X 服务器。

然后启动桌面

startxfce4

此时,在 XLaunch 中就可以看到 Ubuntu 系统的 xfce4 桌面。
在这里插入图片描述

该方法适用于 WSL2 的各种 Ubuntu 版本。

4.2 Gnome + VcXsrv

给 WLS2 的 Ubuntu 20.04 系统安装 Gnome 桌面的麻烦之处在于:Ubuntu 20.04 默认安装的 gnome 版本是高于 3.34 的,gnome 从这一版本开始就完全依赖 systemd 了,而 WSL 2 默认不是以 systemd 作为初始化进程,因此无法直接运行 gnome 桌面。

(1)安装 VcXsrv

同 4.1 节。

(2)安装 Gnome 图形界面

安装 gnome 桌面:

sudo apt install ubuntu-desktop

(3)设置 systemd

WSL2 默认不是以 systemd作为初始化进程,所以无法使用systemctl,使用systemctl时会出现以下提示:

System has not been booted with systemd as init system (PID 1). Can't operate.

为了使 WSL2 支持 systemd ,有人写了一个脚本 ubuntu-wsl2-systemd-script 。从 github 上下载该脚本并运行,

git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh

然后重启 Ubuntu 系统。此时再次运行systemctl命令,发现能正常运行。

user-name:~$ systemctl 
  UNIT                                                                         >
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fc785225\x2d9131\x2d>
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d>
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d>
  sys-devices-platform-serial8250-tty-ttyS0.device                             >
  sys-devices-platform-serial8250-tty-ttyS1.device                             >
  sys-devices-platform-serial8250-tty-ttyS2.device                             >
  sys-devices-platform-serial8250-tty-ttyS3.device                             >
  sys-devices-virtual-block-ram0.device                                        >
  sys-devices-virtual-block-ram1.device                                        >
  sys-devices-virtual-block-ram10.device                                       >
  sys-devices-virtual-block-ram11.device                                       >
  sys-devices-virtual-block-ram12.device                                       >
  sys-devices-virtual-block-ram13.device                                       >
  sys-devices-virtual-block-ram14.device                                       >
  sys-devices-virtual-block-ram15.device                                       >
  sys-devices-virtual-block-ram2.device                                        >
  sys-devices-virtual-block-ram3.device                                        >
  sys-devices-virtual-block-ram4.device                                        >
  sys-devices-virtual-block-ram5.device                                        >
  sys-devices-virtual-block-ram6.device                                        >
  sys-devices-virtual-block-ram7.device                                        >
  sys-devices-virtual-block-ram8.device                                        >
lines 1-23

Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。systemctl是 Systemd 的主命令,用于管理系统。

(4)设置与启动桌面

输入sudo vi ~/.bashrc,在文件末尾添加:

export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11

保存后退出,并使用source ~/.bashrc使修改生效。

然后启动桌面,

gnome-session

此时,在 XLaunch 中就可以看到 Ubuntu 系统的 gnome 桌面。
在这里插入图片描述

  1. Ubuntu 18.04 默认安装的 gnome 版本是 3.28.1,不依赖于systemd,因此不需要设置systemd就可以运行 gnome 桌面。
  2. 对于Ubuntu 20.04,也可以选择 Cinnamon 桌面,因为 Cinnamon 是基于 gnome 的老版本改的,不依赖于 systemd 。
sudo apt install cinnamon-desktop-environment lightdm
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
cinnamon-session &

参考链接

  1. Microsoft 官方文档
  2. Win10安装Ubuntu子系统及图形化界面详细教程
  3. wsl2(win10 Linux子系统)图形界面的安装,wsl同理
  4. win10创建Ubuntu16.04子系统,安装常用软件以及图形界面(包括win10远程桌面连接Ubuntu)
  5. WSL2 Ubuntu图形界面使用指南
  6. wsl2 ubuntu Gnome 桌面
  7. WSL2中的Ubuntu上运行GNOME的问题
  8. WSL启用systemd
  9. Systemd 入门教程:命令篇
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 ) 的相关文章

  • join函数

    Python中我们经常会用到join函数 join函数的基本格式是 xff1a span class token string 39 39 span span class token punctuation span join span c
  • Glance详解

    Glance简介 Glance是OpenStack平台中负责镜像服务的组件 xff0c 其功能包括系统镜像的查找 注册和获取等 简单来说glance的功能就是用户可以通过其提供的REST API查询和获取镜像元数据 xff0c 通过Glan
  • 深入理解k8s中的service概念

    文章目录 service的概念kube proxy的作用kube proxy的三种模式Userspace Proxy ModeIptables Proxy ModeIPVS proxy mode service的概念 在k8s集群中 xff
  • Java_Save could not be completed. Try File> Save As. if the problem persists.

    所以最好不要用 开头的符号作为变量名 xff0c 变量名中含有一些奇怪的字符也会产生编码问题
  • Cinder详解

    文章目录 理解cindercinder架构cinder apicinder volumecinder schedulervolume providercinder DB cinder设计思想 理解cinder 操作系统得到存储空间一般有两种
  • shell:重启&&关机

    文章目录 shutdownhaltpoweroffrebootinitsync shutdown 关机重启命令 shutdown h 10十分钟后关机shutdown h 0马上关机shutdown h now马上关机shutdown c取
  • 基于docker的Jenkins-Gitlab-Ansible实现自动化部署

    环境准备 安装docker xff0c 略 拉取Jenkins Gitlab镜像 docker pull jenkins docker pull gitlab ce 部署 Jenkins 生成Jenkins span class token
  • SSH远程登录出现的常见问题与解决方法

    运维工程师经常会使用ssh远程登录主机 ssh的使用并不复杂 xff0c 但是也有可能会遇到各种各样的错误 xff0c 我在本篇博文中总结了一些常见的ssh报错信息与解决方法 Connection refused 可能原因 xff1a 网络
  • 从两个角度理解Kubernetes基本概念

    想要理解Kubernetes集群首先要思考两个问题 xff1a 它是由什么组成的 它是怎样工作的 而想要搞清楚这两个问题我们可以在两个不同的层面寻找答案 从物理层面看 从直观的层面来看 xff0c Kubernetes将多个物理机或虚拟机汇
  • 基于CentOS 7.6搭建Kubernetes 1.17.3集群demo

    本demo仅涉及基本的Kubernetes功能实践与介绍 xff0c 无高可用配置 部署版本为当前时间阿里开源镜像站提供的最新版本1 17 3 文章目录 部署环境安装准备域名解析关闭SELinux和防火墙配置yum源时间同步禁用swap加载
  • 为Kubernetes部署dashboard组件

    dashboard是Kubernetes社区中一个很受欢迎的开源项目 xff0c 它可以为使用者提供一个可视化web界面来进行Kubernetes的管理和使用 环境信息 组件版本Kubernetesv1 17 3dashboardv2 0
  • linux UIO驱动实践

    linux UIO驱动实践 环境搭建platform 设备驱动UIO驱动 环境搭建 Ubuntu20地址 虚拟机安装与配置见博客开头 xff1a 驱动虚拟环境搭建记录 一直以为用镜像直接安装的Ubuntu没有内核源码 xff0c 不能用来编
  • STM32F429+FreeRTOS队列 串口DMA双缓存数据接收

    前言 最近做项目需要用到数据大量数据处理的应用场景 xff0c 本来想使用串口空闲中断 43 DMA传输 43 FreeRTOS队列的方式接收数据 xff0c 然而实际使用中发现效果不理想 xff0c 经常丢包 最后查明原因为在空闲中断频繁
  • 世界上最经典的25句话

    1 记住该记住的 xff0c 忘记该忘记的 改变能改变的 xff0c 接受不能改变的 2 能冲刷一切的除了眼泪 xff0c 就是时间 xff0c 以时间来推移感情 xff0c 时间越长 xff0c 冲突越淡 xff0c 仿佛不断稀释的茶 3
  • Makefile详解——从入门到精通

    转自ChinaUnix xff0c 作者gunguymadman xff0c 陈皓 链接地址 xff1a http www chinaunix net jh 23 408225 html 陈皓 CSDN 博客 xff1a http blog
  • FreeRTOS事件标志组与事件标志位使用

    事件标志位 事件位用于指示事件是否发生 也叫做事件标志位 可用位表示 xff1a 当信息收到且准备好处理时 xff0c 设置为1 xff1b 当没有收到信息且等待处理时 xff0c 设置为0 事件标志组 事件标志组是一组事件位 xff0c
  • 结合图片看常用串口通信UART

    结合图片看常用串口通信UART UART是一种通用串行数据总线 xff0c 用于异步通信 该总线双向通信 xff0c 可以实现全双工传输和接收 在嵌入式设计中 xff0c UART用于主机与辅助设备通信 xff0c 如汽车音响与外接AP之间
  • 浅谈面向对象设计思想,以及在Linux内核中的体现

    面向对象编程 xff08 OOP xff09 xff0c 是一种设计思想或者架构风格 OO语言之父Alan Kay xff0c Smalltalk的发明人 xff0c 在谈到OOP时是这样说的 xff1a OOP应该体现一种网状结构 xff
  • STM32F4移植FreeRTOS

    在之前的文章 xff1a FreeRTOS全解析 2 源码结构与移植 中我们已经讲解过FreeRTOS移植的方法 xff0c 并且给出了一个在ARM9上移植的例子 xff0c 今天再来看一个例子 xff1a 板子的芯片为STM32F407
  • 彻底掌握FreeRTOS中的任务

    FreeRTOS是个操作系统 xff0c FreeRTOS的任务 task 其实就是像我们电脑中的一个独立程序 xff0c 表现在源码中 xff0c 其实就是一个函数 本文从学会使用任务 task 到理解逐步深入 参考资料 xff1a Ma

随机推荐

  • FreeRTOS任务之调度器中的三种调度算法

    本文主要讲解FreeRTOS调度器中的三种调度算法 xff1a 基于时间片的抢占式调度 不带时间片的抢占式调度和协同调度 前导文章 xff1a FreeRTOS全解析 3 任务 xff08 task xff09 参考资料 xff1a Mas
  • 彻底理解FreeRTOS中的队列(Queue)

    队列 xff08 Queue xff09 提供了任务与任务之间通信的机制 在这样的场景 xff1a 一个或多个其他的任务产生数据 xff0c 主任务要依次处理数据 xff0c 队列就显得非常有用了 参考资料 xff1a Mastering
  • 简单路由器DIY

    一 关于路由器 路由器 xff08 Route xff09 是一种负责寻径的系统 xff0c 在互连网络中从多条路径中寻找通讯量最少的一条网络路径提供给用户通信 它使用寻径协议来获得网络信息 xff0c 采用基于 34 寻径矩阵 34 的寻
  • DOS那一代的程序员现在都干嘛呢?

    亿友论坛 DOS那一代的程序员现在都干嘛呢 xff1f xff08 几年前的老帖子 xff09 作者 xff1a 包子夹蛋 发布时间 xff1a 2005 5 10 14 01 00 DOS那一代的程序员现在都干嘛呢 xff1f xff08
  • switch case的用法

    switch case的用法如下 1 Switch用在编程中 xff0c 如C语言中它经常跟Case一起使用 xff0c 是一个判断选择代码 其功能就是控制流程流转的 直线翻译 xff1a switch语句 xff0c 即 切换 语句 xf
  • Rust嵌入式:只使用寄存器为STM32点灯;从查手册开始

    为什么是 只使用寄存器 网上很多教程都是直接调用对应芯片的HAL库 xff0c 让初学者认为操作都被Rust嵌入式开源组封装好了 xff0c 直接调就好 这在目前Rust嵌入式生态还不成熟的情况下可能是个误解 实际上Rust嵌入式有自己独特
  • epoll_wait 中timeout参数的损耗和如何避免

    ccd 100qps xff0c dcc 4wqps
  • ubuntu和windows双系统默认启动顺序

    在安装了双系统后 xff0c 一般的默认启动ubuntu xff0c 但我实际可能使用windows会比较多 xff0c 为解决这个问题 xff0c 必须要更改默认顺序 xff0c 以达到方便我们使用的效果 方法 xff1a 开机界面会有显
  • 深度学习优化算法

    深度学习各类优化器 借用古代炼丹的一些名词 xff0c 我们可以把训练模型中的数据比做炼丹药材 xff0c 模型比做炼丹炉 xff0c 火候比做优化器 那么我们知道 xff0c 同样的药材同样的炼丹炉 xff0c 但是火候不一样的话 xff
  • yolov3

    YOLOv3 YOLOv3的总体网络架构图 可根据官方代码中的yolov3 cfg进行一一对应 xff0c 标号 0 0 0 是第一个 convolutional Darknet 53 和DarkNet 19一样 xff0c 同样下采样32
  • SSH远程连接报错:kex_exchange_identification: Connection closed by remote host

    突然出现问题 xff1a kex exchange identification Connection closed by remote host 解决方法 删除known hosts xff0c 重启终端即可
  • Dronekit——Introduction

    Dronekit Introduction 参考 xff1a http python dronekit io about overview html 关于Dronekit DroneKit Python允许开发人员创建 在板载协同计算机上运
  • Run dronekit scripts by SITL on Linux 执行dronekit 脚本在Linux系统下模拟飞行

    参考 xff1a http ardupilot org dev docs setting up sitl on linux html Overview The SITL simulator allows you to run Plane C
  • SLAM从入门到放肆——SLAM简述

    SLAM 同时定位与建图 xff08 simultaneous localization and mapping xff0c SLAM xff09 是自动驾驶与增强现实领域中常用的技术 主要研究装置通过各种传感器在未知环境中的感知与定位问题
  • 关于NoDriveTypeAutoRun的键值

    最近在写一个修改注册表的驱动 xff0c 只是为了好玩 xff0c 也算是一个恶搞驱动吧 xff01 遇到一个问题 xff0c 花了我差不多两天的时间的 xff0c 详情往下看 写这篇文章 xff0c 为了记住这个教训 xff0c 一个提供
  • 闭包的实现原理和作用、以及内存泄露

    一 闭包的实现原理和作用 xff0c 可以列举几个开发中闭包的实际应用 1 闭包的概念 xff1a 指有权访问另一个函数作用域中的变量的函数 xff0c 一般情况就是在一个函数中包含另一个函数 2 闭包的作用 xff1a 访问函数内部变量
  • PX4 SITL Gazebo 仿真时 libgazebo_multirotor_base_plugin 插件运行时出错

    PX4 SITL Gazebo 仿真时 libgazebo multirotor base plugin 插件运行时出错 问题描述原因分析解决办法总结 问题描述 在 Gazebo 中进行 PX4 的软件在环仿真时 xff0c 执 make
  • Jetson AGX Xavier 正确上手教程

    概览 1 开机1 1 配件1 2 需要准备的器材1 3 连接设备 2 刷机2 1 更换主机的 apt get 源2 2 在主机上安装 SDK ManagerStep 1Step xff12 Step xff13 烧录 OS 镜像安装 SDK
  • Matplotlib绘图显示缺少中文字体-RuntimeWarning: Glyph 8722 missing from current font.

    pyplot 并不默认支持中文显示 xff0c 也没有自带中文字体 xff0c 因此需要自行下载所需字体 xff0c 并修改 rcParams 参数来显示中文 下面以 SimHei xff08 黑体 xff09 字体为例进行说明 说明 xf
  • Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )

    Win10 系统安装 Linux 子系统教程 WSL2 43 Ubuntu 20 04 43 Gnome 桌面 xff09 1 WSL 简介1 1 什么是 WSL xff1f 1 2 WSL1 与 WSL2 2 安装 WSL2 1 安装 W