diff options
Diffstat (limited to 'packages')
105 files changed, 932 insertions, 13416 deletions
diff --git a/packages/altboot/altboot.bb b/packages/altboot/altboot.bb index 568f52835b..80e22d1924 100644 --- a/packages/altboot/altboot.bb +++ b/packages/altboot/altboot.bb @@ -6,7 +6,7 @@ MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>" LICENSE = "GPL" -PR = "r4" +PR = "r5" SRC_URI = "file://altboot-menu \ diff --git a/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs b/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs new file mode 100644 index 0000000000..1949f20b48 --- /dev/null +++ b/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs @@ -0,0 +1,324 @@ +# !/bin/sh +M_TITLE="Copy rootfs to SD/CF" + + +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}'`" + + if test -z "$available_disks" + then + die "No mounted targets found!" + fi + + cnt=1 + for d in $available_disks + do + echo -e "\t[$cnt] $d" + let cnt=$cnt+1 + done + + while test -z "$ROOTFS_TARGET" + do + echo -n "Target: " + read junk </dev/tty1 + + x=1 + for d in $available_disks + do + if test "$junk" = "$x" + then + ROOTFS_TARGET="$d" + break + fi + let x=$x+1 + done + + + done + + ROOTFS_TARGET_DEV="`mount | grep "$ROOTFS_TARGET " | awk '{print $1}'`" + ROOTFS_TARGET_FS="`mount | grep "$ROOTFS_TARGET " | awk '{print $5}'`" + + echo "Using [$ROOTFS_TARGET] on [$ROOTFS_TARGET_DEV] with [$ROOTFS_TARGET_FS] filesystem" +} + +ask_format() { + if test "$ROOTFS_TARGET_FS" != ext2 + then + echo -e "\nYou are not using the ext2 filesystem on your target.\nYou now have two choices:" + echo -e "\t[1] Reformat to ext2" + echo -e "\t[2] Use an image-file ontop of the existing filesystem" + + while true + do + echo -n "Your choice: " + read junk </dev/tty1 + + case "$junk" in + 1) ROOTFS_TARGET_TYPE="ext2" + break ;; + 2) ROOTFS_TARGET_TYPE="image" + break ;; + esac + done + + echo "Mode: [$ROOTFS_TARGET_TYPE]" + else + echo -e "\nYou are using the ext2 filesystem on your target.\nYou now have two choices:" + echo -e "\t[1] Install to the target directly" + echo -e "\t[2] Use an image-file ontop of the existing filesystem\n" + + while true + do + echo -n "Your choice: " + read junk </dev/tty1 + + case "$junk" in + 1) ROOTFS_TARGET_TYPE="direct" + break ;; + 2) ROOTFS_TARGET_TYPE="image" + break ;; + esac + done + + echo "Mode: [$ROOTFS_TARGET_TYPE]" + + fi +} + +ask_confirm() { + echo -e "\nYour choices are:" + echo -e "\tTarget:\t$ROOTFS_TARGET_DEV (currently mounted as $ROOTFS_TARGET)" + case "$ROOTFS_TARGET_TYPE" in + direct) echo -e "\tType:\t${C_RED}direct install, reformat if required${C_RESET}";; + image) echo -e "\tType:\tinstall into image-file";; + esac + + while true + do + echo -n "Continue? [y|n] " + read junk </dev/tty1 + + case "$junk" in + y) break ;; + n) exit 1 + esac + done +} + +direct_install() { + + format_target + + echo -n "Creating temporary directory..." + mkdir -p /media/temp && echo ok || die "mkdir -p /media/temp failed!" + + echo -n "Mounting [$ROOTFS_TARGET_DEV] as /media/temp..." + mount "$ROOTFS_TARGET_DEV" /media/temp && echo "ok" || die "mount "$ROOTFS_TARGET_DEV" /media/temp FAILED" + + copy_files +} + +format_target() { + echo -e "\n\nI'm about to format your target ($ROOTFS_TARGET_DEV) to the ext2 filesystem\n" + echo -e "${C_RED}YOU WILL LOSE ALL DATA ON YOUR TARGET IF YOU CONTINUE${C_RESET}\n" + + while true + do + echo -n "Continue? [y|n] " + read junk </dev/tty1 + + case "$junk" in + y) break ;; + n) die "User aborted mkfs" + break ;; + esac + done + + echo -n "Umounting $ROOTFS_TARGET_DEV..." + umount "$ROOTFS_TARGET_DEV" && echo "ok" || die "umount $ROOTFS_TARGET_DEV failed!" + + + echo "Formatting..." + /sbin/mkfs.ext2 -m0 "$ROOTFS_TARGET_DEV" && echo -e "\nmkfs.ext2 finished" || die "\nmkfs.ext2 FAILED" + } + +image_install() { + flash_size="` df -h | grep "/"$| awk '{print $3}'| sed s/M//`" + + echo -e "\nHow many MB do you want to configure for the image file?" + echo -e "It is generally a good idea to use 2.5x the used flash size ($flash_size)\n" + + while test -z "$ROOTFS_IMAGE_SIZE" + do + echo -n "Size in MegaBytes: " + read junk + + # test fails if $junk isn't a number + if test "$junk" -gt 0 >/dev/null 2>&1 + then + echo -n "Use [$junk]MB? [y|n] " + read junk2 + if test "$junk2" = y + then + ROOTFS_IMAGE_SIZE="$junk" + fi + fi + done + + echo -e "\nPlease enter a name for the image file." + echo "The name must _not_ contain whitespaces or the '-' sign." + + while test -z "$ROOTFS_IMAGE_NAME" + do + echo -n "File name: " + read junk + + if ! test -z "$junk" + then + echo -n "Use [$junk] as image name? [y|n] " + read junk2 + + if test "$junk2" = y + then + ROOTFS_IMAGE_NAME="$junk" + fi + fi + done + + echo -e "\nDo you want to format [$ROOTFS_TARGET_DEV] to the ext2 filesystem?" + + while true + do + echo -n "Format to ext2? [y|n] " + read junk + case "$junk" in + y) format_target + break ;; + n) break ;; + esac + done + + /etc/init.d/devices start + + echo -en "\nCreating image file [$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin] (${ROOTFS_IMAGE_SIZE}MB)..." + mkdir -p "$ROOTFS_TARGET/$IMAGE_PATH" + + dd if=/dev/zero of="$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin" bs=1024k count=$ROOTFS_IMAGE_SIZE >/dev/null 2>&1 && echo ok || die "FAILED" + losetup /dev/loop1 "$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin" + + echo -n "Creating filesystem..." + mkfs.ext2 -m0 /dev/loop1 >/dev/null 2>&1 && echo ok || die FAILED + + mkdir -p /media/temp |
