Prendendo esempio da Ubuntu, possiamo dire se il kernel è stato compilato in modo personalizzato piuttosto che cosa viene fornito con la distribuzione?
Prendendo esempio da Ubuntu, possiamo dire se il kernel è stato compilato in modo personalizzato piuttosto che cosa viene fornito con la distribuzione?
Risposte:
Certo, controlla se ne è a dpkg
conoscenza.
Prima controlla la versione del kernel che stai eseguendo.
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
Quindi dire dpkg
di cercare il file immagine del kernel nel dpkg
database.
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
O meglio usare dlocate
dal dlocate
pacchetto. dlocate
crea prima una cache dal dpkg
database e la utilizza. Quindi è veloce.
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Infine, controlla che gli archivi Debian contengano questo pacchetto.
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
In caso contrario, si tratta di un pacchetto personalizzato. Naturalmente, se dpkg non è a conoscenza del file immagine, il kernel non fa parte di alcun pacchetto, ma è stato compilato localmente.
Nota che apt
può dire la differenza tra un pacchetto nell'archivio Debian e uno compilato localmente con lo stesso nome. Penso che controlla il md5sum del pacchetto, ma dimentico i dettagli di come lo fa. I pacchetti binari contengono informazioni sugli hash apt-cache show linux-image-3.2.0-4-amd64
, ad esempio in fondo. per esempio
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 ...
funziona. Vedo che ho sbagliato a scrivere. Correzione ora.
Minimamente, uname -r
fornirà la versione kernal, come ad esempio 3.18.6
. Tuttavia, quando il kernel viene compilato, una stringa aggiuntiva può essere configurata e collegata a quella e le distribuzioni di solito lo fanno per indicare il proprio livello di patch (dopo un trattino) e sapore, come 3.18.6-32-generic
. Questo è un indizio; ovviamente usare la propria stringa quando si crea un kernel personalizzato può essere un altro.
uname -v
dà una stringa che per impostazione predefinita è qualcosa del genere
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
Il numero è arbitrario, nel senso che è il numero di volte che questo kernel è stato creato usando un albero dei sorgenti specifico senza che l'albero sia stato resettato - questo potrebbe essere utile quando si sta costruendo il proprio. SMP
indica un kernel multi-tasking (cioè non in tempo reale) e PREEMPT è un'altra opzione di configurazione relativa al "modello di prelazione" dello scheduler. Ma il grande indizio qui è probabilmente il momento in cui è stato costruito. Questo potrebbe essere usato per confrontarsi con il timestamp di modifica / cambiamento sul kernel stesso, tenendo presente che può essere cambiato, ad esempio, con touch
. Ad esempio, stat
su quel kernel appare così:
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: -
Il che è praticamente in linea con Mon Mar 9 13:55:25 EDT 2015
.
Come qualsiasi altro
sudo apt-cache policy linux-generic
è la versione installata tramite il gestore pacchetti e
uname -r
confrontare le versioni
per me è
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
e
3.19.0-15-generic
che indicano la stessa versione
/boot
. Il punto è che non vedo perché ti aspetti che l'output uname
cambi se ti ricompili mentre cambi alcune opzioni. In tal caso, me lo aspetto apt-cache
e uname -r
restituirò le stesse informazioni, nonostante il fatto che tu abbia ricompilato localmente.
Direi che la risposta più generalmente vera è "no, non puoi". Esistono vari metodi che possono aiutare in alcuni casi e questi sono già stati suggeriti, ma tutti sembrano mancare di come si sia effettivamente verificata questa situazione. In verità, se stai usando un kernel personalizzato, quel kernel può fare qualsiasi cosa, incluso nascondere la sua presenza o sembrare un kernel diverso.
Sarei preoccupato se stai effettivamente eseguendo un kernel personalizzato e non lo sapessi. L'unico modo affidabile per sapere quale kernel viene utilizzato è tenere attentamente traccia di quale kernel si compila e si installa.
Se non sei sinceramente sicuro di quale kernel sia in esecuzione il sistema o da quali fonti questo kernel sia stato creato o da dove provenga, prenderei seriamente in considerazione la reinstallazione del sistema operativo da una buona immagine conosciuta e di essere più attento in futuro su quali kernel provi e avvii da o utilizzare.