Как я понял у каждого unit должны быть прописаны:
- Уровень выполнения. Применяется для последовательного запуска служб в случае не разрешённого конфликта зависимостей.
- Жёсткие зависимости. Запуск демона будет отложен до их старта.
- Зависимости требующие service restart.
- Зависимости требующие service reload.
- Мягкие зависимости. По возможности они будут запущены раньше.
- Конфликты. Службы указанные в этом списке будут отключены перед стартом демона.
Отслеживаемые юниты:
- Роль. Одну роль могут исполнять несколько служб, например роль http-сервера могут исполнять как nginx, так и apache. А роль DNS сервера как bind, так и dnsmasq.
- Служба. Конкретный демон, например cups или winbind.
- Файл. Доступность файла. Например если ещё не смонтирована файловая система содержащая конфигурационный файл демона или его файлы данных, то запускать его не надо, следует подождать доступности файла.
- Точка монтирования. Проверка смонтирована ли определённая файловая система.
- Том. Проверка наличия подключенного тома с определённым UUID или меткой
/dev/sda3: UUID="1203d47f-2d7f-4bea-af6d-75219f8f3e3e" TYPE="swap" /dev/sda1: UUID="A4F00702F006DB06" TYPE="ntfs" /dev/sda7: LABEL="win_d" UUID="03C727A3587A131C" TYPE="ntfs" /dev/sdb2: LABEL="bad" UUID="3CAAE04E039B8ACA" TYPE="ntfs" /dev/sdb1: UUID="6f368364-ab15-47e7-8dba-2a5c32004ae4" TYPE="ext4" /dev/sda2: UUID="21ec7b20-d2af-482e-9bd4-6a0e4e4ab55c" TYPE="ext4" /dev/sda5: UUID="d62bff62-1c28-424f-934a-f544b60a7e08" TYPE="ext4" /dev/sda6: LABEL="local" UUID="1c9e85b9-ff6f-452a-827e-cec062081d9c" TYPE="ext4"
- Узел. Проверка наличия определённого узла в сети. Командой ping например.
- Маршрут сетевой. Проверка таблицы маршрутизации на наличие определённого маршрута. Например
192.168.0.0 * 255.255.255.0
- Соединение. Проверка активности определённого сетевого интерфейса.
- USB устройство. Проверка подключения определённого usb устройства.
Bus 003 Device 002: ID 0ac8:3450 Z-Star Microelectronics Corp. Bus 004 Device 002: ID 0bda:0151 Realtek Semiconductor Corp. Mass Storage Device (Multicard Reader) Bus 005 Device 002: ID 0a5c:2101 Broadcom Corp. BCM2045 Bluetooth Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
При этом естественно в качестве атрибута устройства можно будет указать такие параметры как его наименование Broadcom Corp. BCM2045 Bluetooth , шина к которой он подключен Bus 005, номер устройства Device 002 и ID устройства ID 0a5c:2101
Что нужно для нормальной системы инициализации?