我目前正在尝试为专有设备重建内核。为了做到这一点,我需要为设备生成一个内核配置。虽然我可以通过反复试验来做到这一点,但最好看看是否可以从正在运行的主机中提取配置。
话虽这么说,正在运行的内核没有被编译CONFIG_IKCONFIG
(因此CONFIG_IKCONFIG_PROC
也没有)。这意味着没有/proc/config.gz
可提取的。
此外,他们也懒得将配置打包进去/boot
。因此,通常存储内核配置的两个常见位置并不走运。
大多数内容都静态编译到该内核中:
# 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
某处提取内核的符号表,并基于此至少对所包含的驱动程序进行逆向工程。尽管在股票发行内核上显示了 35000 个符号kallsyms
,但这需要一些脚本。
答案2
非技术性答案,但根据 GPLv2,您有权获得源代码及其任何修改,以及用于创建运行版本的配置。
因此,一种方法是要求“专有设备”的制造商(如果它们仍然存在)向您提供您根据 GPL 有权获得的资源。