# !/bin/sh
#
# Copyright Matthias Hentges (c) 2005
#
# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)


# This file will teach you how to implement your own scripts while using existing altboot
# code.

# /sbin/init.altboot searches /etc/altboot-menu for scripts. It will only list scripts which
# return a title when run with the "title" parameter. 
# Script which do not return a title will never be shown in the boot menu!
# 
M_TITLE="altboot sample"

# We can use that to deactivate certain scripts:
exit 0

# The "title" parameter is implemented at the end of this script so it will never be reached
# and the script will simply be ignored by altboot.

# run_module can be used to display interactive prompts to the user (see the USB storage script 
# for examples). remember_last_setting updates /etc/altboot.last to "remember" which item was selected
# by the user the previous time
run_module() {
	remember_last_setting "$MENU_POSITION"	
}

# exec_module is used to actually execute the pivot_root part of the script 
exec_module() {

	# altboot.func contains re-useable code. If you intend to use check_target (see below)
	# you must keep this line. If not, delete it.
	test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"	


	# The only thing you'll have to do is get your medium mounted.
	# The following lines mount a SD card on 2.4-series kernels on a Zaurus
	
	##########################################
		
	# Mount /proc, etc
	init_rootfs

	echo -n "Loading SD kernel module..."
	/sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"

	echo -n "Mounting $SD_MOUNTPOINT..."  >/dev/tty0
	/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok  >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
		
	echo ""

	# Give the SD and CF mounting some time. This is a must for SD			
	sleep 2
	##########################################	
	
	# Once the medium (be it a CF or SD card, or even a NFS drive) is mounted somewhere,
	# just call check_target with the mountpoint as parameter.
	# check_target searches the medium for a real filesystem and loop-images and
	# asks the user what to boot if there are several choices.
	
	# Check for a real fs and loop-images.
	check_target "$SD_MOUNTPOINT" >/dev/tty0
	
	# Done :)
		
}


case "$1" in
title)		echo "$M_TITLE" ;;
run)		run_module 
		test "$OFFLINE_CONFIG" != true && exec_module ;;
autorun)	exec_module "$3" ;;
flags)		echo "" ;;
esac