現在位置 : ホーム  > PIXELA Technical Expertise  > Petalinux  > Petalinux を起動する

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 を起動させます。

  1. microSDカードを Zybo Z7-20 に取り付ける
  2. Zybo Z7-20 と PC(Ubuntu) を micro USB - USB ケーブルで接続する
  3. Zybo Z7-20 の電源を入れる
  4. dmesg | tail -f を実行して接続する Port を確認する
  5. 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 を起動してログインすることが出来ました。

文中に記載されている各種名称、会社名、商品名などは各社の商標もしくは登録商標です。

PIXELA Technical Expertise

当社が技術学習するための情報を体系的に整理したものです。多くのエンジニアの一助になればと考え公開しています。

Petalinux 記事一覧

Petalinuxを動かしてみる

PetalinuxでWavファイルを再生する(1)

PetalinuxでWavファイルを再生する(2)

応用編