web-dev-qa-db-ja.com

Linuxカーネル構成を回復する方法は何ですか?

私は現在、プロプライエタリデバイス用にカーネルを再構築しようとしています。これを行うには、デバイスのカーネル構成を作成する必要があります。試行錯誤しながらこれを行うこともできますが、実行中のホストから構成を抽出できるかどうかを確認することをお勧めします。

とはいえ、実行中のカーネルはCONFIG_IKCONFIGでコンパイルされていません(したがって、CONFIG_IKCONFIG_PROCでもありません)。これは、抽出する/proc/config.gzがないことを意味します。

さらに、構成を/bootにパッケージ化することもしませんでした。したがって、カーネル構成が一般的に保存される2つの一般的な場所は、運が悪いです。

ほとんどすべてがこのカーネルに静的にコンパイルされました。

 # cat /proc/modules
 linux_user_bde           12327 0                         - Live 0xf8536000 (PO)
 linux_kernel_bde         29225 1           linux_user_bde, Live 0xf8524000 (PO)
 pciDrv                    1448 0                         - Live 0xf8510000 (O)
 iTCO_wdt                  4456 0                         - Live 0xf83fb000 
 iTCO_vendor_support       2003 1                 iTCO_wdt, Live 0xf83f7000 
 i2c_dev                   5443 0                         - Live 0xf83f2000 
 i2c_i801                  9421 0                         - Live 0xf83eb000 
 i2c_core                 20859 3 i2cscan,i2c_dev,i2c_i801, Live 0xf83e0000 
 igb                     148294 0                         - Live 0xf83ae000 (O)
 dca                       4665 0                         - Live 0xf804c000 
 # ls -l /proc/conf*
 ls: /proc/conf*: No such file or directory
 # find /boot/ -name "conf*"
 # modprobe configs
 modprobe: module 'configs' not found
 #
5
Brian Redbeard

おそらくばかげた考えの1つは、カーネルのシンボルテーブルをイメージまたは/proc/kallsymsまたはどこかからプルできるかどうかを確認し、それに基づいて少なくとも含まれているドライバーをリバースエンジニアリングできるかどうかです。株式流通カーネルでkallsymsで示される35000シンボルのようなものではありますが、それにはいくつかのスクリプトが必要になります。

4
ilkkachu

技術的な答えではありませんが、GPLv2の下では、ソースコードとその変更、および実行中のバージョンの作成に使用される構成を利用できます。

したがって、1つの方法は、「独自のデバイス」のメーカー(まだ存在する場合)に、GPLの下で権利を与えられているソースを提供するように依頼することです。

1
SACHIN GARG