勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

ZYBOを進める - 12. Linux設定のカスタマイズ

前回は、ZYBOにとりあえずLinuxを導入しました。
今回は、Linux設定をカスタマイズしてみます。
およそ参考サイトの通りの内容です。

Petalinuxで設定変更

開発用Ubuntuで、前回作成したPetalinuxフォルダに移動して、Linuxの設定変更を行います。

noki@ubuntu:~$ cd work/Petalinux/Zybo-base-linux-peta/
noki@ubuntu:~/work/Petalinux/Zybo-base-linux-peta$ petalinux-config
[INFO] generating Kconfig for project

...

設定画面が開きます。

f:id:nokixa:20190707233348p:plain:w300

Image Packaging Configuration ---> Root filesystem type と進み、SD card を選択します。

f:id:nokixa:20190707233654p:plain:w300

最後に、SaveしてExitします。

f:id:nokixa:20190707233942p:plain:w300

この後、Petalinuxツールがしばらく動きます。

[INFO] sourcing bitbake
[INFO] generating plnxtool conf
[INFO] generating meta-plnx-generated layer
~/work/Petalinux/Zybo-base-linux-peta/build/misc/plnx-generated ~/work/Petalinux/Zybo-base-linux-peta
~/work/Petalinux/Zybo-base-linux-peta

~~~ いろいろ ~~~

[INFO] generating petalinux-user-image.bb
[INFO] successfully configured project
webtalk failed:PetaLinux statistics:extra lines detected:notsent_nofile!
webtalk failed:Failed to get PetaLinux usage statistics!

後は、前回と同じようにビルド、ブートイメージの作成を行います。

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

images/linux ディレクトリには、SDカードに書き込むルートファイルシステムのイメージファイル(rootfs.ext4)ができます。

noki@ubuntu:~/work/Petalinux/Zybo-base-linux-peta$ ll images/linux/
total 200776
drwxrwxr-x 2 noki noki     4096 Jul  1 15:19 ./
drwxrwxr-x 3 noki noki     4096 Jun 30 12:24 ../
-rw-rw-r-- 1 noki noki  2608504 Jul  7 09:16 BOOT.BIN
-rw-r--r-- 1 noki noki  3771012 Jul  7 08:34 image.ub
-rw-r--r-- 1 noki noki 11968512 Jul  7 08:33 rootfs.cpio
-rw-r--r-- 1 noki noki  5708225 Jul  7 08:33 rootfs.cpio.gz
-rw-r--r-- 1 noki noki  5708289 Jul  7 08:33 rootfs.cpio.gz.u-boot
-rw-r--r-- 1 noki noki 67108864 Jul  7 08:33 rootfs.ext3
-rw-r--r-- 1 noki noki 67108864 Jul  7 08:33 rootfs.ext4
-rw-r--r-- 1 noki noki  5780130 Jul  7 08:33 rootfs.ext4.gz
-rw-r--r-- 1 noki noki  6815744 Jul  7 08:34 rootfs.jffs2
-rw-r--r-- 1 noki noki     3398 Jul  7 08:33 rootfs.manifest
-rw-r--r-- 1 noki noki  5721439 Jul  7 08:33 rootfs.tar.gz
-rw-r--r-- 1 noki noki    22382 Jul  7 08:34 system.dtb
-rw-r--r-- 1 noki noki  2169813 Jul  7 08:32 System.map.linux
-rw-r--r-- 1 noki noki  2083850 Jun 30 10:41 system_wrapper.bit
-rw-r--r-- 1 noki noki   420472 Jul  7 08:36 u-boot.bin
-rw-r--r-- 1 noki noki  3268676 Jul  7 08:36 u-boot.elf
-rw-r--r-- 1 noki noki 11361716 Jul  7 08:32 vmlinux
-rw-r--r-- 1 noki noki  3747336 Jul  7 08:32 zImage
-rw-r--r-- 1 noki noki   184916 Jul  7 08:39 zynq_fsbl.elf
noki@ubuntu:~/work/Petalinux/Zybo-base-linux-peta$ 

SDカードのパーティション分け

SDカードにルートファイルシステムを作る場合、SDカードのパーティションを2つに分ける必要があります。

また、ルートファイルシステム側は、ext4でフォーマットすることとします。
Windowsではext4は扱えないので、仮想マシンUbuntuからSDカードにアクセス、マウントしなければなりません。
以下を参考にしました。

PCのSDカードスロットに挿入されたSDカードをVMware Workstation Playerに認識させる方法 | アットマークテクノ ユーザーズサイト

手順を進めると、デバイスとして、"PhysicalDrive0"、"PhysicalDrive1"、"PhysicalDrive2"の3つが出てきました。
実際に追加を行ってみると、設定画面で容量が表示されたので、"PhysicalDrive2"がSDカードであることが分かりました。

