私は現在、プロプライエタリデバイス用にカーネルを再構築しようとしています。これを行うには、デバイスのカーネル構成を作成する必要があります。試行錯誤しながらこれを行うこともできますが、実行中のホストから構成を抽出できるかどうかを確認することをお勧めします。
とはいえ、実行中のカーネルは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
#
おそらくばかげた考えの1つは、カーネルのシンボルテーブルをイメージまたは/proc/kallsyms
またはどこかからプルできるかどうかを確認し、それに基づいて少なくとも含まれているドライバーをリバースエンジニアリングできるかどうかです。株式流通カーネルでkallsyms
で示される35000シンボルのようなものではありますが、それにはいくつかのスクリプトが必要になります。
技術的な答えではありませんが、GPLv2の下では、ソースコードとその変更、および実行中のバージョンの作成に使用される構成を利用できます。
したがって、1つの方法は、「独自のデバイス」のメーカー(まだ存在する場合)に、GPLの下で権利を与えられているソースを提供するように依頼することです。