317bd7dda3
* Made the TimeZoneView less error prone, and also actually use Haiku code (the previous check didn't work since it used #if, not #ifdef). * Also took the liberty to rename our boot loader to haiku_loader, since I had to update the nasm binary anyway. Updated the assembly sources to nasm 2.0. * I haven't found where the synth location in the MIDI code is specified, though. * Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do so next. * Some optional packages still put their license to beos/etc/licenses. I didn't update them yet, as we'll probably do so anyway at some point. Also, I think we might want to introduce a common/data/licenses instead for those. * If you encounter any problems, please tell! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96
165 lines
3.1 KiB
Plaintext
165 lines
3.1 KiB
Plaintext
## The system's main boot script.
|
|
|
|
##
|
|
## Some functions used by the main script
|
|
##
|
|
|
|
# launch <executable path> [ <thread to wait for> [ <program args> ] ]
|
|
|
|
launch() {
|
|
toLaunch="$1"
|
|
shift
|
|
toWaitFor="$1"
|
|
shift
|
|
if [ -f "/boot/$toLaunch" ]
|
|
then
|
|
"/boot/$toLaunch" $* &
|
|
[ "$toWaitFor" != "" ] && waitfor "$toWaitFor"
|
|
return 1
|
|
else
|
|
echo There is no "$toLaunch"
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# launchscript <script path>
|
|
|
|
launchscript() {
|
|
if [ -f "/boot/$1" ]
|
|
then
|
|
. "/boot/$1"
|
|
fi
|
|
}
|
|
|
|
# runprog <executable path>
|
|
|
|
runprog() {
|
|
if [ -f "/boot/$1" ]
|
|
then
|
|
"/boot/$1"
|
|
return 1
|
|
else
|
|
echo There is no "$1"
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
##
|
|
## Main script starts here
|
|
##
|
|
|
|
# Set up stdin/out/err to nirvana
|
|
|
|
exec </dev/null
|
|
exec >/dev/null 2>&1
|
|
|
|
# Standard locations of boot files
|
|
SCRIPTS=system/boot
|
|
SERVERS=system/servers
|
|
|
|
# clean the shared memory dir
|
|
shmDir=/boot/var/shared_memory
|
|
rm -rf $shmDir
|
|
mkdir -p $shmDir
|
|
chmod 777 $shmDir
|
|
|
|
# Set up the environment
|
|
|
|
export SAFEMODE=`/bin/safemode`
|
|
|
|
launchscript $SCRIPTS/SetupEnvironment
|
|
|
|
# If the boot volume is a CD we use another script
|
|
iw=`/bin/isvolume -readonly /boot`
|
|
if [ "$iw" = "yes" ]; then
|
|
launchscript $SCRIPTS/Bootscript.cd
|
|
exit 0 # and return
|
|
fi
|
|
|
|
# Sets timezone etc.
|
|
runprog system/bin/clockconfig
|
|
|
|
# Launch servers
|
|
|
|
# We must wait for the app_server and registrar to be ready
|
|
launch $SERVERS/registrar _roster_thread_ # launch registrar
|
|
|
|
launch $SERVERS/debug_server # launch debug_server
|
|
|
|
# Init Network
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/net_server # launch net_server
|
|
fi
|
|
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/app_server picasso # launch app_server
|
|
else
|
|
launch $SERVERS/fake_app_server picasso
|
|
fi
|
|
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/syslog_daemon
|
|
waitfor _input_server_event_loop_ # wait for input devices
|
|
fi
|
|
|
|
# Launch Terminal or consoled depending on $SAFEMODE
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
if [ -e /etc/users ]; then
|
|
launch system/Login
|
|
# nothing more
|
|
else
|
|
launch system/Tracker
|
|
launch system/Deskbar
|
|
|
|
# install ProcessController in the deskbar
|
|
(sleep 7; /boot/system/apps/ProcessController -deskbar) &
|
|
fi
|
|
launch system/apps/Terminal
|
|
else
|
|
launch system/bin/consoled
|
|
fi
|
|
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/media_server
|
|
launch $SERVERS/midi_server
|
|
fi
|
|
|
|
# Launch Print Server
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/print_server
|
|
fi
|
|
|
|
# Launch Mail Daemon (if enabled on startup)
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/mail_daemon "" -E
|
|
fi
|
|
|
|
# Check for daily saving time
|
|
launch system/bin/dstcheck
|
|
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
# Start user boot script
|
|
if [ -f $HOME/config/boot/UserBootscript ]; then
|
|
. $HOME/config/boot/UserBootscript
|
|
fi
|
|
fi
|
|
|
|
# Check for fresh install and run post install scripts.
|
|
postInstallDir=/boot/common/boot/post_install
|
|
freshInstallIndicator=/boot/common/settings/fresh_install
|
|
if [ -e $freshInstallIndicator ]; then
|
|
# wait a moment for things to calm down a bit
|
|
sleep 3
|
|
|
|
# execute scripts
|
|
for f in $postInstallDir/*.sh; do
|
|
if [ -f $f ]; then
|
|
echo "Running post install script $f ..." > /dev/dprintf
|
|
$f
|
|
fi
|
|
done
|
|
|
|
sync
|
|
rm $freshInstallIndicator
|
|
fi
|