Hi,
This is a headup about a certain thing that I've been breeding inbetween
sending patches to dracut mailing list ;)
Current crux scripts are kind of ... [too] minimal. While certainly they
are trivial to expand, they de-facto (or at least that was my experience
so far) require expanding (and often pretty thorough one) for anything
more than most simple installations. I kind of grew tired of redoing the
same thing all over again (a bit differently all the time), so decided
to do it once and flexibly enough. Then I thought that it would benefit
the crux in general (hoping for 2.8, if you accept this at all of course).
The obvious idea (not to redo the same stuff during every fresh install)
was to provide solid and modern frame-of-sorts (with usual set of rc
scripts and rc.conf configuration) mixed with user configurable hooks
(so akin to rc.local, but taken a bit further, think about much simpler
dracut). Both easily expandable (excluding shell scripting illiterates,
but that's not say ... target crux's audience ;) )
What do I mean modern - userland is, judging from everything around,
galloping forward. First thing that comes to mind is udev, which just
sprints, without bothering to look back [too much]. Simple stuff that
worked fine a decade ago - say 'umount -a', killall5 - are not really
the best idea anymore. Some things must not be killed (e.g. mdmon), some
shouldn't (udevd), most special filesystems (with interesting submounts)
are pointles to be unmounted. Lots of small details expect, so to speak,
more delicate approach.
From stuff that would be provided by default:
- udev handling moved to rc scripts
- poor man's (still wondering about better method, for "no-initramfs"
folks) udev retrigger with late /usr mount
- some more thorough logging
- careful/configurable umounting (2 stages, hook)
- more thorough fsck
- immortal processes (e.g. mdmon, udev)
- initramfs handover aware + mount sanitization
- console mode/settings cleaned up, with clean utf8/ascii choice (for
the record, linux consoles have been by default utf8 since 2.6.24)
- plethora of hooks to customize behaviour, rarely forcing to reedit
actual rc stuff (at least that's the plan)
- move to /run and mtab symlink
- common functions shared between runlevels (services' killing,
processes' killing, etc.), so actually some scripts actually did became
smaller :)
Some of the above is still work in progress, though it's slowly
finalizing its looks. The old "frame" known from current minimal rc is
immediately visible (I think), though the actual functions doing the
stuff are necessarily more complex. One thing I dropped comparing to old
rc, is kind-of-stick-to-posix-shell de-facto approach, while every
script has blatant bash shebang. I don't run my imagination as wild as
with dracut stuff, but I didn't shyly avoid its features either (to make
a point: =~ is hella faster than piping through egrep, ^^/,, than piping
through tr, and so on), so while we stick to this bloat of a shell,
let's use it more .. thoroughly ;)
Though the time is always pressing, I'll prepare some simple git pull
once I feel it's ready. Unless of course you're completely against the
idea of changing this part of crux.
Any thoughts ? +/-, maybe some ideas that would be good to have considered.