MA-S1xx シリーズには、機種によりますが 2GB もしくは 5GB の eMMC を搭載しており、前半のファームウェア領域 600MiB を除いた部分がデータ領域として使用可能です。
root@gemini:~# cat /proc/partitions |grep mmcblk0 179 0 1884160 mmcblk0 179 1 614400 mmcblk0p1 <--- ファームウェア領域 179 2 1268736 mmcblk0p2 <--- データなど用
MA-X3xx シリーズには 10GB の eMMC を搭載しており、前半のファームウェア領域 800MiB を除いた部分がデータ領域として使用可能です。
user1@metis:~$ cat /proc/partitions |grep mmcblk0 179 32 10067968 mmcblk0 179 33 819200 mmcblk0p1 <--- ファームウェア領域 179 34 9247744 mmcblk0p2 <--- データなど用 179 64 32256 mmcblk0boot0 179 96 32256 mmcblk0boot1
この部分をシステム起動時に任意のディレクトリに mount する方法を紹介します。
overlaycfg コマンドで保存できるディレクトリ1)の場合、実機でディレクトリを作成しておきます。
/etc や /home 以外など、自動保存されない PATH の場合、“other” で保存しておきます。
※ /opt/data に mount する場合の例
root@gemini:~# mkdir /opt/data root@gemini:~# overlaycfg -u -s other * remounting overlay partition as RW... * remounting overlay partition as RO...
root@gemini:~# tar tavf /ro/.host/overlay/overlays_other.tar.zst |grep /opt drwxr-xr-x root/root 0 2023-04-24 11:25 ./opt/ drwxr-xr-x root/root 0 2023-04-24 11:25 ./opt/data/ <--- overlay "other" に保存されていることを確認
※ overlaycfg で保存されない PATH の場合、ソフトウェア開発 (MA-S1xx シリーズ) の手順でカスタマイズしたファームウェアを作成する必要があります。
例として、Azure IoT Edge 対応 のファームウェアでは Docker を利用するので、/var/lib/docker をファームウェアで追加しています。(参照: Azure IoT Edge 対応 - コンテナーエンジン用 eMMC mount 設定)
別の用途で eMMC データ領域を使用していた場合などや、ファイルシステムを変更したい場合、mkfs コマンドでファイルシステムを作成します。
root@gemini:~# mkfs.ext4 -m 0 /dev/mmcblk0p2 mke2fs 1.45.5 (07-Jan-2020) /dev/mmcblk0p2 contains a ext4 file system last mounted on Wed Apr 12 13:11:20 2023 <---- 以前 mount したことがありますよ、との通知 Proceed anyway? (y,N) y Discarding device blocks: done Creating filesystem with 317184 4k blocks and 79360 inodes Filesystem UUID: b010f7aa-0224-474e-aec4-16d64e06a806 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done root@gemini:~#
systemd の .mount ユニットファイルを作成します。
ファイル名は、mount 先の PATH を -(ハイフン) で繋いだ形式にする必要があります。
※ 今回の例では PATH が /opt/data なので、opt-data.mount というファイル名にします。
root@gemini:~# nano -w /etc/systemd/system/opt-data.mount
[Unit] Description=opt data [Mount] What=/dev/mmcblk0p2 Where=/opt/data Type=ext4 Options=noatime [Install] WantedBy=multi-user.target
作成した .mount ユニットを有効化します。
root@gemini:~# systemctl enable opt-data.mount Created symlink /etc/systemd/system/multi-user.target.wants/opt-data.mount → /etc/systemd/system/opt-data.mount. root@gemini:~#
設定が完了したので、再起動して自動で mount されているか確認してみます。
root@gemini:~# reboot root@gemini:~# Session terminated, killing shell...logout ...killed. Terminated
再起動後、login して mount コマンドで mount 状況を確認します。
user1@gemini:~$ mount|grep mmcblk /dev/mmcblk0p1 on /ro/.host type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=932,iocharset=utf8,shortname=mixed,utf8,errors=remount-ro) /dev/mmcblk0p2 on /opt/data type ext4 (rw,noatime) <---- mount されている
きちんと /opt/data に eMMC 2番目のパーティションが mount されていることが確認できました。