Я управляю Ubuntu Server 8.04 уже довольно давно. Кроме того, я использую VMWare Server Edition, которая должна перекомпилировать свои модули при установке нового ядра. Для этого я выполняю: sudo vmware-config.pl
До сих пор, когда бы ни была доступна новая версия ядра, я устанавливал ее, перезагружал систему и перестраивал модули. Но теперь я понял - скорее случайно - что перестройка этих модулей ядра работала даже без перезагрузки системы. После этого VMWare может снова запускаться. Это сделало меня любопытным. Я вошел в uname -r
, чтобы увидеть версию ядра, которая показала мне именно ту версию, которую я установил прямо перед без перезагрузки системы.
Manpages для uname не совсем подробно описывает то, что на самом деле печатается, но до сих пор я думал, что это напечатало реально работающую версию ядра.
Мой вопрос сейчас таков: возможно ли, чтобы ядро перезагрузилось без перезагрузки? Я не установил ksplice или подобный инструмент. Из того, что я понял, теперь есть даже в репозиториях для Ubuntu Server 8.04. Что происходит с моей системой? Нужно ли перезагружаться после обновления ядра или нет? Что печатает uname -r? Поставляется ли Ubuntu Server Edition с программой, аналогичной ksplice? Я никогда ничего не читал об этой функции!
Я проверил, что Kees сказал мне сделать: dpkg:
dpkg -l 'linux-image*' | grep ^.i
ii linux-image-2.6.24-28-server 2.6.24-28.80
Очевидно, что я должен сделать перезагрузку :) Спасибо за подробную информацию!
Выходные данные uname -r
показывают только версию до номера «ABI», но могут быть изменения ABI. Только при изменении ABI сторонние модули необходимо перекомпилировать.
Для получения более подробной информации о том, что вы используете, прочитайте файл /proc/version_signature
:
cat /proc/version_signature
Ubuntu 2.6.24-28.80-generic
Это покажет версию пакета ядра , которую вы в настоящее время используете , который может отличаться от самого последнего установленного ядра. Например, в приведенном выше примере ABI равен «28», что будет отображаться в uname -r
:
uname -r
2.6.24-28-generic
Затем вы можете увидеть, что вы установили с помощью dpkg
:
dpkg -l 'linux-image*' | grep ^.i
ii linux-image-2.6.24-27-generic 2.6.24-27.69 Linux kernel image for version 2.6.24 on x86
ii linux-image-2.6.24-28-generic 2.6.24-28.80 Linux kernel image for version 2.6.24 on x86
ii linux-image-generic 2.6.24.28.30 Generic Linux kernel image
В приведенном выше случае, если следующий установленный пакет ядра был версии 2.6.24- 28 .81, изменился только «микро релиз». Поскольку компиляции модулей привязаны к ABI, перекомпиляция не требуется, но вам все равно нужно перезагрузиться, чтобы получить исправления ядра. Если следующее установленное ядро было версии 2.6.24- 29 .81, то ABI изменится, и вам придется перекомпилировать модули после перезагрузки.
Подробнее о ABI см. https://wiki.ubuntu.com/KernelTeam/BuildSystem/ABI
.