Автоматическая перезагрузка ядра после обновления
Я управляю 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 сказал мне сделать:
uname -r
2.6.24-28-server
Файл в proc дал:
cat /proc/version_signature
Ubuntu 2.6.24-28.75-server
И дпкг:
dpkg -l 'linux-image*' | grep ^.i
ii linux-image-2.6.24-28-server 2.6.24-28.80
Очевидно, я должен сделать перезагрузку тогда:) Спасибо за подробную информацию!
1 ответ
Выход из 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