현재 독점 장치용 커널을 다시 빌드하려고 합니다. 이렇게 하려면 장치에 대한 커널 구성을 생성해야 합니다. 시행착오를 거쳐 이 작업을 수행할 수 있지만 실행 중인 호스트에서 구성을 가져올 수 있는지 확인하는 것이 더 좋습니다.
즉, 실행 중인 커널은 컴파일되지 않습니다 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에 따라 사용할 수 있는 리소스를 제공하도록 요청하는 것입니다.