メモ置き場

メモ置き場です.開発したものや調べたことについて書きます.

[tex: ]

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ファイルシステムができていることを確認する.
f:id:okchan08:20190128235409p:plain
UbuntuではFAT32形式,ext4形式のどちらも見えるのでファイルから2つのSDカードがマウントされたように見える.67MBのボリュームとなっているのが第一パーティション

UbuntuをZynqで起動する

以上の作業で必要なものは揃った.SDカードの第1パーティションには

  • BOOT.bin
  • uEnv.txt
  • devicetree.dtb
  • uImage
  • uramdisk.image.gz

を入れる.
f:id:okchan08:20190128235539p:plain


SDカードをZYBO-Z7に入れて電源を入れるとUbuntu 16.04が起動する.
シリアルコンソールでの表示を貼っておく.
f:id:okchan08:20190128235907p:plain


Linuxが起動しているときにPSのリセットボタンや電源を落としてしまうと,ファイルシステムが壊れて起動できなくなる可能性がある.
ボードの電源を落とすには,

sudo shutdown -h now

としてReboot: System haltedと表示されてから電源を落とすようにする.再起動したいときはUbuntuから

sudo reboot

として,リセットボタンを使わないようにする.