summaryrefslogtreecommitdiff
path: root/packages/altboot
diff options
context:
space:
mode:
authorJohn Bowler <jbowler@nslu2-linux.org>2005-08-11 20:20:21 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-08-11 20:20:21 +0000
commit070e75b9c6cc865471ae4bded62e3cc958f41d51 (patch)
tree31356a12bb0b8dede8632fc9056baf26d775a6d3 /packages/altboot
parent2acf28fb2e382351b774326eff393e1f93df92e8 (diff)
parentbece5b20b67cbd731804da824758eda49875eef9 (diff)
propagate from branch 'org.openembedded.dev' (head af7da4406babf078f2747a3588cfa451ae711315)
to branch 'org.openembedded.nslu2-linux' (head 99bf568313454a05bf17df79cb135d7e4bb6c643)
Diffstat (limited to 'packages/altboot')
-rw-r--r--packages/altboot/altboot.bb58
-rw-r--r--packages/altboot/files/altboot.func4
-rw-r--r--packages/altboot/files/init.altboot4
-rw-r--r--packages/altboot/files/spitz/altboot-menu/00-Default2
-rw-r--r--packages/altboot/files/spitz/altboot-menu/25-bootHDD380
-rw-r--r--packages/altboot/files/spitz/altboot.cfg2
6 files changed, 127 insertions, 23 deletions
diff --git a/packages/altboot/altboot.bb b/packages/altboot/altboot.bb
index 80e22d1924..a0b5996d6c 100644
--- a/packages/altboot/altboot.bb
+++ b/packages/altboot/altboot.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
LICENSE = "GPL"
-PR = "r5"
+PR = "r7"
SRC_URI = "file://altboot-menu \
@@ -39,27 +39,32 @@ pkg_postinst() {
}
pkg_postinst_spitz() {
-
# Note: Spitz support is a royal pain in the ass.
# Since Spitz pivot_roots by default, there is no real way
# a user can install an altboot.ipk into the flash FS.
# So we need to do that manually (*SIGH*)
-
+
# /l/m only exists on the HDD on spitz
if test -d /lib/modules
then
- if [ -e /media/realroot/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/realroot"
- elif [ -e /media/ROM/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/ROM"
- fi
- ROOT_MOUNT_DEVICE = `cat /proc/mounts | grep $REALROOT | grep jffs2 | cut -d " " -f 1`
- mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
- cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
- cp /sbin/init.altboot $ROOT_MOINT_POINT/sbin
- mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
- ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
- fi
+ if [ -e /media/realroot/sbin/init ]; then
+ ROOT_MOUNT_POINT="/media/realroot"
+ elif [ -e /media/ROM/sbin/init ]; then
+ ROOT_MOUNT_POINT="/media/ROM"
+ fi
+ if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
+ ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
+ if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
+ mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
+ cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
+ cp /sbin/init.altboot $ROOT_MOUNT_POINT/sbin
+ if [ -f $ROOT_MOUNT_POINT/sbin/init ]; then
+ mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
+ fi
+ ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
+ fi
+ fi
+ fi
}
pkg_postrm() {
@@ -67,6 +72,25 @@ pkg_postrm() {
}
pkg_postrm_spitz() {
- # FIXME: To be written
- a=a # do nothing
+ if test -d /lib/modules
+ then
+ if [ -e /media/realroot/sbin/init ]; then
+ ROOT_MOUNT_POINT="/media/realroot"
+ elif [ -e /media/ROM/sbin/init ]; then
+ ROOT_MOUNT_POINT="/media/ROM"
+ fi
+ if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
+ ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
+ if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
+ mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
+ if [ -f $ROOT_MOUNT_POINT/sbin/init.orig ]; then
+ rm $ROOT_MOUNT_POINT/sbin/init
+ rm $ROOT_MOUNT_POINT/sbin/init.altboot
+ mv $ROOT_MOUNT_POINT/sbin/init.orig $ROOT_MOUNT_POINT/sbin/init
+ else
+ echo "$ROOT_MOUNT_POINT/sbin/init.orig not found, not uninstalling altboot!"
+ fi
+ fi
+ fi
+ fi
}
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
index 251368a577..3a6c743f0d 100644
--- a/packages/altboot/files/altboot.func
+++ b/packages/altboot/files/altboot.func
@@ -182,9 +182,9 @@ set_password() {
mount -o remount,rw /
if test -z "$MASTER_PASSWORD"
then
- echo -e "\nAltboot is a boot-manager which allows to boot from SD, CF and NFS"
+ echo -e "\nAltboot is a boot-manager which allows to boot from SD,\nCF and NFS"
echo -e "\nFor security reasons altboot requires a password\nto boot into init=/bin/sh."
- echo -e "${C_RED}This is *not* your root password! It is used by altboot alone!${C_RESET}"
+ echo -e "${C_RED}This is *not* your root password!\nIt is used by altboot alone!${C_RESET}"
echo -e "${C_BLUE}\nNote:\tThe password will be echoed to the screen\n\tand it will be asked twice for confirmation.${C_RESET}"
echo -e "\nPlease enter a new master password:\n"
diff --git a/packages/altboot/files/init.altboot b/packages/altboot/files/init.altboot
index 26b4639ccd..5c28edb5f3 100644
--- a/packages/altboot/files/init.altboot
+++ b/packages/altboot/files/init.altboot
@@ -252,11 +252,11 @@ else
# Execute scripts in /etc/altboot.rc before doing anything else.
# Required for special situations, like booting spitz
- RC_FILES=`ls /etc/altboot.rc | grep \\\\.sh$`
+ RC_FILES=`ls /etc/altboot.rc | grep \.sh$`
for file in $RC_FILES
do
- . $file >/dev/tty1 2>&1 || echo "/etc/altboot.rc/$file failed!"
+ . /etc/altboot.rc/$file >/dev/tty1 2>&1 || echo "/etc/altboot.rc/$file failed!"
done
if test "$ENABLE_ALTBOOT" != "yes"
diff --git a/packages/altboot/files/spitz/altboot-menu/00-Default b/packages/altboot/files/spitz/altboot-menu/00-Default
index 06ed038473..01818262a3 100644
--- a/packages/altboot/files/spitz/altboot-menu/00-Default
+++ b/packages/altboot/files/spitz/altboot-menu/00-Default
@@ -38,7 +38,7 @@ run_module() {
# There are no device files on Spitz yet, requires HDD (bad for testing
# with CF)
- for n in 1 2 3 4 5
+ for n in 0 1 2 3 4 5
do
! test -e /dev/loop$n && mknod /dev/loop$n b 7 $n
done
diff --git a/packages/altboot/files/spitz/altboot-menu/25-bootHDD3 b/packages/altboot/files/spitz/altboot-menu/25-bootHDD3
new file mode 100644
index 0000000000..4280cdd35c
--- /dev/null
+++ b/packages/altboot/files/spitz/altboot-menu/25-bootHDD3
@@ -0,0 +1,80 @@
+# !/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="Boot from images on HDD3"
+
+# 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.
+
+
+# The die() function aborts the boot if something goes wrong and sets STDIN / STDERR / STDOUT
+# correctly.
+die() {
+ echo "ERROR: $1" >/dev/tty0
+ exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
+}
+
+# This function is activated by init.altboot by calling this script with the "run" option
+run_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
+
+ ##########################################
+
+
+ echo -n "Mounting rootfs rw..." >/dev/tty0
+ mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
+
+ #echo -n "Generating device files..." >/dev/tty0
+ #/etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
+
+ cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
+
+ check_fs $HDD3_DEVICE $HDD3_TYPE
+
+ echo -n "Mounting $HDD3_MOUNTPOINT..." >/dev/tty0
+ if [ "$HDD3_TYPE" = "" ]; then
+ HDD3_TYPE="auto"
+ fi
+ /bin/mount -t $HDD3_TYPE -o defaults,noatime $HDD3_DEVICE $HDD3_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $HDD3_DEVICE $HDD3_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 "$HDD3_MOUNTPOINT" >/dev/tty0
+
+ # Done :)
+
+}
+
+
+case "$1" in
+title) echo "$M_TITLE";;
+run) run_module "$2";;
+esac
diff --git a/packages/altboot/files/spitz/altboot.cfg b/packages/altboot/files/spitz/altboot.cfg
index 2640d9279a..be90c62eb4 100644
--- a/packages/altboot/files/spitz/altboot.cfg
+++ b/packages/altboot/files/spitz/altboot.cfg
@@ -4,7 +4,7 @@
# the ROM. This is currently broken.
ENABLE_ALTBOOT="yes"
TIMEOUT="3"
-REAL_INIT="/sbin/init"
+REAL_INIT="/sbin/init.sysvinit"
SH_SHELL="/bin/sh"
IMAGE_PATH="boot-images"
IMAGE_TYPE="ext3"