Linux 커널 구성을 복원하는 방법은 무엇입니까?

Linux 커널 구성을 복원하는 방법은 무엇입니까?

현재 독점 장치용 커널을 다시 빌드하려고 합니다. 이렇게 하려면 장치에 대한 커널 구성을 생성해야 합니다. 시행착오를 거쳐 이 작업을 수행할 수 있지만 실행 중인 호스트에서 구성을 가져올 수 있는지 확인하는 것이 더 좋습니다.

즉, 실행 중인 커널은 컴파일되지 않습니다 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에 따라 사용할 수 있는 리소스를 제공하도록 요청하는 것입니다.

관련 정보