diff options
Diffstat (limited to 'packages/altboot/files/altboot.func')
-rw-r--r-- | packages/altboot/files/altboot.func | 870 |
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 - - -} |