OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)

2023-05-16

OrangePi5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)

说明

本文的软路由作为家中的二级路由,用一根网线连接主路由的LAN口和二级路由的WAN口(当主路由使用配置类似)

如果你想要作为旁路由或中继路由使用,在本文末尾会有相应文章的链接,但是Docker以及网卡的配置有一些坑建议参考本文。

准备

在开始安装之前,你需要准备好一些设备。

  • OrangePi5(其他版本或者树莓派都可以)
  • 刷有系统的TF卡(以香橙派官方提供的Ubuntu镜像)
  • 电源
  • 一个USB的网卡(我这里用的是绿联的千兆网口,型号是AX88179。如果你的设备有多个网口的话就可以不用这个了)
  • 双绞线若干

首先将香橙派组装好,插上USB网卡并在设备自带的网口上插上网线(网线另一端为主路由器的LAN),通电,进入系统(刷系统以及SSH配置等环节不是本文重点,详细看我以前文章或自行百度,本文默认基本环境已经配置完成并且读者能在终端简单使用vim等)

如果你要拿本设备当作主路由使用,但是身边没有其他路由器可用来帮助配置,可以将PC的网口与设备的网口用一根网线对等连接,只不过PC的默认网关必须手动设置为设备的IP地址。对等配置的方法可参考文章双网口主机通过 docker 安装 openwrt 实现软路由功能-CSDN

连接设备

使用你的PC通过SSH连接香橙派,或者直接在香橙派上接屏幕和键盘在终端中执行

网卡配置

获取信息

在终端中执行以下命令检验USB网卡是否挂载

lsusb

如果出现对应的设备信息,应该就是成功了(这里的AX88179就是我的USB网卡)

Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet

再执行以下命令

ifconfig

一般设备自带的名称为eth0,记录它被分配的IPv4地址及子网掩码。

而USB的网卡名称与品牌和型号有关,我的名称是enx后面跟上mac地址,这需要根据你自己的情况做判断,本文以enx名称为例。(如果设备是双网口而不是用的USB网卡的话,此处应该是eth1,若果是无线网卡的话应该是wlan0。不绝对,仅供参考)

除此之外我们还要拿到默认网关的地址(默认网关一般是所连接的路由器的地址)

route -n

找到Destination字段为0.0.0.0的那一行的Gateway字段对应的地址即为默认网关

例如我拿到的ip为192.168.1.24,子网掩码为255.255.255.0,默认网关为192.168.1.1,下文将以此地址为例进行配置(你的可能跟我不一样,在配置的时候以你为准)。

另外补充一点,我们会在接下来将eth0对应的网口作为WAN口,env对应的外接USB网口作为LAN口。

开启网卡的混杂模式

执行以下命令,将上述网卡设置成混杂模式

ip link set eth0 promisc on
ip link set env promisc on

要取消的话将上述命令的on改为off即可

开启ipv4转发

修改配置文件

vim /etc/sysctl.conf

添加一行配置

net.ipv4.ip_forward = 1

或者将原文件中的net.ipv4.ip_forward = 1注释给取消

esc+:,并输入wq保存文件后执行命令重新添加配置

sysctl -p /etc/sysctl.conf

Docker配置

安装Docker

执行以下命令

sudo apt update
sudo apt install docker

配置Docker服务开机启动

在我的设备上(OrangePi 5)总是存在设备重启,但是OpenWRT不启动的现象,即使我已经将Docker容器设为了开机自启。最后发现是Docker本身的服务没有设为开机自启。

目前对于树莓派是否会有这种情况暂不明确,读者可自行使用下放命令进行验证。

systemctl list-unit-files | grep docker

找到输出结果的docker.service一行

docker.service  disabled  enabled
docker.socket   enabled   enabled

如果如上所示,是disabled,那么说明Docker本身的服务并不是开机自启动

通过以下命令可进行修改

systemctl enable docker.service

再执行systemctl list-unit-files | grep docker输出结果变成了enabled即修改成功

