KR260 に PetaLinux で環境を作る
はじめに
本記事はまだ書きかけですが、備忘録程度に公開しておきます。
PetaLinux の インストール
インストール先ディレクトリを指定可能なので私はこのようにしています。
chmod 755 petalinux-v2023.2-10121855-installer.run
./petalinux-v2023.2-10121855-installer.run -d /opt/petalinux/2023.2
ビルド
基本手順は以下の通り。
petalinux-create -t project -s ../xilinx-kv260-starterkit-v2023.2-10140544.bsp
cd xilinx-kv260-starterkit-2023.2
petalinux-build
petalinux-package --boot --u-boot --force
petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot,boot.scr,Image,system.dtb,system-zynqmp-sck-kv-g-revB.dtb"
これで images/linux/petalinux-sdimage.wic が出来上がる。
これを SD に焼けば起動イメージが出来上がる。
なお、カスタマイズしたい場合は petalinux-build
の前に
petalinux-config -c kernel
とか
petalinux-config -c rootfs
など、いろいろ設定しても良いのかもしれない。
u-dma-bu や fclkcfg を入れておくのには PGAの部屋様のこちら を参考にさせて頂くとよさそうだ。
petalinux-create -t modules --name u-dma-buf --enable
petalinux-create -t modules --name fclkcfg --enable
生成されたソースに u-dma-buf.c や fclkcfg を上書きコピーしてくればよいようだ。
KV260で起動して設定
起動すると、シリアルにログインプロンプトがでるので、ユーザー名 petalinux で入ろうとすると、新しいパスワードの設定を求められるので設定する。
なお Ubuntu の apt のようなパッケージマネジャーとして dnf が使える。
たとえば
sudo dnf update
sudo dnf install curl
みたいなことが出来るようだ。
ユーザを作る
作ったユーザで sudo が使えるように sudo グループに root 権限を与える
sudo visudo
として
%sudo ALL=(ALL:ALL) ALL
を追加しておく。
続けて
sudo adduser <username>
sudo gpasswd -a <username> sudo
としてユーザーを作る。
ログアウトして作ったユーザーで入りなおして作業することが出来る。
自分のユーザーを作ったら ~/.ssh/authorized_keys などを設定しておくと良い。
ssh でポートフォワード出来るようにする
sudo vi /etc/ssh/sshd_config
として、コメントアウトされている下記の設定を有効にする。
AllowTcpForwarding yes
sudo systemctl restart sshd
とする。
このあたりで VS-code の remote development などが繋がるようになる。
NFS マウントする(お好みで)
私は NAS(QNAP) を NFS マウントして使っている
sudo dnf install nfs-utils
sudo mkdir /mnt/nfs
して
sudo mount -t nfs -o vers=3 XX.XX.XX.XX:/nfsshare /mnt/nfs
のような事をすればよい。
再起動時に自動マウントさせるには
sudo vi /etc/fstab
して
XX.XX.XX.XX:/nfsshare /mnt/nfs nfs defaults,vers=3 0 0
のような行を追加しておけばいい。
なお、私はもう一行足して、自分の home も NAS にマウントしている
シェルを bash にする
デフォルトが sh なようなので
chsh -s /bin/bash
する。ログインし直せば bash になる。
ついでに .bashrc なども好みに合わせて書き換えておくとよい。
Docker を入れる
sudo dnf update
sudo dnf install docker-ce
動くかどうか下記などで確認できる。
sudo docker run hello-world
git を入れる
sudo dnf update
sudo dnf install git
gcc を入れる
FPGAの部屋様の情報(こことかここ)だと sudo dnf install gcc
とするだけではだめだそうで、実際そうだったので sudo dnf search gcc
や sudo dnf search g++
でしらべて、力業で入れました。
sudo dnf update
sudo dnf install binutils \
gcc.cortexa72_cortexa53 \
gcc-dbg.cortexa72_cortexa53 \
gcc-dev.cortexa72_cortexa53 \
gcc-doc.cortexa72_cortexa53 \
gcc-lic.cortexa72_cortexa53 \
gcc-plugins.cortexa72_cortexa53 \
gcc-runtime-dbg.cortexa72_cortexa53 \
gcc-runtime-lic.cortexa72_cortexa53 \
gcc-runtime-src.cortexa72_cortexa53 \
gcc-sanitizers.cortexa72_cortexa53 \
gcc-sanitizers-dbg.cortexa72_cortexa53 \
gcc-sanitizers-lic.cortexa72_cortexa53 \
gcc-sanitizers-src.cortexa72_cortexa53 \
gcc-src.cortexa72_cortexa53 \
gcc-symlinks.cortexa72_cortexa53 \
libgcc-s-dbg.cortexa72_cortexa53 \
libgcc-s-dev.cortexa72_cortexa53 \
libgcc-s-lic.cortexa72_cortexa53 \
libgcc-s-src.cortexa72_cortexa53 \
libgcc1.cortexa72_cortexa53 \
g++-symlinks.cortexa72_cortexa53 \
libconfig++11.cortexa72_cortexa53
bootgen のビルド
openssl.h が必要なので sudo dnf search openssl で調べて、力業でごり押す。
sudo dnf install \
libgnutls-openssl27.cortexa72_cortexa53 \
openssl-bin.cortexa72_cortexa53 \
openssl-conf.cortexa72_cortexa53 \
openssl-dbg.cortexa72_cortexa53 \
openssl-dev.cortexa72_cortexa53 \
openssl-doc.cortexa72_cortexa53 \
openssl-engines.cortexa72_cortexa53 \
openssl-lic.cortexa72_cortexa53 \
openssl-misc.cortexa72_cortexa53 \
openssl-ossl-module-legacy.cortexa72_cortexa53 \
openssl-ptest.cortexa72_cortexa53 \
openssl-src.cortexa72_cortexa53 \
openssl-staticdev.cortexa72_cortexa53
bootgen をビルド
git clone https://github.com/Xilinx/bootgen
cd bootgen/
make
cp bootgen ~/.local/bin
Rust を入れる
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Elixir をビルドしてみる
git clone --depth=1 -b OTP-27.1.1 https://github.com/erlang/otp.git
cd otp
./configure
make
sudo make install
git clone --depth=1 -b v1.17.3 https://github.com/elixir-lang/elixir.git
cd elixir
make compile
sudo make install
Discussion