fumiLab

fumimakerが作ったもの、やったことについて書いていきます。

Zybo Z7-20でPetalinux2019をビルドして動かす(1) ~petalinuxをインストール~

PetalinuxをZyboで動かしたい.

Zybo Z7-20でPetalinuxを動かしたかったのでやってみました.調べてみると2018以前のものが多く,XilinxSDKなどいろいろ変わった2019年以降とは少し違います.ちょこっとハマるポイント(勝手に自滅しただけ)もあったのでそれをちょこっと残しておこうと思います.(こいついつもハマってんな)

書いてみたら結構長くなったので2つの分けます.今回はPetalinuxのインストール,次回はPetalinuxをビルドしてZyboZ7-20を動かすところをやっていきます.

次回かけました.

fumimaker.net

環境

  • Ubuntu18.04
    • たぶん18じゃなくても大丈夫かなと思いますが自分は18でやりました.
  • Petalinux 2019.2

Ubuntuを入れておく

Ubuntuを入れて使える状態にしておきましょう.自分はMacBookProで作業してるのでParallelsを使って仮想マシンとしてUbuntuを入れてます.ParallelsVirtualBoxみたいに苦労することがないのでおすすめです...有料だけど買って損ないと思う.(VMWareもいいらしい)

f:id:fumimaker:20200930121800p:plain
Ubuntu

Petalinuxをインストールする

Xilinxが公式でインストールのやり方を教えてくれてるのでこれ通りやればおKです.

github.com

https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf

データシートの方は結構詳しく引数なども日本語で教えてくれてるので目を通しておくのをおすすめします.日本語資料が充実してるとちょっと嬉しい.

下準備をする

先にupdateとupgradeしておきます.

sudo apt update
sudo apt upgrade

もうapt-getは非推奨らしいですよ.あんまりわからんけどaptだけでいいみたいです.でも癖でapt-getを使ってしまう.

Petalinuxをビルドするために必要なものを先に入れておきます.説明通りにこれをインストールします.

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

必要であれば,TFTPサーバをインストールしておきましょう.使う予定がなければ飛ばしてもいいですが入れておいて損はない.インストールしたらリファレンスにしたがってchmodしておきましょう.

sudo apt-get install tftpd-hpa
sudo chmod a+w /var/lib/tftpboot/

インストーラーをダウンロードします

japan.xilinx.com

.run形式のものがダウンロードされます.適当にmkdirして~/petaにおいておきました.ここを作業ディレクトリとします.

インストーラーを実行

/opt/pkg/petalinuxにインストールしたいので作ります.

sudo mkdir -p /opt/pkg/petalinux 
./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/

します.

許可がありませんとでた.どうやら/opt/pkg/petalinuxに権限がないらしい.ls -l で様子を見てみます.

fumi@ubuntu:/opt/pkg$ ls -l
合計 4
drwxr-xr-x 2 root root 4096 Sep 29 23:48 petalinux
fumi@ubuntu:/opt/pkg$ 

ということでgroupとOwnerを変更します.

sudo chgrp fumi /opt/pkg && sudo chgrp fumi /opt/pkg/petalinux && sudo chown fumi /opt/pkg && sudo chown fumi /opt/pkg/petalinux

もう一度ls -lで見てみる.

fumi@ubuntu:/opt/pkg$ ls -l
合計 4
drwxr-xr-x 2 fumi fumi 4096 Sep 29 23:48 petalinux
fumi@ubuntu:/opt/pkg$ 

大丈夫そう.ちなみに,sudoでインストーラーを動かせばいいじゃないかと思うかもしれませんが,公式ドキュメントによればそれをやるとbitbikeエラーを起こすらしくやってはいけないそうです.ユーザー権限で実行するようにしましょう.

あたらめてインストーラーを動かします.

cd ~/peta
./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/

まだ許可がないらしい.困った.ちょっと調べたらインストーラーをchmod 755すれば良いという情報があった.ということでchmodしておきます.

sudo chmod 755 petalinux-v2019.2-final-installer.run

今度こそ実行

ERROR: Failed to extract Petalinux installer...となってしまった.これが人生.調べてみるといくつかパッケージがたりてない可能性があるらしい.そのページにあったこれを入れてみる.よくみるとgawkというのが追加されているようだ.

forums.xilinx.com

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev zlib1g:i386 screen pax gzip gawk

もう一度トライ

./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/

f:id:fumimaker:20200930121807p:plain
Enterをおす

動きました,よかった.画面ではAgreeを求められているのでEnterを押して

f:id:fumimaker:20200930121812p:plain
qをおす

ここでqを推します.

f:id:fumimaker:20200930121818p:plain
yを押す

そしてyを押してEnter.これを3セットやります.

3回やるとこのようになり,Petalinuxがインストールされます.ちょっと時間かかるかも.MacBookが熱々でした.

f:id:fumimaker:20200930121823p:plain
Fire

ERROR: Failed to install Yocto SDK for aarch64.

はい,できませんねこれ.Failed to install Yocto SDK for aarch64.と書いてあります.~/petaにあるインストールログをみるとPythonがないよって言っています.

marsee101.web.fc2.com

ここによるとPython2じゃないと動かんらしい.見てみるとUbuntu18はPython3しか入ってない.(そりゃそうだ)なのでPython2を入れます,

sudo apt install python

入りました.も一度トライ.

./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/

f:id:fumimaker:20200930121827p:plain
インストール

