U-Bootのパラメータは、保守モードで起動した後にprintenvや、setenv等のコマンドで確認できますが、標準の状態ではLinuxが起動している状態でU-Bootのパラメータを確認、変更できません。そのため、ここでは新しくパッケージを入れることで、Linux上でU-Bootのパラメータを確認、変更する方法を紹介します。
本ブログでは、Armadillo-IoT G3(M1モデル)用の内容になります。Armadillo-X1, Armadillo-IoT G3/G3Lをご使用の方はLinux動作中に(SPIフラッシュに書かれた)U-Bootのパラメータを確認、変更する方法を参照してください。
1. 環境の確認
このブログでは以下の環境で確認を行っています。環境が異なる場合は、一部設定の変更が必要になる場合がありますので、適宜読み替えてください。
- 製品: Armadillo-IoT G3
- U-Bootの配置場所: eMMC(/dev/mtdblk2boot0)
- U-Bootのバージョン: U-Boot 2016.07-at15
2. u-boot-toolsパッケージのインストール
U-Bootのパラメータを確認、変更するためのコマンド(fw_printenv, fw_setenv)が含まれるu-boot-toolsパッケージをインストールします。
以下のコマンドを実行してパッケージをインストールしてください。
[armadillo ~]# apt-get install u-boot-tools
3. u-boot-toolsの設定
u-boot-toolsは/etc/fw_env.configでパラメータがどこに配置されているかを設定する必要があります。
Armadilloでは、/etc/fw_env.configを以下のように設定してください。
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
#
# XXX this configuration might miss a fifth parameter for the "Number of
# sectors"
# MTD device name Device offset Env. size Flash sector size
/dev/mmcblk2boot0 0xe0000 0x2000
※: 上記設定ファイルは、Deivce offsetはU-BootソースコードのCONFIG_ENV_OFFSET、Env. sizeはU-BootソースコードのCONFIG_ENV_SIZE、Flash sector sizeは"cat /proc/mtd"の出力結果から設定しています。
4. パラメータの確認
Linux上で以下のように、fw_printenvを実行することでSPIフラッシュに設定されているU-Bootパラメータが確認できます。
[armadillo ~]# fw_printenv
5. パラメータの設定
以下のようにfw_setenvコマンドを実行することで、U-Bootのパラメータを変更することができます。
[armadillo ~]# echo 0 > /sys/block/mmcblk2boot0/force_ro
[armadillo ~]# fw_setenv [variable name] [variable value]
[armadillo ~]# echo 1 > /sys/block/mmcblk2boot0/force_ro