ブログ

overlayfsの無効化方法(U-Bootの環境変数の確認・削除方法)

at_yuma.arakawa
2017年2月27日 17時52分

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 ...]