====== 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 されていることが確認できました。