Petalinux2018.3環境を整える

(510d) 更新


公開メモ

Zynq-7000 ソフトウェア開発用に Petalinux 2018.3 環境を整える

vivado 2018.3 のインストーラを動かしてるのと平行して、Petalinux 開発環境も 2018.3 を整えよう。それにしても vivado 2018.3 のインストーラがファイルをダウンロードしているだけなのにもかかわらず CPU リソースを異常に食い潰すのはなぜなんだぜ?むしろインストール中は CPU を使ってないので何かがおかしい気がするのだけれど。

ということでこのページ、簡単に言えば 2016.4 でやった 電気回路/zynq/Petalinux のビルド電気回路/zynq/Petalinux のカスタマイズ を 2018.3 でやりなおそうという話だ。

目次

環境

以下は 2019-03-15 時点で、Windows10 Home 64bit に VirtualBox 5.2.26 という環境での話。

VirtualBox には Extention Pack 5.2.26 を入れてある。

Virtual Box に Ubuntu 16.04 を入れる

要求される環境を確認

Xinlinx の PetaLinux ツール関連ドキュメントページから、

https://japan.xilinx.com/support/documentation-navigation/development-tools/software-development/petalinux-tools.html

"UG1144 - PetaLinux Tools Documentation: Reference Guide (v2018.3) " をクリックして Installation Requirements を見ると、Ubuntu Linux 16.04.3, 16.04.4 (64-bit) がリストアップされていたのでこれで行こう。

ちなみに、UG1144 の日本語訳は現時点では 2017_2 のものが最新みたい。 ちょっと古いのでアレだけど、ざっと眺めるには良いかも。

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

仮想環境を構築

Virtual Box で 「新規」 を押して、

virtualbox.png

virtualdisk.png

Ubuntu のインストールメディアをダウンロード

ubuntu16.04.6.png

http://releases.ubuntu.com/16.04/

から "64-bit PC (AMD64) server install image" をダウンロード

ubuntu-16.04.6-server-amd64.iso, 873MB でした。

16.04.4 ではないのだけれど、セキュリティ的にも新しい方が良いのだろうということで、あえて 16.04.6 にした。

どうしても 16.04.4 にしたければ http://old-releases.ubuntu.com/releases/16.04.4/ からダウンロードすれば良い。ただなぜかリンク先のファイル名は ubuntu-16.04.1-server-amd64.iso となっていた???

Ubuntu のインストール

それほど気をつけるべきところは無いのだけれど1点だけ、

「ホームディレクトリの暗号化」を選択してしまうと後で詰んでしまうので注意が必要。

Petalinux は内部で非常に長いファイル名を使うので、 暗号化ファイルシステムでは実行できない。 初手で間違えるとやり直すのに時間がかかるので注意が必要。

今回は当初暗号化を選んでしまい、後から暗号化を解除する羽目になった orz

というわけで閑話休題。

上記の仮想マシンを何もせずに起動すると "No bootable medium" と言われるので、 ウィンドウ下部の CD のアイコンを右クリックして "ディスクイメージを選択"

no-bootable-medium.png

上記でダウンロードした .iso ファイルを指定してから [仮想マシン]-[リセット]

ubuntu-language.png

ubuntu-install.png

ubuntu-install-japanese.png

ubuntu-install-location.png

ubuntu-install-keyboard.png

ubuntu-install-keyboard-layout.png

ubuntu-install-hostname.png

ubuntu-install-user-name.png

ubuntu-install-account-name.png

ubuntu-install-account-password.png

ubuntu-install-account-password2.png

ubuntu-install-crypt-disk.png

「ホームディレクトリの暗号化」は必ず <いいえ> を選ぶべき! <はい> を選んで失敗した orz

ubuntu-install-time-zone.png

ubuntu-install-disk-partition.png

ubuntu-install-disk-partition2.png

ubuntu-install-disk-partition3.png

ubuntu-install-disk-partition4.png

ubuntu-install-disk-partition5.png

ubuntu-install-noproxy.png

ubuntu-install-update-policy.png

ubuntu-install-software.png

ubuntu-install-grub.png

ubuntu-install-remove-disk.png

ubuntu-boot.png

ちゃんと立ち上がった。

etckeeper を入れる

/etc の設定変更履歴を取れるようにする。

LANG:console
$ export LANG=C
$ sudo apt-get install etckeeper

