c1b274fd67
* Tracker forwards auto mounter related messages to the mount_server. * Rewrote AutoMounterSettings to not know AutoMounter and use the layout-management. * Moved the "Eject When Unmounting" setting into the Mount Settings. * Launch the mount_server during boot, but delay the script until all previously mounted volumes have been mounted. This solves some annoying timing bugs during boot. For example when you have desktop backgrounds on other volumes and some servers don't deal well with the situation of links to add-ons on other volumes becoming valid with a delay... * src/kits/tracker/Commands.h includes the private headers/private/ mount/MountServer.h header, which made adjustments to the DiskUsage Jamfile necessary. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33555 a95241bf-73f2-0310-859d-f6bbb57e9c96
183 lines
3.7 KiB
Plaintext
183 lines
3.7 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
|
|
isReadOnly=`/bin/isvolume -readonly-partition /boot`
|
|
if [ "$isReadOnly" = "yes" ]; then
|
|
# block the CD tray (avoid accidental ejection)
|
|
# This option stays 'on' even if we continue booting to the desktop.
|
|
/bin/eject -b /boot
|
|
else
|
|
# Sets timezone etc.
|
|
runprog system/bin/clockconfig
|
|
fi
|
|
|
|
|
|
# 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
|
|
|
|
launch $SERVERS/app_server picasso # launch app_server
|
|
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/syslog_daemon
|
|
waitfor _input_server_event_loop_ # wait for input devices
|
|
fi
|
|
|
|
# Now ask the user if he wants to run the Installer or continue to the Desktop.
|
|
if [ "$isReadOnly" = "yes" ]; then
|
|
# Create Installer link (using the write overlay)
|
|
ln -sf /boot/system/apps/Installer /boot/home/Desktop/Installer
|
|
|
|
/bin/alert "Do you wish to run the Installer or continue booting to the Desktop?" "Installer" "Desktop"
|
|
if [ $? -eq 0 ]; then
|
|
launchscript $SCRIPTS/Bootscript.cd
|
|
exit 0 # and return
|
|
fi
|
|
fi
|
|
|
|
|
|
if [ -e /etc/users ]; then
|
|
# TODO: system/Login needs to be fixed to launch the mount_server!
|
|
launch system/Login
|
|
# nothing more
|
|
else
|
|
cd /boot/home
|
|
|
|
launch $SERVERS/mount_server
|
|
waitfor -m application/x-vnd.Haiku-mount_server
|
|
# delay the boot script until all previous volumes have been mounted
|
|
hey -s mount_server DO InitialScan
|
|
|
|
launch system/Tracker
|
|
launch system/Deskbar
|
|
|
|
# install ProcessController in the deskbar
|
|
(sleep 7; /boot/system/apps/ProcessController -deskbar) &
|
|
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
|
|
|
|
# Launch CDDB Daemon
|
|
if [ "$SAFEMODE" != "yes" ]; then
|
|
launch $SERVERS/cddb_daemon ""
|
|
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
|