diff options
Diffstat (limited to 'packages/initrdscripts/files/nfsboot.sh')
-rw-r--r-- | packages/initrdscripts/files/nfsboot.sh | 74 |
1 files changed, 31 insertions, 43 deletions
diff --git a/packages/initrdscripts/files/nfsboot.sh b/packages/initrdscripts/files/nfsboot.sh index b536c4042b..62a044267a 100644 --- a/packages/initrdscripts/files/nfsboot.sh +++ b/packages/initrdscripts/files/nfsboot.sh @@ -1,50 +1,38 @@ #!/bin/sh -echo "Starting initramfs boot..." -mkdir /proc -mount -t proc proc /proc - -for arg in `cat /proc/cmdline`; do - echo $arg - optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'` - echo $optarg - case $arg in - root=*) - root=$optarg ;; - nfsroot=*) - nfsroot=$optarg ;; - ip=*) - ip=$optarg ;; +if [ "$ROOT_DEVICE" = "/dev/nfs" ]; then + for arg in $CMDLINE; do + echo $arg + optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'` + echo $optarg + case $arg in + nfsroot=*) + nfsroot=$optarg ;; + ip=*) + ip=$optarg ;; + esac + done + + echo $ip | (IFS=: read client_ip server_ip gw_ip netmask hostname device autoconf; \ + echo client_ip=$client_ip; + echo server_ip=$server_ip; + echo gw_ip=$gw_ip; + echo netmask=$netmask; + echo hostname=$hostname; + echo device=$device; + echo autoconf=$autoconf; + + case "$device" in + usb*) + echo "USB" + modprobe g_ether + ;; esac -done - -echo $ip | (IFS=: read client_ip server_ip gw_ip netmask hostname device autoconf; \ -echo client_ip=$client_ip; -echo server_ip=$server_ip; -echo gw_ip=$gw_ip; -echo netmask=$netmask; -echo hostname=$hostname; -echo device=$device; -echo autoconf=$autoconf; - -case "x$device" in - usb*) - echo "USB" - modprobe g_ether - ;; -esac + + ifconfig $device $client_ip + ) -ifconfig $device $client_ip -) - -mkdir /mnt -if [ "x$root" = "x/dev/nfs" ]; then echo "booting from NFS: $nfsroot" mount -t nfs $nfsroot /mnt -else - echo "booting from: $root" - mount $root /mnt + BOOT_ROOT=/mnt fi - -cd /mnt -exec switch_root -c /dev/console /mnt /sbin/init |