ネットワーク設定

LANG:console
$ ifconfig
 ...
 inet addr:10.0.2.15
 ...

とのことなので、ホストPCの PuTTY からこのアドレスに繋ぎに行ったところ繋がらなかった。

LANG:console
$ shutdown 0

にて一旦仮想マシンを落とし、Virtual Box, Windows および Ubuntu のネットワーク設定を行う。

Virtual Box

Virtual Box にて仮想マシンの右クリックから [設定]

virtualbox-network-hostonly-adapter.png

ネットワークアダプタ2にホストオンリーアダプタを設定する。

Windows 10

Windows ボタンを押して control と打ってコントロールパネルを起動

control-panel-network.png

control-panel-network2.png

control-panel-network3.png

control-panel-network4.png

network-ipv4.png

[共有] タブにて [ネットワークのほかのユーザーに、このコンピューターのインターネット接続をとおしての接続を許可する(N)] にチェックを付ける。

network-ip4-share.png

1つ戻って、IPv4 をダブルクリックすると、

network-ipv4-range.png

IPアドレス範囲が 192.168.56.0-255 であることが確認できる。

Ubuntu

/etc/network/interfaces に

auto enp0s8
iface enp0s8 inet dhcp

を加える。

LANG:console
$ export LANG=C
$ ifconfig -a
 ...
 enp0s8    Link encap:Ethernet  HWaddr 08:00:27:7d:e7:f9
 ...

$ sudo vi /etc/network/interfaces
$ cd /etc
$ sudo git diff network/interfaces
 diff --git a/network/interfaces b/network/interfaces
 index 4afd144..931a40e 100644
 --- a/network/interfaces
 +++ b/network/interfaces
 @@ -10,3 +10,7 @@ iface lo inet loopback
  # The primary network interface
  auto enp0s3
  iface enp0s3 inet dhcp
 +
 +# The host only network interface
 +auto enp0s8
 +iface enp0s8 inet dhcp
$ sudo service networking restart
$ ifconfig
 ...
 enp0s8    Link encap:Ethernet  HWaddr 08:00:27:7d:e7:f9
           inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
 ...

ということで、PuTTY から 192.168.56.101 へ繋ぎに行ったらちゃんと繋がった

ssh-console.png

必要なパッケージを Ubuntu へインストール

https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2018_3/ug1144-petalinux-tools-reference-guide.pdf#page=12

(xilinx2018_3 のところは適当に変えて) の Quick Installation of Packages を参考にして、 Petalinux を動かすのに必要なパッケージを導入する。

LANG:console
$ 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

昔はリストに漏れているパッケージを後から探して入れなきゃならなかったりしたけれど、 このバージョンでは言われたとおりで問題なくうまくいった。

Petalinux をインストール

インストーラのダウンロード

https://japan.xilinx.com/products/design-tools/embedded-software/petalinux-sdk.html

の右側のクイックリンクから、「Petalinux のダウンロード」をクリック。

訳の分からないページに飛ばされて面食らうのだけれど、 目的のものは「エンベッド開発」の中にあった。

petalinux-installer-download.png

Xilinx にサインインして、個人情報の Verification をすると自動でダウンロードが始まる。

ダウンロードしたのは、

  • PetaLinux 2018.3 インストーラー(TAR/GZIP - 6.79GB)
  • PetaLinux 2018.3 ライセンスおよび著作権情報

「sstate キャッシュ」というのを入れておくと Petalinux を完全にオフラインでも使えるようになる、 と書かれていたけど、ここではとりあえずスキップした。

インストーラを Ubuntu から読めるようにする

ホストPCにダウンロードしてしまったため、 これを Ubuntu 側から読めるようにしないと動かせない。

VirtualBox コンソールの右下のフォルダアイコンで右クリックし、「共有フォルダー設定...」を選択。

[ダウンロード] フォルダを Downloads という名前で共有する。

virtualbox-shared-folder.png

virtualbox-shared-folder2.png

virtualbox-shared-folder3.png

Ubuntu に VirtualBox のゲストシステム用のツールをインストールし、 上記フォルダをマウントする。

LANG:console
$ sudo apt install virtualbox-guest-dkms
$ mkdir downloads
$ sudo mount -t vboxsf Downloads downloads/
$ ls downloads/petalinux-v2018.3-*
 downloads/petalinux-v2018.3-final-installer.run
 downloads/petalinux-v2018.3-license.tar.gz
 downloads/petalinux-v2018.3-open_components.tar.gz

