История изменений
Исправление vbr, (текущая версия) :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Можно обсуждать, что должно входить в минимальный набор утилит для базового графического образа, но это явно должно быть меньше того, что входит в GNOME, например. shell, settings, file manager. И насчёт file manager я даже не уверен. Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое. Похожее на GNOME, но с нормальным управлением, как в Windows 95 было, с пуском, панелью задач. Взять хорошие идеи со всех операционных систем, плохие (как это сделал GNOME) не брать.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейнеры. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки (например поддержка нескольких пользователей - бред же, это никому не нужно) и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Обновление базовой системы должно сопровождаться перезагрузкой. Пускай даже через kexec или systemd soft-reboot, если это надёжно работает на любом железе (в чём я сомневаюсь). Конечно базовую систему нельзя обновлять просто так. Или новая мажорная версия раз в год, или обновление безопасности, тут уже ничего не поделаешь, надо ставить и ребутаться.
А обновления обычных приложений, при условии, что они на 100% изолированы от базовой системы и других приложений с помощью контейнеров - можно и без перезагрузки выполнять, тут проблем нет. Обновили, вывесили уведомление - мол обновление для гимпа готово, перезапустите гимп, чтобы пользоваться новой версией или отложите обновление, если пока не хочется обновляться.
Исправление vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Можно обсуждать, что должно входить в минимальный набор утилит для базового графического образа, но это явно должно быть меньше того, что входит в GNOME, например. shell, settings, file manager. И насчёт file manager я даже не уверен. Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое. Похожее на GNOME, но с нормальным управлением, как в Windows 95 было, с пуском, панелью задач. Взять хорошие идеи со всех операционных систем, плохие (как это сделал GNOME) не брать.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейнеры. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Обновление базовой системы должно сопровождаться перезагрузкой. Пускай даже через kexec или systemd soft-reboot, если это надёжно работает на любом железе (в чём я сомневаюсь). Конечно базовую систему нельзя обновлять просто так. Или новая мажорная версия раз в год, или обновление безопасности, тут уже ничего не поделаешь, надо ставить и ребутаться.
А обновления обычных приложений, при условии, что они на 100% изолированы от базовой системы и других приложений с помощью контейнеров - можно и без перезагрузки выполнять, тут проблем нет. Обновили, вывесили уведомление - мол обновление для гимпа готово, перезапустите гимп, чтобы пользоваться новой версией или отложите обновление, если пока не хочется обновляться.
Исправление vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Можно обсуждать, что должно входить в минимальный набор утилит для базового графического образа, но это явно должно быть меньше того, что входит в GNOME, например. shell, settings, file manager. И насчёт file manager я даже не уверен. Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое. Похожее на GNOME, но с нормальным управлением, как в Windows 95 было, с пуском, панелью задач. Взять хорошие идеи со всех операционных систем, плохие (как это сделал GNOME) не брать.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейрены. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Обновление базовой системы должно сопровождаться перезагрузкой. Пускай даже через kexec или systemd soft-reboot, если это надёжно работает на любом железе (в чём я сомневаюсь). Конечно базовую систему нельзя обновлять просто так. Или новая мажорная версия раз в год, или обновление безопасности, тут уже ничего не поделаешь, надо ставить и ребутаться.
А обновления обычных приложений, при условии, что они на 100% изолированы от базовой системы и других приложений с помощью контейнеров - можно и без перезагрузки выполнять, тут проблем нет. Обновили, вывесили уведомление - мол обновление для гимпа готово, перезапустите гимп, чтобы пользоваться новой версией или отложите обновление, если пока не хочется обновляться.
Исправление vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейрены. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Обновление базовой системы должно сопровождаться перезагрузкой. Пускай даже через kexec или systemd soft-reboot, если это надёжно работает на любом железе (в чём я сомневаюсь). Конечно базовую систему нельзя обновлять просто так. Или новая мажорная версия раз в год, или обновление безопасности, тут уже ничего не поделаешь, надо ставить и ребутаться.
А обновления обычных приложений, при условии, что они на 100% изолированы от базовой системы и других приложений с помощью контейнеров - можно и без перезагрузки выполнять, тут проблем нет. Обновили, вывесили уведомление - мол обновление для гимпа готово, перезапустите гимп, чтобы пользоваться новой версией или отложите обновление, если пока не хочется обновляться.
Исправление vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейрены. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Обновление базовой системы должно сопровождаться перезагрузкой. Пускай даже через kexec или systemd soft-reboot, если это надёжно работает на любом железе (в чём я сомневаюсь).
А обновления обычных приложений, при условии, что они на 100% изолированы от базовой системы и других приложений с помощью контейнеров - можно и без перезагрузки выполнять, тут проблем нет. Обновили, вывесили уведомление - мол обновление для гимпа готово, перезапустите гимп, чтобы пользоваться новой версией или отложите обновление, если пока не хочется обновляться.
Исправление vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейрены. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
илиflatpak install gimp
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.
Исходная версия vbr, :
т.к. обновлениям «наживую» не доверяю. И перезагружаюсь обычно раз в день.
Это какой вендузячий подход.
Да хоть пердячий, честно говоря мне плевать. Я вообще считаю все десктопные операционные системы плохими. Макось лучше всех, хотя всё ещё плоха. Линуксом я пользуюсь не потому, что считаю, что он хорошо устроен, а потому, что он проще всех остальных систем на сегодня. Там минимум лишнего (хотя там очень много лишнего, но в сравнение с вендой или макосью это ничто).
Моя операционная система мечты это:
-
Отсутствие менеджера пакетов. Это ужасное изобретение, его не должно быть.
-
Система должна поставляться единым базовым минимальным образом. На выбор - или консольный образ для сервера без GUI, или графический образ для десктопа или сервера с GUI. Консольный образ это что-то вроде minimal-образов докера. Только туда ещё добавляется ядро. Его главная цель - предоставить все базовые сервисы и библиотеки. Базовые сервисы это systemd, библиотека это glibc. Может быть ещё что-то, но выбор должен быть крайне скуден. И она вообще не обязана соответствовать замшелому POSIX-у в своём устройстве. Графический образ это примерно то же, плюс графика (базовый набор библиотек и shell). Причём все существующие DE для линукса ужасны, поэтому надо писать что-то новое.
-
Обновления должны быть встроены в initramfs.
-
Должна использоваться продвинутая ФС со снапшотами. LVM или ZFS или BTRFS или BCACHEFS.
-
При обновлении скачивается полностью образ новой системы. По факту могут использоваться бинарные диффы для минимизации трафика, это уже детали реализации. Важно, что обновляется вся базовая система разом и это происходит при загрузке. При обновлении создаётся новый снапшот с возможностью загрузки предыдущей версии, с интегрированными проверками здоровья (если при загрузке после обновления система не загрузилась нормально, обновление помечается сбойным и ждём следующего обновления).
-
Вся базовая система иммутабельная, все мутабельные данные вроде логов и кешей хранятся в отдельных разделах. Ядро, initramfs подписаны, используется правильная криптография и интеграция с secure boot для гарантии того, что там ничего нельзя поменять без ведома пользователя.
-
Для сервера все приложения ставятся через контейрены. docker, podman, systemd-nspawn, вариантов много. Важно, что они не имеют отношения к производителю ОС. Ты просто ставишь что хочешь, задача базовой системы - обеспечить работу docker-а.
-
Для десктопа тоже используется контейнеризация, хотя тут задача гораздо сложней. Наверное сегодня flatpak ближе всего к тому, что надо. Думаю, что тут хорошего ответа пока нет, как это всё делать.
-
Вся философия в том, чтобы не давать пользователю никакого выбора. Также нужно выкидывать по максимуму все замшелые линуксовые утилиты и привычки и переписывать всё по максимуму там, где это возможно. Ядро переписать невозможно. systemd - спорно. А вот DE нормальных в линуксе нет, DE переписать обязательно надо, и так, чтобы в нём хорошо работали flatpak версии существующих приложений. Философия в том, что производитель (намеренно не использую слово «дистрибутив», т.к. это не совсем дистрибутив, это именно операционная система в исходном смысле этого слова) предоставляет базовую систему и какие-то более-менее стабильные интерфейсы. А весь софт пишут другие разработчики. И к этому софту производитель ОС не имеет никакого отношения. Он его не собирает, он его не рекламирует, он лишь даёт работающий docker, а пользователь сам пишет
docker run nginx
.
А если вернуться к исходному вопросу - повторюсь, обновления наживую это дичь. Это возможно, но это очень сложно. Поддержку этого надо программировать в софте. Это надо тестировать. Для типичного десктопа это никто не делает и не будет делать. А раз это невозможно сделать на практике, значит и не надо делать, надо обновляться надёжно и атомарно.