🍣

KR260 に PetaLinux で環境を作る

2024/10/03に公開

はじめに

本記事はまだ書きかけですが、備忘録程度に公開しておきます。

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.cfclkcfg を上書きコピーしてくればよいようだ。

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 gccsudo 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
GitHubで編集を提案

Discussion