インストーラを起動

https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2018_3/ug1144-petalinux-tools-reference-guide.pdf#page=13

の "Run PetaLinux Tools Installer" に

  • You cannot install the tool as root user.
  • You can install at any desired location that has the 755 permissions.
  • Once installed, you cannot move or copy the installed directory.
  • By default, the webtalk option is enabled to send tools usage statistics back to Xilinx.
  • You can turn off the webtalk feature by running the petalinux-util --webtalk command
    LANG:console
    $ petalinux-util --webtalk off

の注意書きがあることを心に留めておく。

始め ~/petalinux_2018.3 にインストールすることを試みたのだけれど、 下に詳しく書いたように暗号化ファイルシステムへ aarch64 Yocto SDK をインストールしようとすると途中で "File name too long" のエラーが出て止ってしまう。

仕方がないのでリファレンスマニュアルと同様 /opt 以下にインストールすることにした。

LANG:console
$ sudo mkdir -p /opt/petalinux_2018.3
$ sudo chown takeuchi:takeuchi /opt/petalinux_2018.3
$ cd
$ downloads/petalinux-v2018.3-final-installer.run /opt/petalinux_2018.3
  INFO: Checking installation environment requirements...(3分くらい待たされる)
  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...(2分くらい待たされる)
  INFO: Extracting PetaLinux installer...(10分くらい待たされる)
 
 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(Enterを押す)
 (内容を確認したら "q" を押す)
 Do you accept Xilinx End User License Agreement? [y/N] > y(Enterを押す)
 (内容を確認したら "q" を押す)
 Do you accept Webtalk Terms and Conditions? [y/N] > y(Enterを押す)
 (内容を確認したら "q" を押す)
 Do you accept Third Party End User License Agreement? [y/N] >y(Enterを押す)
 INFO: Installing PetaLinux...(4分半くらい待たされる)
 INFO: Checking PetaLinux installer integrity...(1分半くらい待たされる)
 INFO: Installing PetaLinux SDK to "./petalinux_2018.3/." (7分くらい待たされる)
 INFO: Installing aarch64 Yocto SDK to "./petalinux_2018.3/./components/yocto/source/aarch64"...(1分くらい)
 INFO: Installing arm Yocto SDK to "/opt/petalinux_2018.3/./components/yocto/source/arm"...(1分半くらい)
 INFO: Installing microblaze_full Yocto SDK to "/opt/petalinux_2018.3/./components/yocto/source/microblaze_full"...(2分くらい)
 INFO: Installing microblaze_lite Yocto SDK to "/opt/petalinux_2018.3/./components/yocto/source/microblaze_lite"...(1分くらい)
 INFO: PetaLinux SDK has been installed to /opt/petalinux_2018.3/.
$ du -sh /opt/petalinux_2018.3
 14G     /opt/petalinux_2018.3

ということで、インストールできた。

/opt/petalinux_2018.3 は 14GB くらいになっている。

暗号化ファイルシステムへインストールしようとするとエラーで止る

初回、Ubuntu インストール時にホームディレクトリを暗号化するよう選んでしまった。

そのために ~/ 以下に Petalinux をインストールしようとすると、

LANG:console
$ cd
$ mkdir petalinux_2018.3
$ downloads/petalinux-v2018.3-final-installer.run /opt/petalinux_2018.3
 ...

 INFO: Installing aarch64 Yocto SDK to "./petalinux_2018.3/./components/yocto/source/aarch64"...
 *********************************************
 ERROR: Failed to install Yocto SDK for aarch64.
 *********************************************
 
 Please refer to the PetaLinux Tools Installation Guide.
 
 Check the troubleshooting guide at the end of that manual, and if you are
 unable to resolve the issue please contact customer support with file:
    /home/takeuchi/petalinux_installation_log
$ tail -10 /home/takeuchi/petalinux_installation_log
 ...
 INFO: Installing aarch64 Yocto SDK to "./petalinux_2018.3/./components/yocto/source/aarch64"...
 PetaLinux Extensible SDK installer version 2018.3
 =================================================
 You are about to install the SDK to "/home/takeuchi/petalinux_2018.3/components/yocto/source/aarch64". Proceed[Y/n]? Y
 Extracting SDK..........tar: ./sstate-cache/8c/sstate\:linux-xlnx\:zynqmp_generic-xilinx-linux\:4.14-xilinx-v2018.3+gitAUTOINC+eeab73d120\:r0\:zynqmp_generic\:3\:8c03d3549442fefdae49621db9597267_deploy.tgz: Cannot open: File name too long
 ...

