summaryrefslogtreecommitdiff
path: root/packages/altboot/files/altboot.func
diff options
context:
space:
mode:
Diffstat (limited to 'packages/altboot/files/altboot.func')
-rw-r--r--packages/altboot/files/altboot.func870
1 files changed, 0 insertions, 870 deletions
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
deleted file mode 100644
index ae38c5b437..0000000000
--- a/packages/altboot/files/altboot.func
+++ /dev/null
@@ -1,870 +0,0 @@
-#! /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
-check_target() {
- # Check if there is a /sbin/init or /sbin/init.sysvinit on the card
- if test -x $1/sbin/init -o -x $1/$REAL_INIT
- then
- real_fs_found=1
- else
- echo -e "Note: No INIT [$REAL_INIT] found on target"
- fi
-
- # Check for loop-images
- if (ls $1/$IMAGE_PATH/*rootfs.bin) >/dev/null 2>&1
- then
- image_found=1
- else
- echo "Note: No boot-images found in [$1/$IMAGE_PATH]"
- fi
-
- # Check if we have both, a real fs and boot-images. If so, ask the user what to boot
- if test "$real_fs_found" = 1 -a "$image_found" = 1
- then
- echo -e "\nI have found a real filesystem and boot-images on the target"
- echo -e "What do you want to boot?\n"
-
- echo -e "\t[1] The real filesystem"
- echo -e "\t[2] A loop-image"
- echo ""
-
- while test -z "$ans"
- do
- echo -n "Your choice: "
-
- if test "$AUTOBOOT" != "yes"
- then
- read junk < "$OUT_TTY"
- else
- if test -e /etc/.altboot-real-or-loop.last
- then
- junk="`cat /etc/.altboot-real-or-loop.last`"
- test -z "$junk" && read junk < "$OUT_TTY" || echo "$junk (autoboot)"
- else
- read junk < "$OUT_TTY"
- fi
- fi
-
- if test "$junk" = 1 -o "$junk" = 2
- then
- ans="$junk"
- echo "$junk" > /etc/.altboot-real-or-loop.last
- fi
- done
-
- case "$ans" in
- 1) pivot_realfs "$1" "$2">"$OUT_TTY";;
- 2) pivot_image "$1" "$2">"$OUT_TTY";;
- esac
-
- exit 0
- fi
-
- # Boot a real filesystem
- test "$real_fs_found" = 1 && pivot_realfs "$1" >"$OUT_TTY"
-
- # Boot a loop-image
- test "$image_found" = 1 && pivot_image "$1" >"$OUT_TTY"
-
- if test "$real_fs_found" != 1 -a "$image_found" != 1
- then
- mdie "No direct-install or loop-images found. Nothing to do!"
- fi
-}
-
-boot_new_rootfs_splash() {
-C_RED="\033[37;44m"
-C_RESET="\033[0m"
-
- echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
- echo -e "${C_RED}| |${C_RESET}"
- echo -e "${C_RED}| Booting the selected rootfs... |${C_RESET}"
- echo -e "${C_RED}| |${C_RESET}"
- echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
-
-}
-
-# This function pivot_root's into a real filesystem calling $newrootfs/sbin/init
-# $1 = The new rootfs
-pivot_realfs() {
- #test -z "$2" && RL="5" || RL="$2"
- mkdir -p $1/media/ROM || die "mkdir -p $1/media/ROM failed"
-
- mount -o remount,ro / >/dev/null 2>&1
-
- test "$ENABLE_IMAGECONF" = yes && image_conf $1
-
- do_pivot "$1" "$RL"
-}
-
-# This function loop-mounts an image-file and pivot_root's into it
-# $1: The new rootfs
-pivot_image() {
- #test -z "$2" && RL="5" || RL="$2"
- cd $1/$IMAGE_PATH
-
- # Check for rootfs images on the card
- if test "`ls *rootfs.bin | wc -l | tr -d " "`" -gt 1
- then
- echo -e "\n\nPlease select a rootfs:\n"
-
- # Show all available images
- x=0
- for file in `ls *rootfs.bin`
- do
- let x=$x+1
- echo -e "\t\t[$x] $file"
- done
-
- echo ""
-
- IMAGE_NAME=""
- while test -z "$IMAGE_NAME"
- do
- echo -en "Please choose one of the above: "
- if test "$AUTOBOOT" != "yes"
- then
- read junk < "$OUT_TTY"
- else
- if test -e /etc/.altboot-loopimage.last
- then
- junk="`cat /etc/.altboot-loopimage.last`"
- test -z "$junk" && read junk < "$OUT_TTY" || echo "$junk (autoboot)"
- else
- read junk < "$OUT_TTY"
- fi
- fi
-
- x=0
- for file in `ls *rootfs.bin`
- do
- let x=$x+1
- if test "$x" = "$junk"
- then
- IMAGE_NAME="$file"
- echo "$junk" > /etc/.altboot-loopimage.last
- fi
- done
- done
- else
- IMAGE_NAME="`ls *rootfs.bin`"
- test -z "$IMAGE_NAME" && die "No rootfs found (*rootfs.bin) in $1/$IMAGE_PATH"
- fi
-
-
- echo ""
-
- mkdir -p /media/image || die "mkdir -p /media/image failed"
-
- LOOP_MODULE="$(find /lib/modules/`uname -r`/ -name "loop.ko")"
- test -n "$LOOP_MODULE" && ( insmod "$LOOP_MODULE" ; sleep 3 )
-
- ! test -e /dev/loop0 && mknod /dev/loop0 b 7 0
-
- losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
- check_fs /dev/loop0 $IMAGE_TYPE
-
- echo -e "\n* * * Mounting rootfs image * * *\n"
-
- # Busybox's "mount" doesn't seem to like "-o loop" for some reason
- # It works on collie and b0rks on poodle.
- if [ "$IMAGE_TYPE" = "" ]; then
- IMAGE_TYPE="auto"
- fi
-
- # If mount fails it has the tendency to spew out a _lot_ of error messages.
- # We direct the output to /dev/null so the user can see which step actually failed.
- mount /dev/loop0 -t $IMAGE_TYPE /media/image >/dev/null 2>&1 || die "mount -t $IMAGE_TYPE /dev/loop0 /media/image failed!"
-
- mkdir -p /media/image/media/ROM || die "mkdir -p /media/image/media/ROM failed"
-
- test "$ENABLE_IMAGECONF" = yes && image_conf /media/image
-
- do_pivot /media/image "$RL"
-}
-
-#$1=mountpoint of the soon-to-be rootfs, $2=Runlevel
-do_pivot(){
-
- if test "$USE_KEXEC_ON_NEXT_BOOT" = yes
- then
- if test -e "$KEXEC_SELECTED_KERNEL.kexec.cfg"
- then
- CMDLINE="--append=\"`cat $KEXEC_SELECTED_KERNEL.kexec.cfg`\""
- else
- CMDLINE=""
- echo "WARNING: This kernel has not been configured!"
- echo "Trying to boot anyway..."
- fi
-
- echo "$KEXEC_BIN -l $KEXEC_SELECTED_KERNEL $CMDLINE"
- $KEXEC_BIN -l $KEXEC_SELECTED_KERNEL $CMDLINE
- sync
-
- read junk
- $KEXEC_BIN -e
- exit 0
- fi
-
-
- echo -n "Pivoting root..."
- if (/sbin/pivot_root "$1" "$1/media/ROM")
- then
- echo "Success"
-
- # This is important since we are still cd'ed into the old root
- cd /
-
- ! test -d "$1" && mkdir -p "$1"
-
- # Move mountpoints from the old rootfs into the new one.
- # The *real* mount is kinda touchy feely about that
- /bin/busybox mount -o move /media/ROM/proc /proc >/dev/null 2>&1
-
- for mpt in ` mount | grep "/media/ROM/" | awk '{print $3}'`
- do
- new_mpt="`echo "$mpt" | sed -n "s/\/media\/ROM//p"`"
-
- echo "Moving mountpoint [$mpt] -> [$new_mpt]" >"$OUT_TTY" 2>&1
-
- ! test -d "$new_mpt" && mkdir -p "$new_mpt"
- /bin/busybox mount -o move "$mpt" "$new_mpt"
- done
-
- clear
- boot_new_rootfs_splash
- echo "Calling INIT"
-
- exec /usr/sbin/chroot . $REAL_INIT $2 >"$OUT_TTY" 2>&1
- #exec /usr/sbin/chroot . /sbin/init $2 >/dev/tty0 2>&1
- else
- echo "FAILED"
- die "* * * pivot_root failed! * * *"
- fi
-
-}
-
-# $1: Path to mounted rootfs
-image_conf(){
- ! test -d "$1" && die "image_conf: [$1] not found / no directory"
-
- test -e "$1/etc/.image_conf.done" && return
-
- echo -e "\n\n* * * rootfs configuration * * *\n"
- echo -e "This setup lets you reconfigure your new rootfs."
- echo "Most probably the rootfs is configured with"
- echo "defaults based on a flash installation."
- echo "If unsure, go with the defaults by pressing <ENTER>."
- echo ""
-
- if ( cat $1/etc/fstab | grep -v "^#" | grep -q "/home " )
- then
- while true
- do
- echo "Usually your /home directory is located on another flash partition."
- echo -n "Do you want me to move /home inside the loop-image? [N|y] "
- read junk
-
- if test "$junk" = "y" -o "$junk" = "Y"
- then
- cat $1/etc/fstab | sed "/.*\/home.*/s/\/home/\/home.flash/" > $1/etc/fstab_
- mv $1/etc/fstab_ $1/etc/fstab
-
- mkdir -p $1/home.flash
- break
- fi
-
- test "$junk" = "" -o "$junk" = n -o "$junk" = N && break
- done
-
- fi
-
- echo ""
-
- if ( cat $1/etc/ipkg.conf | grep -q ^lists_dir )
- then
- while true
- do
- echo -e "Wasting RAM is never a good idea.\nOnly say Y if your rootfs is very small in size"
- 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
- then
- cat $1/etc/ipkg.conf | sed "/^lists_dir.*/s/\(.*\)/#\ \1/"> $1/etc/ipkg.conf_
- mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
- break
- fi
-
- test "$junk" = "y" -o "$junk" = "Y" && break
- done
- fi
-
- echo ""
-
- if ( cat $1/etc/ipkg.conf | grep -q "^dest sd" )
- then
- while true
- do
- 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
- then
- cat $1/etc/ipkg.conf | sed "/^dest\ \(sd\|cf\|home\).*/s/\(.*\)/#\ \1/" > $1/etc/ipkg.conf_
- mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
- break
- fi
-
- test "$junk" = "y" -o "$junk" = "Y" && break
- done
- fi
-
-
- touch "$1/etc/.image_conf.done"
-}
-
-# This functions configures the master password for altboot if none is set
-set_password() {
-
- test -e /etc/altboot.pwd && . /etc/altboot.pwd
-
- mount -o remount,rw /
- if test -z "$MASTER_PASSWORD" -a "$ENABLE_DEBUG" != yes
- then
- echo -e "\nAltboot is a boot-manager which allows to boot from SD,\nCF, USB-Storage 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!\nIt is used by altboot alone!${C_RESET}\n"
-
- while true
- do
- echo -en "\nNew password: "
-
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk1 < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
-
- if ! test -z "$junk1"
- then
- echo -en "\nRepeat: "
-
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk2 < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- echo ""
-
- if test "$junk1" = "$junk2"
- then
- crypt_pw="`echo "$junk1" | md5sum | awk '{print $1}'`"
-
- if test -e "/etc/altboot.pwd"
- then
- sed "/^MASTER_PASSWORD/s/\(.*\=\).*/\1\"$crypt_pw\"/" "${ALTBOOT_CFG_FILE}" > ${ALTBOOT_CFG_FILE}_
- mv ${ALTBOOT_CFG_FILE}_ ${ALTBOOT_CFG_FILE}
- MASTER_PASSWORD="$crypt_pw"
- echo "Password changed."
- else
- echo "MASTER_PASSWORD=\"$crypt_pw\"" > /etc/altboot.pwd
- echo "Password installed"
- fi
-
- break
- else
- echo -e "Passwords didn't match, try again\n"
- fi
- fi
- done
- fi
-
-}
-
-# This function asks for altboots master password. It only returns if the correct password was supplied
-verify_master_pw() {
-
- test -e /etc/altboot.pwd && . /etc/altboot.pwd
-
- if test -n "$MASTER_PASSWORD" -a "$MASTER_PASSWORD" != "[none]"
- then
- auth_timeout="3"
-
- echo -e "\nPlease enter your altboot master password"
-
- cnt=0
- while true
- do
- let cnt=$cnt+$auth_timeout
- echo -n "Password: "
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
-
- if test "`echo "$junk" | md5sum | awk '{print $1}'`" = "$MASTER_PASSWORD"
- then
- break
- else
- echo "[`echo "$junk" | md5sum | awk '{print $1}'`]"
- echo "[$MASTER_PASSWORD]"
- echo "Wrong password, sleeping $cnt seconds..."
- sleep $cnt
-
-# if test "$cnt" -gt 10
-# then
-# break
-# fi
- fi
- done
-
- echo ""
- fi
-}
-
-
-check_fs() {
- if [ "$FSCK_IMAGES" = "yes" ]
- then
- FSCK=""
- if [ "$2" = "" ]; then
- FSTYPE="ext2"
- else
- FSTYPE="$2"
- fi
- case "$FSTYPE" in
- ext2 | ext3)
- if [ -e /sbin/fsck.ext3 ]; then
- FSCK="/sbin/fsck.ext3"
- elif [ -e /sbin/e3fsck ]; then
- FSCK="/sbin/e3fsck"
- elif [ -e /sbin/fsck.ext2 ]; then
- FSCK="/sbin/fsck.ext2"
- elif [ -e /sbin/e2fsck ]; then
- FSCK="/sbin/e2fsck"
- fi
- test -n "$FSCK" && FSCK="$FSCK -p"
- ;;
- vfat)
- if [ -e /sbin/dosfsck ]; then
- FSCK="/sbin/dosfsck -a"
- fi
- ;;
- esac
-
-# debug_echo "check_fs() FSCK / FSTYPE: [$FSCK] / [$FSTYPE]"
-
- if [ "$FSCK" = "" ]; then
- echo "Could not find fsck for $FSTYPE!"
- else
- echo "Checking file system on $1"
- $FSCK $1 || sleep 2
- fi
- fi
-}
-
-# Make the initial rootfs a bit more usable
-init_rootfs(){
-# echo -n "Mounting rootfs rw..."
- mount -o remount,rw / || die "mount -o remount,rw / failed"
-
- mount | grep -q "/proc " >/dev/null 2>&1 || mount proc -t proc /proc >"$OUT_TTY" 2>&1
-
- if ( uname -r | grep -q "2.6." )
- then
- mount | grep -q "/sys " >/dev/null 2>&1 || mount sys -t sysfs /sys >"$OUT_TTY" 2>&1
- fi
-
- /etc/init.d/devices start || die "FAILED"
-}
-
-mount_sd(){
- if mount | grep -q "$SD_MOUNTPOINT"
- then
- echo "Note: $SD_MOUNTPOINT is already mounted"
- else
- # We can't trust that the SD device file is there when running kernel 2.6 w/ udev
- # and starting udev at this point may not be the best idea...
- if `uname -r | grep -q "2.6"`
- then
- #Let's just assume the device file name never changes...
- dev_no="`echo "$SD_DEVICE" | sed -n "s/\/dev\/mmcblk\(.*\)p\(.*\)/\1/p"`"
- part_no="`echo "$SD_DEVICE" | sed -n "s/\/dev\/mmcblk\(.*\)p\(.*\)/\2/p"`"
- ! test -e /dev/mmcblk${dev_no} && mknod /dev/mmcblk${dev_no} b 254 0
- ! test -e /dev/mmcblk${dev_no}p${part_no} && mknod /dev/mmcblk${dev_no}p${part_no} b 254 $part_no
- fi
-
- # Kernel 2.6 has the SD driver compiled into the kernel
- if test -n "$SD_KERNEL_MODULE"
- then
- echo "Loading SD kernel module..."
- if ( echo "$SD_KERNEL_MODULE" | grep -q "^/" )
- then
- echo -e "\t- Using full path for SD module"
- SD_PATTERN="`basename "$SD_KERNEL_MODULE" | sed "s/\.ko//;s/\.o//"`"
-
- if ( lsmod | grep -q "^$SD_PATTERN" )
- then
- echo -e "\t- Already loaded..."
- else
- echo -e "\t- Loading..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
- fi
-
- else
- echo -e "\t- Searching [$SD_KERNEL_MODULE]"
- SD_KERNEL_MODULE="$(find /lib/modules/`uname -r`/ -name "$SD_KERNEL_MODULE")"
- echo -e "\t- Assuming module is [$SD_KERNEL_MODULE]"
-
- SD_PATTERN="`basename "$SD_KERNEL_MODULE" | sed "s/\.ko//;s/\.o//"`"
-
- if ( lsmod | grep -q "^$SD_PATTERN" )
- then
- echo -e "\t- Already loaded..."
- else
- echo -e "\t- Loading..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
- fi
- fi
- fi
-
- sleep 3
-
- check_fs "$SD_DEVICE"
-
- if ! mount | grep -q "$SD_MOUNTPOINT"
- then
- echo -n "Mounting $SD_MOUNTPOINT..." >"$OUT_TTY"
-
- if test "$1" = ingore_errors
- then
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 || echo "Could not mount SD card"
- else
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 || die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
- fi
- else
- echo "NOTE: Some sort of auto-mounting is going on..."
- fi
- fi
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-}
-
-mount_cf(){
- if mount | grep -q "/media/cf "
- then
- echo "Note: /media/cf is already mounted"
- else
- if ( cat /etc/fstab | grep -v "^#" | grep -q "/media/cf" )
- then
- # As of kernel 2.6.16, /e/i/pcmcia is replaced by udev
- if test -x /etc/init.d/pcmcia
- then
- /etc/init.d/pcmcia status | grep -q running || /etc/init.d/pcmcia start && echo "Note: cardmgr is already active"
- else
- for n in 1 2 3
- do
- ! test -e "/dev/hda$n" && mknod /dev/hda$n b 3 $n
- done
- fi
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-
- mount /media/cf -o async
- else
- echo "Note: Your system's fstab does not include an entry for /media/cf"
- fi
- fi
-}
-
-mount_home(){
- if mount | grep -q "/home "
- then
- echo "Note: /home is already mounted"
- else
-
- if ( cat /etc/fstab | grep -v "^#" | grep -q "/home " )
- then
- echo "Mounting /home"
- home_fstab="`grep "/home " /etc/fstab`"
- home_dev="`echo "$home_fstab" | awk '{print $1}'`"
- home_fs="`echo "$home_fstab" | awk '{print $3}'`"
- home_options="`echo "$home_fstab" | awk '{print $4}'`"
-
- mount -t "$home_fs" -o $home_options "$home_dev" /home
- else
- echo "Note: Your system's fstab does not include an entry for /home"
- fi
- fi
-}
-
-show_menu() {
-
- echo -e "\nPress <ENTER> to return to the menu"
- read junk
-
- test "$junk" = x && exec /bin/sh || exec /sbin/init.altboot -force<"$OUT_TTY" >"$OUT_TTY" 2>&1
-}
-
-mdie() {
- echo -e "${C_RED}ERROR:${C_RESET}${C_WHITE} $1${C_RESET}" >"$OUT_TTY"
-
- echo -e "\nPress <ENTER> to return to the menu"
- read junk
-
- test "$junk" = x && exec /bin/sh || exec /sbin/init.altboot -force<"$OUT_TTY" >"$OUT_TTY" 2>&1
-}
-
-# $1: uniq name, $2 identifier, $3 value
-set_pref() {
- data_name="$1"
- data_id="$2"
- data_value="$3"
-
- #debug_echo "[$1] [$2] [$3]"
- #export "${data_name}"="`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // | sed s/^$data_id.*//`"
-
- if test -z "$3"
- then
- debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
- #data_value=" "
- fi
- export "${data_name}"="`eval echo -e \\$${data_name} `$data_id##$data_value###"
-}
-
-# $1: uniq name
-reset_pref() {
- data_name="$1"
- export "${data_name}"=""
-}
-
-echo_pref() {
- data_name="$1"
- echo "****** $1 ******"
- echo "`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
- echo "******"
-}
-
-dump_pref() {
- data_name="$1"
- echo "`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
-
- #echo "-- `eval echo ${data_name}` --"
- #debug_echo "[$menu_fileflags]"
-}
-
-# $1 = name, $2 = cache_file
-export_pref() {
- data_name="$1"
- echo "`eval echo -e ${data_name}`" > "$2"
-}
-
-# $1 = name, $2 = cache_file
-import_pref() {
- data_name="$1"
- data_id="$2"
-
- #debug_echo "[$1] [$2] [$3]"
-
- if test -z "$3"
- then
- debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
- #data_value=" "
- fi
- export "${data_name}"="`cat "$2"`"
-
-}
-
-# $1: uniq name, $2 identifier, $3 out var
-get_pref() {
- data_name="$1"
- data_id="$2"
- data_out="$3"
- data_list="`eval echo -e \\$${data_name}`"
-
- #echo "data_list: [$data_list]"
- #data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | grep "^$data_id##" | sed -n "s/.*\#\(.*\)$/\1/p"`"
- #data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | sed -n "/^$data_id/s/.*\#\(.*\)$/\1/p"`"
- data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g" | sed -n "s/^\ //;/^$data_id\#/s/.*\#\(.*\)$/\1/p"`"
- #echo "WERT: [$data_value]"
-
- export "${data_out}"="$data_value"
- test -n "$data_value" && return 0
-}
-
-debug_echo() {
- test "$ENABLE_DEBUG" = "yes" && echo -e "${C_YELLOW}DEBUG:${C_RESET}${C_WHITE} $1 ${C_RESET}" >"$OUT_TTY" 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 ""
- echo "Select the type of your network connection:"
- echo ""
- echo -e "\t[1] LAN or WLAN NIC"
- echo -e "\t[2] USB Connection"
- echo ""
-
- if test "$AUTOBOOT" != "yes" -o ! -e /etc/.altboot-lanselect.last
- then
- while true
- do
- echo -n "Connection Type: "
- read junk
-
- test "$junk" = 1 -o "$junk" = 2 && break
- done
- else
- junk="`cat /etc/.altboot-lanselect.last`"
- test -z "$junk" && junk=1
-
- echo "Connection Type: $junk (autoboot)"
- fi
-
- case "$junk" in
- 1) NW_TYPE="NIC"
- ;;
- 2) NW_TYPE="USB"
- ;;
- esac
-
- echo "$junk" > /etc/.altboot-lanselect.last
- else
- NW_TYPE=NIC
- fi
-
-
-
- # Needed for NFS
- /etc/init.d/portmap start >/dev/null 2>&1 || die "/etc/init.d/portmap start failed!"
-
- # For some reason NFS mounts hang if /e/i/networking is not run.
- # For the time beeing I'm too lazy to investigate ;)
- /etc/init.d/networking start >/dev/null 2>&1 || die "/etc/init.d/networking start failed!"
-
- sleep 2
-
- if test "$NW_TYPE" = "NIC"
- then
- # After the PCMCIA service is started, an inserted WLAN card should automatically
- # activate itself.
-
- 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 3
- else
- # With kernel 2.6.16+ udev is used
- 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!"
-
- # 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
-
- if test "$NW_TYPE" = "USB"
- then
- echo ""
- for module in $USB_NW_MODULES
- do
- echo "modprobing [$module]"
- modprobe $module || die "modprobe $module FAILED"
- done
-
- ifdown "$USB_NW_DEVICE" >/dev/null 2>&1
-
-
- echo -e "\nPlease make sure that usb0 is up on your PC and hit <ENTER>."
- read junk
-
- 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
- # cardctl needs some time....
- echo -n "Waiting for WLAN card.."
- timeout=0
- while test "$timeout" -lt 10
- do
- WLAN_NIC="`iwconfig 2>/dev/null | grep ESSID | grep -v wifi | awk '{print $1}'`"
- test -n "$WLAN_NIC" && break
- echo -n "."
- let timeout=$timeout+1
- sleep 1
- done
-
- 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
- fi
-
- # WLAN with DHCP needs some time to get a lease, set up the routing, etc.
- echo -n "Waiting for host [$1] on [$WLAN_NIC]."
- cnt=0
- while true
- do
- if (ping -c 1 $1) >/dev/null 2>&1
- then
- echo " found"
- break
- else
- if test "$cnt" = 30 -o "$cnt" = 60
- then
- echo ""
- echo "WARNING: $NW_TYPE didn't activate in $cnt seconds!"
-
- if test "$cnt" = 30
- then
- let cnt=$cnt+1
-
- if test "$NW_TYPE" = "NIC"
- then
- echo "Restarting udhcpc for [$WLAN_NIC]"
- killall udhcpc
-
- udhcpc -i "$WLAN_NIC" -H `cat /etc/hostname` >"$OUT_TTY" 2>&1
- fi
-
- if test "$NW_TYPE" = "USB"
- then
- echo "ifdown/up $USB_NW_DEVICE..."
- ifdown "$USB_NW_DEVICE"
- sleep 1
- ifup "$USB_NW_DEVICE"
- fi
-
- else
- mdie "Failed to activate $NW_TYPE!"
- break
- fi
- else
- echo -n "."
- let cnt=$cnt+1
- fi
- fi
- sleep 1
- done
-
-
-}