f:id:nokixa:20190708020201p:plain:w400

f:id:nokixa:20190708020032p:plain:w400

この設定でUbuntuを起動します。

ググってみると、fdiskコマンドを使用すれば情報が見られる、ということで、やってみます。

noki@ubuntu:~$ sudo fdisk -l
[sudo] password for noki: 
Disk /dev/sda: 7.4 GiB, 7901020160 bytes, 15431680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x06cc5ed9

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       8192  1056767  1048576  512M  c W95 FAT32 (LBA)
/dev/sda2       1056768 15431679 14374912  6.9G  c W95 FAT32 (LBA)


Disk /dev/sdb: 120 GiB, 128849018880 bytes, 251658240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x26d4c9c6

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1  *         2048 249655295 249653248  119G 83 Linux
/dev/sdb2       249657342 251656191   1998850  976M  5 Extended
/dev/sdb5       249657344 251656191   1998848  976M 82 Linux swap / Solaris


noki@ubuntu:~$ 

はい。
以下のような情報が得られました。

  • sda、sdbというデバイスがある
  • sdaは容量7.9GiB、2つのパーティションに分かれている (sda1 : 512MB, sda2 : 6.9GB)
    容量的にはこれがSDカードみたいです。
    以前に一度Linux起動に使ったことがあるので、既にパーティション分けされています。
  • sdbは容量120GiB、3つのパーティションに分かれている (sdb1 : 119GB, sdb2 : 976MB, sdb5 : 976MB)


パーティションを1個消したりしましたが、よく分からないので、参考サイトに従って Disksを使ってGUIからパーティションを再度作ります。

f:id:nokixa:20190710002854p:plain:w400

空きスペースを選んで、+マークのところからパーティション作成。

f:id:nokixa:20190710003258p:plain:w300

適当に名前を付けて、"Create"を押します。

この後、参考サイトと全く同じで、以下を入力します。

sudo dd if=./work/Petalinux/Zybo-base-linux-peta/images/linux/rootfs.ext4 of=/dev/sda2

できました!
1つ目のパーティションにも、image.ubとBOOT.BINをコピーします。

noki@ubuntu:~$ sudo mount /dev/sda1 ./sd
noki@ubuntu:~$ cp work/Petalinux/Zybo-base-linux-peta/images/linux/image.ub ./sdcp: cannot create regular file './sd/image.ub': Permission denied
noki@ubuntu:~$ sudo cp work/Petalinux/Zybo-base-linux-peta/images/linux/image.ub ./sd
noki@ubuntu:~$ ll sd
total 6244
drwxr-xr-x  3 root root    4096 Dec 31  1969 ./
drwxr-xr-x 19 noki noki    4096 Jul  9 08:58 ../
-rwxr-xr-x  1 root root 2608472 Jul  2 18:04 BOOT.BIN*
-rwxr-xr-x  1 root root 3771012 Jul  9 09:01 image.ub*
drwxr-xr-x  2 root root    4096 Sep  1  2018 System Volume Information/
noki@ubuntu:~$ sudo cp work/Petalinux/Zybo-base-linux-peta/images/linux/BOOT.BIN ./sd
noki@ubuntu:~$ ll ./sd
total 6244
drwxr-xr-x  3 root root    4096 Dec 31  1969 ./
drwxr-xr-x 19 noki noki    4096 Jul  9 08:58 ../
-rwxr-xr-x  1 root root 2608504 Jul  9 09:01 BOOT.BIN*
-rwxr-xr-x  1 root root 3771012 Jul  9 09:01 image.ub*
drwxr-xr-x  2 root root    4096 Sep  1  2018 System Volume Information/
noki@ubuntu:~$ umount /dev/sda1
umount: /home/noki/sd: umount failed: Operation not permitted
noki@ubuntu:~$ sudo umount /dev/sda1

実機で動かしてみます。

~~~~ 起動ログいろいろ ~~~~

Zybo-base-linux-peta login: root
Password:
root@Zybo-base-linux-peta:~# ls
root@Zybo-base-linux-peta:~# touch tekitou.txt
root@Zybo-base-linux-peta:~# ls
tekitou.txt

起動時ログは特に変わりませんが、適当なファイルを作っておきました。
これで一旦ZYBOの電源を落として、再度電源投入すると、

Zybo-base-linux-peta login: root
Password:
root@Zybo-base-linux-peta:~# ls
tekitou.txt
root@Zybo-base-linux-peta:~#

残ってました!

今回はここまで

次回は、参考サイトの手順に従えば、アプリケーションの作成になるかと思います。