本文将详细介绍PetaLinux 2023.1版本的安装和使用流程,包括:虚拟机环境搭建、PetaLinux安装、在线/离线编译方法、SD卡制作与上板验证。不同版本和板子之间可能略有区别。
一、安装虚拟机
查看文档UG1144,确定所要安装的petalinux版本对应的虚拟机版本,这里我安装的是Ubuntu20.04.6(虽然显示不支持,但实际上没什么问题)。

Ubuntu配置中硬盘可以给大一点,后面如果要离线编译的话用得上。

安装虚拟机后可以切换镜像源,方便后面下载库文件。
二、下载petalinux
进入官网下载页面:

三、安装Petalinux
1. 安装必要的库文件
1 | sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax xterm build-essential libtinfo5 libncurses5 tftpd-hpa -y |
2. 将petalinux安装包复制到虚拟机中
可以使用scp命令复制,前提是虚拟机需要先安装并启动SSH服务(sudo apt install openssh-server 和 sudo systemctl start ssh)。
1 | scp 需要复制的文件 虚拟机用户名@虚拟机ip地址:文件保存的地址 |
示例:
1 | scp petalinux-v2023.1-05012318-installer.run raiset@192.168.80.130:~/Downloads |
3. 创建Petalinux文件夹并给予权限
1 | sudo mkdir -p /opt/pkg/petalinux |

4. 开始安装
为安装文件添加执行权限:
1 | sudo chmod 777 petalinux-v2023.1-05012318-installer.run |
指定安装路径为刚才创建的文件夹:
1 | ./petalinux-v2023.1-05012318-installer.run -d /opt/pkg/petalinux/ |

输入 q
,回车,然后跳出一大段文字:


依此类推,直到开始安装:

四、PetaLinux使用
1. 配置环境变量
每次打开一个Terminal都需要执行此命令,否则无法运行PetaLinux相关指令!
1 | source /opt/pkg/petalinux/settings.sh |
2. 创建工作目录并给予权限
创建一个目录,在该目录下可创建多个PetaLinux工程。
1 | sudo mkdir peta_prj |
3. 创建PetaLinux工程
1 | petalinux-create --type project --template <PLATFORM> --name <PROJECT_NAME> |
参数说明:
<PLATFORM>
- 目标平台类型支持的平台类型
versal
- Versal ACAPzynqMP
- Zynq UltraScale+ MPSoCzynq
- Zynq-7000 devicesmicroblaze
- MicroBlaze™ processor
<PROJECT_NAME>
- 工程名称

4. 配置PetaLinux(在线编译)
4.1 配置工程
进入工程目录:
1 | cd test_peta |
将Vivado生成的XSA文件移动到虚拟机中

运行 bash petalinux-config --get-hw-description <XSA_PATH>
其中 <XSA_PATH>
是XSA文件所在路径。

一般情况下保持默认配置即可,使用方向键移动到Exit退出。
不同板子的配置可能不一样,可以参考板子的相关手册,下面几个配置同理。

4.2 配置内核
1 | petalinux-config -c kernel |
⚠️保持虚拟机联网状态,这里会从网络下载大量文件!

由于以太网的PHY芯片驱动默认没有打开,需要手动配置:
使用方向键导航,按enter进入,依次选择Device Drivers → Network device support → PHY Device support and infrastructure → Micrel Phys
按 y
选中Micrel Phys驱动,然后选择Exit
逐层退出并保存。

4.3 配置根文件系统
1 | petalinux-config -c rootfs |

根文件系统配置一般保持默认即可,直接退出。
5. 编译
1 | petalinux-build |
⚠️编译过程较长,会从网络下载大量依赖文件。
常见问题解决:cracklib分支问题
错误现象: 编译过程中出现以下错误信息:

解决方案: GitHub上的cracklib主分支已从master改为main,需要修改配置文件:
文件路径: [projectdir]/components/yocto/layers/poky/meta/recipes-extended/cracklib/cracklib_2.9.8.bb
修改内容: 将分支信息从master改为main:

有时如果编译不成功,可以多运行几次petalinux-build命令。
出现以下信息代表编译成功:

6. 打包
1 | petalinux-package --boot --u-boot --fsbl --fpga --force |
参数详解
--fsbl
- 指定FSBL镜像文件位置
- 默认路径:
images/linux/zynq_fsbl.elf
--fpga
- 指定bitstream文件位置
- 默认路径:
images/linux/system.bit
- 注意:如果XSA文件中不包含bit文件,不应添加此参数
--u-boot
- 指定U-Boot镜像位置
- 默认路径:
images/linux/u-boot.elf
--force
- 强制覆盖已存在的文件
五、制作SD卡
1. 准备工作
- 一张空闲的SD卡
- 读卡器
- 将SD卡通过读卡器连接至虚拟机
2. 查看SD卡设备
打开Disks工具,查看SD卡设备名称:

