overlayfsの有効化方法は製品マニュアルに記載があります[*1]が、無効化方法は記載されていません。
[*1] 22.2. ルートファイルシステムへの書き込みと電源断からの保護機能
有効化では、U-Bootの環境変数にoverlayfsを設定しているだけです。そこで、本記事ではU-Bootの環境変数の内容を確認し、削除する方法を紹介します。
上記のマニュアルの通り、有効化の際には以下のコマンドを実行します。
=> setenv optargs overlay
このコマンドでは、"optargs"という環境変数へ"overlay"という文字列を設定しています。
"optargs"の内容を表示させると、"overlay"のみであることが分かります。"env print"コマンドが環境変数の内容を表示するコマンドです。
=> env print optargs
optargs=overlay
また、"env print"をパラメータ無しで実行すると、全ての環境変数とその内容が表示されます。
=> env print
baudrate=115200
boot_fdt=try
・・・省略・・・
mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} ${optargs}
・・・省略・・・
環境変数"mmcargs"には、eMMCから起動する場合のLinuxカーネル起動オプションを設定するコマンドを格納しています。"bootargs"がLinuxカーネル起動オプションを設定する環境変数です。そして、"optargs"はLinuxカーネル起動オプションに設定されています。
以上から、"overlayfs"という文字列はLinuxカーネル起動オプションに渡されることが分かります。Linuxカーネル起動オプションから"overlayfs"の文言を削除すれば機能を無効化できる(有効化されなくなる)ため、"optargs"の環境変数ごと削除します。
環境変数を削除するコマンドは"env delete"です。
=> env delete optargs
"env print"で環境変数の内容を確認しようとすると、環境変数が未定義になっていることを確認できます。
=> env print optargs
## Error: "optargs" not defined
"env"には"print"、"delete"の他にもコマンドがあります。"env"をオプション無しで実行すると、ヘルプを確認できますので、他のコマンドも試してみて下さい。
=> env
env - environment handling commands
Usage:
env default [-f] -a - [forcibly] reset default environment
env default [-f] var [...] - [forcibly] reset variable(s) to their default values
env delete [-f] var [...] - [forcibly] delete variable(s)
env edit name - edit environment variable
env exists name - tests for existence of variable
env print [-a | name ...] - print environment
env run var [...] - run commands in an environment variable
env save - save environment
env set [-f] name [arg ...]