kisslinux / init Goto Github PK
View Code? Open in Web Editor NEWKISS Linux - Init Framework
Home Page: https://kisslinux.github.io
License: MIT License
KISS Linux - Init Framework
Home Page: https://kisslinux.github.io
License: MIT License
Init Framework ________________________________________________________________________________ KISS Linux's portable init framework for use with any init, service manager or device manager. It handles the boot (and shutdown) process and provides a generic interface for controlling it. The below components have been tested and work. Other software may work out of the box as well, it just has not been tested. Send bug reports and support on this side will be added where needed. Tested init systems Tested service managers Tested device managers * busybox init * busybox runit * mdev * s6 (s6-svscan) * s6 * mdevd * sinit * runit * udevd * runit * no service manager * no device manager * shinit NOTE: Any combination of the above can be used. If not using a service manager, ensure that you execute at least one getty for login to work. Also, some init systems handle what baseinit does internally so support for them here makes little sense. [000] Index ________________________________________________________________________________ * /etc/rc.conf ........................................................... [001] * CONFIG_INIT .......................................................... [002] * CONFIG_SERVICE ....................................................... [003] * CONFIG_SERVICE_DIR (runit and s6 only) ............................... [004] * CONFIG_DEV ........................................................... [005] * /etc/rc.d/ ............................................................. [006] * /etc/rc.d/*.pre.boot ................................................. [007] * /etc/rc.d/*.post.boot ................................................ [008] * /etc/rc.d/*.pre.shutdown ............................................. [009] * /etc/rc.d/*.post.shutdown ............................................ [010] * Utilities .............................................................. [011] * How To Package An Init ................................................. [012] * Further Reading ........................................................ [013] [001] /etc/rc.conf ________________________________________________________________________________ This file stores configuration for the boot/shutdown process and any scripts in /etc/rc.d. [006] If the file does not exist, create it and if any options do not exist, create them. If the options are unset (or not present) they take their default values. --[002] CONFIG_INIT ------------------------------------------------------------ The init to assume is in use. This setting does not enable the init but merely tells baseinit which one is in use (so it can handle things accordingly). Valid values are currently 'busybox' (default), 's6', 'sinit', 'runit', 'shinit'. +----------------------------------------------------------------------------+ | | | CONFIG_INIT=busybox | | | +----------------------------------------------------------------------------+ --[003] CONFIG_SERVICE --------------------------------------------------------- The service manager to execute at the end of the boot process. Valid values are currently: 'runit' (default), s6, none. If 'none' is used, baseinit will not start a service manager and it is up to the user to spawn gettys, etc. +----------------------------------------------------------------------------+ | | | CONFIG_SERVICE=runit | | | +----------------------------------------------------------------------------+ --[004] CONFIG_SERVICE_DIR (runit and s6 only) --------------------------------- The service directory to use. +----------------------------------------------------------------------------+ | | | CONVIG_SERVICE_DIR=/var/service | | | +----------------------------------------------------------------------------+ --[005] CONFIG_DEV ------------------------------------------------------------- The device manager to run during the init process. This is killed once boot is complete for a supervised version to take its place. Valid values are currently 'mdevd', 'mdev' (default) or 'udevd'. +----------------------------------------------------------------------------+ | | | CONFIG_DEV=mdev | | | +----------------------------------------------------------------------------+ [006] /etc/rc.d/ ________________________________________________________________________________ Shell scripts are sourced from this directory at different stages in the boot process based on file name. Any configuration made here will run under all inits and service managers which use baseinit. --[007] /etc/rc.d/*.pre.boot --------------------------------------------------- Scripts in /etc/rc.d ending in .pre.boot are run at the start of the boot process but after pseudo filesystems are mounted (/sys, /dev, etc). --[008] /etc/rc.d/*.post.boot -------------------------------------------------- Scripts in /etc/rc.d ending in .boot are run at the end of the boot process but before baseinit execs into CONFIG_SERVICE. --[009] /etc/rc.d/*.pre.shutdown ----------------------------------------------- Scripts in /etc/rc.d ending in .pre.shutdown are run at the start of the shutdown and reboot process. If a script needs to run only on one mode, it can discern the shutdown type by checking the basename of $0. --[010] /etc/rc.d/*.post.shutdown ---------------------------------------------- Scripts in /etc/rc.d ending in .post.shutdown are run at the end of the shutdown and reboot process. If a script needs to run only on one mode, it can discern the shutdown type by checking the basename of $0. [011] Utilities ________________________________________________________________________________ The baseinit package provides two utilities. 'kpow' (signal reboot/shutdown to the kernel) and 'respawn' (rerun command when it exits/dies). These are only interesting to those looking to make larger modifications via /etc/rc.d. The respawn command should allow those not using a service manager to more easily spawn some gettys via /etc/rc.d. [012] How To Package An Init ________________________________________________________________________________ To package an init and have it use baseinit set it to run /usr/lib/init/rc.boot at power on, /usr/lib/init/rc.shutdown at shutdown and /usr/lib/init/rc.reboot at reboot. Then, the package should provide /usr/bin/init, /usr/bin/poweroff and /usr/bin/reboot. This allows the alternatives system to be used and makes swapping between things easy. Last, if the init needs modifications made to baseinit open an issue here or open a pull request. This is where CONFIG_INIT comes into play. [013] Further Reading ________________________________________________________________________________ - #/wiki/service-management - #/wiki/pkg/busybox - #/wiki/pkg/s6 - #/wiki/pkg/sinit - #/wiki/pkg/baseinit
#23 was merged last november (last release was last may) so we ought to make a new release so that this change takes effect on systems.
Here is a thread that is likely related to this bug, https://www.reddit.com/r/kisslinux/comments/e257uh/installation_trouble_kernel_panic_unable_to_mount/ , but regardless, my issue is when I have my second hard drive inserted, KISS linux init fails to mount ROOT properly and result is kernel panic. I will try to get the exact error message when I get a chance and post it back here as a reply.
So basically, let's make this smarter so that we can have computers with more than one hard drive okay.
Thanks
Here you use emergency_shell
rather than sos
:
Line 62 in 85cead1
I think the 'break' in line 120 of /lib/init/rc.boot needs to be a 'continue'. At least that's how I got it to load my /etc/sysctl.conf.
I think those parts of code should be handled in hooks to be more init agnostic
@cemkeylan pinging you because you maintainer of sysmgr, sinit, runit
rc.boot
Lines 35 to 50 in 0198696
Lines 107 to 121 in 0198696
rc.shutdown
Lines 15 to 17 in 0198696
Lines 57 to 64 in 0198696
Hey, I'm trying to load amdgpu at boot time using /etc/inittab's ::once feature. it should run /bin/modprobe amdgpu
at startup, but it does not. bin/modprobe amdgpu
runs fine in a tty.
Here is my /etc/inittab since I'm probably doing something wrong.
Dylan's been MIA for quite some time, the community has moved.
\x1b[31;1m=>\x1b[m Welcome to KISS!
...
Currently you just skip a line when the crypttab line is incorrect, it would be nice if there was a log that told the user that an incorrect line was skipped.
It could be a hard bug to spot otherwise.
Line 36 in 85cead1
Hi, I hope this is the right place to ask this.
I am having a hard time with busybox's init system, but can't find any documentation detailing how to change the init system on kiss, how do I do it?
Again, sorry if this is not the correct place to ask
Instead of eval'ing hooks
Line 64 in e23ae90
At the "checking filesystems" portion of init, I get
/dev/sdb3: clean, 12/29048832 files, [more numbers] blocks
fsck.fat 4.2 (2017-01-24)
open: No such file or directory
/dev/sda2: clean, [numbers] files, [even more numbers] blocks
=> Init system encountered an error, starting emergency shell.
=> When ready, type 'exit' to continue the boot
I am using default init and have dosfstools installed. It's trying to check /dev/sdb3 (fat32) but failing for some reason.
toybox and busybox doesn't have these options
Line 42 in e2840bd
run hooks as it is currently,
run_hooks() {
[ -f "$1" ] && for file in "$@"; do
[ -f "$file" ] && . "$file"
done
}
Does not pass arguments to the hooks that it sources. This breaks sinit and is also confusing.
originally discovered by @cemkeylan (Thanks)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.