本例中SD卡设备被识别为/dev/sdb,请根据实际情况调整后续命令中的设备名称!
3. SD卡分区操作
3.1 进入分区工具
1 | sudo fdisk /dev/sdb |

3.2 查看现有分区
输入 p
并回车查看当前分区状态:

如果存在已有分区,需要先删除。输入 d
删除现有分区,然后选择要删除的分区编号:

3.3 SD卡分区创建
创建主分区:
- 输入
n
创建新分区 - 输入
p
设置为primary主分区 - 分区编号和起始扇区默认即可,直接回车
- 输入
+1G
设置分区大小为1GB

设置为启动分区:
输入 a
将分区1设置为可启动:

设置文件系统类型:
输入 t
然后输入 c
设置为FAT32格式:

创建Root分区:
- 输入
n
创建第二个分区 - 输入
p
设置为primary主分区 - 其他设置默认即可,直接回车使用剩余所有空间

输入 p
查看分区创建结果:

写入分区表:
输入 w
并回车将分区配置写入SD卡,写入完成后会自动退出fdisk工具。
3.4 格式化分区
取消挂载:
1 | sudo umount /dev/sdb1 |
格式化Boot分区为FAT32格式:
1 | sudo mkfs.vfat -F 32 -n boot /dev/sdb1 |
格式化Root分区为ext4格式:
1 | sudo mkfs.ext4 -L root /dev/sdb2 |
重新插拔SD卡后,使用以下命令验证格式化结果::
1 | lsblk -f |

除了命令行方式,也可以使用图形化工具:Linux: gparted;Windows: DiskGenius。

4. 写入系统文件
4.1 拷贝Boot文件
进入工程目录/images/linux
,将以下文件拷贝到Boot分区:
boot.scr
BOOT.BIN
image.ub

4.2 写入Root文件系统
dd命令:直接写入ext4镜像文件,完整性好; 解压方式:将rootfs.tar.gz解压到挂载点,速度较快。
1 | sudo dd if=rootfs.ext4 of=/dev/sdb2 |
等待写入完成

1 | sudo tar -zxf rootfs.tar.gz -C /media/raiset/root |
挂载的位置可以从上面lsblk -f
命令输出的结果中看到。
六、上板验证
1. 设置SD卡启动
将开发板设置为SD卡启动模式,具体设置方法请参考板卡用户手册,通常通过跳线帽或拨码开关来设置。
2. 串口连接
2.1 查看端口
打开Windows设备管理器查看串口号:

如果设备管理器中不显示串口,需要下载并安装相应的USB转串口驱动程序。
2.2 配置串口工具
以Putty为例,配置连接参数:

3. 启动测试
3.1 启动过程
- 启动开发板 - 插入SD卡并上电
- 打开串口工具 - 连接并打开串口窗口
- 等待启动完成 - 观察启动日志输出
3.2 首次登录配置
- 用户名: 输入
petalinux
- 设置密码: 根据提示设置新密码
- 确认密码: 再次输入密码确认
- 登录成功: 进入PetaLinux系统命令行

七、离线编译
离线编译通过预先下载所需文件,避免在编译过程中联网下载,可以显著提升编译速度。
1. 下载离线资源

根据开发板型号选择相应的文件,其中downloads文件所有平台都需要:

2. 解压
创建两个文件夹分别用于存放sstate-cache和downloads文件。

运行tar -xvf xxx.tar.gz
解压文件,解压完成后删去压缩包。
3. 配置离线编译
进入Yocto Settings菜单:
在 petalinux-config
界面中,使用方向键导航到 “Yocto Settings” 并回车进入。
禁用网络并启用离线模式:
- 按
n
取消 “Enable Network sstate feeds” - 按
y
选择 “Enable BB NO NETWORK”

配置sstate-cache路径:
找到 “Local sstate feeds settings” 选项,进入后输入sstate-cache所在路径:

注意使用绝对路径,不能使用 ~/
简写,否则后面会报错。
配置downloads路径:
找到 “Add pre-mirror url” 选项,进入后输入downloads所在路径:
注意必须添加file://
前缀。

至此,您已经完成了PetaLinux的完整学习流程,希望这个教程能对您的嵌入式Linux开发工作有所帮助!