summaryrefslogtreecommitdiff
path: root/packages/altboot
diff options
context:
space:
mode:
authorMatthias Hentges <oe@hentges.net>2006-04-23 14:47:58 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2006-04-23 14:47:58 +0000
commita6e74fd03c93ec9cdb31570b9a6b676aef4ee4c5 (patch)
treebd526f28c6b86d39c11cd5d2aeb04e187d6a0c80 /packages/altboot
parent8508cd3be7c4c6a43dc3a7963b7a83ed8d4febe9 (diff)
altboot:
- Removed multiple die() functions - Altboot no longer activates an off-flash altboot-menu when not booting from flash - Added a debug_echo function which is disabled in non-rc and non-snapshot builds - RC's and snapshots now spawn a debug shell on tty4 right after the kernel is booted - die() messages are now colored red/white, debug is purple(?)/white - Fixed start_networking() on collie and made it a little bit more verbose
Diffstat (limited to 'packages/altboot')
-rw-r--r--packages/altboot/altboot_0.0.0.bb1
-rw-r--r--packages/altboot/files/akita/altboot-2.6.cfg4
-rw-r--r--packages/altboot/files/altboot-menu/15-bootSD5
-rw-r--r--packages/altboot/files/altboot-menu/20-bootCF5
-rw-r--r--packages/altboot/files/altboot-menu/99-ownScripts-example8
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick7
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/40-bootNFS9
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/70-install-tgz5
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/70-setKernel8
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/80-configure-kexec8
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/80-copyrootfs5
-rw-r--r--packages/altboot/files/altboot.func45
-rw-r--r--packages/altboot/files/init.altboot24
13 files changed, 74 insertions, 60 deletions
diff --git a/packages/altboot/altboot_0.0.0.bb b/packages/altboot/altboot_0.0.0.bb
index 7b62414d1c..3bda946415 100644
--- a/packages/altboot/altboot_0.0.0.bb
+++ b/packages/altboot/altboot_0.0.0.bb
@@ -13,7 +13,6 @@ RRECOMMENDS_append_c7x0 = " kexec-tools"
PR = "r41"
-
SRC_URI = "file://altboot-menu \
file://altboot.rc \
file://altboot.func \
diff --git a/packages/altboot/files/akita/altboot-2.6.cfg b/packages/altboot/files/akita/altboot-2.6.cfg
index 2254a35552..c763f8b953 100644
--- a/packages/altboot/files/akita/altboot-2.6.cfg
+++ b/packages/altboot/files/akita/altboot-2.6.cfg
@@ -14,8 +14,8 @@ ENABLE_IMAGECONF="yes"
SD_DEVICE="/dev/mmcblk0p1"
SD_KERNEL_MODULE=""
-USB_HOST_AVAILABLE="no"
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_HOST_AVAILABLE="yes"
+USB_STORAGE_MODULES="ohci_hcd usb_storage sd_mod"
USB_STORAGE_PARTITION="/dev/sda1"
USB_STORAGE_WAIT="4"
diff --git a/packages/altboot/files/altboot-menu/15-bootSD b/packages/altboot/files/altboot-menu/15-bootSD
index 7123491000..0476a5ce0f 100644
--- a/packages/altboot/files/altboot-menu/15-bootSD
+++ b/packages/altboot/files/altboot-menu/15-bootSD
@@ -7,11 +7,6 @@
M_TITLE="Boot SD card"
-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() {
diff --git a/packages/altboot/files/altboot-menu/20-bootCF b/packages/altboot/files/altboot-menu/20-bootCF
index 3a3f4fbafe..36d6b8245f 100644
--- a/packages/altboot/files/altboot-menu/20-bootCF
+++ b/packages/altboot/files/altboot-menu/20-bootCF
@@ -7,11 +7,6 @@
M_TITLE="Boot CF card"
-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() {
diff --git a/packages/altboot/files/altboot-menu/99-ownScripts-example b/packages/altboot/files/altboot-menu/99-ownScripts-example
index b1b444f2d1..7566416b87 100644
--- a/packages/altboot/files/altboot-menu/99-ownScripts-example
+++ b/packages/altboot/files/altboot-menu/99-ownScripts-example
@@ -20,14 +20,6 @@ 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.
-
-# 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() {
diff --git a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick b/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
index 3cf8c506b0..b573e7a10c 100644
--- a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
+++ b/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
@@ -8,12 +8,7 @@
M_TITLE="Boot USB Storage"
test "$USB_HOST_AVAILABLE" = "yes" || exit 0
-
-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() {
diff --git a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
index 352b29ed07..9a36b8ed01 100644
--- a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
+++ b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
@@ -9,11 +9,6 @@
M_TITLE="Boot from NFS"
-die() {
- echo -e "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() {
@@ -24,9 +19,7 @@ run_module() {
nfs_host="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'|sed -n "s/\(.*\)\:\(.*\)/\1/p" `"
nfs_mounts="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'`"
- nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`"
-
- WLAN_NIC="`iwconfig 2>/dev/null | grep ESSID | awk '{print $1}'`"
+ nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`"
start_networking "$nfs_host"
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz b/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
index 2ee92cd27e..cb8b2722d5 100644
--- a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
+++ b/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
@@ -2,11 +2,6 @@
M_TITLE="Install RootFS from tar.gz"
-# die() {
-# echo "ERROR: $1" >/dev/tty0
-# exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-# }
-
run_module(){
test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-setKernel b/packages/altboot/files/altboot-menu/Advanced/70-setKernel
index a2c1efa81b..6192232a73 100644
--- a/packages/altboot/files/altboot-menu/Advanced/70-setKernel
+++ b/packages/altboot/files/altboot-menu/Advanced/70-setKernel
@@ -40,11 +40,13 @@ run_module() {
get_pref "kexec_klist" "$junk" KEXEC_SELECTED_KERNEL && break
- done
-
- echo "Using [$KEXEC_SELECTED_KERNEL]"
+ done
+ else
+ KEXEC_SELECTED_KERNEL="`ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `"
fi
+ echo -e "\nUsing [$KEXEC_SELECTED_KERNEL]"
+
if ! test -e "$KEXEC_SELECTED_KERNEL.kexec.cfg"
then
echo -e "\nWARNING: This kernel has not been configured."
diff --git a/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec b/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
index 27b6a871a6..e294df683f 100644
--- a/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
+++ b/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
@@ -38,11 +38,13 @@ run_module() {
get_pref "kexec_klist" "$junk" KEXEC_KERNEL && break
- done
-
- echo "Using [$KEXEC_KERNEL]"
+ done
+ else
+ KEXEC_KERNEL="`ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `"
fi
+ echo -e "\nUsing [$KEXEC_KERNEL]"
+
configure_rootdev
configure_roottype
configure_verbose
diff --git a/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs b/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
index 13f98a0d41..af6bd38c1d 100644
--- a/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
+++ b/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
@@ -4,11 +4,6 @@ M_TITLE="Copy rootfs to SD/CF"
# Unfinished script.
exit 0
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
ask_target() {
available_disks="`mount | grep "/media" | grep -v ram | awk '{print $3}'`"
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
index 5b587c453a..13ee515d6a 100644
--- a/packages/altboot/files/altboot.func
+++ b/packages/altboot/files/altboot.func
@@ -1,4 +1,12 @@
#! /bin/sh
+
+C_RED="\033[31m"
+C_YELLOW="\033[35m"
+C_BLUE="\033[34m"
+C_WHITE="\033[38m"
+C_RESET="\033[0m"
+
+
# This function checks for the presence of a real filesystem and loop-images on the target
# $1 = folder of rootfs, $2 = runlevel (defaults to 5)
# $2 = name of calling module
@@ -231,7 +239,8 @@ do_pivot(){
boot_new_rootfs_splash
echo "Calling INIT"
- exec /usr/sbin/chroot . /sbin/init $2 >/dev/tty0 2>&1
+ exec /usr/sbin/chroot . $REAL_INIT $2 >/dev/tty0 2>&1
+ #exec /usr/sbin/chroot . /sbin/init $2 >/dev/tty0 2>&1
else
echo "FAILED"
die "* * * pivot_root failed! * * *"
@@ -281,7 +290,7 @@ image_conf(){
while true
do
echo -e "Wasting RAM is never a good idea.\nOnly say Y if your rootfs is very small in size"
- echo -n "Do you want to store ipkg package data in RAM? [N|y] "
+ echo -en "Do you want to store ipkg package data\nin RAM? [N|y] "
read junk
if test "$junk" = "" -o "$junk" = n -o "$junk" = N
@@ -301,7 +310,7 @@ image_conf(){
then
while true
do
- echo -n "Do you want to keep the SD, CF and /home ipkg install targets? [N|y] "
+ echo -en "Do you want to keep the SD, CF and /home\nipkg install targets? [N|y] "
read junk
if test "$junk" = "" -o "$junk" = n -o "$junk" = N
@@ -557,7 +566,7 @@ show_menu() {
}
mdie() {
- echo "ERROR: $1" >/dev/tty0
+ echo -e "${C_RED}ERROR:${C_RESET}${C_WHITE} $1${C_RESET}" >/dev/tty0
echo -e "\nPress <ENTER> to return to the menu"
read junk
@@ -612,8 +621,14 @@ get_pref() {
test -n "$data_value" && return 0
}
+debug_echo() {
+ test "$ENABLE_DEBUG" = "yes" && echo -e "${C_YELLOW}DEBUG:${C_RESET}${C_WHITE} $1 ${C_RESET}" >/dev/tty0 2>&1
+}
+
start_networking() {
+ test -z "$1" && mdie "No remote host configured, check /etc/fstab for NFS hosts"
+
if test "$USB_NETWORKING_AVAILABLE" = "yes"
then
echo ""
@@ -636,7 +651,7 @@ start_networking() {
junk="`cat /etc/.altboot-lanselect.last`"
test -z "$junk" && junk=1
- echo -n "Connection Type: $junk (autoboot)"
+ echo "Connection Type: $junk (autoboot)"
fi
case "$junk" in
@@ -669,12 +684,16 @@ start_networking() {
if test -x /etc/init.d/pcmcia
then
+ echo -e "\nRunning cardctl to setup networking..."
/etc/init.d/pcmcia start >/dev/null 2>&1 || die "/etc/init.d/pcmcia start failed!"
+ sleep 1
else
# With kernel 2.6.16+ udev is used
- ps ax| grep -v grep | grep -q udevd || /etc/init.d/udev start >/dev/null 2>&1 || die "/etc/init.d/udev start failed!"
+ echo -e "\nRunning udevd to setup networking..."
+ ps ax | grep -v grep | grep -q udevd || /etc/init.d/udev start >/dev/null 2>&1 || die "/etc/init.d/udev start failed!"
- /etc/init.d/udev stop
+ # Stop udev to work around some very ugly (yet harmless) error messages on boot
+ /etc/init.d/udev stop >/dev/null 2>&1
fi
fi
@@ -695,9 +714,19 @@ start_networking() {
ifup "$USB_NW_DEVICE"
fi
+
+ WLAN_NIC="`iwconfig 2>/dev/null | grep ESSID | grep -v wifi | awk '{print $1}'`"
+
+ if test -z "$WLAN_NIC"
+ then
+ debug_echo "WARNING: WLAN_NIC is empty!\n"
+ debug_echo "Filter result: [$WLAN_NIC]"
+ debug_echo "iwconfig: [`iwconfig`]"
+ mdie "No network interface found"
+ fi
# WLAN with DHCP needs some time to get a lease, set up the routing, etc.
- echo -n "Waiting for Network."
+ echo -n "Waiting for host [$1] on [$WLAN_NIC]."
cnt=0
while true
do
diff --git a/packages/altboot/files/init.altboot b/packages/altboot/files/init.altboot
index a987918760..3dc7c60240 100644
--- a/packages/altboot/files/init.altboot
+++ b/packages/altboot/files/init.altboot
@@ -27,16 +27,31 @@ esac
test -e "$ALTBOOT_CFG_FILE" && . "$ALTBOOT_CFG_FILE" || echo "WARNING: No $ALTBOOT_CFG_FILE found! Check your installation of Altboot!" > /dev/tty1
C_RED="\033[31m"
+C_YELLOW="\033[33m"
C_BLUE="\033[34m"
C_WHITE="\033[37m"
C_RESET="\033[0m"
die() {
- echo -e "ERROR: $1" >/dev/tty0
+ echo -e "${C_RED}ERROR: $1${C_RESET}" >/dev/tty0
exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
}
+debug_shell() {
+ # VT 2 = Opie, VT 3 = GPE
+ test -z "$1" && VT=4 || VT=$1
+
+ echo -e "\033c" > /dev/tty$VT
+
+ echo -en "\nPress <ENTER> to activate the debug shell." > /dev/tty$VT
+ read junk </dev/tty$VT
+
+ echo "" > /dev/tty$VT
+ /bin/sh </dev/tty$VT >/dev/tty$VT 2>&1
+
+ #openvt -lf -c$VT -- /bin/sh </dev/tty$VT >/dev/tty$VT 2>&1
+}
# This function prints the boot-menu
# $1: Directory containing the scripts for the menu-items
@@ -299,6 +314,13 @@ wait_for_input() {
# Note: this is positively ugly. If someone knows a better way to detect wheter
# we are already booted into a runlevel _without_ reading /var and / or using `runlevel`
# PLEASE let me know.
+
+if ( echo "$VERSION" | egrep -iq "(snapshot|-rc)" )
+then
+ ENABLE_DEBUG="yes"
+ debug_shell 4 >/dev/null 2>&1 &
+fi
+
if test -f /proc/cmdline -a "`ps ax|wc -l|tr -d " "`" -gt 30 -a "$1" != "-force"
then
echo "altboot: Using real init [$REAL_INIT] [$*] [`ps ax|wc -l|tr -d " "`] *" >/dev/tty1