のように "File name too long" というエラーで止ってしまう。

https://forums.xilinx.com/t5/Embedded-Linux/Petalinuxv2018-3-installation-Error/td-p/924156

Re: Petalinuxv2018.3 installation Error

SOLVED: The reason I was receiving this error was because I had an encrypted file system mainly my home directory. I solved this issue by chaining the absolute path of the install folder to an arbitrary directory outside of home.

にあるように、暗号化ファイルシステムを使っちゃダメらしい。

というわけで、30分近くかけた作業が始めからやり直しになっちゃった orz

こういうのは始めの方でチェックするようにして欲しいなあ。

ホームディレクトリ暗号化の解除

petalinux のプログラム本体をホームディレクトリに置けないのはまだしも、 プロジェクトフォルダについてもやはりファイル名の長さの問題で 暗号化ファイルシステムに置けないことが後に分かったため、

https://wiki.archlinux.jp/index.php/ECryptfs

を参考にホームディレクトリの暗号化を解除した。

まずホームディレクトリを tar して取っておく。

LANG:console
$ cd
$ tar fcz /opt/petalinux_2018.3/takeuchi-home.tar.gz .

そして、ホームディレクトリをアンマウントするために、 別のアカウントを作りそちらでログインし直す。

LANG:console
$ sudo useradd -m -G sudo -s /bin/bash tempuser
$ sudo passwd tempuser
 Enter new UNIX password:
 Retype new UNIX password:
 passwd: password updated successfully
