
まず私はカーネルハッカーではないので、用語が間違っていると謝罪します。
第二に、私たちの環境を説明する必要があります。小さなシングルボードコンピュータ(いいえ、いいえ(無関心)SoCメーカーによって提供されたSDK /開発スタックに基づいてLinux / Busyboxを実行し、基本的に大規模なグループによって一緒にハッキングされるRaspberry pi(同様のバージョン)エルボニアコードスレーブゼロサポート。
古いカーネルのビルドとBusyboxは、一般的に使用されている最新のLinuxコマンド/ツールにアクセスできないことを意味します。modprobe
これは特に重要です。
私たちはほとんどのWTFeryを撃退するために最善を尽くしましたが、まだ進行中の作業です。
今私たちがいるところは次のとおりです。
不要なエントリを削除/無効にしてカーネルビルドをクリーンアップしようとしたときに問題が発生しました。不要な項目(CONFIG_DEBUG_FSなど)を無効にすると、ヒープモジュール全体がロードされません(insmod
起動プロセスを含む)。
[ 16.490979] loop: disagrees about version of symbol set_blocksize
[ 16.497116] loop: Unknown symbol set_blocksize (err -22)
[ 16.503304] loop: disagrees about version of symbol ioctl_by_bdev
[ 16.509440] loop: Unknown symbol ioctl_by_bdev (err -22)
[ 16.515656] loop: disagrees about version of symbol set_user_nice
[ 16.521898] loop: Unknown symbol set_user_nice (err -22)
[ 16.527686] loop: disagrees about version of symbol add_disk
問題は、カーネル自体がデバイスのフラッシュメモリの1つのパーティションに存在するのに対し、ユーザーファイルシステム(Busyboxおよび前述のモジュールを含む)とFlashアップグレードツールは別のパーティションに存在することです。アップグレードルーチンは一度に 1 つのパーティションをダウンロードしてリフレッシュします。
したがって、Catch-22の状況が発生します。更新するとカーネルイメージ、.koモジュールがマザーボードを起動しない危険性があります。ファイルシステムイメージまだ更新されていないがファイルシステムイメージを更新すると、マザーボードが起動しない危険性があります。コア更新されていません。
この問題を解決する方法はいくつかありますが、お客様が指示に従わずにマザーボードが破損する可能性があります(該当する場合)。可能壊す、誰か〜する管理してください)。
だから私の質問は次のようになります
(どのように)カーネルを修正したり(主にいくつかの項目を削除したり)、モジュールを再構築してカーネル+モジュールなどの1つのバージョンから最新のバージョンに移動できますか?いいえ一時的な重大な破損や故障のリスクはありますか?