はじめに
SoC開発において、FPGAに変更が加わるたびに論理合成/配置配線の結果をBootファイルなどと統合してSDカードに焼く必要が出てくることがあります。その手間を最小限にするスクリプトを書きました。
前提条件
- Ubuntu 22.04.2 LTS
- Vivado v2024.1 (64-bit)
- PetaLinuxツール v2024.1
あらかじめpetalinux-create
でプロジェクトを作成、petalinux-config
でハードウェアコンフィギュレーション(.xsa)をインポートしているものとします。
スクリプト
以下のスクリプト(rebuild.sh)をプロジェクトディレクトリに置き実行します。
一部Superuserにならないといけないところでは、expectを使い自動化しています。
rootのパスワードはxxxxxxxx
、userはaaaaaaaa
としています。
SDカードのマウント場所や/dev/sdx
は適宜確認してください。
rebuild.sh
#!/bin/bash
echo "Start rebuilding!"
petalinux-build
petalinux-package --boot --u-boot --force
cd images/linux
rm -rf ramdisk*
dd bs=64 skip=1 if=rootfs.cpio.gz.u-boot of=ramdisk.cpio.gz
gunzip ramdisk.cpio.gz
mkdir ramdisk && cd ramdisk
cpio -i -F ../ramdisk.cpio
cd ..
path=\".*#\"
expect -c "
set timeout 20
spawn su
expect \"Password:\"
send \"xxxxxxxx\r\"
expect -re ${path}
send \"mount /dev/sdb1 /media/aaaaaaaa/boot\r\"
expect -re ${path}
send \"mount /dev/sdb2 /media/aaaaaaaa/root\r\"
expect -re ${path}
send \"cp -rf ramdisk/lib/modules /media/aaaaaaaa/root/lib/\r\"
expect -re ${path}
send \"cp -rf BOOT.BIN boot.scr image.ub /media/aaaaaaaa/boot/\r\"
expect -re ${path}
send \"umount /dev/sdb1\r\"
expect -re ${path}
send \"umount /dev/sdb2\r\"
expect -re ${path}
"
echo ""
exit 0
関連