diff options
Diffstat (limited to 'packages/altboot/files/altboot.func')
-rw-r--r-- | packages/altboot/files/altboot.func | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func index ceee6abae2..5651ef9f9d 100644 --- a/packages/altboot/files/altboot.func +++ b/packages/altboot/files/altboot.func @@ -295,3 +295,88 @@ check_fs() { fi fi } + +# Make the initial rootfs a bit more usable +init_rootfs(){ + 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" + + mount | grep -q "/proc " >/dev/null 2>&1 && echo "Note: /proc is already mounted" || mount proc -t proc /proc >/dev/tty0 2>&1 + + if ( uname -r | grep -q "2.6." ) + then + mount | grep -q "/sys " >/dev/null 2>&1 && echo "Note: /sys is already mounted" || mount sys -t sysfs /sys >/dev/tty0 2>&1 + fi + + echo -n "Generating device files..." >/dev/tty0 + /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED" +} + +mount_sd(){ + if mount | grep -q "/media/card " + then + echo "Note: /media/card 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 -n "Loading SD kernel module..." + /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed" + else + echo "No SD kernel module configured, assuming it's build-in" + fi + + check_fs "$SD_DEVICE" + + echo -n "Mounting $SD_MOUNTPOINT..." >/dev/tty0 + /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed" + 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 + /etc/init.d/pcmcia start || die "/etc/init.d/pcmcia/start failed!" + + echo "" + + # Give the SD and CF mounting some time. This is a must for SD + sleep 2 + fi +} + +mount_home(){ + if mount | grep -q "/home " + then + echo "Note: /home is already mounted" + else + + if ( grep -q "/home " /etc/fstab ) + 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 + fi + fi +} |