====== eMMC 後半領域の利用 (MA-S1xx/MA-X3xx 共通) ======
\\
===== MA-S1xx シリーズ =====
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 シリーズ =====
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 する方法を紹介します。
\\
===== 設定 =====
==== mount 先ディレクトリの準備 ====
overlaycfg コマンドで保存できるディレクトリ(([参照]: [[mas1xx_ope:manage_overlay_area:start|]]))の場合、実機でディレクトリを作成しておきます。\\
/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 の場合、[[mas1xx_devel:start|]] の手順でカスタマイズしたファームウェアを作成する必要があります。\\
例として、[[max3xx_devel:customize_firmware:add_azure_iot_edge:start|]] のファームウェアでは Docker を利用するので、**/var/lib/docker** をファームウェアで追加しています。(参照: [[https://wiki.centurysys.jp/doku.php?id=max3xx_devel:customize_firmware:add_azure_iot_edge:start#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%83%BC%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E7%94%A8_emmc_mount_%E8%A8%AD%E5%AE%9A|Azure IoT Edge 対応 - コンテナーエンジン用 eMMC mount 設定]])
\\
==== eMMC データ領域のファイルシステム作成 (Optional) ====
別の用途で 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:~#
\\
==== .mount ユニットファイルの作成 ====
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 の有効化 ====
作成した .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 されていることが確認できました。