search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Virtual Box上でZybo用にLinuxをビルドする

Linux環境がないシチュエーションでPetaLinuxをビルドする必要があったので、作業ログ。

基本的な内容は資料1 2を参考にした。

環境

項目 概要
OS Windows 10 Enterprise 1909
Vivado (on Windows) 2021.1
Virtual Box 6.1.26
PetaLinux 2021.1
Board Zybo z7-20

WSL(2), DockerではなくVirtual BoxなのはUSBが扱いやすいこと、PetaLinux用に環境が切れることが主な理由である。

Bitstream作成

Vivadoでプロジェクト作成後、Zybo Z7-20を選択した。

[PROJECT MANAGER]>[Create Block Design]でZynqだけのブロック作成

image.png

[Block Design]ビュー内の[Sources]>[Design Sources]のdesign_1_iを右クリックし、[Create HDL wrapper]でラッパーを作り、

[Project Manager]>[PROGRAM AND DEBUG]の、[Generate Bitstream]する。

完了後、[File]>[Export]>[Export Hardware]を選択、

image.png

下記のように選択し、

image.png

これでハードウェア情報を持つファイル、design_1_wrapper.xsaができる。後で使う。

Virtual Box上にUbuntuをインストール

6.1.28をインストールしたが、Hyper-V関係で起動できなかったため6.1.26にした。

対応するLinuxのバージョン及び保存容量、メモリ容量はPetaLinuxのリファレンスマニュアルをチェックすること
今回はPetaLinux 2021.1であるため、次のようにした。

項目 概要
OS on Virtual Box Ubuntu 18.04.1
メモリ 8GB
保存容量 120GB

PetaLinux周りに入る前に以下の設定は行った。

  • Windowsとの共有ディレクトリ作成3
  • WindowsでMicro SDカードのFAT32等のフォーマットを行うのは面倒なので、Virtual Boxで行うためマウント4
  • コピペの設定5

PetaLinux環境の構築

Terminal
# su するか適宜sudoしてください
apt update 
apt upgrade

# 共有ディレクトリの設定
apt install virtualbox-guest-utils
mkdir /share


# petalinux install
## 必要ライブラリのインストール(リファレンスマニュアル参照)
apt 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 
apt install -y -dev zlib1g:i386 screen pax gzip

## インストールディレクトリの設定
mkdir -p /opt/pkg/petalinux
chown -R [usr_name] /opt/pkg
chgrp -R [usr_nane] /opt/pkg

## インストール
./petalinux-v2021.1-final-installer.run --dir /opt/pkg/petalinux/

# device tree install
git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git
cd dtc
make

以下を~/.bashrcに追加

.bashrc
# petalinux関連
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
source /opt/pkg/petalinux/settings.sh 

# 共有ディレクトリのマウント
mount.vboxsf share /share             

# dtcのパス通す
PATH=$PATH:[dtcをインストールしたディレクトリ]

共有ディレクトリ経由等でWindows上のVivadoで生成したxsaファイル(下記ではdesign_1_wrapper.xsa)をコピーしておく。

Terminal
petalinux-create -t project --template zynq -n linux_build_test
cd linux_build_test
petalinux-config --get-hw-description=[path-to-you-putted]/design_1_wrapper.xsa

image.png

デフォルトのまま[Exit]

Terminal
petalinux-build
petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot

SDカードへの書き込み。
gpartedを使う。

Terminal
apt install gparted
gparted

image.png

こんな感じでパーティションを作った。
今回はrootfs等は使わないのでext4の方はいらないが、今後楽なので。

パーティションを切った後、SDカードをマウントし直す必要があるが、面倒なのでrebootすることでマウントし直している。
作ったfat32のパーティションにimage.ubBOOT.bin, boot.scrをコピーする。
boot.scrを忘れると正常にbootできない6

Terminal
df -h # FAT32のパーティションを探す
cd images/linux/
cp image.ub BOOT.bin boot.scr [path-to-FAT32-partition]

コピーが終わったら、SDカードをZyboに差し、JP5ジャンパをSDカードブートに刺し替え、USBケーブルでPCと接続する。

Tera Term等で接続する。何も弄ってなければボーレートは115200である。

image.png

Teraterm
Starting tcf-agent: OK
root@linux_build_test:~#

参考資料

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1