На примере Ubuntu, можем ли мы сказать, было ли ядро скомпилировано, а не что входит в дистрибутив?
ubuntu
linux-kernel
bytefire
источник
источник
Ответы:
Конечно, просто проверьте,
dpkg
знает ли об этом.Сначала проверьте версию ядра, которую вы используете.
Затем скажите,
dpkg
чтобы искать файл образа ядра вdpkg
базе данных.Или, лучше, использовать
dlocate
изdlocate
пакета.dlocate
сначала строит кеш изdpkg
базы данных и использует его. Так быстро.Наконец, убедитесь, что архивы Debian содержат этот пакет.
Если они этого не делают, то это заказной пакет. Конечно, если dpkg не знает о файле образа, то ваше ядро вообще не является частью пакета, но было скомпилировано локально.
Обратите внимание, что это
apt
может отличить пакет в архиве Debian от локально скомпилированного пакета с тем же именем. Я думаю, что он проверяет md5sum пакета, но я забываю детали того, как он это делает. Бинарные пакеты содержат информацию о хэшах, см.apt-cache show linux-image-3.2.0-4-amd64
, Например, нижнюю часть . напримеристочник
apt-cache show ...
работает. Я вижу, что опечатка. Исправляем сейчас.Минимально,
uname -r
даст версию кернал, такую как3.18.6
. Однако, когда ядро скомпилировано, к нему можно настроить и присоединить дополнительную строку, и дистрибутивы обычно делают это, чтобы указать собственный уровень патча (после тире) и разновидность, например3.18.6-32-generic
. Это одна подсказка; Очевидно, что использование собственной строки при создании собственного ядра может быть другим.uname -v
дает строку, которая по умолчанию что-то вроде этогоЧисло является произвольным в том смысле, что это число раз, когда это ядро было построено с использованием определенного исходного дерева без сбрасываемого дерева - это может быть полезно при создании собственного.
SMP
указывает на многозадачное (т.е. не в реальном времени) ядро, а PREEMPT - еще одна опция конфигурации, связанная с «моделью вытеснения планировщика». Но большая подсказка здесь - вероятно, время, которое это было построено. Это можно использовать для сопоставления с меткой времени изменения / изменения на самом ядре, имея в виду, что ее можно изменить, например, с помощьюtouch
. Например,stat
на этом ядре выглядит так:Что в значительной степени соответствует
Mon Mar 9 13:55:25 EDT 2015
.источник
Такой же как и любой другой
установлена ли версия через менеджер пакетов и
сравнить версии
для меня это
а также
которые указывают на ту же версию
источник
/boot
. Я хочу сказать, что я не понимаю, почему вы ожидаете, что результатuname
изменится, если вы просто перекомпилируете при изменении некоторых опций. В этом случае я ожидаю, чтоapt-cache
иuname -r
верну ту же информацию, несмотря на тот факт, что вы перекомпилировали локально.Я бы сказал, что наиболее правдивый ответ - «нет, ты не можешь». Существуют различные методы, которые могут помочь в определенных случаях, и они уже были предложены, но, похоже, все они упускают из виду то, как на самом деле сложилась эта ситуация. По правде говоря, если вы используете собственное ядро, это ядро может делать все что угодно, в том числе скрывать свое присутствие или выглядеть как другое ядро.
Я был бы обеспокоен, если бы вы действительно запускали собственное ядро и не знали об этом. Единственный надежный способ узнать, какое ядро используется, - тщательно отслеживать, какое ядро вы компилируете и устанавливаете.
Если вы действительно не уверены, из какого ядра работает система или из каких источников это ядро было построено или откуда оно взято, я серьезно подумаю о переустановке ОС из известного хорошего образа и в будущем буду более внимательным в отношении того, какие ядра вы пытаетесь загрузить. от или использовать.
источник