docker.service  enabled  enabled
docker.socket   enabled  enabled

获取Docker镜像

由于OrangePi5是arm架构的,所以使用的镜像必须是兼容arm的

我用的是suling大佬制作的Docker镜像,这里附上Docker Hub链接

Docker Hub: https://hub.docker.com/r/sulinggg/openwrt

注意,这里与你的设备有关,本文只给出树莓派和armv8/aarch64的镜像获取操作。为方便参考,此处附上一张镜像对应设备的表格(不代表最新),但仍建议访问上述链接查看适配你设备的镜像

支持设备/平台DockerHub阿里云镜像仓库 (上海)
树莓派 1Bsulinggg/openwrt:rpi1registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi1
树莓派 2Bsulinggg/openwrt:rpi2registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi2
树莓派 3B / 3B+sulinggg/openwrt:rpi3registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi3
树莓派 4Bsulinggg/openwrt:rpi4registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi4
armv7sulinggg/openwrt:armv7registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv7
arm8/aarch64sulinggg/openwrt:armv8registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv8
i386_pentium4/386sulinggg/openwrt:386registry.cn-shanghai.aliyuncs.com/suling/openwrt:386
x86_64/amd64sulinggg/openwrt:x86_64registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64
  • 如果你的设备为OrangePi5或者其他armv8/aarch64的设备,请在终端中执行下方命令
docker pull sulinggg/openwrt:armv8
  • 如果你的设备为树莓派2B/3B/3B+/4B,请在终端执行下方命令
docker pull sulinggg/openwrt:latest

创建WAN端口的macvlan

macvlan是linux的一种虚拟化网卡技术,可将一块物理网卡虚拟成多块虚拟网卡,并且每个虚拟网卡都可以将其虚拟mac并且指定相应的IP地址。

使用以下命令可查看系统是否支持macvlan。

modprobe macvlan

如果不支持,则需要升级Linux内核。(像OrangePi5、树莓派等官方提供的最新镜像一般都是支持的)

创建WAN端口的macvlan,名称为macnet0

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet0

注意,这里需要根据上述获取到的地址来配置(根据你的实际情况来填)。subnet字段对应端口所处的网络地址192.168.1.0/24,其中的/24为子网掩码对应255.255.255.0gateway字段对应默认网关192.168.1.1parent对应网卡。

可执行下方命令,验证是否创建成功

docker network ls

如果输出结果的NAME字段那一列有macnet0即成功。

LAN端口的macvlan暂不创建。

启动容器

此处请先阅读参数说明再执行命令!

docker run -d --restart always --network macnet0 --ip 192.168.1.100 --privileged --name openwrt sulinggg/openwrt:armv8 /sbin/init

简单说明下几个参数:

  • --restart always为开机自启
  • --network macnet0为我们刚才创建的WAN端口的macvlan
  • --ip 192.168.1.100是为容器分配的ip地址,这里需要注意网段与eth0获取的一致,并且不能够冲突(也就是说当前网络下不能有其他设备的地址为192.168.1.100)。需根据自己的实际情况来配置。
  • --privileged为特权模式
  • --name openwrt容器名称为openwrt
  • sulinggg/openwrt:armv8对应刚才获取的镜像。如果你的设备是树莓派,并且是按照我文章上方的命令获取的,则此处为sulinggg/openwrt:latest。其他设备则须根据你获取的镜像来写。

进入容器

端口配置

输入命令即可进入容器

docker exec -it openwrt bash

Ps: 输入exit可退出容器终端

配置文件

vim /etc/config/network

将字段(不要在意这个名称,之后我们会改)

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.123.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.123.1'
        option broadcast '192.168.123.255'
        option dns '192.168.123.1'

修改为(还是根据上文和你的实际情况来)

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.1.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.1.1'
        option broadcast '192.168.1.255'
        option dns '192.168.1.1'

