前回は、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 ...
設定画面が開きます。
Image Packaging Configuration ---> Root filesystem type と進み、SD card を選択します。
最後に、SaveしてExitします。
この後、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カードであることが分かりました。
この設定で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からパーティションを再度作ります。
空きスペースを選んで、+マークのところからパーティション作成。
適当に名前を付けて、"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:~#
残ってました!
今回はここまで
次回は、参考サイトの手順に従えば、アプリケーションの作成になるかと思います。