$ exit
LANG:console
login: tempuser
Password: 
$ mount | grep takeuchi
 /home/.ecryptfs/takeuchi/.Private on /home/takeuchi type ecryptfs (rw,nosuid,nodev,relatime,ecryptfs_fnek_sig=3bc2b55ef2c49b48,ecryptfs_sig=4c33ff2fe168ce4a,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
 Downloads on /home/takeuchi/downloads type vboxsf (rw,nodev,relatime)
$ sudo umount ~takeuchi/downloads
$ sudo umount ~takeuchi
$ sudo ls -aF ~takeuchi
 ./  ../  .Private@  .ecryptfs@  Access-Your-Private-Data.desktop@  README.txt@
$ sudo rm ~takeuchi/.Private ~takeuchi/.ecryptfs ~takeuchi/Access-Your-Private-Data.desktop ~takeuchi/README.txt
$ exit

これで /home/takeuchi は普通のフォルダになったので、 takeuchi でログインし直して続ける。

LANG:console
login: takeuchi
Password: 
$ ls -a
 .  ..
$ tar fxz /opt/petalinux_2018.3/takeuchi-home.tar.gz .
$ ls -aF
 ./             .bash_logout  .profile                   downloads/
 ../            .bashrc       .python-history            petalinux/
 .PetaLinux/    .cache/       .ssh/                      petalinux_installation_log
 .Private@      .ecryptfs@    .sudo_as_admin_successful
 .bash_history  .gitconfig    .viminfo
$ rm /opt/petalinux_2018.3/takeuchi-home.tar.gz 
$ ls -la /home/.ecryptfs/takeuchi
 合計 16
 drwxr-xr-x 4 takeuchi takeuchi 4096  3月 15 16:02 .
 drwxr-xr-x 3 root     root     4096  3月 15 21:55 ..
 drwx------ 7 takeuchi takeuchi 4096  3月 15 21:10 .Private
 drwx------ 2 takeuchi takeuchi 4096  3月 15 21:53 .ecryptfs
$ rm -rf /home/.ecryptfs/takeuchi/
 rm: '/home/.ecryptfs/takeuchi/' を削除できません: 許可がありません
$ ls -la /home/.ecryptfs/takeuchi
 合計 8
 drwxr-xr-x 2 takeuchi takeuchi 4096  3月 15 22:26 .
 drwxr-xr-x 3 root     root     4096  3月 15 21:55 ..

ecryptfs では /home/takeuchi/* にあった暗号化ファイルの本体は /home/.ecrypt/takeuchi/.Private/ にあり、その管理情報が /home/.ecrypt/takeuchi/.ecryptfs/ にあるため、 通常ファイルとして書き戻した後、これらは消してしまってよい。

これで暗号化は解除された。

環境変数の読み込み

Petalinux の環境変数を整えるには /opt/petalinux_2018.3/settings.sh を読めば良い。

LANG:console
$ source /opt/petalinux_2018.3/settings.sh
 PetaLinux environment set to '/opt/petalinux_2018.3'
 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
 WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact  and solution
$ petalinux-(TABキー)
 petalinux-boot     petalinux-config   petalinux-package
 petalinux-build    petalinux-create   petalinux-util
$

/bin/sh が bash じゃない! と文句を言われたけど、動作には問題ないみたい。

Zynq‐7000 システムで Linux をブートするためのハードウェア要件

  1. 1 個のト リプルタイマーカウンター (TTC) (必須)
    複数の TTC を有効にした場合、Zynq-7000 Linux カーネルはデバイスツリーの最初の TTC ブロックを使用します。 この TTC がほかで使用されていないことを確認する必要があります。

  2. 外部メモリコントローラーと 32MB 以上のメモリ (必須)

  3. UART (必須)
    重要:ソフト IP を使用する場合、 割り込み信号を接続する必要があります。

  4. QSPI フラッシュ、SD/MMC などの不揮発性メモリ (オプション)

  5. イーサネット (オプション。 ネットワークアクセスを利用する場合は必須)
    重要:ソフト IP または外部 PHY デバイスで割り込みを使用する場合、 割り込み信号を接続する必要があります。

後で試したい

  • out‐of‐treeビルド

    PetaLinux には、 最新版のカーネル/U-Boot ソースコードをGitリポジト リから自動的にダウンロードする機能があります。

    ZynqのLinux kernelを更新する https://okchan08.hateblo.jp/entry/2019/02/03/200000 とも関連するのかな?

コメント・質問





添付ファイル: filevirtualbox-shared-folder3.png 184件 [詳細] filevirtualbox-shared-folder2.png 179件 [詳細] filevirtualbox-shared-folder.png 204件 [詳細] filepetalinux-installer-download.png 319件 [詳細] filessh-console.png 242件 [詳細] filenetwork-ip4-share.png 200件 [詳細] filenetwork-ipv4-range.png 198件 [詳細] filenetwork-ipv4.png 211件 [詳細] filecontrol-panel-network4.png 195件 [詳細] filecontrol-panel-network3.png 214件 [詳細] filecontrol-panel-network2.png 224件 [詳細] filecontrol-panel-network.png 188件 [詳細] filevirtualbox-network-hostonly-adapter.png 181件 [詳細] fileubuntu-boot.png 280件 [詳細] fileubuntu-install-remove-disk.png 222件 [詳細] fileubuntu-install-grub.png 235件 [詳細] fileubuntu-install-software.png 224件 [詳細] fileubuntu-install-update-policy.png 214件 [詳細] fileubuntu-install-noproxy.png 212件 [詳細] fileubuntu-install-disk-partition5.png 212件 [詳細] fileubuntu-install-disk-partition4.png 237件 [詳細] fileubuntu-install-disk-partition3.png 239件 [詳細] fileubuntu-install-disk-partition2.png 226件 [詳細] fileubuntu-install-disk-partition.png 237件 [詳細] fileubuntu-install-time-zone.png 216件 [詳細] fileubuntu-install-crypt-disk.png 264件 [詳細] fileubuntu-install-account-password2.png 241件 [詳細] fileubuntu-install-account-password.png 238件 [詳細] fileubuntu-install-account-name.png 230件 [詳細] fileubuntu-install-user-name.png 243件 [詳細] fileubuntu-install-hostname.png 269件 [詳細] fileubuntu-install-keyboard-layout.png 220件 [詳細] fileubuntu-install-keyboard.png 225件 [詳細] fileubuntu-install-location.png 221件 [詳細] fileubuntu-install-japanese.png 214件 [詳細] fileubuntu-install.png 210件 [詳細] fileubuntu-language.png 231件 [詳細] fileno-bootable-medium.png 221件 [詳細] fileubuntu16.04.6.png 255件 [詳細] filevirtualdisk.png 316件 [詳細] filevirtualbox.png 348件 [詳細]

Counter: 5110 (from 2010/06/03), today: 6, yesterday: 0