其中

  • ipaddr后的地址与Docker容器分配的地址一致
  • netmask后为之前获取的子网掩码
  • gateway后为之前获取的默认网关
  • broadcast后为广播地址,改成同一网段
  • dns后为dns地址,此处保持与默认网关一致

esc+:,并输入wq保存文件

重启容器网络

/etc/init.d/network restart

创建LAN端口的macvlan

LAN端口的macvlan的网段可以根据你的需要人为规划,我这里以网卡env和网段192.168.2.x/24为例

创建LAN端口macvlan,名称为macnet1

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=env macnet1

参数的含义同上文

然后,我们将容器加入到这个网络来。

docker networkc connect macnet1 openwrt

OpenWRT管理页面配置

进入管理页面

将你的PC连接到与软路由的WAN端口同一网络下,并在浏览器地址栏中输入192.168.1.100

这里的地址与上文中容器分配的地址一致,同样根据你的实际情况来。

用户名是root,默认密码为password

LAN接口配置

在默认配置中,名称为lan的接口实际上是WAN接口,这里我们再另外创建接口。

打开网络->接口,点击页面中的添加新接口,名称为LANS,协议为静态地址,以太网适配器选eth1(这里的eth1不是宿主机的,而是对应macnet1)

提交后,我们对此接口进行修改。配置如下图所示(IP地址与macnet1网段一致)

然后防火墙设置为lan区域

页面底部,取消下图中的勾选,在此端口开启DHCP服务器

然后在高级设置里,开启动态DHCP和强制DHCP

最后,点击保存&应用按钮。

防火墙设置

为了让PC能从WAN侧去访问OpenWRT,将网络->防火墙 WAN区域的入站从拒绝改为接受

点击应用&保存。

WAN接口配置

wan接口配置建议将PC连接到USB网口,然后通过地址192.168.2.1进入管理界面,因为接下来会将原有的名称为lan的接口删掉,操作不慎可能会导致当前页面无法访问。

如果连接到USB网口,PC无法通过DHCP服务获取IP,并且在PC控制台中尝试Ping命令

ping 192.168.2.1

若无法访问网关,则可以在PC上将获取IP地址的获取方式改为静态,并将设置本机IP为192.168.2.2(只要在同网段且不冲突即可),默认网关为192.168.2.1,子网掩码为255.255.255.0


首先还是创建接口,协议推荐选择静态,以太网适配器选择eth0

(如果你要将这个设备之后作为主路由的话,光猫模式为桥接模式,这里要改成PPPoE;如果光猫为PPPoE的话,这里就要设成DHCP)

创建完成后,点击修改,配置如下图。

防火墙与DHCP配置如下

点击保存&应用按钮。

删除原有接口

最后我们要回到网络->接口页面,删除原有的名称为lan的接口

添加静态路由

完成上述步骤你会发现LAN一侧可能无法上网,这时候添加一条静态路由规则

打开网络->静态路由,在静态IPv4路由那里点击添加

接口选择LANS,对象为192.168.2.0,子网掩码为255.255.255.0,IPv4网关为WAN口地址192.168.1.100

这时候我们回到Docker容器内终端中(注意是容器内),重启下网络

/etc/init.d/network restart

问题

LAN侧无法上网

上述配置完成后,LAN侧接入PC无法仍旧无法上网

步骤一

重启宿主机

步骤二

如果步骤一没解决问题,并且LAN侧PC访问网页显示找不到DNS服务器,可以尝试以下配置

进入到Docker容器

docker exec -it openwrt bash

打开文件

vim /etc/resolv.conf

最下方添加

nameserver 8.8.8.8

保存并重启容器网络

/etc/init.d/network restart

按理来讲是不用配置这一步的,即使修改了文件也会被管理页面的配置覆盖。但是非常邪门,在我的设备上不进行这一步会出一些上不去网的现象。请读者根据自己的情况来判断吧。(如果你不懂这些东西,建议照做)

容器网络无法访问宿主机

Docker为了保证安全性,是不允许容器去访问宿主机的,但是并不绝对可以通过配置去绕过限制

