Können wir am Beispiel von Ubuntu feststellen, ob der Kernel benutzerdefiniert kompiliert wurde und nicht, was mit der Distribution geliefert wird?
Können wir am Beispiel von Ubuntu feststellen, ob der Kernel benutzerdefiniert kompiliert wurde und nicht, was mit der Distribution geliefert wird?
Antworten:
Sicher, überprüfen Sie einfach, ob Sie davon dpkg
wissen.
Überprüfen Sie zuerst die Kernelversion, die Sie ausführen.
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
Weisen Sie dann dpkg
an, nach der Kernel-Image-Datei in der dpkg
Datenbank zu suchen .
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Oder besser dlocate
aus der dlocate
Packung verwenden. dlocate
Erstellt zuerst einen Cache aus der dpkg
Datenbank und verwendet diesen. So geht es schnell.
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Überprüfen Sie abschließend, ob die Debian-Archive dieses Paket enthalten.
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
Wenn dies nicht der Fall ist, handelt es sich um ein benutzerdefiniertes Paket. Wenn dpkg nichts über die Image-Datei weiß, ist Ihr Kernel natürlich überhaupt nicht Teil eines Pakets, sondern wurde lokal kompiliert.
Beachten Sie, dass apt
dies den Unterschied zwischen einem Paket im Debian-Archiv und einem lokal kompilierten Paket mit demselben Namen erkennen lässt. Ich denke, es überprüft die md5sum des Pakets, aber ich vergesse die Details, wie es das macht. Die Binärpakete enthalten Informationen zu Hashes, siehe beispielsweise unten in apt-cache show linux-image-3.2.0-4-amd64
. z.B
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
apt-cache show ...
funktioniert. Ich sehe, ich habe falsch geschrieben. Jetzt korrigieren.
Minimal uname -r
wird die kernale Version geben, wie z 3.18.6
. Wenn der Kernel jedoch kompiliert wird, kann eine zusätzliche Zeichenfolge konfiguriert und an diese angehängt werden. Die Distributionen tun dies normalerweise, um ihre eigene Patch-Ebene (nach einem Bindestrich) und ihren eigenen Geschmack anzugeben, z 3.18.6-32-generic
. Das ist ein Hinweis; Die Verwendung einer eigenen Zeichenfolge beim Erstellen eines benutzerdefinierten Kernels kann natürlich eine andere sein.
uname -v
gibt eine Zeichenfolge an, die standardmäßig so ähnlich ist
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
Die Anzahl ist in dem Sinne willkürlich, dass es die Häufigkeit ist, mit der dieser Kernel unter Verwendung eines bestimmten Quellbaums erstellt wurde, ohne dass der Baum zurückgesetzt wurde. Dies kann nützlich sein, wenn Sie Ihren eigenen erstellen. SMP
zeigt einen Multitasking-Kernel (dh keinen Echtzeit-Kernel) an und PREEMPT ist eine weitere Konfigurationsoption, die sich auf das "Preemption-Modell" des Schedulers bezieht. Aber der große Hinweis hier ist wahrscheinlich die Zeit, als es gebaut wurde. Dies kann verwendet werden, um mit dem Änderungs- / Änderungszeitstempel auf dem Kernel selbst übereinzustimmen, wobei berücksichtigt wird, dass z touch
. B. mit geändert werden kann . Zum Beispiel, stat
auf diesen Kernel sieht wie folgt aus :
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: -
Welches ist ziemlich im Einklang mit Mon Mar 9 13:55:25 EDT 2015
.
Gleich wie alle anderen
sudo apt-cache policy linux-generic
ist die über den Paketmanager installierte Version und
uname -r
Vergleiche die Versionen
für mich ist es
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
und
3.19.0-15-generic
die die gleiche Version anzeigen
/boot
. Mein Punkt ist, dass ich nicht verstehe, warum Sie erwarten würden, dass sich die Ausgabe von uname
ändert, wenn Sie nur neu kompilieren, während Sie einige Optionen ändern. In diesem Fall würde ich das erwarten apt-cache
und uname -r
die gleichen Informationen zurückgeben, obwohl Sie lokal neu kompiliert haben.
Ich würde sagen, die allgemeinste Antwort lautet "Nein, du kannst nicht". Es gibt verschiedene Methoden, die in bestimmten Fällen hilfreich sein können, und diese wurden bereits vorgeschlagen, aber alle scheinen zu übersehen, wie diese Situation tatsächlich zustande gekommen ist. In Wahrheit kann dieser Kernel, wenn Sie einen benutzerdefinierten Kernel verwenden, alles tun, einschließlich das Ausblenden seiner Anwesenheit oder das Erscheinen eines anderen Kernels.
Ich wäre besorgt, wenn Sie tatsächlich einen benutzerdefinierten Kernel ausführen und dies nicht wüssten. Die einzige zuverlässige Methode, um zu wissen, welcher Kernel verwendet wird, besteht darin, sorgfältig zu verfolgen, welchen Kernel Sie kompilieren und installieren.
Wenn Sie wirklich nicht sicher sind, auf welchem Kernel das System ausgeführt wird oder aus welchen Quellen dieser Kernel erstellt wurde oder woher er stammt, würde ich ernsthaft in Betracht ziehen, das Betriebssystem von einem bekanntermaßen guten Image neu zu installieren und in Zukunft vorsichtiger zu sein, welche Kernel Sie versuchen und starten von oder verwenden.