u-bootから自動的にLinuxを起動する

u-bootから自動的にLinuxを起動する

セキュリティ上の理由から、u-bootからLinuxを起動し、パスワードが入力されるまですべての出力を隠す必要があります。マクロを使用してこのタスクを正しく実行するようにuBootを設定し、自動的にCONFIG_AUTOBOOT_KEYED正常に起動できます。

私が持っている問題は、uBootがLinuxカーネルを起動して自動モードを有効にすると、console=bootargsの一部としてLinuxカーネルに渡されることです。自動起動では正常に動作しますが、起動後にコンソールを再度有効にする方法が見つからないようです。

また、正常に起動し、自動起動のためにカーネルブートパラメータを追加してみましたloglevel=0が、コンソールを再度有効にすることはできませんでした。私は試した:

dmesg -n 4

そして

klogd -c 4

カーネルログレベルをKERN_WARNING(4)にリセットしようとしましたが、成功しませんでした。カーネルを正常に起動すると、このコマンドは正しく機能します。

このトピックについて私が見つけた最高のガイドは次のとおりです。自動起動プロセスblackfin.uclinux.orgから。

console=理想的にはbootargsの一部として渡されますが、コンソールから入力を受け入れてパスワードが入力されると、出力を再度有効にするuBootの自動モードを使用したいと思います。

答え1

他の人がこの問題に直面した場合に備えて、私は良い解決策を見つけることができませんでした。結局、u-bootとLinuxカーネルのシリアルドライバをハッキングし、デフォルトでパスワードが入力されたことを確認しました。その場合、コードが正常に実行されるようにします。そうでない場合は、実際にコンソールに何も印刷されないように関数から戻ります。

カーネルの場合、receive_chars()関数を編集してパスワード(入力)を見つけ、Transmission_chars()を編集して出力をマスクしました。 bootargsの一部としてパスワードを渡すようにu-bootに要求しました。空の場合、パスワードはすでに入力されているため、特別なコードは無視されます。値の場合は、receive_chars()を介して入力文字を取得し、bootargsに格納されている文字列と比較します。

u-bootでは、CONFIG_AUTOBOOT_KEYEDと関連する基本マクロのみを使用してパスワードを入力します。その後、common / cmd_bootm.cを変更してconsole =値をマスクするためにfixup_silent_linux()を呼び出さずに、上記のようにカーネルにそれを処理させました。

これが他の人に役立つことを願っています。

関連情報