可以参考 https://www.treesir.pub/post/n1-docker/

网卡混杂重启失效问题

我在OrangePi 5 上进行配置的时候并未遇到过这种情况,但网上许多文章都提到了这种现象,所以我就写了这部分内容。

此部分参考了https://www.cnblogs.com/mokou/p/16173553.html

写个开机启动的脚本就好了

vim /etc/init.d/iplinkset.sh

写入内容

#!/bin/sh
ip link set eth0 promisc on
ip link set env promisc on

增加可执行权限

chmod +x /etc/init.d/iplinkset.sh

设置开机启动权限

update-rc.d iplinkset.sh defaults

如果要禁用开机启动,则可执行下方命令

update-rc.d -f iplinkset.sh remove

对OpenWRT容器停止或删除导致宿主机卡顿或重启

这点在Docker镜像作者的文章中提到过,原文如下:在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明

OpenWRT插件问题

同样源于镜像作者文章:经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常

其他配置

有些人的需求不一定跟我一样,可能会把设备拿来做旁路由等,可部分参考下方文章

  • 旁路由(这是本文使用的Docker镜像作者的文章,比较详细):https://mlapp.cn/376.html
  • 主路由:https://www.cnblogs.com/mokou/p/16173553.html

结束

由于作者写这篇教程的时候已经搭建完成了,加上时间仓促,上述部分操作是根据回忆来写的,甚至有些步骤没有经过二次验证,可能存在些许错误,如有发现请及时反馈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备) 的相关文章

  • 计算机视觉方法概述

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 一 资源简介 今天给大家推荐一份最新的计算机视觉方法概述 xff0c 这份综述详细的讲述了当前计算机视觉领域中各种机器学习 xff0c
  • 通俗易懂的YOLO系列(从V1到V5)模型解读!

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 0 前言 本文目的是用尽量浅显易懂的语言让零基础小白能够理解什么是YOLO系列模型 xff0c 以及他们的设计思想和改进思路分别是什么
  • PWM电流源型逆变器

    nbsp nbsp nbsp nbsp 随着科学技术和生产力的发展 各种结构型式和各种控制方法的逆变器相继问世 而就逆变器而言 不管输出要求恒频恒压还是变频变压 有效消除或降低输出谐波是基本要求 因而逆变电源的谐波抑制一直是研究者致力于解决
  • 下划线在 Python 中的特殊含义

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 Python 中的下划线 下划线在 Python 中是有特殊含义的 xff0c 它们在 Python 的不同地方使用 下面是 Pyth
  • UFA-FUSE:一种用于多聚焦图像融合的新型深度监督混合模型

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯 小白决心每天为大家带来经典或者最新论文的解读和分享 xff0c 旨在帮助各位读者快速了
  • 实战 | 如何制作一个SLAM轨迹真值获取装置?

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 本文知乎作者杨小东授权转载 xff0c 未经授权禁止二次转载 原文 xff1a https zhuanlan zhihu com p
  • 通俗易懂理解朴素贝叶斯分类的拉普拉斯平滑

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 这个男生的四个特征是长相不帅 xff0c 性格不好 xff0c 身高矮 xff0c 不上进 xff0c 我们最终得出的结论是女生不嫁
  • 综述 | 激光与视觉融合SLAM

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 SLAM包含了两个主要的任务 xff1a 定位与构图 xff0c 在移动机器人或者自动驾驶中 xff0c 这是一个十分重要的问题 xf
  • KITTI数据集简介与使用

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 摘要 xff1a 本文融合了Are we ready for Autonomous Driving The KITTI Vision
  • DBSCAN聚类算法原理总结

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 DBSCAN是基于密度空间的聚类算法 xff0c 在机器学习和数据挖掘领域有广泛的应用 xff0c 其聚类原理通俗点讲是每个簇类的密度
  • 深度学习GPU最全对比,到底谁才是性价比之王?

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 本文转自AI新媒体量子位 xff08 公众号 ID QbitAI xff09 搞AI xff0c 谁又没有 GPU之惑 xff1f 张
  • 使用卡尔曼滤波器进行对象跟踪时最容易遗漏什么

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 介绍 卡尔曼滤波器是一种复杂的算法 xff0c 在大多数情况下 xff0c 我们在没有完全理解其方程的情况下使用它 当我开始使用卡尔曼
  • 10分钟掌握异常检测

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 异常检测 也称为离群点检测 是检测异常实例的任务 xff0c 异常实例与常规实例非常不同 这些实例称为异常或离群值 xff0c 而正常
  • 根据图像目标深度测试距离

    clc clear close all warning off addpath 39 func 39 计算物体的深度距离 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • SLAM基础环境配置

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 转自知乎作者 xff1a 佳浩 原文链接 xff1a https zhuanlan zhihu com p 385255026 如今
  • 多传感器融合定位:基于滤波的融合方法

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 SLAM 后端的优化方式大体分为滤波和优化 近些年优化越来越成为主流 xff0c 在学习优化之前 xff0c 掌握滤波的工作原理也十分
  • 不要错过!顶会审稿人带读【大语言模型】前沿论文!

    LLaMA GLM 130B SELF INSTRUCT是三篇最新的语言模型相关的论文 xff0c 它们都展示了语言模型在不同方面的创新和突破 这三篇论文都体现了语言模型在双语 大规模 通用 快速 可复现等方面的重要进展 xff0c 对于语
  • 收藏 | 最全深度学习训练过程可视化工具

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 仅作学术分享 xff0c 不代表本公众号立场 xff0c 侵权联系删除 转载于 xff1a 编辑丨极市平台 机器学习实验室 深度学习训
  • 为什么建议大家使用 Linux 开发?真的很很很优雅!

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 编者荐语 Linux 开发不算简单 xff0c 要求同学们掌握的知识广且复杂 xff0c 有一定难度 但是同学们只要静下心来 xff0
  • favicon.ico不显示

    静态页面中 xff0c title前的favicon ico不显示的问题 原因还不详 解决办法 xff1a 清除浏览器缓存或者将favicon ico文件重命名

