Почему Ubuntu требует перезагрузки для завершения обновлений?

15

Я слышал, что машины Linux могут работать месяцами без перезапуска. Почему после установки обновлений Ubuntu сообщает «Требуется перезагрузка для завершения обновлений ...»?

Пользователи Linux и UNIX хвастаются тем, что не перезагружали свои системы с тех пор, как Джордж Буш-старший был президентом.

http://www.tested.com/news/feature/1141-how-often-do-you-really-need-to-reboot-your-pc/

Roland
источник
3
Большинство людей, которые говорят, что работают ужасно уязвимые системы, но они не подключены к Интернету, или они находятся за большим количеством брандмауэров.
Zoredache

Ответы:

12

То, что вы прочитали, было правдой. Большинство администраторов будут хвастаться временем работы своей машины. Это могут быть дни, месяцы или даже годы.
Однако, что вам нужно знать, так это то, что эти машины - не ваши повседневные настольные системы. Это специализированные серверные машины.

Прежде всего, они редко запускают X11. Большинство серверных систем обычно всегда будут только на Терминалах. Таким образом, обновление на XServer не имеет значения.
Во-вторых, как указал Картик, для обновления X Server требуется только перезапустить X, а не всю машину. Так что ваш аптайм все еще остается.

Другим очень важным моментом является то, что серверные системы не обновляются до последней версии ядра, как она выходит. В Ubuntu вы, вероятно, используете версию 3.2 прямо сейчас. В моей системе Arch я использую версию 3.6, но многие из этих систем с длительным временем безотказной работы все еще, вероятно, находятся где-то в строке 2.xx, хотя и полностью защищены с помощью патчей с резервным копированием.

Все обновления в таких системах производятся только на месте. Обновления сначала тестируются на тестовой машине, и после тщательного тестирования, чтобы убедиться, что ничего не сломалось, и что для их реализации перезагрузка не требуется, они обновляются администраторами.

Вы можете сделать то же самое в вашей системе Ubuntu тоже. Но тогда забудьте об автоматических обновлениях. Проведите небольшое тестирование и попробуйте сделать ваши обновления на месте. Даже ядра могут быть заменены. Тем не менее, требуется много навыков и опыта, чтобы успешно справляться каждый раз.

darnir
источник
1
Это не так сложно. Просто используйте ksplice. ksplice.com/pricing
Zoredache
Я упоминал об этом с точки зрения выполнения всего процесса вручную, а не с помощью какого-либо инструмента автоматизации.
Дарнир
8

Это ТОЛЬКО в случае обновления самого ядра Linux . Все остальные виды обновлений применяются напрямую. Ядро не может быть заменено во время работы и, следовательно, нуждается в перезагрузке.

Обновление ядра должно происходить редко во время регулярных обновлений и обычно выполняется только во время циклов обновления (12.04-12.10 и т. Д.)

Вы можете выбрать не перезапускать, он будет продолжать использовать старое ядро.

Редактировать : ядро Hotswapping может быть сделано, чтобы предотвратить перезагрузку в теории, но это не выглядит тривиально удаленно.

Картик Т
источник
2
Я только что сделал обновление, и он обновил некоторые файлы xserver. Тем не менее, ОС говорит, что для завершения обновлений требуется перезагрузка. Кроме того, я уверен, что где-то читал, что ОС Linux могут продолжать работать без перезапуска даже после обновления ядра.
Роланд
7
xserver ТЕХНИЧЕСКИ не нуждается в перезапуске, вы можете просто перезапустить xserver :). Проще сказать, перезагрузить машину. Во многих случаях также может быть достаточно входа в систему.
Karthik T
$ cat /var/run/reboot-required.pkgsвыходы libssl1.0.0- это libssl часть ядра?
Дан Даскалеску
3
@DanDascalescu Не должно быть, и если вы спросите меня, перезагрузка не обязательна при обновлении openssl / libssl, если вы уверены, что перезапускаете все программы / службы, которые используют openssl / libssl. Я считаю, что сопровождающие пакета просто пошли по простому пути и проигнорировали его, требуя перезагрузки вместо прохождения всех запущенных процессов, проверки, какие из них используют libssl, а затем выполнения догадок, чтобы сопоставить процессы с выскочкой и / или именами служб sysvinit. ,
blubberdiblub