Prenant l'exemple d'Ubuntu, pouvons-nous dire si le noyau a été compilé sur mesure plutôt que ce qui vient avec la distribution?
Prenant l'exemple d'Ubuntu, pouvons-nous dire si le noyau a été compilé sur mesure plutôt que ce qui vient avec la distribution?
Réponses:
Bien sûr, vérifiez simplement si vous en avez dpkg
connaissance.
Vérifiez d'abord la version du noyau que vous utilisez.
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
Dites ensuite dpkg
de rechercher le fichier image du noyau dans la dpkg
base de données.
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Ou, mieux, utilisez dlocate
le dlocate
package. dlocate
crée d'abord un cache à partir de la dpkg
base de données et l'utilise. C'est donc rapide.
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Enfin, vérifiez que les archives Debian contiennent ce paquet.
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
S'ils ne le font pas, alors c'est un package personnalisé. Bien sûr, si dpkg ne connaît pas le fichier image, votre noyau ne fait pas du tout partie d'un paquet, mais a été compilé localement.
Notez que cela apt
peut faire la différence entre un paquet dans l'archive Debian et un paquet du même nom compilé localement. Je pense qu'il vérifie la somme md5 du paquet, mais j'oublie les détails de la façon dont il le fait. Les packages binaires contiennent des informations sur les hachages, voir le bas de apt-cache show linux-image-3.2.0-4-amd64
, par exemple. par exemple
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 ...
fonctionne. Je vois que j'ai mal tapé. Correction maintenant.
Au minimum, uname -r
donnera la version kernal, comme 3.18.6
. Cependant, lorsque le noyau est compilé, une chaîne supplémentaire peut être configurée et attachée à cela et les distributions le font généralement pour indiquer leur propre niveau de correctif (après un tiret) et leur saveur, comme 3.18.6-32-generic
. Voilà un indice; évidemment, utiliser votre propre chaîne lorsque vous créez un noyau personnalisé peut en être un autre.
uname -v
donne une chaîne qui par défaut est quelque chose comme ça
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
Le nombre est arbitraire dans le sens où c'est le nombre de fois que ce noyau a été construit en utilisant une arborescence source spécifique sans que l'arborescence soit réinitialisée - cela peut être utile lorsque vous construisez la vôtre. SMP
indique un noyau multitâche (c'est-à-dire pas en temps réel) et PREEMPT est une autre option de configuration liée au "modèle de préemption" du programmateur. Mais le gros indice ici est probablement l'époque de sa construction. Cela pourrait être utilisé pour correspondre à l'horodatage de modification / changement sur le noyau lui-même, en gardant à l'esprit ce qui peut être changé, par exemple, avec touch
. Par exemple, stat
sur ce noyau ressemble à ceci:
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: -
Ce qui correspond à peu près Mon Mar 9 13:55:25 EDT 2015
.
Identique à tout autre
sudo apt-cache policy linux-generic
est la version installée via le gestionnaire de packages et
uname -r
comparer les versions
pour moi, c'est
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
et
3.19.0-15-generic
qui indiquent la même version
/boot
. Mon point est que je ne vois pas pourquoi vous vous attendriez à ce que la sortie de uname
change si vous recompilez tout en changeant certaines options. Dans ce cas, je m'attendrais à ce que apt-cache
et uname -r
renvoie les mêmes informations, malgré le fait que vous avez recompilé localement.
Je dirais que la réponse la plus généralement vraie est "non, vous ne pouvez pas". Il existe différentes méthodes qui peuvent aider dans certains cas et celles-ci ont déjà été suggérées, mais elles semblent toutes ne pas comprendre comment cette situation s'est réellement produite. En vérité, si vous utilisez un noyau personnalisé, ce noyau peut tout faire, y compris masquer sa présence ou apparaître comme un noyau différent.
Je serais inquiet si vous exécutez effectivement un noyau personnalisé et ne le saviez pas. La seule manière fiable de savoir quel noyau est utilisé est de garder une trace précise du noyau que vous compilez et installez.
Si vous n'êtes vraiment pas sûr du noyau sur lequel le système fonctionne ou des sources à partir desquelles ce noyau a été construit ou d'où il provient, j'envisagerais sérieusement de réinstaller le système d'exploitation à partir d'une bonne image connue et d'être plus prudent à l'avenir sur les noyaux que vous essayez de démarrer de ou utiliser.