随机推荐

  • 树莓派系统镜像的下载和烧录

    一 树莓派镜像下载地址 树莓派官网的下载地址 xff1a 树莓派官网 软件安装 可在官网上下载最新的Raspbian树莓派系统 二 树莓派系统镜像烧写 准备 xff1a 一张2G以上的SD卡及读卡器 xff0c 最好是高速卡 xff0c 推
  • TF 坐标变换(已整理)

    文章目录 坐标msg消息静态坐标变换1 C 43 43 实现发布方 demo01 static pub cpp订阅方 demo02 static sub cpp 2 Python实现发布方 demo01 static pub p py订阅方
  • ROS Action通信

    文章目录 自定义action文件 类似msg和service 服务端 action01 server cpp客户端 action02 client cpp服务端 action01 server p py客户端 action02 client
  • 位姿图优化小记2021.10.18

    1 场景描述 现在有一个小车在运动 xff0c 并搭载相机或激光雷达进行建图工作 xff0c 由于SLAM的作用 xff0c 在建图的同时小车也可以进行自身的定位 xff0c 因此建立的地图的参考都是相对于自身坐标系的 xff0c 也就是每
  • 【CRAHNs】CRAHNs网络中多径环境下大规模MIMO接收信道估计均衡技术

    1 软件版本 matlab2017b 2 本算法理论知识 对于大规模MIMO xff0c 通常情况下 xff0c 采用3D MIMO信道来实现 这是由于3D MIMO一般采用大规模的二维天线阵列 xff0c 不仅天线端口数较多 xff0c
  • VINS笔记1——滤波与优化

    1 滤波 1 1 什么是滤波 这里的卡尔曼滤波实际上和信号处理里面的滤波有很大的不同 信号处理里面的滤波 xff0c 假设一个正弦信号有很多毛刺 xff0c 想要对其进行滤波滤除毛刺 信号处理里面的做法是把信号进行FFT变换到频域 xff0
  • Ubuntu设置CMake编译时使用的OpenCV版本

    文章目录 1 方法一 xff1a 统一修改CMakeLists txt文件中的OpenCV版本1 1 具体操作1 2 命令讲解1 2 1 sed命令1 2 2 xargs命令1 2 3 find命令 2 方法二 xff1a 调用cmake命
  • ROS中常见的msg消息类型

    文章目录 1 基本数据类型1 1 三维向量Vector3 msg1 2 标头Header msg1 3 四元数Quaternion msg1 4 空间中三维点Point msg 2 传感器数据类型2 1 Imu msg 3 机器人状态数据类
  • VIO标定工具kalibr和imu_utils的使用

    0 参考资料 Kalibr进行IMU 43 相机的标定 xff1a 这个步骤写的非常好 xff0c 应该是目前看到的最符合的步骤了 使用ROS功能包标定相机内参 Kalibr标定camera IMU详细步骤 xff1a 这篇博客里给出了它的
  • ros功能包安装

    正确指令 xff1a sudo apt get install ros kinetic dwa local planner 以后安装安装包 xff0c 用sudo apt get install ros kinetic 缺少的PACKAGE
  • vins-mono编译问题--rosrun launch问题

    launch is neither a launch file in package nor is a launch file name解决办法 cd catkin ws source devel setup bash catkin ws
  • 软件工程中的框架是什么?什么是框架?

    IT领域 软件工程中所说的框架是什么 xff1f 1 1 什么是框架 xff1f 软件框架 xff08 software framework xff09 的标准定义 xff1a 通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范
  • Docker容器中远程连接实现GUI图形显示的配置方法

    1 输入xhost 43 没有问题的话会提示 access control disabled clients can connect from any host 2 使用echo DISPLAY查看本地显示器localhost 会打印结果
  • HAL库 串口收发函数解析

    一 UART Receive IT 对于CubeMX生成的代码 xff0c USART1 IRQHandler void 函数为了提高中断效率采用了回调机制 xff08 业务代码可以等中断关闭了再去处理 xff0c 这样中断处理不会占用太多
  • c++调用python

    在我们的生活中 xff0c 如果我们想调用其他程序的话 xff0c 往往会需要一些额外的代码 xff0c 比如说我们要调用 python去执行某些函数 在我们使用 python的过程中 xff0c 为了能够调用其他程序 xff0c 我们往往
  • 基于simulink的svm-dtc-adrc控制建模与仿真

    目录 一 理论基础 二 核心程序 三 仿真结论 一 理论基础 永磁电机由于没有励磁绕组和励磁装置 xff0c 不消耗励磁功率 xff0c 对磁极设在转子的电机 如一般同步电机 还可省去滑环和电刷 随着永磁材料和控制技术的发展 xff0c 永
  • 关于自制openmv的一些建议

    从接触到openmv开始一直都想制作一块自己的openmv xff0c 包括从硬件 xff0c 到烧录程序 最开始制作的版本是openmv3 xff0c 其实openmv3并不是属于自己制作 xff0c 而是下载的硬件电路城开源的openm
  • vue3创建文件报“组件名称应该总是由多个单词组成“Component name “index“ should always be multi-word

    在项目根目录下的 eslintrc js 文件中添加 vue multi word component names off 没有该文件就创建一个 module span class token punctuation span export
  • STM32和ARM的区别?

    下面先看一张图 xff1a 这张图是我在意大利与法国合资的意法半导体公司 xff08 ST xff0c 世界几大半导体公司之一 xff09 的官网上看到的 这说明 xff0c STM32是意法半导体公司的产品 意法半导体 xff08 ST
  • OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)

    OrangePi5 Docker下安装OpenWRT作软路由 xff08 同样适用于树莓派等设备 xff09 说明 本文的软路由作为家中的二级路由 xff0c 用一根网线连接主路由的LAN口和二级路由的WAN口 xff08 当主路由使用配置