README for init-ng RATIONALE --------- init-ng is meant to be a drop-in replacement for Sys V init. It leverages the mighty power of OpenRC to do only what's needed, and nothing more! It is still somewhat experimental (hence written in Ruby) but works well. Currently, it can reliably bring the system up, bring it down, and respawn agettys if they die. init-ng can also be extended fairly easily as well; for those who want service supervision or socket activation, these can be fairly easily added. There is already some supervision capability built-in, as init-ng monitors the agettys that it spawns; this can be extended to other services as well. Note that while this init is written in Ruby, init-ng will eventually be written in C. It's being developed in Ruby in order to make development and testing easy. HOW TO INSTALL/USE IT --------------------- • Make sure you have Ruby 2.1.x installed. • Move your current init binary out of the way (mv /sbin/init /sbin/init.sysv) • Copy the init script to /sbin (cp ./init /sbin/) • Make sure /sbin/init is marked executable (chmod ugo+x /sbin/init) • Reboot Once you have rebooted successfully and logged in as root, typing 'init' on the command line will display the commands that init-ng understands. It is also possible to leave the existing init in place without renaming it; in this case you would rename the new init to something else, such as init-ng. Then, on your kernel boot command line, you would add "init=/sbin/init-ng" (without the quotes) to have the kernel use it instead of your current init. CREDITS ------- init-ng was initially written by James Hammons, who took his inspiration from Felipe Contreras's blog post entitled "Demystifying the init system (PID 1)" (https://felipec.wordpress.com/2013/11/04/init/). Felipe deserves most of the credit for this, as without his article and code we wouldn't have known where to begin. :-)