嵌入式Linux开发环境搭建,三种方式:虚拟机、物理机、WSL
目录
- 总结写前面
- 一、Linux虚拟机
- 1 安装VMware、ubuntu18.04
- 2 换源
- 3 改中文
- 4 中文输入法
- 5 永不息屏
- 6 设置 root 密码
- 7 安装 terminator
- 8 安装 htop(升级版top)
- 9 安装 Vim
- 10 静态IP-虚拟机ubuntu
- 11 安装 ssh
- 12 安装 MobaXterm (SSH)(windows)(汉化)
- 13 安装 FileZilla (SFTP)(windows)
- 14 安装 samba
- 15 安装 nfs
- 16 安装 Vscode remote-ssh(windows)
- 17 遇到的问题:Command 'ifconfig' not found
- 18 遇到的问题:虚拟机突然没网
- 二、Linux物理机(服务器)
- 三、WSL
总结写前面
嵌入式Linux开发,目前了解到三种方式:虚拟机、物理机(服务器)、WSL。
- 虚拟机:个人使用。
- 物理机(服务器):公司用。有旧电脑可以装来玩,旧电脑装Linux系统或双系统,放家里当服务器用,就是性能太差。没有公网IP,需要用内网穿透软件,才能远程操作服务器,网速太低,用SSH远程命令行没啥问题,传文件太慢。总结就是太穷了,性能低、网速慢,玩不起来。(组高性能台式机+公网IP)
- WSL:待测。
具体而言,涉及到一些技术和软件的选择,包括了windows与linux之间的:远程命令行、文件传输、文件夹共享、代码开发、远程桌面、代码同步。
| 功能 | Linux虚拟机 | Linux物理机(服务器) | WSL |
|---|---|---|---|
| 远程命令行 | SSH(主机用MobaXterm) | SSH(主机用MobaXterm)+ Zerotire(内网穿透) | |
| 文件传输 | SFTP(主机用FileZilla) | SFTP(主机用FileZilla) | |
| 共享文件夹 | NFS(与板卡)、Samba(与主机) | NFS(与板卡)、Samba(与主机) | |
| 远程开发 | VS Code + Remote-SSH | VS Code + Remote-SSH | |
| 远程桌面 | / | Todesk | |
| 代码同步 | Git | Git |
实际测试了网络延迟、网络带宽、Linux内核编译速度:
| 网络 | 网络延迟 | Filezilla | samba | Linux内核编译时间 | |
|---|---|---|---|---|---|
| 虚拟机 | 局域网 | 0 | 300-350MB/s | 200-250MB/s | 1m30s(虚拟机32核i9 14代) |
| 物理机(服务器 | 局域网 | <10ms | 20-25MB/s | /(网速太低不实用就没测) | 4m46s(物理机8核i5 9代) |
| 物理机(服务器 | Zerotire(工位->家里) | 26-33ms | 3MB/s | /(网速太低不实用就没测) | 4m46s(物理机8核i5 9代) |
总结:目前还是用虚拟机吧,够用。
- 服务器,受网速影响太大:就算一个局域网内都传的很慢,不流畅啊,还不如直接U盘传输。
- 服务器,性能太差:用的旧电脑戴尔G3,纯Linux系统编译内核都不如新电脑的虚拟机编译快。
- 虚拟机CPU利用率都能达到100%了,是不是说明就算把新电脑直接装纯Linux系统,效果也和虚拟机差不多?等下次重装系统时试试这个新电脑装Linux系统的编译速度。
一、Linux虚拟机
电脑和软件:
| VMware | 16.2.3 |
|---|---|
| 主机系统 | win11 |
| 虚拟机系统 | ubuntu18.04 |
| CPU | Intel i9-14900HX |
| 内存 | 32G |
1 安装VMware、ubuntu18.04
VMware安装网上很多教程,或者参考之前写的一篇:https://blog.csdn.net/weixin_44029896/article/details/122877171?fromshare=blogdetail&sharetype=blogdetail&sharerId=122877171&sharerefer=PC&sharesource=weixin_44029896&sharefrom=from_link
要注意的是:
内存:分配给虚拟机的内存>16G
硬盘:只编译linux需要200G,还要编译android的话要500G。(视芯片而定吧,IMX6U的就很小,RK3566的SDK就比较大)
CPU:前两行随便设置,最终只根据内核总数决定虚拟机CPU性能。我是直接拉满了,使用起来感觉没影响到主机的流畅使用。

2 换源
打开软件和更新

点击

选择其他站点

选一个中国源,确认后点右下角关闭,弹出对话框,问你是否重新加载源,选是。

换完后,要更新源。
sudo apt update
3 改中文
点击设置、区域和语言、管理安装语言

点击

找到中文简体,勾选

重启虚拟机。
重启****后,弹窗,选择保存原来的路径名称,即英文名称。
4 中文输入法
直接去这里设置即可

5 永不息屏
设置 -> 电源
6 设置 root 密码
刚安装好的Linux系统没有设置root用户密码。passwd命令作用:修改用户密码,不指定用户名就默认是修改root。
sudo passwd
su root (su名字来源:switch user)
exit 或者 ctrl+d 退出root用户。
7 安装 terminator
sudo apt install terminator
配置成无限缓冲,不然编译完系统想看过程中的输出都被清理掉了。

8 安装 htop(升级版top)
sudo apt install htop
界面配置:
选好后,按F10确认,按F10退出。ctrl+c退出无法保存配置。

最终效果:

9 安装 Vim
ubuntu默认只安装了vi,没有vim(具体区别待日后体验)
sudo apt install vim
10 静态IP-虚拟机ubuntu
参考教程:https://blog.csdn.net/m0_74957207/article/details/142618269
- 查看网关,后续用到。
route -n

- 修改配置文件
sudo vim /etc/netplan/01-network-manager-all.yaml
更改其中的网络名字、网关、需要固定的IP。即加粗部分。

network:version: 2renderer: NetworkManagerethernets:ens33: dhcp4: no addresses: [192.168.70.132/24] gateway4: 192.168.70.2 nameservers:addresses: [8.8.8.8, 114.114.114.114]
- 应用并重启
sudo netplan apply
sudo systemctl restart systemd-networkd
- 验证
ip -a
ping bing.com
11 安装 ssh
- 安装
sudo apt update # 更新软件包列表
sudo apt install openssh-server # 安装 SSH 服务端
sudo systemctl status ssh # 查看服务状态(按 q 退出)
正常状态应显示 active (running)
- 重启ssh
/etc/init.d/ssh restart
12 安装 MobaXterm (SSH)(windows)(汉化)
Windows 官网下载安装版本,安装一路next。
13 安装 FileZilla (SFTP)(windows)
Windows 官网下载安装版本,安装一路next。

14 安装 samba
ubuntu18.04**:**
- 安装
sudo apt install samba
- 创建共享文件
sudo mkdir -p /home/wyf/samba
sudo chmod 777 /home/wyf/samba
- 配置(使用的泰山派教程的配置)(迅为的配置有问题,win被拒绝访问)
sudo vi /etc/samba/smb.conf
标黄部分自行更改

[Tai_Shan_Pai]comment = share folderpath = /home/wyf/sambavalid users = wyfwrite list = wyfbrowseable = yeswritable = yes create mask = 0644 directory mode = 0755 read only = no
- 设置访问密码(第一次使用需要)
sudo smbpasswd -a wyf
- 重启
sudo service smbd restart
win11**:**
win+r,输入\\ubuntu ip地址 如:\192.168.70.132。(win11无法连接的话,看下面的解决)
然后右键共享文件夹,点击“映射网络驱动器”。

samba相关命令
检查Samba用户是否存在:sudo pdbedit -L
检查配置文件语法:testparm # 显示最终生效的配置,检查是否有语法错误
遇到问题:win11 无法连接 samba:

15 安装 nfs
服务端:
- 安装:
sudo apt install nfs-kernel-server
- 创建共享文件夹
sudo mkdir -p /home/nfs
- 配置,添加共享规则
sudo vi /etc/exports
/home/nfs/ *(rw,sync,no_root_squash)
- 重启nfs
/etc/init.d/nfs-kernel-server restart
客户端:
16 安装 Vscode remote-ssh(windows)
插件中心搜索Remote-SSH。

点击“+”新建,输入ssh 主机名@主机ip。如ssh wyf@192.168.70.132。

然后就可以直接访问linux中的代码,直接更改,写完直接下面命令行输入命令编译。

17 遇到的问题:Command ‘ifconfig’ not found
原因:软件包变更:Ubuntu 从 18.04 开始默认不再预装 net-tools 软件包(包含 ifconfig、netstat 等传统网络工具)。官方推荐使用更现代的 ip 命令(来自 iproute2 软件包)
| 功能 | 传统命令 | 现代命令(ip) |
|---|---|---|
| 查看 IP 地址 | ifconfig | ip addr 或 ip a |
| 查看路由表 | route -n | ip route |
| 启用/禁用网卡 | ifconfig eth0 up | ip link set eth0 up |
| 添加临时 IP | ifconfig eth0 add 192.168.1.100 | ip addr add 192.168.1.100/24 dev eth0 |
如果仍想使用ifconfig:
sudo apt install net-tools
18 遇到的问题:虚拟机突然没网
sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start
二、Linux物理机(服务器)
三、WSL
相关文章:
嵌入式Linux开发环境搭建,三种方式:虚拟机、物理机、WSL
目录 总结写前面一、Linux虚拟机1 安装VMware、ubuntu18.042 换源3 改中文4 中文输入法5 永不息屏6 设置 root 密码7 安装 terminator8 安装 htop(升级版top)9 安装 Vim10 静态IP-虚拟机ubuntu11 安装 ssh12 安装 MobaXterm (SSH)…...
说清楚单元测试
在团队中推行单元测试的时候,总是会被成员问一些问题: 这种测试无法测试数据库的SQL(或者是ORM)是否执行正确?这种测试好像没什么作用?关联的对象要怎么处理呢?…借由本篇,来全面看一看单元测试。 单元测试是软件开发中一种重要的测试方法,其核心目的是验证代码的最小…...
如何分析 jstat 统计来定位 GC?
全文目录: 开篇语前言摘要概述jstat 的核心命令与参数详解基本命令格式示例 jstat 输出解读主要字段含义 典型 GC 问题分析案例案例 1:年轻代 GC 过于频繁案例 2:老年代发生频繁 Full GC案例 3:元空间(Metaspace&#…...
电商---part02 项目环境准备
1.虚拟机环境 可以通过VMWare来安装,但是通过VMWare安装大家经常会碰到网络ip连接问题,为了减少额外的环境因素影响,Docker内容会通过VirtualBox结合Vagrant来安装虚拟机。 VirtualBox官网:https://www.virtualbox.org/ Vagran…...
LabVIEW提升程序响应速度
LabVIEW 程序在不同计算机上的响应速度可能存在较大差异,这通常由两方面因素决定:计算机硬件性能和程序本身的优化程度。本文将分别从硬件配置对程序运行的影响以及代码优化方法进行详细分析,帮助提升 LabVIEW 程序的执行效率。 一、计算机硬…...
工业领域网络安全技术发展路径洞察报告发布 | FreeBuf咨询
工业网络安全已成为国家安全、经济稳定和社会运行的重要基石。随着工业互联网、智能制造和关键基础设施的数字化升级,工业系统的复杂性和互联性显著提升,针对工业领域的网络攻击朝着目标多样化、勒索攻击产业化、攻击技术持续升级的方向发展,…...
WPF 登录页面
效果 项目结构 LoginWindow.xaml <Window x:Class"PrismWpfApp.Views.LoginWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.…...
【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用
动态规划算法详解与应用 文章目录 动态规划算法详解与应用引言动态规划的基本概念动态规划的设计步骤经典动态规划问题1. 斐波那契数列2. 背包问题3. 最长公共子序列(LCS) 动态规划的优化技巧动态规划的应用领域总结 引言 动态规划(Dynamic Programming,简称DP)是一…...
leetcode-代码随想录-链表-移除链表元素
题目 链接:203. 移除链表元素 - 力扣(LeetCode) 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 输入:head [1,2,6,3,4,5,6], val 6 …...
低成本训练垂直领域文娱大模型的技术路径
标题:低成本训练垂直领域文娱大模型的技术路径 内容:1.摘要 在文娱产业快速发展且对智能化需求日益增长的背景下,为降低垂直领域文娱大模型的训练成本,本研究旨在探索低成本训练的有效技术路径。采用对现有开源模型进行微调、利用轻量化模型架构以及优化…...
Spring Boot 3.4.3 基于 Caffeine 实现本地缓存
在现代企业级应用中,缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率,缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持,而 Caffeine 作为一款高性能的本地缓存库,因其优异的吞吐量和灵活的配置,成为许多开发者的首选…...
手机为电脑提供移动互联网络的3种方式
写作目的 在当今数字化时代,电脑已成为人们日常工作和生活中不可或缺的工具,而网络连接更是其核心功能之一。无论是处理工作任务、进行在线学习、还是享受娱乐资源,稳定的网络环境都是保障这些活动顺利开展的关键。然而,在实际使用过程中,电脑网络驱动故障时有发生,这可…...
论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation
原文框架图: 官方代码: https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想记录一下模型的推理过程 : %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…...
Python集合(五)
集合一: 跟字典一样,最大的特性就是唯一性,集合中的所有的元素都是独一无二的,并且还是无序的 创建集合 第一种: 第二种:集合推导式: 第三种:使用类型构造器: 集合是无…...
ISIS多区域配置
一、什么是ISIS多区域 ISIS(Intermediate System to Intermediate System)多区域是指网络被划分为多个逻辑区域(Areas),不同区域之间通过特定的ISIS路由器(Level-1-2)进行路由交互。多区域设计提…...
2025-04-04 Unity 网络基础5——TCP分包与黏包
文章目录 1 分包与黏包2 解决方案2.1 数据接口2.2 定义消息2.3 NetManager2.4 分包、黏包处理 3 测试3.1 服务端3.2 客户端3.3 直接发送3.4 黏包发送3.5 分包发送3.6 分包、黏包发送3.7 其他 1 分包与黏包 分包、黏包指在网络通信中由于各种因素(网络环境、API …...
Leetcode——150. 逆波兰表达式求值
题解一 思路 和上一期1047. 删除字符串中的所有相邻重复项没差太多,基本思想都一样,就是读取输入的数据,如果是运算符,就进行相应的运算,然后把运算结果压栈。 代码 class Solution {public int evalRPN(String[] …...
【Node】一文掌握 Express 的详细用法(Express 备忘速查)
文章目录 入门Hello Worldexpress -hexpress()RouterApplicationRequest属性方法 Response属性方法 示例RouterResponseRequestres.end()res.json([body])app.allapp.deleteapp.disable(name)app.disabled(name)app.engine(ext, callback)app.listen([port[, host[, backlog]]]…...
chromium魔改——绕过无限debugger反调试
在进行以下操作之前,请确保已完成之前文章中提到的 源码拉取及编译 部分。 如果已顺利完成相关配置,即可继续执行后续操作。 在浏览器中实现“无限 debugger”的反调试技术是一种常见的手段,用于防止他人通过开发者工具对网页进行调试或逆向…...
Spring 核心技术解析【纯干货版】- XVI:Spring 网络模块 Spring-WebMvc 模块精讲
在现代 Web 开发中,高效、稳定、可扩展的框架至关重要。Spring WebMvc 作为 Spring Framework 的核心模块之一,为开发人员提供了强大的 MVC 体系支持,使得 Web 应用的构建更加便捷和规范。无论是传统的 JSP 视图渲染,还是基于 RES…...
【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战
【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战 1. 区别应用场景 2. 代码使用3.代码执行效果 在langchain_community.tools.tavily_search中,TavilyAnswer和TavilySearchResults有以下区别和应用场景&…...
JS dom修改元素的style样式属性
1通过样式属性修改 第三种 toggle有就删除 没就加上...
灭火器离位检测:智能视觉守护安全
利用视觉分析实现明火检测:技术、功能与应用 一、背景 清明节期间,兰州市连续发生多起因祭祖烧纸引发山火的警情,如七里河区魏岭乡赵某某等人上坟烧纸未妥善处理烛火引燃杂草,导致3人烧伤;七里河区彭家坪石板山村村民…...
网络:华为数通HCIA学习:IP路由基础
华为HCIA学习 IP路由基础路由协议或路由种类以及对应路由的优先级按工作区域分类:按工作机制及算法分类:路由的优先级路由器选择最优路由的顺序是什么? 前言自治系统LAN和广播域路由选路IP路由表路由度量建立路由表最长匹配原则路由器转发数据包总结 IP…...
多线程开发中List的使用
由于ArrayList在多线程高并发情况下是不安全的,因此要慎用,那么此时如果涉及到集合操作,应该怎么选: 方案一:Vector: 特点:通过给所有方法都用 synchronized 修饰从而保证线程安全, 缺点&…...
使用 .NET 9 和 Azure 构建云原生应用程序:有什么新功能?
随着 .NET 9 推出一系列以云为中心的增强功能,开发人员拥有比以往更多的工具来在 Azure 上创建可扩展、高性能的云原生应用程序。让我们深入了解 .NET 9 中的一些出色功能,这些功能使构建、部署和优化云应用程序变得更加容易,并附有示例以帮助…...
前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标防抖处理、mousemove、debounce()、事件停止触发、超时触发
文章目录 代码使用lodashjs库debounce函数做防抖处理(只有鼠标移动停止并超过一定时间,才会触发)手写防抖函数写法1写法2(注意addEventListener监听函数的第二个参数接收的是一个函数,需要构造一个匿名返回函数&#x…...
开源守护,智护童年——幼儿园未成年行为与安全智能监控系统
在孩子成长的每一步,安全始终是第一位的。幼儿园作为孩子们探索世界的起点,其安全管理的重要性不言而喻。然而,哭闹、打闹、意外跌倒,甚至外部隐患如陌生人逗留、内部管理疏漏等问题,常常让传统人工监控捉襟见肘。家长…...
WinForm真入门(5)——控件的基类Control
控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用,都离不开这些基本成员,尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…...
《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】
我们在学习 linux 内核时,会涉及到很多 numa 的知识,那我们该如何在 qemu 中模拟这种情况,来配合我们的学习呢? 我们该如何模拟 如下的 numa 架构 Qemu 模拟 NUMA 架构 -M virt,gic-version3,virtualizationon,typevirt \ -cp…...
