Tomando o exemplo do Ubuntu, podemos dizer se o kernel foi compilado de maneira personalizada e não o que vem com a distribuição?
ubuntu
linux-kernel
bytefire
fonte
fonte
Respostas:
Claro, basta verificar se
dpkg
sabe sobre isso.Primeiro verifique a versão do kernel que você está executando.
Em seguida, diga
dpkg
para procurar o arquivo de imagem do kernel nodpkg
banco de dados.Ou, melhor, use
dlocate
odlocate
pacote.dlocate
primeiro cria um cache a partir dodpkg
banco de dados e usa isso. Então é rápido.Por fim, verifique se os arquivos Debian contêm este pacote.
Caso contrário, é um pacote personalizado. Obviamente, se o dpkg não sabe sobre o arquivo de imagem, seu kernel não faz parte de nenhum pacote, mas foi compilado localmente.
Note que
apt
pode dizer a diferença entre um pacote no repositório Debian e um compilado localmente com o mesmo nome. Acho que verifica o md5sum do pacote, mas esqueço os detalhes de como isso acontece. Os pacotes binários contêm informações sobre hashes, veja na parte inferiorapt-cache show linux-image-3.2.0-4-amd64
, por exemplo. por exemplofonte
apt-cache show ...
funciona. Eu vejo que eu digitei errado. Corrigindo agora.Minimamente,
uname -r
dará a versão kernal, como3.18.6
. No entanto, quando o kernel é compilado, uma string adicional pode ser configurada e anexada a isso, e as distribuições geralmente fazem isso para indicar seu próprio nível de patch (após um traço) e seu sabor, como3.18.6-32-generic
. Essa é uma pista; obviamente, usar sua própria string quando você cria um kernel personalizado pode ser outro.uname -v
dá uma string que por padrão é algo como istoO número é arbitrário no sentido de que é o número de vezes que esse kernel foi construído usando uma árvore de origem específica sem que a árvore seja redefinida - isso pode ser útil quando você está construindo o seu próprio.
SMP
indica um kernel multitarefa (isto é, não em tempo real) e PREEMPT é outra opção de configuração relacionada ao "modelo de preempção" do agendador. Mas a grande pista aqui é provavelmente a hora em que foi construída. Isso pode ser usado para comparar com o carimbo de data / hora de modificação / mudança no próprio kernel, tendo em mente que pode ser alterado, por exemplo, comtouch
. Por exemplo,stat
nesse kernel se parece com isso:O que está praticamente alinhado com
Mon Mar 9 13:55:25 EDT 2015
.fonte
Igual a qualquer outro
é a versão instalada pelo gerenciador de pacotes e
compare as versões
para mim é
e
que indicam a mesma versão
fonte
/boot
. Meu argumento é que não vejo por que você esperaria que a saídauname
fosse alterada se você apenas recompile enquanto altera algumas opções. Nesse caso, eu esperaria issoapt-cache
euname -r
retornarei as mesmas informações, apesar de você ter recompilado localmente.Eu diria que a resposta mais geralmente verdadeira é "não, você não pode". Existem vários métodos que podem ajudar em certos casos e estes já foram sugeridos, mas todos parecem não entender como essa situação realmente ocorreu. Na verdade, se você estiver usando um kernel personalizado, ele poderá fazer qualquer coisa, incluindo ocultar sua presença ou parecer um kernel diferente.
Eu ficaria preocupado se você realmente está executando um kernel personalizado e não sabia disso. A única maneira confiável de saber qual kernel está sendo usado é acompanhar cuidadosamente qual kernel você compila e instala.
Se você realmente não tem certeza de qual kernel o sistema está executando ou de quais fontes esse kernel foi construído ou de onde veio, consideraria seriamente reinstalar o sistema operacional a partir de uma boa imagem conhecida e ter mais cuidado no futuro sobre quais kernels você tenta inicializar de ou usar.
fonte