网站建设功能文档,建设工程质量+协会网站,精准的搜索引擎优化,怎么做网站旅游宣传Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡#x…Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡qemu桥接上网配置添加网卡 NAT模式 起动u-boot起动报错处理新建qemu-ifup新建qemu-ifdown把qemu-ifup与qemu-ifdown两脚本放入配置文件径重新起动u-boot 测试网络 在主机上搭建TFTP简介1、安装依赖包2、第二步, 配置/etc/xinetd.conf3、第三步配置/etc/default/tftpd-hpa4.、第四步配置/etc/xinetd.d/tftp5、创建文件夹 mkdir /tftpboot6、给权限 chmod 777 /tftpboot -R7、启动服务器 sudo service tftpd-hpa start8、调试服务器 在/tftpboot 下 touch test.txt9、核心板 使用tftp下载文件 在主机上搭建NFS安装NFS服务器创建共享目录配置NFS服务器启动NFS服务器测试NFS服务器 Qemu简介 QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器软件在GNU/Linux平台上使用广泛。可以在没有硬件开发板的情况下调试验证问题。最初搭建Qemu时遇到一些问题新版Qemu的教程网上少之又少向大佬请教时得到的答复是用别人验证过的东西靠谱Qemu很少有人源码级debug。这回答有点颠覆三观一个开源认可度很高的软件怎么可能会因为编译安装而需要源码级debug于是便有了后续…… QEMU安装前的准备工作
QEMU 安装的两种方式
通过网络在线安装
优点安装方便 缺点linux发行版支持在线包的版本都比较低
sudo apt-get install qemu
sudo apt-get install qemu-arm
sudo apt-get install qemu
sudo apt-get install qemu-system
sudo apt-get install qemu-user源码编译安装
优点QEMU可以是最新稳定版本根据自己的需求安装 缺点编译时需要各种依赖比较繁琐
源码获取
git clone https://gitlab.com/qemu-project/qemu.git
cd qemu
git submodule init
git submodule update --recursiveQEMU依赖库安装
sudo apt install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build
sudo apt install git-email
sudo apt install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-dev
sudo apt install libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev
sudo apt install libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev
sudo apt install librbd-dev librdmacm-dev
sudo apt install libsasl2-dev libsdl2-dev libseccomp-dev libsnappy-dev libssh-dev
sudo apt install libvde-dev libvdeplug-dev libvte-2.91-dev libxen-dev liblzo2-dev
sudo apt install valgrind xfslibs-dev
sudo apt install libslirp-dev详见官方wiki: qemu install
编译安装
cd qemu
mkdir build
cd build
../configure --enable-slirp
make -j16
sudo make installqemu-system-aarch64 --version
QEMU emulator version 8.0.2 (v8.0.2)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developersemu-system-aarch64 -M ? help
Supported machines are:
akita Sharp SL-C1000 (Akita) PDA (PXA270)
ast1030-evb Aspeed AST1030 MiniBMC (Cortex-M4)
ast2500-evb Aspeed AST2500 EVB (ARM1176)
ast2600-evb Aspeed AST2600 EVB (Cortex-A7)
bletchley-bmc Facebook Bletchley BMC (Cortex-A7)
borzoi Sharp SL-C3100 (Borzoi) PDA (PXA270)
canon-a1100 Canon PowerShot A1100 IS (ARM946)
cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)
collie Sharp SL-5500 (Collie) PDA (SA-1110)
connex Gumstix Connex (PXA255)
cubieboard cubietech cubieboard (Cortex-A8)
emcraft-sf2 SmartFusion2 SOM kit from Emcraft (M2S010)
fby35-bmc Facebook fby35 BMC (Cortex-A7)
fby35 Meta Platforms fby35
fp5280g2-bmc Inspur FP5280G2 BMC (ARM1176)
fuji-bmc Facebook Fuji BMC (Cortex-A7)
g220a-bmc Bytedance G220A BMC (ARM1176)
highbank Calxeda Highbank (ECX-1000)
imx25-pdk ARM i.MX25 PDK board (ARM926)
integratorcp ARM Integrator/CP (ARM926EJ-S)
kudo-bmc Kudo BMC (Cortex-A9)
kzm ARM KZM Emulation Baseboard (ARM1136)
lm3s6965evb Stellaris LM3S6965EVB (Cortex-M3)
lm3s811evb Stellaris LM3S811EVB (Cortex-M3)
mainstone Mainstone II (PXA27x)
mcimx6ul-evk Freescale i.MX6UL Evaluation Kit (Cortex-A7)
mcimx7d-sabre Freescale i.MX7 DUAL SABRE (Cortex-A7)
microbit BBC micro:bit (Cortex-M0)
midway Calxeda Midway (ECX-2000)
mori-bmc Mori BMC (Cortex-A9)
mps2-an385 ARM MPS2 with AN385 FPGA image for Cortex-M3
mps2-an386 ARM MPS2 with AN386 FPGA image for Cortex-M4
mps2-an500 ARM MPS2 with AN500 FPGA image for Cortex-M7
mps2-an505 ARM MPS2 with AN505 FPGA image for Cortex-M33
mps2-an511 ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3
mps2-an521 ARM MPS2 with AN521 FPGA image for dual Cortex-M33
mps3-an524 ARM MPS3 with AN524 FPGA image for dual Cortex-M33
mps3-an547 ARM MPS3 with AN547 FPGA image for Cortex-M55
musca-a ARM Musca-A board (dual Cortex-M33)
musca-b1 ARM Musca-B1 board (dual Cortex-M33)
musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810 Nokia N810 tablet aka. RX-44 (OMAP2420)
netduino2 Netduino 2 Machine (Cortex-M3)
netduinoplus2 Netduino Plus 2 Machine (Cortex-M4)
none empty machine
npcm750-evb Nuvoton NPCM750 Evaluation Board (Cortex-A9)
nuri Samsung NURI board (Exynos4210)
olimex-stm32-h405 Olimex STM32-H405 (Cortex-M4)
orangepi-pc Orange Pi PC (Cortex-A7)
palmetto-bmc OpenPOWER Palmetto BMC (ARM926EJ-S)
qcom-dc-scm-v1-bmc Qualcomm DC-SCM V1 BMC (Cortex A7)
qcom-firework-bmc Qualcomm DC-SCM V1/Firework BMC (Cortex A7)
quanta-gbs-bmc Quanta GBS (Cortex-A9)
quanta-gsj Quanta GSJ (Cortex-A9)
quanta-q71l-bmc Quanta-Q71l BMC (ARM926EJ-S)
rainier-bmc IBM Rainier BMC (Cortex-A7)
raspi0 Raspberry Pi Zero (revision 1.2)
raspi1ap Raspberry Pi A (revision 1.1)
raspi2b Raspberry Pi 2B (revision 1.1)
raspi3ap Raspberry Pi 3A (revision 1.0)
raspi3b Raspberry Pi 3B (revision 1.2)
realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9
romulus-bmc OpenPOWER Romulus BMC (ARM1176)
sabrelite Freescale i.MX6 Quad SABRE Lite Board (Cortex-A9)
sbsa-ref QEMU SBSA Reference ARM Virtual Machine
smdkc210 Samsung SMDKC210 board (Exynos4210)
sonorapass-bmc OCP SonoraPass BMC (ARM1176)
spitz Sharp SL-C3000 (Spitz) PDA (PXA270)
stm32vldiscovery ST STM32VLDISCOVERY (Cortex-M3)
supermicro-x11spi-bmc Supermicro X11 SPI BMC (ARM1176)
supermicrox11-bmc Supermicro X11 BMC (ARM926EJ-S)
sx1 Siemens SX1 (OMAP310) V2
sx1-v1 Siemens SX1 (OMAP310) V1
tacoma-bmc OpenPOWER Tacoma BMC (Cortex-A7)
terrier Sharp SL-C3200 (Terrier) PDA (PXA270)
tiogapass-bmc Facebook Tiogapass BMC (ARM1176)
tosa Sharp SL-6000 (Tosa) PDA (PXA255)
verdex Gumstix Verdex Pro XL6P COMs (PXA270)
versatileab ARM Versatile/AB (ARM926EJ-S)
versatilepb ARM Versatile/PB (ARM926EJ-S)
vexpress-a15 ARM Versatile Express for Cortex-A15
vexpress-a9 ARM Versatile Express for Cortex-A9
virt-2.10 QEMU 2.10 ARM Virtual Machine
virt-2.11 QEMU 2.11 ARM Virtual Machine
virt-2.12 QEMU 2.12 ARM Virtual Machine
virt-2.6 QEMU 2.6 ARM Virtual Machine
virt-2.7 QEMU 2.7 ARM Virtual Machine
virt-2.8 QEMU 2.8 ARM Virtual Machine
virt-2.9 QEMU 2.9 ARM Virtual Machine
virt-3.0 QEMU 3.0 ARM Virtual Machine
virt-3.1 QEMU 3.1 ARM Virtual Machine
virt-4.0 QEMU 4.0 ARM Virtual Machine
virt-4.1 QEMU 4.1 ARM Virtual Machine
virt-4.2 QEMU 4.2 ARM Virtual Machine
virt-5.0 QEMU 5.0 ARM Virtual Machine
virt-5.1 QEMU 5.1 ARM Virtual Machine
virt-5.2 QEMU 5.2 ARM Virtual Machine
virt-6.0 QEMU 6.0 ARM Virtual Machine
virt-6.1 QEMU 6.1 ARM Virtual Machine
virt-6.2 QEMU 6.2 ARM Virtual Machine
virt-7.0 QEMU 7.0 ARM Virtual Machine
virt-7.1 QEMU 7.1 ARM Virtual Machine
virt-7.2 QEMU 7.2 ARM Virtual Machine
virt QEMU 8.0 ARM Virtual Machine (alias of virt-8.0)
virt-8.0 QEMU 8.0 ARM Virtual Machine
witherspoon-bmc OpenPOWER Witherspoon BMC (ARM1176)
xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9
xlnx-versal-virt Xilinx Versal Virtual development board
xlnx-zcu102 Xilinx ZynqMP ZCU102 board with 4xA53s and 2xR5Fs based on the value of smp
yosemitev2-bmc Facebook YosemiteV2 BMC (ARM1176)
z2 Zipit Z2 (PXA27x)命令选项
qemu的标准选项
# qemu的标准选项主要涉及指定主机类型、CPU模式、NUMA、软驱设备、光驱设备及硬件设备等。
-name name # 虚拟机名称
-M machine # 指定要模拟的主机类型如standard PCISA-only PC或Intel-Mac等可以使用“qemu-kvm -M ?”获取所支持的所有类型
-m megs # 设定虚拟机的RAM大小
-cpu model # 设定CPU模型如coreduo、qemu64等可以使用qemu-kvm -cpu ?获取所支持的所有模型
-smp n # 设定模拟的SMP架构中CPU的个数[,corescores] # 每个CPU的核心数[,threadsthreads] # 线程数[,socketssockets] # CPU的socket数目[,maxcpusmaxcpus] # 用于指定热插入的CPU个数上限
-numa 非一致内存访问
-numa opts指定模拟多节点的numa设备-fda file
-fdb file使用指定文件(file)作为软盘镜像file为/dev/fd0表示使用物理软驱
-hda file
-hdb file
-hdc file
-hdd file使用指定file作为硬盘镜像
-cdrom file使用指定file作为CD-ROM镜像需要注意的是-cdrom和-hdc不能同时使用将file指定为/dev/cdrom可以直接使用物理光驱-drive # 定义一个硬盘设备可用子选项有很多file/path/to/somefile # 硬盘映像文件ifinterface # 硬盘设备接口类型 ide、scsi、sd、virtio半虚拟化indexindex # 设定同一种控制器类型中不同设备的索引号即标识号mediamedia # 定义介质类型为硬盘还是光盘disk、cdromsnapshotsnapshot # 指定当前硬盘设备是否支持快照功能on或offcachecache # 定义如何使用物理机缓存来访问块数据其可用值有none、writeback、unsafe和writethrough四个formatformat # 指定映像文件的格式具体格式可参见qemu-img命令-boot [orderdrives][,oncedrives][,menuon|off] # 定义启动设备的引导次序每种设备使用一个字符表示不同的架构所支持的设备及其表示字符不尽相同在x86 PC架构上a、b表示软驱c表示第一个光驱设备n-p表示网络适配器默认为硬盘设备。例如-boot orderdc,onced示例:
qemu-system-x86_64 --name censtos -smp 2 -m 2048 -cpu host -drive file/data/iso/CentOS-7-x86_64-Minimal-1804.iso,mediacdrom -drive filecentos.qcow2,mediadisk -boot orderdc,oncedqemu显示选项
显示选项用于定义虚拟机启动后的显示接口相关类型及属性等。
SDL -sdl # 启用SDLVNC-vnc display [optionoption] # 默认情况下qemu使用SDL显示VGA输出使用-vnc选项可以让qemu监听在vnc上并将VGA输出重定向至vnc会话使用此选项时必须使用-k选项指定键盘布局类型;其中有许多子选项具体请参考qemu的手册display1、host:N # N为控制台号192.168.1.1:1 # 5900为起始端口2、unix:/path/to/socket_file # 监听在套接字3、none # 不显示optionpassword # 连接时需要验证密码设定密码通过monitor接口使用changereverse # “反向”连接至某处于监听状态的vncview上-vga type # 指定要仿真的VGA接口类型常见的类型有cirrus: Cirrus Logic GD5446显示卡std带有Bochs VBI扩展的标准VGA显示卡vmwareVMware SVGA-II兼容的显示适配器qxlQXL半虚拟化显示卡与VGA兼容在Guest中安装qxl驱动后能以很好的方式工作在使用spice协议时推荐使用此类型none禁用VGA卡-monitor stdio # 在标准输入输出上显示monitor界面
-nographic # 默认情况下qemu使用SDL来显示VGA输出而此选项用于禁止图形接口此时qemu类似一个简单的命令行程序其仿真串口设备将被重定向到控制台
-curses # 禁止图形接口并使用curses/ncurses作为交互接口
-alt-grab # 使用CtrlAltShift组合键释放鼠标
-ctrl-grab # 使用右Ctrl键释放鼠标
-spice option[,option[,...]] # 启用spice远程桌面协议其中有许多子选项具体请参照qemu-kvm手册。网络属性相关选项
网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息。这里只介绍nic、tap和user三种类型网络接口的属性其他类型请参考qemu手册9 nic #定义网络接口
-net nic [,vlann,macaddrn,modeltype,namename,addraddr,vectorsv] # 创建一个新的网卡设备并连接至vlan n中PC架构上默认的NIC为e1000macaddr用于为其制定mac地址name用于指定一个在监控时显示的网上设备名称qemu可以模拟多个类型的网卡设备如virtio、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等不过不同平台架构上其支持的类型可能只包含前述列表中的一部分可以使用qemu-system-x86_64 -net nic,model?来获取当前平台支持的类型。vlan # vlan号macaddr # mac地址(mac 默认不变)model # e1000 virtioname # 设备名addr # ip地址tap #nic管理虚拟机中的接口tap就是管理宿主机上的对应接口
-net tap[,vlann][,namename][,fdh][,ifnamename][,scriptfile][,downscriptdfile] # 通过物理机的TAP网络接口连接至vlan n中使用scriptfile指定的脚本默认为/etc/qemu-ifup来配置当前网络接口并使用downscriptfile指定的脚本(默认为/etc/qemu-ifdown)来撤销接口配置使用scriptno和downscriptno可分别用来禁止执行脚本。user
-net user[,option][,option][,...]在用户模式配置网络栈其不依赖于管理权限有效选项有vlann # 连接至vlan n默认n0namename # 指定接口的显示名称常用于监控模式中netaddr[/mask] # 设定GuestOS中可见的IP网络掩码可选默认为10.0.2.0/8hostaddr # 指定GuestOS中看到的物理机的IP地址默认为指定网络中的第二个即x.x.x.2dhcpstartaddr # 指定DHCP服务地址池中16个地址的起始IP默认为第16个至第31个即x.x.x.16-x.x.x.31dnsaddr # 指定GuestOS可见的dns服务器地址默认为GuestOS网络中的第3个地址即x.x.x.3tftpdir # 激活内置的tftp服务器并使用指定的dir作为tftp服务器的默认根目录bootfilefile # BOOTP文件名称用于实现网络引导GuestOS,如qemu -hda linux.img -boot n -net user,tftp/tftpserver/pub,bootfile/pexlinux.0kvm的网络模型
1、隔离模型使用bridge连接各个虚拟机但不关联物理网卡
2、nat模型在路由模型上添加nat规则 iptables
3、路由模型在隔离模型的基础之上添加一个虚拟网卡开启路由转发功能。需要虚拟机指定虚拟网卡的ip为网关需要在要通信的主机或路由添加回复报文的路由条目
4、桥接模型在隔离模型的bridge上添加物理网卡将物理网卡变为bridge将原来的IP放到一张虚拟网卡并添加到桥上
dhcp 服务器
namespace 名称空间Ubuntu 双网卡qemu桥接上网配置
添加网卡 NAT模式 添加好网卡后重洗启动虚拟机很多朋友使用 ifconfig 命令时可能发现新添加的网卡无法识别出来只能识别一个网卡ens33需要更改配置文件 sudo vim /etc/netplan/01-network-manager-all.yaml 当前网络信息如图
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManagerethernets:ens33:dhcp4: yesens37:dhcp4: nobridges:br0:dhcp4: yesinterfaces:- ens37sudo netplan apply
或直接 reboot查看IP
起动u-boot
起动
sudo qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-bios ./u-boot.bin \
-nographic \
-nic tap,modele1000对于u-boot的编译后面细说
报错处理 新建qemu-ifup #!/bin/bashswitch$(brctl show | sed -n 2p |awk {print $1})
/sbin/ifconfig $1 0.0.0.0 up
/usr/sbin/brctl addif ${switch} $1[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JoPLef8G-1686285608277)(en-resource://database/27643:1)]
新建qemu-ifdown #!/bin/bash
#This is a qemu-ifdown script for bridging.
#You can use it when starting a KVM guest with bridge mode network.
#Dont use this script in most cases; QEMU will handle it automatically.switch$(brctl show| sed -n 2p |awk {print $1})
if [ -n $1 ]; then# Delete the specified interfacenametunctl -d $1#release TAP interface from bridgebrctl delif ${switch} $1#shutdown the TAP interfaceip link set $1 downexit 0
elseecho Error: no interface specifiedexit 1
fi把qemu-ifup与qemu-ifdown两脚本放入配置文件径
sudo mv qemu-if* /usr/local/bin/../etc/
sudo chmod 777 /usr/local/bin/../etc/qemu-if* 重新起动u-boot 倒计时为0前按任意键 测试网络 在提示符处输入 setenv ipaddr 192.168.218.200 #设置u-boot这边的地址(和br0同一网段即可)
setenv serverip 192.168.218.129 #//设置服务器地址(br0网桥的地址如上图所示QEMU与主机网络互通 在主机上搭建TFTP
简介 TFTPTrivial File Transfer Protocol简单文件传输协议是一个基于 UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议适合于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计只能从服务器上获取文件或者向服务器写入文件不能列出目录也不能进行认证。 根据上面关于 TFTP 的介绍实现TFTP, 搭建一个TFTP 的服务器ARM开发板当做客户端。 使用虚拟机 Ubuntu来当做服务器下面我们先讲解一下服务器端的配置。 1、安装依赖包
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd2、第二步, 配置/etc/xinetd.conf
vi /etc/xinetd.conf
# Simple configuration file for xinetd
#
#Some defaults, and include /etc/xinetd.d/
defaults
{
#Please note that you need a log_type line to be able to use log_on_success
#and log_on_failure. The default is the following :
#log_type SYSLOG daemon info
}
includedir /etc/xinetd.d查看是否有 xinetd.conf 查看内容是否一致, 如果没有创建一个并输入如下内容
3、第三步配置/etc/default/tftpd-hpa
sudo vim /etc/default/tftpd-hpa 内容修改成 ,其中工作目录TFTP_DIRECTORY“/tftpboot” 如果根目录下没有tftpboot需要自己创建------这个很关键不然tfp会启动失败这个根据自己的路径 #/etc/default/tftpd-hpa
TFTP_USERNAMEtftp
TFTP_DIRECTORY/work/tftpboot/
TFTP_ADDRESS0.0.0.0:69
TFTP_OPTIONS-l -c -s // 这里是 -L 的小写 -l4.、第四步配置/etc/xinetd.d/tftp
vim /etc/xinetd.d/tftp //pathname 不存在时自己创建 打开文件后对比如下保持一致
{socket_type dgramprotocol udpwait yesuser rootserver /usr/sbin/in.tftpdserver_args -s /home/ema/tftpboot/ -cdisable noper_source 11cps 100 2flags IPv4
}5、创建文件夹 mkdir /tftpboot
6、给权限 chmod 777 /tftpboot -R
7、启动服务器 sudo service tftpd-hpa start
8、调试服务器 在/tftpboot 下 touch test.txt
9、核心板 使用tftp下载文件
在主机上搭建NFS NFSNetwork File System是一种允许不同计算机之间共享文件的网络文件系统。 安装NFS服务器
sudo apt update
sudo apt install nfs-kernel-server创建共享目录
mkdir /work/nfsroot -p
chmod 777 /work/nfsroot -R这将创建一个名为“shared”的目录并将其权限设置为777这样所有用户都可以访问它
配置NFS服务器 配置NFS服务器。在Ubuntu 22.04 LTS中NFS服务器的配置文件位于“/etc/exports”文件中。您可以使用以下命令打开该文件进行编辑 vim /etc/exports在该文件中添加要共享的目录及其权限设置。例如要将“/work/nfsroot”目录共享给本地网络中的所有计算机可以添加以下行 /work/nfsroot *(rw, sync, no_subtree_check)在此示例中“*”表示该目录将共享给本地网络中的所有计算机“rw”表示该目录可读写“sync”表示写操作将同步到磁盘上“no_subtree_check”表示不进行子目录检查。保存并关闭该文件。 启动NFS服务器
配置NFS服务器后您需要启动NFS服务器以开始共享目录。您可以使用以下命令启动NFS服务器
sudo systemctl start nfs-kernel-server如果您想要NFS服务器在系统启动时自动启动则可以使用以下命令启用该服务
sudo systemctl enable nfs-kernel-server测试NFS服务器 可以使用其他计算机上的NFS客户端来测试您的NFS服务器是否正常工作。在NFS客户端上您可以使用以下命令挂载NFS共享 sudo mount server_ip:/shared /mnt在该命令中server_ip是您的NFS服务器的IP地址/shared是您要共享的目录/mnt是您要将共享目录挂载到的本地目录。如果一切正常您应该能够访问共享目录并进行读写操作。 也可通过如下命令查看配置
# sudo showmount -e
Export list for ubuntu22:
/work/nfsroot *对于u-boot、kernel、根文件系统的编译和制作后面会单独出编译制做。