내 Linux 커널이 배포판이 아닌 맞춤형(즉, 컴파일된) 커널인지 알 수 있습니까?

내 Linux 커널이 배포판이 아닌 맞춤형(즉, 컴파일된) 커널인지 알 수 있습니까?

Ubuntu를 예로 들면, 배포판과 함께 제공되는 커널 대신 커널이 사용자 정의 컴파일되었는지 여부를 알 수 있습니까?

답변1

물론, dpkg알고 있는지 확인해 보세요.

먼저 실행 중인 커널 버전을 확인하세요.

uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux

그런 다음 dpkg데이터베이스에 커널 이미지 파일을 검색하도록 지시합니다 dpkg.

dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64

또는 더 나은 방법은 패키지 dlocate에서 사용하는 것입니다. 먼저 데이터베이스에서 캐시를 구축 하고 사용하십시오. 그래서 빠릅니다.dlocatedlocatedpkg

dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64

마지막으로 데비안 아카이브에 이 패키지가 포함되어 있는지 확인하세요.

apt-cache policy linux-image-3.2.0-4-amd64

linux-image-3.2.0-4-amd64:
  Installed: 3.2.68-1+deb7u1
  Candidate: 3.2.68-1+deb7u1
  Version table:
 *** 3.2.68-1+deb7u1 0
        500 http://security.debian.org/ wheezy/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     3.2.65-1 0
        500 http://httpredir.debian.org/debian/ wheezy/main amd64 Packages

그렇지 않은 경우 맞춤 패키지입니다. 물론, dpkg가 이미지 파일에 대해 모른다면 커널은 패키지의 일부가 아니라 로컬로 컴파일된 것입니다.

알아채다apt 할 수 있는데비안 아카이브의 패키지와 동일한 이름의 로컬 컴파일 패키지를 구별합니다. 패키지의 md5sum을 확인한다고 생각했는데, 그 방법에 대한 자세한 내용을 잊어버렸습니다. 바이너리 패키지에는 해시에 대한 정보가 포함되어 있습니다. apt-cache show linux-image-3.2.0-4-amd64예를 들어 하단을 참조하세요. 예를 들어

Package: linux-image-3.2.0-4-amd64
Source: linux
Version: 3.2.68-1+deb7u1
Installed-Size: 105729
[...]
Size: 23483788
MD5sum: f9736f30f8b68ae79b2747d8a710ce28
SHA1: 64bfde903892801dccd04b52b12316901a02cd96
SHA256: 775814b3eff4a964b593c0bdeaac20587a4e3ddb1257a9d2bfcf1e9d3b9bfd15

답변2

최소한 uname -r커널 버전이 제공됩니다(예: ) 3.18.6. 그러나 커널을 컴파일할 때 추가 문자열을 구성하고 추가할 수 있으며, 배포판에서는 종종 자체 패치 수준(대시 뒤)과 버전을 표시하기 위해 이 작업을 수행합니다 3.18.6-32-generic. 사용자 정의 커널을 만들 때 자신만의 문자열을 사용하는 것이 또 다른 단서가 될 수 있습니다.

uname -v기본적으로 다음과 같은 문자열을 제공합니다.

#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015

이 숫자는 트리를 재설정하지 않고 특정 소스 트리를 사용하여 이 커널을 빌드한 횟수이기 때문에 임의적입니다. 이는 자신만의 소스 트리를 빌드할 때 유용할 수 있습니다. SMP멀티태스킹(즉, 비실시간) 커널을 나타내는 PREEMPT는 스케줄러의 "선점 모델"과 관련된 또 다른 구성 옵션입니다. 하지만 여기서 가장 큰 단서는 그것이 언제 만들어졌는지일지도 모릅니다. 이는 커널 자체의 수정/변경 타임스탬프를 일치시키는 데 사용될 수 있습니다 touch. 예를 들어 stat해당 커널에서는 다음과 같습니다.

  File: ‘3.19-goldilocksSpecial’
  Size: 6858880         Blocks: 13400      IO Block: 4096   regular file
Device: 801h/2049d      Inode: 3156605     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-02-15 15:32:29.000000000 -0500
Modify: 2015-03-03 13:55:21.000000000 -0500
Change: 2015-03-03 14:02:26.767045553 -0500
 Birth: -

이것은 매우 일관성이 있습니다 Mon Mar 9 13:55:25 EDT 2015.

답변3

다른 것과 마찬가지로

sudo apt-cache policy linux-generic

패키지 관리자를 통해 설치된 버전인가요?

uname -r

버전 비교

나에게는 그것

linux-generic:
  Installed: 3.19.0.15.14
  Candidate: 3.19.0.15.14

그리고

3.19.0-15-generic

이는 버전이 동일함을 나타냅니다.

답변4

나는 가장 보편적으로 정답은 "아니요, 할 수 없습니다"라고 말하고 싶습니다. 특정 상황에서 도움이 될 수 있는 다양한 방법이 제안되어 왔지만 모두 이러한 상황이 실제로 어떻게 발생하는지를 무시하는 것 같습니다. 실제로 사용자 정의 커널을 사용하면 커널은 자신의 존재를 숨기거나 다른 커널로 나타나는 등 무엇이든 할 수 있습니다.

실제로 사용자 정의 커널을 실행하고 있는데 이를 몰랐다면 걱정이 될 것입니다. 어떤 커널이 사용되고 있는지 알 수 있는 신뢰할 수 있는 유일한 방법은 어떤 커널을 컴파일하고 설치했는지 주의 깊게 추적하는 것입니다.

시스템에서 실행 중인 커널이 무엇인지, 해당 커널이 어떤 소스에서 빌드되었는지, 어디서 왔는지 확실하지 않은 경우 알려진 양호한 이미지에서 OS를 다시 설치하는 것을 진지하게 고려하고 앞으로는 시도할 때 더 주의를 기울이겠습니다. 그리고 boot 커널은 다음에서 나오거나 사용합니다.

관련 정보