LINUX.ORG.RU

История изменений

Исправление zhuravlik, (текущая версия) :

На данный момент ирония судьбы такова, что можно, наоборот, выкинуть всё, кроме busybox и ядра, а система вполне себе грузится.

Это все понятно.

Но почему-то мне казалось, что systemd позиционируется как замена busybox'у в текущем варианте загрузки.

Без systemd процесс загрузки во многих дистрибутивах идет так:

1) initramfs с минимальным userland, который инициализирует разную ересь, которая может быть нужна для полноценной загрузки (девайсы, сетевые файловые системы и т.п.). Здесь важно, что этот userland должен быть и правда минимальным, поэтому долго использовался klibc, затем многие переползли на busybox во избежание поддержки двух разных libc в одной системе.

2) из этого initramfs руками дергается нормальный /sbin/init

Насколько я понял, systemd (в теории) может решить эту проблему, выполняя оба этих шага в одиночку. Достаточно написать соответствующий код, который будет инициализировать всю эту ересь на первом этапе. А второго этапа в этом случае просто нет, после инициализации нужных запчастей сразу стартуют другие важные для системы сервисы.

По-моему, это и подогрело интерес к systemd со стороны мэйнтейнеров, для которых поддержка оного меньшая PITA, чем двухступенчатая загрузка. Хотя забавно, что при этом initramfs для чего-то все-таки сохраняется. :)

Если я неправ - пишите, в чем. :)

Исходная версия zhuravlik, :

На данный момент ирония судьбы такова, что можно, наоборот, выкинуть всё, кроме busybox и ядра, а система вполне себе грузится.

Это все понятно.

Но почему-то мне казалось, что systemd позиционируется как замена busybox'у.

Без systemd процесс загрузки во многих дистрибутивах идет так:

1) initramfs с минимальным userland, который инициализирует разную ересь, которая может быть нужна для полноценной загрузки (девайсы, сетевые файловые системы и т.п.). Здесь важно, что этот userland должен быть и правда минимальным, поэтому долго использовался klibc, затем многие переползли на busybox во избежание поддержки двух разных libc в одной системе.

2) из этого initramfs руками дергается нормальный /sbin/init

Насколько я понял, systemd (в теории) может решить эту проблему, выполняя оба этих шага в одиночку. Достаточно написать соответствующий код, который будет инициализировать всю эту ересь на первом этапе. А второго этапа в этом случае просто нет, после инициализации нужных запчастей сразу стартуют другие важные для системы сервисы.

Если я неправ - пишите, в чем. :)