【环境搭建篇】ARM+Linux环境搭建

张开发
2026/4/15 7:38:23 15 分钟阅读

分享文章

【环境搭建篇】ARM+Linux环境搭建
文章目录【环境搭建篇】ARMLinux环境搭建1 安装VMWare增强工具1.1 挂载VMware Tools1.2 安装VMware Tools2 添加共享文件夹2.1 启用共享文件夹2.2 开机自启动挂载2.3 验证挂载3 更新镜像源3.1 备份系统默认镜像源(Optional)3.2 替换镜像源3.3 更新镜像源3.4 升级系统包4 配置sudo免密4.1 新建sudo用户文件4.2 使能用户免密登录4.3 添加用户到sudo组内5 安装必要的软件5.1 安装网络工具5.2 安装编辑器5.3 7zip工具安装6 配置Ubuntu免密SSH登录6.1 安装openssh-server6.2 启动SSH服务6.3 生成公私钥对6.3.1 在windows端生成6.3.2 在linux端生成6.3.3 拷贝客户端公钥6.3.4 远程免密登录7 配置vscode7.1 配置vscode远程连接7.1.1 应用中安装Remote插件7.1.2 配置主机config文件7.1.3 vscode远程登录7.2 配置VSCode插件8 Ubuntu和windows文件互传8.1 开启ubuntu下的NTP服务8.1.1 安装FTP服务8.1.2 使能读写功能8.1.3 重启FTP服务8.2 windows下FTP客户端安装9 Ubuntu下NFS服务开启9.1 安装NFS服务9.2 配置NFS服务器9.2.1 新建NFS文件夹9.2.2 配置NFS服务器9.3 重启NFS服务器10 Ubuntu交叉编译工具链的安装10.1 下载交叉编译器10.2 配置交叉编译器10.3 验证交叉编译器11 CH340串口驱动安装11.1 连接串口11.2 安装驱动11.3 验证驱动12 串口工具的安装12.1 安装工具12.2 配置串口13 虚拟机网络环境搭建13.1 网络拓扑图13.2 windows端13.2.1 关闭windows和ubuntu防火墙13.2.2 设置WIFI共享网络给以太网13.2.3 VMware设置13.3 Ubuntu设置13.4 Windows网络配置14 TFTP环境搭建14.1 安装依赖库14.2 新建服务器目录14.3 配置 tftp15 配置Ubuntu22.04内核支持nfs v215.1 修改配置文件15.2 安装5.19内核版本15.3 查看系统是否支持NFS V2协议【环境搭建篇】ARMLinux环境搭建注该指南仅适用于ubuntu22.04VMware workstation的环境1 安装VMWare增强工具1.1 挂载VMware Tools点击VMware菜单栏的虚拟机(M)-安装VMware Tools, 点击完后系统会将VMware Tools挂载到/media目录下。1.2 安装VMware Toolspzspzs-jammy:~$cd/media/pzs/VMware Tools pzspzs-jammy:/media/pzs/VMware Tools$cpVMwareTools-10.3.23-16594550.tar.gz /tmp/ pzspzs-jammy:/media/pzs/VMware Tools$cd/tmp pzspzs-jammy:/tmp$tarzxvf VMwareTools-10.3.23-16594550.tar.gz pzspzs-jammy:/tmp$cdvmware-tools-distrib pzspzs-jammy:/tmp/vmware-tools-distrib$sudo./vmware-install.pl# 出现选项之后全部按下Enter, 即选择默认选项即可。..... The removal of VMware Tools10.3.23 build-16594550forLinux completed successfully. Thank youforhaving tried this software.2 添加共享文件夹2.1 启用共享文件夹为了方便windows和Linux之间互传内容我们可以增加一个共享文件夹。首先点击VMware菜单栏的虚拟机(M)-设置(S),然后参考下图进行设置注建议共享文件夹的位置存放到和虚拟机安装目录一起这样便于找到。然后启用此共享即可2.2 开机自启动挂载然后要想实现开机启动挂载共享文件夹可以使用如下命令pzspzs-jammy:~$sudosurootpzs-jammy:/home/pzs# echo .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0 /etc/fstab2.3 验证挂载之后查看是否挂载成功可以使用如下命令rootpzs-jammy:/home/pzs# df -hFilesystem Size Used Avail Use% Mounted on... vmhgfs-fuse 100G 36G 65G36% /mnt/hgfs rootpzs-jammy:/home/pzs# ls /mnt/hgfs/ # 可以看到share_directory已经被挂载到了虚拟机的/mnt/hgfs目录下了share_directory3 更新镜像源我们在下载包的时候可以通过替换镜像源来实现包的加速下载。3.1 备份系统默认镜像源(Optional)使用如下命令实现备份:pzspzs-jammy:~$sudocp/etc/apt/sources.list /etc/apt/sources.list.old3.2 替换镜像源pzspzs-jammy:~$sudogedit /etc/apt/sources.list将如下内容复制到里面# deb cdrom:[Ubuntu 22.04.5 LTS _Jammy Jellyfish_ - Release amd64 (20240911)]/ jammy main restricted# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to# newer versions of the distribution.deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted## Major bug fix updates produced after the final release of the## distribution.deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu## team. Also, please note that software in universe WILL NOT receive any## review or updates from the Ubuntu security team.deb http://mirrors.aliyun.com/ubuntu/ jammy universe# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy universedeb http://mirrors.aliyun.com/ubuntu/ jammy-updates universe# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates universe## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu## team, and may not be under a free licence. Please satisfy yourself as to## your rights to use the software. Also, please note that software in## multiverse WILL NOT receive any review or updates from the Ubuntu## security team.deb http://mirrors.aliyun.com/ubuntu/ jammy multiverse# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates multiverse## N.B. software from this repository may not have been tested as## extensively as that contained in the main release, although it includes## newer versions of some applications which may provide useful features.## Also, please note that software in backports WILL NOT receive any review## or updates from the Ubuntu security team.deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse# deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted# deb-src http://security.ubuntu.com/ubuntu jammy-security main restricteddeb http://mirrors.aliyun.com/ubuntu/ jammy-security universe# deb-src http://security.ubuntu.com/ubuntu jammy-security universedeb http://mirrors.aliyun.com/ubuntu/ jammy-security multiverse# deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse# This system was installed using small removable media# (e.g. netinst, live or single CD). The matching deb cdrom# entries were disabled at the end of the installation process.# For information about how to configure apt package sources,# see the sources.list(5) manual.3.3 更新镜像源通过该指令即可检查镜像源是否被替换成功pzspzs-jammy:~$sudoapt-getupdate[sudo]passwordforpzs: Hit:1 http://mirrors.aliyun.com/ubuntu jammy InRelease Hit:2 http://mirrors.aliyun.com/ubuntu jammy-updates InRelease Hit:3 http://mirrors.aliyun.com/ubuntu jammy-backports InRelease Hit:4 http://mirrors.aliyun.com/ubuntu jammy-security InRelease Reading package lists... Done3.4 升级系统包为了保持系统的使用最新的包建议定期更新包可以使用如下命令来实现:pzspzs-jammy:~$sudoapt-getupgrade4 配置sudo免密4.1 新建sudo用户文件有时候我们经常输入sudo切换权限执行命令但是这个就会导致每次都需要输入密码比较麻烦因此我们希望能够免密切换sudo权限。pzspzs-jammy:~$whoami# 该命令用于获取当前系统用户pzs pzspzs-jammy:~$sudotouch/etc/sudoers.d/pzs# 我们一般可以在/etc/sudoers.d/目录下新建一个和系统用户文件该文件用于配置sudo相关的权限pzspzs-jammy:~$sudogedit /etc/sudoers.d/pzs4.2 使能用户免密登录将如下内容复制到文件内pzsALL(ALL:ALL)NOPASSWD:ALL其中:pzs: 表示为自己的系统用户NOPASSWD:ALL表示后续用户执行sudo命令的时候无需再输入密码4.3 添加用户到sudo组内确认你在 sudo 组里:pzspzs:~$sudousermod-aGsudo$USER5 安装必要的软件5.1 安装网络工具pzspzs-jammy:~$sudoapt-getinstall-ynet-tools# 之后可以通过ifconfig来查看IP地址5.2 安装编辑器pzspzs-jammy:~$sudoapt-getinstall-yvim# 之后可以使用vim作为系统的编辑器来编辑文件5.3 7zip工具安装windows上安装7zip工具后续方便解压下载链接如下7zip 24096 配置Ubuntu免密SSH登录6.1 安装openssh-serverpzspzs-jammy:~$sudoapt-getinstall-yopenssh-server6.2 启动SSH服务pzspzs-jammy:~$sudosystemctl start sshd# 或者使用如下命令启动:pzspzs-jammy:~$sudoservicesshd start6.3 生成公私钥对6.3.1 在windows端生成C:\Users\xxxssh-keygen# 后面的操作一直回车就好Generating public/private ed25519 key pair.Enter file in which to save the key(C:\Users\xxx/.ssh/id_ed25519): Enter passphrase(emptyforno passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\xxx/.ssh/id_ed25519 Your public key has been saved in C:\Users\xxx/.ssh/id_ed25519.pub The key fingerprint is:....The keys randomart image is:--[ED25519 256]--....|o o.B.o||.o||..|----[SHA256]-----之后就会生成C:\Users\xxx/.ssh/id_ed25519.pub公钥和C:\Users\xxx/.ssh/id_ed25519(私钥)6.3.2 在linux端生成pzspzs-VirtualBox:~$ ssh-keygen# 后面的操作一直回车就好Generating public/private rsa key pair. Enterfileinwhichto save the key(/home/pzs/.ssh/id_rsa): Enter passphrase(emptyforno passphrase): Enter same passphrase again: Your identification has been savedin/home/pzs/.ssh/id_rsa Your public key has been savedin/home/pzs/.ssh/id_rsa.pub... The keys randomart image is: ---[RSA3072]----...|.....||....||...|----[SHA256]-----之后就会生成~/.ssh/id_rsa.pub公钥和~/.ssh/id_rsa(私钥)6.3.3 拷贝客户端公钥拷贝C:\Users\xxx/.ssh/id_ed25519.pub追加到虚拟机的~/.ssh/authorized_keys内pzspzs-jammy:~$touch~/.ssh/authorized_keys# 注意不要使用sudo命令创建否则会导致免密操作失效pzspzs-jammy:~$chmod700~/.ssh pzspzs-jammy:~$chmod600~/.ssh/authorized_keys pzspzs-jammy:~$vim~/.ssh/authorized_keys# 添加C:\Users\xxx\.ssh\id_ed25519.pub的内容到里面6.3.4 远程免密登录之后就可以通过IP地址进行免密远程登录了操作如下C:\Users\xxxssh-keygen-R192.168.142.132# 清理之前系统上可能存在的残留SSH信息。注: 192.168.142.132是ubuntu的IP地址具体可以在ubuntu内通过ifconfig命令查看# Host 192.168.142.132 found: line 15# Host 192.168.142.132 found: line 16# Host 192.168.142.132 found: line 17C:\Users\xxx/.ssh/known_hosts updated. Original contents retained as C:\Users\xxx/.ssh/known_hosts.old C:\Users\xxxssh pzs192.168.142.132# 使用ssh连接到ubuntu内The authenticity ofhost192.168.142.132 (192.168.142.132)cant be established. ED25519 key fingerprint is ... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 这里输入yes Warning: Permanently added 192.168.142.132 (ED25519) to the list of known hosts. pzs192.168.142.132s password: Welcome to Ubuntu22.04.5 LTS(GNU/Linux6.8.0-87-generic x86_64)... pzspzs-jammy:~$# 成功没有输入密码就登录到ubuntu系统里面了7 配置vscode7.1 配置vscode远程连接7.1.1 应用中安装Remote插件7.1.2 配置主机config文件在主机的C:\Users\xxx\.ssh\config文件下配置如下内容Host pzs-ubuntu22.04 HostName192.168.142.132 User pzs Port22IdentityFile C:\Users\xxx\.ssh\id_ed25519其中:Host 为你想去的远程连接名称这个随便起。HostName远程主机的IP地址。也就是你的ubuntu IP地址User:远程主机的用户名。也就是你的ubuntu系统用户名称IdentityFile: 你本地的私钥路径公钥已经被配置到远程机器的authorized_keys中这样就可以实现免密登录远程7.1.3 vscode远程登录之后就可以通过远程插件连接到系统内了7.2 配置VSCode插件连接上远程然后添加如下的插件1)、C/C这个肯定是必须的。2)、C/C Snippets即 C/C重用代码块。3)、C/C Advanced Lint,即 C/C静态检测 。4)、Code Runner即代码运行。5)、Include AutoComplete即自动头文件包含。6)、Rainbow Brackets 2彩虹花括号有助于阅读代码。7)、One Dark ProVSCode 的主题。8)、GBKtoUTF8将 GBK 转换为 UTF8。9)、Arm Assembly即支持 ARM 汇编语法高亮显示。10)、Chinese(Simplified)即中文环境。11)、vscode-iconsVSCode 图标插件主要是资源管理器下各个文件夹的图标。12)、compareit比较插件可以用于比较两个文件的差异。13)、DeviceTree设备树语法插件。14)、Codeium: AI Coding Autocomplete and Chat for Python, Javascript, Typescript, Java, Go, an一款智能编程助手8 Ubuntu和windows文件互传我们可以使用FTP服务实现, 首先需要开启FTP服务。8.1 开启ubuntu下的NTP服务8.1.1 安装FTP服务pzspzs-jammy:~$sudoapt-getinstall-yvsftpd8.1.2 使能读写功能pzspzs-jammy:~$sudovim/etc/vsftpd.conf# 找到如下两行使能local_enableYESwrite_enableYES8.1.3 重启FTP服务pzspzs-jammy:~$sudo/etc/init.d/vsftpd restart Restarting vsftpd(via systemctl): vsftpd.service.8.2 windows下FTP客户端安装使用winscp客户端或者FileZilla都可以。选择FTP协议输入主机名用户名和密码。建议勾选这样可以在桌面上的快捷方式上直接连接而无需输入密码9 Ubuntu下NFS服务开启9.1 安装NFS服务Linux驱动开发时需要NFS启动所以要先安装ubuntu中的NFS服务使用如下命令:pzspzs-jammy:~$sudoapt-getinstall-ynfs-kernel-server rpcbind9.2 配置NFS服务器9.2.1 新建NFS文件夹pzspzs-jammy:~$mkdir$HOME/linux/nfs-p该文件夹作为NFS服务器的根目录之后开发板可以通过网络文件系统来访问NFS服务器。9.2.2 配置NFS服务器pzspzs-jammy:~$sudovim/etc/exports# 在末尾添加一行/home/pzs/linux/nfs *(rw,sync,no_root_squash)其中/home/pzs/linux/nfs是我们自己的nfs服务器根目录的位置9.3 重启NFS服务器pzspzs-jammy:~$sudo/etc/init.d/nfs-kernel-server restart Restarting nfs-kernel-server(via systemctl): nfs-kernel-server.service.10 Ubuntu交叉编译工具链的安装交叉编译器一个架构上编译另外一个架构的代码。10.1 下载交叉编译器我们这里使用Linaro出品的交叉编译器GCC编译器地址GCC编译器注推荐的GCC编译器版本地址为4.9.4 交叉编译器下载好后可以通过winscp工具将编译器传输到ubuntu的$HOME目录下。10.2 配置交叉编译器pzspzs-jammy:~$sudomkdir/usr/local/arm pzspzs-jammy:~$sudocpgcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/-fpzspzs-jammy:~$cd/usr/local/arm/ pzspzs-jammy:~$sudotar-vxfgcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz pzspzs-jammy:~$sudovim/etc/profile# 在开头添加如下内容:exportPATH$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin pzspzs-jammy:~$sudoapt-getinstall-ylsb-core lib32stdc6# 安装依赖库10.3 验证交叉编译器重启ubuntu, 然后执行如下命令查看版本号$ arm-linux-gnueabihf-gcc-v# 查看交叉编译器版本号Using built-in specs...... gcc version4.9.4(Linaro GCC4.9-2017.01)# 表明当前版本号为4.9.411 CH340串口驱动安装11.1 连接串口先通过 USB 线将开发板的串口和电脑连接起来起来11.2 安装驱动CH340 是需要安装驱动的链接如下CH340 Driver , 点击驱动文件点击“安装”按钮开始安装驱动等待驱动安装完成驱动安装完成以后会有如下图所示的内容11.3 验证驱动在设备管理器中找到了有“USB-SERIAL CH340”字样的端口设备就说明 CH340 驱动成功了。12 串口工具的安装12.1 安装工具Mobaxterm或者secureCRT都可以。12.2 配置串口注我们这里选择的波特率统一为115200而串口则是带有CH340的驱动。13 虚拟机网络环境搭建13.1 网络拓扑图情况电脑 WiFi 上网开发板和电脑直连网络拓扑如下所示:13.2 windows端13.2.1 关闭windows和ubuntu防火墙在windows控制面板上关闭公网的防火墙13.2.2 设置WIFI共享网络给以太网这样设置完之后以太网会被设置为:192.168.137.1的IP地址后续虚拟机和开发板都应该和其设置为同一个网段以便用于通信。注这样弄完之后开发板进入Linux端设置为DHCP动态获取IP地址就可以上网了。13.2.3 VMware设置打开 VMware Workstation Pro 里的 虚拟机 - 设置设置网络适配器为桥接模式。这里不要勾选“复制物理网络连接状态”。因为电脑是 WiFi 上网所以需要添加一个网络适配器并设置成 NAT 模式供虚拟机上网打开菜单栏的 编辑 - 虚拟网络编辑器。点击虚拟网络编辑器的 更改设置 选项。如果此时没有 VMnet0可以手动添加下。开发板是直连到电脑的网口的所以需要虚拟网络编辑器里的网络适配器 1即 VMnet0桥接到有线网卡上比如文档这里是 Realtek PCIe如下图所示。我们需要把网络桥接到这个网卡上以下处理的都是 VMnet0用于桥接网络。设置完成后点击确定再点击应用即可。13.3 Ubuntu设置ubuntu关闭防火墙pzspzs-jammy:~$sudoufw disable启动虚拟机打开 Ubuntu 的络设置Network。在网络设置中有两个有线网络其中一个还没有设置 IP 的是我们的网络适配器 1用来桥接开发板到windows的另外一个网络其实是 NAT 模式的网络适配器 2已经自动分配好 IP 了。采用ipconfig查看windows网络情况以太网适配器 以太网以太网的IP信息需要手动修改。以太网适配器 VMware Network Adapter VMnet1 在 host-only 模式下动态分配虚拟系统的 TCP/IP 配置信息本文档不涉及以太网适配器 VMware Network Adapter VMnet8 提供 DHCP 服务用于主机和虚拟机互通虚拟机上网无线局域网适配器 WLAN windows主机上网以太网适配器 VMware Network Adapter VMnet0不提供 DHCP用于桥接网络要在虚拟网络编辑器设置手动设置 IP注在 Windows 终端没有看到 VMnet0在虚拟网络编辑器中可以看到。这是我们用来桥接的网络适配器不会自动分配IP需要手动设置。VMnet0设置的网段不能和VMnet1、VMnet8 的网段一样不然会有冲突。参考如下设置这里我们将连接名称改为 VMnet0方便区别。将 IP 手动设置为然后重新打开网络设备让修改生效。然后重新打开网络设备让修改生效。13.4 Windows网络配置设置完 Ubuntu 的 VMnet0 后再设置 Windows 的以太网 IP 的相关信息。在 Windows 主机打开控制面板 - 网络和 Internet - 网络连接找到以太网。选择以太网右键打开菜单栏选择属性。在打开的网络设置中双击 Internet 协议版本 4TCP/IPv4如下图所示按照上图设置以太网为DHCP模式。之后设置开发板为同一网段即可实现互通了。14 TFTP环境搭建tftp命令是用于将网络下载东西到DRAM中采用的是TFTP协议我们需要再Ubuntu上搭建TFTP服务器开发板作为客户端。14.1 安装依赖库pzspzs-jammy:~$sudoapt-getinstall-ytftp-hpa tftpd-hpa xinetd14.2 新建服务器目录TFTP 需要一个文件夹来存放文件在用户目录下新建一个目录命令如下pzspzs-jammy:~$mkdir$HOME/linux/tftpboot pzspzs-jammy:~$chmod777$HOME/linux/tftpboot# 我们要给 tftpboot 文件夹权限否则的话 uboot 不能从tftpboot 文件夹里面下载文件14.3 配置 tftp新建文件/etc/xinetd.d/tftp如果没有/etc/xinetd.d 目录的话自行创建然后在里面输入如下内容pzspzs-jammy:~$sudovim/etc/xinetd.d/tftp server tftp{socket_typedgram protocoludpwaityesuserroot server/usr/sbin/in.tftpd server_args-s/home/pzs/linux/tftpboot/ disableno per_source11cps1002flagsIPv4}之后启动tftp服务命令如下pzspzs-jammy:~$sudoservicetftpd-hpa start打开/etc/default/tftpd-hpa 文件将其修改为如下所示内容pzspzs-jammy:~$sudovim/etc/default/tftpd-hpa# /etc/default/tftpd-hpaTFTP_USERNAMEtftpTFTP_DIRECTORY/home/pzs/linux/tftpbootTFTP_ADDRESS:69TFTP_OPTIONS-l -c -s最后输入如下命令 重启 tftp 服务器pzspzs-jammy:~$sudoservicetftpd-hpa restart15 配置Ubuntu22.04内核支持nfs v2由于ubuntu22.04默认自带的内核版本是不支持nfs v2协议的而我们使用的uboot版本较老仅支持V2协议因此我们需要键虚拟机的内核版本降级以便支持NFS V2。15.1 修改配置文件使其支持NFS V2协议pzspzs-jammy:~$cat/etc/nfs.conf...# lease-time90udpy# 支持UDP协议# tcpyvers2y# 支持V2协议# vers3y...15.2 安装5.19内核版本pzspzs-jammy:~$sudoapt-getinstall-ylinux-image-5.19.0-41-generic修改系统启动的grub为5.19内核版本。pzspzs-jammy:~$sudovim/etc/default/grub....#GRUB_DEFAULT0GRUB_DEFAULTAdvanced options for UbuntuUbuntu, with Linux 5.19.0-41-genericGRUB_TIMEOUT_STYLEhidden...更新grub文件。pzspzs-jammy:~$sudoupdate-grub重启Ubuntu系统。pzspzs-jammy:~$sudoreboot再次查询内核版本已经切换为5.19版本pzspzs-jammy:~$ uname -r 5.19.0-41-generic15.3 查看系统是否支持NFS V2协议查看系统已经支持 nfs V2协议。pzspzs-jammy:~$sudocat/proc/fs/nfsd/versions 2 3 4 4.1 4.2

更多文章