Petalinuxを動かしてみる
Petalinux を起動する
公開日:2023年1月5日
前記事では Zybo Z7-20 用の Petalinux をビルドしました。本記事では実際に Zybo Z7-20 上で Petalinux を起動します。
目次
Petalinux イメージ作成
まずは前記事でビルドした Zybo Z7-20 用 Petalinux 成果物をパッケージし、Petalinux イメージを作成します。
// Petalinux プロジェクトディレクトリに移動する
$ cd ~/workspace/petalinux1/peta_project
// イメージ作成
$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot
[INFO] Sourcing buildtools
INFO: Getting system flash information...
INFO: File in BOOT BIN: "/home/username/workspace/petalinux1/peta_project/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/username/workspace/petalinux1/peta_project/images/linux/system.bit"
INFO: File in BOOT BIN: "/home/username/workspace/petalinux1/peta_project/images/linux/u-boot.elf"
INFO: File in BOOT BIN: "/home/username/workspace/petalinux1/peta_project/images/linux/system.dtb"
INFO: Generating zynq binary package BOOT.BIN...
****** Xilinx Bootgen v2022.1
**** Build date : Mar 30 2022-09:29:13
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
[WARNING]: Partition zynq_fsbl.elf.0 range is overlapped with partition system.bit.0 memory range
[WARNING]: Partition system.bit.0 range is overlapped with partition system.dtb.0 memory range
[INFO] : Bootimage generated successfully
INFO: Binary is ready.
WARNING: Unable to access the TFTPBOOT folder /tftpboot!!!
WARNING: Skip file copy to TFTPBOOT folder!!!
Bootimage generated successfully と出力されていれば成功です。BOOT.BIN が生成されます。
$ ls images/linux/
BOOT.BIN pxelinux.cfg rootfs.jffs2 u-boot-dtb.bin vmlinux
boot.scr rootfs.cpio rootfs.manifest u-boot-dtb.elf zImage
bootgen.bif rootfs.cpio.gz rootfs.tar.gz u-boot.bin zynq_fsbl.elf
config rootfs.cpio.gz.u-boot system.bit u-boot.elf
image.ub rootfs.ext4 system.dtb uImage
microSDカードのパーティション設定
作成したイメージをmicroSDカードに書き込むのですが、その前にパーティションを設定します。以下は 4GB の microSD の場合の例です。
partition | size | File sysytem |
---|---|---|
BOOT | 200MB | FAT32 |
ROOT | 残り(3.8GB) | ext4 |
fdisk でパーティションを作成します。
// SDカードの所在確認 (sdb だったとする)
$ lsblk
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
// 既に存在している(複数の)パーティションを削除する
Command (m for help): d
Partition number (1,2, default 2): 1
Partition 1 has been deleted.
Command (m for help): d
Selected partition 2
Partition 2 has been deleted.
Command (m for help): d
No partition is defined yet!
// 1つ目のパーティション(BOOT)を作成する
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-60506111, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60506111, default 60506111): 411648
Created a new partition 1 of type 'Linux' and of size 200 MiB.
Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
// 2つ目のパーティション(ROOT)を作成する(全て既定値)
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2):
First sector (411649-60506111, default 413696):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (413696-60506111, default 60506111):
Created a new partition 2 of type 'Linux' and of size 28.7 GiB.
// 保存して fdisk 終了
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
これで2つのパーティションが作成されました。パーティションのパスは sdb1, sdb2 だったとします。mkfs でそれぞれのパーティションのファイルシステムを設定します。
// 1つ目のパーティションのファイルシステムを FAT32 にする
$ sudo mkfs.vfat /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
// 2つ目のパーティションのファイルシステムを ext4 にする
$ sudo mkfs.ext4 /dev/sdb2
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 7511552 4k blocks and 1880480 inodes
Filesystem UUID: f0b56b0e-f678-4408-98c7-d5825cb06c81
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
microSDカードに Petalinux イメージを書き込む
それでは、microSDカードをマウントして、BOOT, ROOT パーティションに Petalinux イメージを書き込みます。
// microSDカードをマウントする(マウントはそれぞれの環境に応じて行ってください)
$ sudo mkdir /media/username/BOOT
$ sudo mount /dev/sdb1 /media/username/BOOT
$ sudo mkdir /media/username/ROOT
$ sudo mount /dev/sdb2 /media/username/ROOT
$ cd images/linux/
// BOOTパーティションに、BOOT.BIN, boot.scr, image.ubをコピーする
$ sudo cp BOOT.BIN boot.scr image.ub /media/username/BOOT/
// ROOTパーティションに、rootfs.tar.gz を書き込む
$ sudo tar xf rootfs.tar.gz -C /media/username/ROOT/
$ sync
microSDカードの準備が整いました。
Zybo Z7-20 のジャンパーピン設定
今回は JTAG ではなく SD カードからの実行となるため、JP5 を SD 側にしてください。
Zybo Z7-20 と PC を繋ぐと PC から給電されますが、Linux を動作させるといった複雑な処理を行わせる場合は消費電流が増え、供給不足で正しく起動出来ない場合があります。
そのため、ACアダプタからの給電に切り替えることをお勧めします。JP6 を WALL 側にしてください。
それぞれのピン設定は下図の通りです。
Linux を起動する
いよいよ Zybo Z7-20 上で Petalinux を起動させます。
- microSDカードを Zybo Z7-20 に取り付ける
- Zybo Z7-20 と PC(Ubuntu) を micro USB - USB ケーブルで接続する
- Zybo Z7-20 の電源を入れる
- dmesg | tail -f を実行して接続する Port を確認する
- Ubuntu 上でシリアルターミナルソフトを起動する
シリアルターミナルの設定は以下の通りです。
items | parameter |
---|---|
Baud Rate | 115200 |
Parity | none |
Bits | 8 |
Stopbits | 1 |
Flow control | none |
Port | dmesg で確認した接続先 |
Zybo 上での Linux の起動及びシリアルターミナルからの接続に成功すると、シリアルターミナル上で、起動ログが確認でき以下のようにログイン入力を求められます。
ログイン名は petalinux です。初回は、パスワードの設定を要求されます。
peta_project login: petalinux
You are required to change your password immediately (administrator enforced).
New password:
Retype new password:
peta_project:~$ pwd
/home/petalinux
peta_project:~$ uname -a
Linux peta_project 5.15.19-xilinx-v2022.1 #1 SMP PREEMPT Mon Apr 11 17:52:14 UTC 2022 armv7l GNU/Linux
これで Petalinux を起動してログインすることが出来ました。
※文中に記載されている各種名称、会社名、商品名などは各社の商標もしくは登録商標です。