Linux 커널 버전 정보가 포함된 정적 파일

Linux 커널 버전 정보가 포함된 정적 파일

시스템에서 실행 중인 커널 버전에 대한 정보가 포함된 파일 목록(데드박스 시스템에서 볼 수 있음, 즉 파일 시스템 아티팩트여야 함)을 찾고 있습니다.

내 사용 사례는 임베디드 Linux 펌웨어 이미지를 분석하고 커널 버전을 추출하려는 것입니다.

이러한 아티팩트에 대한 정보를 찾는 것이 얼마나 어려운지는 놀랍습니다. 대부분의 온라인 리소스에는 실행할 수 있는 다양한 명령(uname -r, hostnamectl 등)이 나열되어 있지만 이 데이터 포인트에 존재할 수 있는 정적 파일은 나열되어 있지 않습니다. /proc/version이 위치인 것 같지만 안타깝게도 지금까지 살펴본 이미지에는 /proc 디렉토리가 존재하지 않는 것 같습니다.

기본적으로 저는 커널 버전 정보가 존재할 수 있는 Linux 시스템의 모든 파일 목록을 찾고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변1

데이터의 어떤 파일에 사용된 커널이 포함되어 있는지 확인할 수 있으면 해당 파일에서 버전을 추출할 수 있습니다. 어떤 경우에는 file버전을 추출하는 것이 가능합니다:

file /boot/vmlinuz-4.19.0-16-amd64
/boot/vmlinuz-4.19.0-16-amd64: Linux kernel x86 boot executable bzImage, version 4.19.0-16-amd64 ([email protected]) #1 SMP Debian 4.19.181-1 (2021-03-19), RO-rootFS, swap_dev 0x5, Normal VGA

다른 경우에는 버전을 직접 찾아야 합니다.

$ grep -a "Linux version" /boot/pine64/Image
Linux version 3.10.105 (debian@pine64) (gcc version 4.9.2 (Debian/Linaro 4.9.2-10) ) #1 SMP PREEMPT Sun Aug 20 17:02:37 CEST 2017

이는 게으른 파일 시스템에서 사용할 수 있는 가장 안정적인 아티팩트입니다.

답변2

데드박스 시스템에서는...불행히도 /proc 디렉토리가 존재하지 않는 것 같습니다.

물론 존재하지 않을 것입니다. /proc 디렉토리는 runnung 커널에 의해 런타임 시 RAM에 채워집니다. 따라서 커널 이미지를 찾아 직접 명령을 file사용하거나 다른 명령을 사용하여 strings확인하십시오 . 해당 디스크에 /boot 디렉토리가 있는지 확인하세요. 거기에서 커널을 찾을 수 있습니다.

편집: 이런! Stephen Jeter가 이미 이 질문에 답변한 것을 알지 못했습니다. :-)

관련 정보