Our init.c can be broken down roughly into the following set of tasks:
- Mounting filesystems. The initscipts already know how to do this, given that we write out an /etc/fstab.
- Reboot/halt/shutdown handling. How much does anaconda really need to do here?
- Starting services (syslog, udev, dbus, etc.). This can all be handled by init scripts.
- Segv handling. Most of this appears to already be in loader, in which case it can just die.
- Terminal setup. A lot of this is i/p/zSeries stuff. How much is still valid? Some might be handled by systemd. What's not but we still need can go into loader.
I hate the answer being "we should just start from scratch", but we should just start from scratch. Modify scripts/ to include systemd and not include our init, see what the system looks like, and take it from there. Write a service file for loader. Then start moving things that make sense from init.c to loader.c.
The trick here is going to be testing on s390 and on serial console installs.
Also, I think we want to wait until after Fedora 15 to work on this not just because there's not enough time, but because I want to make sure there's no more last minute init trickery like there was for F14. Give it a release to make sure we're really going to stick with systemd.
/init should be a regular file
A minor request: please make sure the root of the anaconda image has /init as either a hardlink or an actual file. Busybox refuses to run switch_root if /init is not a regular file; right now it's a symlink.
-- WillWoods 18:32, 21 February 2011 (UTC)