Petalinux2018.3環境を整える の変更点

更新


[[公開メモ]]

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

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

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

** 目次 [#gc1cea96]

#contents

** 環境 [#l8873fae]

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

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

* Virtual Box に Ubuntu 16.04 を入れる [#yf31d82e]

** 要求される環境を確認 [#w4708c4f]

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

** 仮想環境を構築 [#kcdef340]

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

&ref(virtualbox.png,,50%);

&ref(virtualdisk.png,,50%);

** Ubuntu のインストールメディアをダウンロード [#tbd7ee9d]

&ref(ubuntu16.04.6.png,,50%);

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 のインストール [#td474ae7]

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

&COLOR(RED){&SIZE(20){「ホームディレクトリの暗号化」を選択してしまうと後で詰んでしまうので注意が必要。};};

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

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

というわけで閑話休題。

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

&ref(no-bootable-medium.png,,50%);

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

&ref(ubuntu-language.png,,50%);

&ref(ubuntu-install.png,,50%);

&ref(ubuntu-install-japanese.png,,33%);

&ref(ubuntu-install-location.png,,33%);

&ref(ubuntu-install-keyboard.png,,33%);

&ref(ubuntu-install-keyboard-layout.png,,33%);

&ref(ubuntu-install-hostname.png,,33%);

&ref(ubuntu-install-user-name.png,,33%);

&ref(ubuntu-install-account-name.png,,33%);

&ref(ubuntu-install-account-password.png,,33%);

&ref(ubuntu-install-account-password2.png,,33%);

&ref(ubuntu-install-crypt-disk.png,,33%);

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

&ref(ubuntu-install-time-zone.png,,33%);

&ref(ubuntu-install-disk-partition.png,,33%);

&ref(ubuntu-install-disk-partition2.png,,33%);

&ref(ubuntu-install-disk-partition3.png,,33%);

&ref(ubuntu-install-disk-partition4.png,,33%);

&ref(ubuntu-install-disk-partition5.png,,33%);

&ref(ubuntu-install-noproxy.png,,33%);

&ref(ubuntu-install-update-policy.png,,33%);

&ref(ubuntu-install-software.png,,33%);

&ref(ubuntu-install-grub.png,,33%);

&ref(ubuntu-install-remove-disk.png,,33%);

&ref(ubuntu-boot.png,,33%);

ちゃんと立ち上がった。

** etckeeper を入れる [#r56f66f6]

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

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

** ネットワーク設定 [#q9c4ab8d]

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

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

 LANG:console
 $ shutdown 0

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

*** Virtual Box [#j7cc1a32]

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

&ref(virtualbox-network-hostonly-adapter.png,,50%);

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

*** Windows 10 [#na1f8f03]

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

&ref(control-panel-network.png,,50%);

&ref(control-panel-network2.png,,50%);

&ref(control-panel-network3.png,,50%);

&ref(control-panel-network4.png,,50%);

&ref(network-ipv4.png,,50%);

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

&ref(network-ip4-share.png,,50%);

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

&ref(network-ipv4-range.png,,50%);

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

*** Ubuntu [#je26ede8]

/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 へ繋ぎに行ったらちゃんと繋がった

&ref(ssh-console.png,,66%);

** 必要なパッケージを Ubuntu へインストール [#s7928dd1]

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 をインストール [#ie706be9]

** インストーラのダウンロード [#t44a2698]

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

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

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

&ref(petalinux-installer-download.png,,50%);

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

ダウンロードしたのは、

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

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

** インストーラを Ubuntu から読めるようにする [#pe451b28]

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

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

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

&ref(virtualbox-shared-folder.png,,50%);

&ref(virtualbox-shared-folder2.png,,50%);

&ref(virtualbox-shared-folder3.png,,50%);

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

** インストーラを起動 [#i54baee0]

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 くらいになっている。


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

初回、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

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

** ホームディレクトリ暗号化の解除 [#e1dacfc9]

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/ にあるため、
通常ファイルとして書き戻した後、これらは消してしまってよい。

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

* 環境変数の読み込み [#g0e6294b]

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 をブートするためのハードウェア要件 [#rfc57b94]

+1 個のト リプルタイマーカウンター (TTC) (必須)~
複数の TTC を有効にした場合、Zynq-7000 Linux カーネルはデバイスツリーの最初の TTC ブロックを使用します。 この TTC がほかで使用されていないことを確認する必要があります。~
~
+外部メモリコントローラーと 32MB 以上のメモリ (必須)~
~
+UART (必須)~
重要:ソフト IP を使用する場合、 割り込み信号を接続する必要があります。~
~
+QSPI フラッシュ、SD/MMC などの不揮発性メモリ (オプション)~
~
+イーサネット (オプション。 ネットワークアクセスを利用する場合は必須)~
重要:ソフト IP または外部 PHY デバイスで割り込みを使用する場合、 割り込み信号を接続する必要があります。



* 後で試す [#wa39ab55]
* 後で試したい [#wa39ab55]

- [[すでにやったことの一覧>電気回路/zynq#kc37dfd8]]
- すでにやったことの一覧 → [[電気回路/zynq#kc37dfd8]]

- 作業中:[[電気回路/zynq/Petalinux2018.3でキャラクタLCD制御(ST7032i)]]

- out‐of‐treeビルド~
>PetaLinux には、 最新版のカーネル/U-Boot ソースコードをGitリポジト リから自動的にダウンロードする機能があります。
<ZynqのLinux kernelを更新する https://okchan08.hateblo.jp/entry/2019/02/03/200000 とも関連するのかな?

- OpenAMP
-- https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2017_4/ug1186-zynq-openamp-gsg.pdf
-- https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2018_3/ug1186-zynq-openamp-gsg.pdf
-- https://qiita.com/take-iwiw/items/ff46792eb107d978cd0b

- u-boot-xlnx の zturn サポートの使い方を調べる?
-- https://github.com/Xilinx/u-boot-xlnx/blob/master/arch/arm/dts/zynq-zturn.dts
-- https://github.com/Xilinx/u-boot-xlnx/blob/master/configs/zynq_z_turn_defconfig

- 組み込みLinuxデバイスドライバの作り方~
https://qiita.com/take-iwiw/items/1fdd2e0faaaa868a2db2#%E7%B0%A1%E5%8D%98%E3%81%AA%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8B

- シリアル端末の設定
-- https://wiki.archlinux.jp/index.php/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB

* コメント・質問 [#ved01a20]

#article_kcaptcha

Counter: 4729 (from 2010/06/03), today: 13, yesterday: 0