ZYBO-Z7-20でUbuntu 16.04 LTSを動かす(6) : ramdiskとroot file systemの作成
ZYBO-Z7でUbuntu 16.04 LTSを動かす - メモ置き場
第6回目.最終回.
今回で必要なもの全てが揃う.長かった.
ramdiskとroot file systemの作成を行い,いよいよUbuntuを起動する.
ramdiskの作成
ramdiskでは,RAMをディスクとして扱ってそこにファイルシステムを置くらしい.
marsee101.blog19.fc2.com
ZYBOのramdiskはZedboardから流用できるみたいなので,ZYBO-Z7でも流用してみる.
reference.digilentinc.com
このページのAdditional Resources/out of box demoというファイルをダウンロードして展開する.展開先のディレクトリにsd_image/ramdisk8M.image.gz
があるので,それを適当なディレクトリにコピーする.
U-bootから読み込まれるように以下のコマンドでヘッダをつける.
mkimage -A arm -T ramdisk -C gzip -d ramdisk8M.image.gz uramdisk.image.gz
uramdisk.image.gz
が生成される.
Ubuntuのroot file systemを作成
SDカードの第2パーティションにUbuntuのroot file systemを作成する.
e-tipsmemo.hatenablog.com
こちらの記事が参考になった.Ubuntu 16.04のファイルシステムを構築することができる.
記事に従って進めていく.
まず必要なツールをインストールする
sudo apt install qemu-user-static debootstrap
以前の記事で作成したSDカードをコンピュータに挿入しておく.第2パーティションがどう見えているか確認する.
$ lsblk mmcblk0 179:8 0 14.5G 0 disk ├─mmcblk0p1 179:9 0 64M 0 part /media/username/hogehoge └─mmcblk0p2 179:10 0 14.5G 0 part /media/username/fugafuga
/dev/mmcblk0p2
が第2パーティション./mnt
にマウントする.
sudo mount -o loop /dev/mmcblk0p2 /mnt
/mnt
にファイルシステムを構築していく.
$ sudo debootstrap --foreign --arch armhf xenial /mnt http://ports.ubuntu.com/ $ sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/ $ sudo chroot /mnt /usr/bin/groups: cannot find name for group ID 0 I have no name!@ubuntu:/#
chroot
で/mnt
にルートを移動した.以下のコマンドはchroot
で実行する.
I have no name!@ubuntu:/# ./debootstrap/debootstrap --second-stage I have no name!@ubuntu:/# passwd I have no name!@ubuntu:/# su root@ubuntu:/# passwd root@ubuntu:/# apt-get update root@ubuntu:/# adduesr aho root@ubuntu:/# ls /home aho root@ubuntu:/# exit I have no name!@ubuntu:/# exit (chrootから戻る)
ファイルシステムの構築には時間がかかるので気長に待つ.
構築が完了したら,SDカードの第2パーティションにUbuntuのファイルシステムができていることを確認する.
UbuntuではFAT32形式,ext4形式のどちらも見えるのでファイルから2つのSDカードがマウントされたように見える.67MBのボリュームとなっているのが第一パーティション.
UbuntuをZynqで起動する
以上の作業で必要なものは揃った.SDカードの第1パーティションには
- BOOT.bin
- uEnv.txt
- devicetree.dtb
- uImage
- uramdisk.image.gz
を入れる.
SDカードをZYBO-Z7に入れて電源を入れるとUbuntu 16.04が起動する.
シリアルコンソールでの表示を貼っておく.
Linuxが起動しているときにPSのリセットボタンや電源を落としてしまうと,ファイルシステムが壊れて起動できなくなる可能性がある.
ボードの電源を落とすには,
sudo shutdown -h now
としてReboot: System haltedと表示されてから電源を落とすようにする.再起動したいときはUbuntuから
sudo reboot
として,リセットボタンを使わないようにする.