myelin: atheos - startup sequence
	bios bootloader loads grub

bootloader (/boot/boot/grub/*)
	loads FS drivers
	loads and runs kernel

kernel (src/kernel/* -> /boot/atheos/sys/kernel.so)
	kernel boots
	in function SysInit in src/kernel/kernel/init.c:
		execve "/boot/atheos/sys/bin/init init" -> runs init

init (src/utils/systools/init.c -> /boot/atheos/sys/bin/init)
	init forks:
		-> child runs appserver
		-> parent runs /system/init.sh

APPSERVER (more info)

appserver (src/system/appserver/* [main() in server/server.cpp] -> /boot/atheos/sys/appserver)
	loads config file from /system/config/appserver
	initialises keyboard
	creates pcDevice = new AppServer
		constructor loads default fonts
	calls pcDevice->Run {
		creates port "gui_server_cmd"
		init_desktops() (in desktop.cpp) {
			looks in /system/drivers/appserver/video/ and loads each driver in turn, stopping when one works
			if it doesn't find one, uses the vesa 2.0 driver
		}
		InitInputSystem() (in input.cpp) {
			looks in /system/drivers/appserver/input/ and loads each driver in turn
			if it doesn't find a mouse driver, uses DosMouseDriver (?)
		}
		main loop {
			wait for msg on gui_server_cmd port
			processes message in AppServer::DispatchMessage( Message* pcReq);
		} // main loop
	} // pcDevice->Run

USER MODE INITIALISATION - INIT.SH ONWARDS

init.sh
	sets up paths
	if /bin/desktop exists	-> /bin/desktop &
			else	-> aterm &
	runs /system/user_init.sh

user_init.sh
	symlinks links /root to /home/root
	sets /var/log/kernel as kernel log
	runs ifconfig for each network interface
	adds default route out eth0
	starts all server daemons (calls these by default if they are installed: named inetd crond apachectl)

    ⇒ myelin | notes | christchurch | net [ video hire ] | software [ dbwrappers | xmlrpc | pycs | pss ] | contact