Тут не о чем путаться. Процесс с pid=1 является родоначальником всех процессов в пространстве пользователя. Запускается непосредственно ядром, сразу после того как ядро примонтирует корневой раздел, при этом ядро вылавливает его в корневом разделе по пути /sbin/init, при этом происходит как раз инициализация системы, запускаются все сервисы, для этого используются инициализационные скрипты. sysVinit это как раз init+скрипты, ну там ещё утилиты вспомогательные есть вроде service, invoke-rc.d, chkonfig. А ещё бывает BSD-style init, там скрипты попроще и вспомогательных утилит нет. Но тут не рассказывать, а показывать надо, короче ставишь слаку и иссследуешь. А ещё есть бесскриптовые системы инициализации: systemd и upstart, там /sbin/init является симплинком на /sbin/systemd или /sbin/upstart и скриптов там нет, но есть юниты или джобы.
Инит это хоть скрипт на баше, главное чтобы он никогда не завершался, те в конце вставить бесконечный цикл. Ещё он должен получать коды возврата всех чайлдов через wait() чтобы зомби процессов не было (в баш скрипте писать для этого ничего не нужно, баш сам обрабатывает).
Ошибаешься. В init-скриптах нет бесконечного цикла, сначала запускается /etc/rc.S, потом он вызывает все остальные скрпипты командой точка (source). В самом конце запускается getty.
В классичесих инитах, про которые ты рассказываешь сам инит — бинарник, и в нём есть бекуконечный цикл с wait(). Всякие скрипты и getty это его чайлды.
Раз уж тема такая пошла, давай разберём. У init, судя по конфигу /etc/inittab из начально 8 чайдов: bash (выполняющий цепочку скриптов, начиная с /etc/rc.d/rc.S) и 7 экземпляров getty. После того, как какой-либо процесс завершается, родителем его чайлдов становиться init, поэтому init - родитель всех сервисов. Но тем не менее перезапускать сервисы в случае их зависания init не умеет.