fumi@ubuntu:~/peta$ ./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/
INFO: Checking installation environment requirements...
INFO: Checking free disk space
INFO: Checking installed tools
INFO: Checking installed development libraries
INFO: Checking network and other services
WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution
INFO: Checking installer checksum...
INFO: Extracting PetaLinux installer...

LICENSE AGREEMENTS

PetaLinux SDK contains software from a number of sources.  Please review
the following licenses and indicate your acceptance of each to continue.

You do not have to accept the licenses, however if you do not then you may 
not use PetaLinux SDK.

Use PgUp/PgDn to navigate the license viewer, and press 'q' to close

Press Enter to display the license agreements
Do you accept Xilinx End User License Agreement? [y/N] > y
Do you accept Webtalk Terms and Conditions? [y/N] > y
Do you accept Third Party End User License Agreement? [y/N] > y
INFO: Installing PetaLinux...
*********************************************
WARNING: PetaLinux installation directory: /opt/pkg/petalinux/. is not empty!
*********************************************
Please input "y" to continue to install PetaLinux in that directory?[n]y
INFO: Checking PetaLinux installer integrity...
INFO: Installing PetaLinux SDK to "/opt/pkg/petalinux/."
INFO: Installing aarch64 Yocto SDK to "/opt/pkg/petalinux/./components/yocto/source/aarch64"...
INFO: Installing arm Yocto SDK to "/opt/pkg/petalinux/./components/yocto/source/arm"...
INFO: Installing microblaze_full Yocto SDK to "/opt/pkg/petalinux/./components/yocto/source/microblaze_full"...
INFO: Installing microblaze_lite Yocto SDK to "/opt/pkg/petalinux/./components/yocto/source/microblaze_lite"...
INFO: PetaLinux SDK has been installed to /opt/pkg/petalinux/.
fumi@ubuntu:~/peta$ 

やった!インストール成功しました!長い道のりだった…まだPetalinuxをインストールしただけで何も始まってないんですけどね.

設定を読み込むようにする

このままだとPetalinuxの設定が読み込まれておらずpetalinux-configとかやってもエラーになると思います.

fumi@ubuntu:~$ petalinux-config
petalinux-config: コマンドが見つかりません
fumi@ubuntu:~$ 

なので設定が読み込まれるようにします.一回手動で動かしてみます.

source /opt/pkg/petalinux/settings.sh

こんな感じで読み込まれます.この状態ならPetalinuxコマンドが動くと思います.

fumi@ubuntu:~$ source /opt/pkg/petalinux/settings.sh
PetaLinux environment set to '/opt/pkg/petalinux'
WARNING: /bin/sh is not bash! 
bash is PetaLinux recommended shell. Please set your default shell to bash.
INFO: Checking free disk space
INFO: Checking installed tools
INFO: Checking installed development libraries
INFO: Checking network and other services
fumi@ubuntu:~$ petalinux-config
ERROR: You are not inside a PetaLinux project. Please specify a PetaLinux project!
Configures the project or the specified component with menuconfig.

Usage:
  petalinux-config [options] {--component <COMPONENT> |--get-hw-description[=SRC]}

Options:
  -h, --help                      show function usage
  -p, --project <PROJECT>         path to PetaLinux SDK project.
                                  default is the working project
  --silentconfig              takes the default configuration and skips the GUI.
  -c, --component <COMPONENT>     Specify the component
                                  If no component is specified, it will do
                                  top level project configuration .
                                  If you specify a component,it will
                                  configure it with menuconfig and saves
                                  user's config fragments in meta-user.
                                  E.g. -c rootfs, -c busybox
  --get-hw-description [SRC]      get hardware description.
                                  if [SRC] is specified, look in that
                                  location for an Vivado export to SDK directory.
                                  Otherwise, this MUST be run from
                                  WITHIN the vivado export to SDK directory.
  --defconfig [DEFCONFIG_TARGET]  defconfig the specified component.
                                  It applies to kernel and u-boot.
  -v, --verbose                   verbose mode

Note: There is no validation for configurable components. User can provide
      any component, bitbake will throw error for invalid components.

fumi@ubuntu:~$ 

ちゃんと動いてますね.Terminalを起動する旅にこれをやるのは面倒なのでbashrcに書いておきましょう.bashrcはbashが起動するたびに自動で実行してくれる設定ファイルです.(たぶん)

fumi@ubuntu:~$ echo source /opt/pkg/petalinux/settings.sh >> ~/.bashrc

これでTerminalを起動するたびに実行してくれます.

f:id:fumimaker:20200930182418p:plain
起動したところ

でも毎回実行した時の文字が出るのはちょっと煩わしいので実行しても文字が出ないようにしておきました.

f:id:fumimaker:20200930182905p:plain
/dev/nullにつないで捨てたけどもっと賢い方法がある気がする
面倒だったのでnanoで編集してますが別になんでも大丈夫です./dev/nullにつないで消しましたがもっと賢い方法があるような気がします...誰か教えてください.

これで再度Terminalを起動しても何も表示されずにPetalinuxが読み込まれるようになりました.やったね.

f:id:fumimaker:20200930183054p:plain
何も表示されずちゃんとPetalinuxが読めてる

今回はここまでにします.次回はPetalinuxのプロジェクトを作ってビルドして動かします.

次回→PetalinuxをビルドしてZybo Z7-20実行する

fumimaker.net