From 6051971c313ca3558c05631dc7f1c2c4b23a0114 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 30 Jan 2010 22:19:01 +0100 Subject: implement installation on nand and fix nand bootup rb532 nand usage fixed. Rename cfinstall to adkinstall to abstract from backend device used. --- mk/rootfs.mk | 2 +- package/Config.in | 4 +- package/adkinstall/Makefile | 37 ++++++++++++++++ package/adkinstall/src/adkinstall | 61 ++++++++++++++++++++++++++ package/adkinstall/src/adkinstall.rb532 | 78 +++++++++++++++++++++++++++++++++ package/cfgfs/Makefile | 4 +- package/cfinstall/Makefile | 37 ---------------- package/cfinstall/src/cfinstall | 61 -------------------------- package/cfinstall/src/cfinstall.rb532 | 49 --------------------- target/rb532/TODO | 3 +- 10 files changed, 182 insertions(+), 154 deletions(-) create mode 100644 package/adkinstall/Makefile create mode 100644 package/adkinstall/src/adkinstall create mode 100644 package/adkinstall/src/adkinstall.rb532 delete mode 100644 package/cfinstall/Makefile delete mode 100644 package/cfinstall/src/cfinstall delete mode 100644 package/cfinstall/src/cfinstall.rb532 diff --git a/mk/rootfs.mk b/mk/rootfs.mk index 4db8b730d..1099a7fac 100644 --- a/mk/rootfs.mk +++ b/mk/rootfs.mk @@ -18,7 +18,7 @@ $(eval $(call rootfs_template,archive,ARCHIVE)) $(eval $(call rootfs_template,initramfs,INITRAMFS)) $(eval $(call rootfs_template,initramfs-piggyback,INITRAMFS_PIGGYBACK)) $(eval $(call rootfs_template,squashfs,SQUASHFS)) -$(eval $(call rootfs_template,yaffs,YAFFS)) +$(eval $(call rootfs_template,yaffs,YAFFS,root=/dev/mtdblock1)) $(eval $(call rootfs_template,nfsroot,NFSROOT,root=/dev/nfs ip=dhcp init=/init)) $(eval $(call rootfs_template,encrypted,ENCRYPTED)) diff --git a/package/Config.in b/package/Config.in index 298a36152..31867be26 100644 --- a/package/Config.in +++ b/package/Config.in @@ -4,18 +4,18 @@ menu "Package selection" menu "Basesystem" +source "package/adkinstall/Config.in" source "package/base-files/Config.in" source "package/busybox/Config.in.manual" source "package/cfgfs/Config.in" -source "package/cfinstall/Config.in" source "package/cryptinit/Config.in" source "package/uclibc/Config.in.manual" source "package/glibc/Config.in.manual" source "package/eglibc/Config.in.manual" source "package/libc/Config.in.manual" -source "package/rpm/Config.in" source "package/grub/Config.in" source "package/grub-bin/Config.in" +source "package/rpm/Config.in" endmenu menu "Bluetooth" diff --git a/package/adkinstall/Makefile b/package/adkinstall/Makefile new file mode 100644 index 000000000..d250a1e70 --- /dev/null +++ b/package/adkinstall/Makefile @@ -0,0 +1,37 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${TOPDIR}/rules.mk + +PKG_NAME:= adkinstall +PKG_VERSION:= 1.0 +PKG_RELEASE:= 3 +PKG_DESCR:= installer for compact flash or nand/mtd devices +PKG_SECTION:= base +PKG_DEPENDS:= parted sfdisk + +PKG_TARGET_DEPENDS:= alix wrap rb532 + +WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} +NO_DISTFILES:= 1 + +include ${TOPDIR}/mk/package.mk + +$(eval $(call PKG_template,ADKINSTALL,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +BUILD_STYLE:= manual +INSTALL_STYLE:= manual + +pre-configure: + mkdir -p ${WRKBUILD} + +do-install: + ${INSTALL_DIR} $(IDIR_ADKINSTALL)/sbin +ifeq ($(ADK_LINUX_MIPS_RB532),y) + ${INSTALL_BIN} ./src/adkinstall.rb532 \ + $(IDIR_ADKINSTALL)/sbin/adkinstall +else + ${INSTALL_BIN} ./src/adkinstall $(IDIR_ADKINSTALL)/sbin +endif + +include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/adkinstall/src/adkinstall b/package/adkinstall/src/adkinstall new file mode 100644 index 000000000..7e9a0d1ad --- /dev/null +++ b/package/adkinstall/src/adkinstall @@ -0,0 +1,61 @@ +#!/bin/sh +# installs a rootfs tar archive from OpenADK onto a Compact Flash disk + +if [ -z $1 ];then + printf "Please give your root tar archive as parameter\n" + exit 1 +fi +# create empty partition table +parted -s /dev/sda mklabel msdos +sleep 2 +maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//') +rootsize=$(($maxsize-2)) +parted -s /dev/sda unit cyl mkpartfs primary ext2 0 $rootsize +parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize +parted -s /dev/sda set 1 boot on +sfdisk --change-id /dev/sda 2 88 >/dev/null 2>&1 +if [ $? -eq 0 ];then + printf "Successfully created partition ${rootpart}\n" +else + printf "Partition creation failed, Exiting.\n" + exit 1 +fi +mount -t ext2 /dev/sda1 /mnt +printf "Extracting install archive\n" +tar -C /mnt -xzpf $1 +chmod 1777 /mnt/tmp +chmod 4755 /mnt/bin/busybox + +speed=$(awk -F \, '/console=ttyS0/ { print $2 }' /proc/cmdline|sed -e "s/ .*$//") + +printf "Install bootloader\n" +mkdir -p /mnt/boot/grub +mount -o bind /dev /mnt/dev +chroot /mnt mount -t proc /proc /proc +chroot /mnt mount -t sysfs /sys /sys +cat << EOF > /mnt/boot/grub/grub.cfg +set default=0 +set timeout=1 +serial --unit=0 --speed=$speed +terminal_output serial +terminal_input serial + +menuentry "GNU/Linux (OpenADK)" { + insmod ext2 + set root=(hd0,1) + linux /boot/vmlinuz-adk root=/dev/sda1 ro init=/init panic=10 +} +EOF +chroot /mnt grub-install /dev/sda >/dev/null 2>&1 +umount /mnt/proc +umount /mnt/sys +umount /mnt/dev + +printf "Creating device nodes\n" +mknod -m 666 /mnt/dev/null c 1 3 +mknod -m 622 /mnt/dev/console c 5 1 +mknod -m 666 /mnt/dev/tty c 5 0 + +umount /mnt +printf "Successfully installed.\n" +exit 0 diff --git a/package/adkinstall/src/adkinstall.rb532 b/package/adkinstall/src/adkinstall.rb532 new file mode 100644 index 000000000..ca2ffde0d --- /dev/null +++ b/package/adkinstall/src/adkinstall.rb532 @@ -0,0 +1,78 @@ +#!/bin/sh +# installs a rootfs tar archive from OpenADK onto +# a Compact Flash disk or NAND device +# special script for routerboard rb532 + +nandinstall=0 +cfinstall=0 + +if [ -z $1 ];then + printf "Please give your target device as first parameter [cf|nand]\n" + exit 1 +fi +if [ -z $2 ];then + printf "Please give your root tar archive as second parameter\n" + exit 1 +fi +if [ -z $3 ];then + printf "Please give your kernel as third parameter\n" + exit 1 +fi +case $1 in + nand) + nandinstall=1 + ;; + cf) + cfinstall=1 + ;; + *) + printf "Target not recognized\n" + exit 1 + ;; +esac + +if [ $cfinstall -eq 1 ];then + # create empty partition table + printf "Creating partition scheme\n" + parted -s /dev/sda mklabel msdos + sleep 2 + maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//') + rootsize=$(($maxsize-2)) + parted -s /dev/sda unit cyl mkpart primary ext2 0 1 + parted -s /dev/sda unit cyl mkpartfs primary ext2 1 $rootsize + parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize + parted -s /dev/sda set 1 boot on + sfdisk --change-id /dev/sda 1 27 >/dev/null 2>&1 + sfdisk --change-id /dev/sda 3 88 >/dev/null 2>&1 + sleep 2 + sync + printf "Installing kernel\n" + dd if=$3 of=/dev/sda1 bs=2048 >/dev/null 2>&1 + sync + mount -t ext2 /dev/sda2 /mnt +fi + +if [ $nandinstall -eq 1 ];then + printf "Installing kernel\n" + mount -t yaffs2 /dev/mtdblock0 /mnt + cp $3 /mnt/kernel + sync + umount /mnt + mount -t yaffs2 /dev/mtdblock1 /mnt + rm -rf /mnt/* >/dev/null 2>&1 +fi + +printf "Extracting install archive\n" +tar -C /mnt -xzpf $2 + +chmod 1777 /mnt/tmp +chmod 4755 /mnt/bin/busybox + +printf "Creating device nodes\n" +mknod -m 666 /mnt/dev/null c 1 3 +mknod -m 622 /mnt/dev/console c 5 1 +mknod -m 666 /mnt/dev/tty c 5 0 + +umount /mnt +printf "Successfully installed.\n" +exit 0 diff --git a/package/cfgfs/Makefile b/package/cfgfs/Makefile index 3d89f2072..806da3199 100644 --- a/package/cfgfs/Makefile +++ b/package/cfgfs/Makefile @@ -8,12 +8,12 @@ PKG_VERSION:= 1.0.6 PKG_RELEASE:= 5 PKG_DESCR:= compressed config filesystem PKG_SECTION:= base -PKG_TARGET_DEPENDS:= alix1c alix2d alix2d13 wrap foxboard ag241 rb532 +PKG_TARGET_DEPENDS:= alix wrap foxboard ag241 rb532 WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} NO_DISTFILES:= 1 -CFLINE_CFGFS:= select BUSYBOX_COMM\n\tselect BUSYBOX_MD5SUM\n\tselect BUSYBOX_XARGS\n\tselect BUSYBOX_FEATURE_SORT_BIG\n\tdepends on !ADK_TARGET_ROOTFS_NFSROOT +CFLINE_CFGFS:= select BUSYBOX_COMM\n\tselect BUSYBOX_MD5SUM\n\tselect BUSYBOX_XARGS\n\tselect BUSYBOX_FEATURE_SORT_BIG\n\tdepends on !ADK_TARGET_ROOTFS_NFSROOT\n\tdepends on !ADK_TARGET_ROOTFS_YAFFS include ${TOPDIR}/mk/package.mk diff --git a/package/cfinstall/Makefile b/package/cfinstall/Makefile deleted file mode 100644 index fb64446f3..000000000 --- a/package/cfinstall/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include ${TOPDIR}/rules.mk - -PKG_NAME:= cfinstall -PKG_VERSION:= 1.0 -PKG_RELEASE:= 3 -PKG_DESCR:= compact flash installer -PKG_SECTION:= base -PKG_DEPENDS:= parted sfdisk - -PKG_TARGET_DEPENDS:= alix wrap rb532 - -WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} -NO_DISTFILES:= 1 - -include ${TOPDIR}/mk/package.mk - -$(eval $(call PKG_template,CFINSTALL,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -BUILD_STYLE:= manual -INSTALL_STYLE:= manual - -pre-configure: - mkdir -p ${WRKBUILD} - -do-install: - ${INSTALL_DIR} $(IDIR_CFINSTALL)/sbin -ifeq ($(ADK_LINUX_MIPS_RB532),y) - ${INSTALL_BIN} ./src/cfinstall.rb532 \ - $(IDIR_CFINSTALL)/sbin/cfinstall -else - ${INSTALL_BIN} ./src/cfinstall $(IDIR_CFINSTALL)/sbin -endif - -include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/cfinstall/src/cfinstall b/package/cfinstall/src/cfinstall deleted file mode 100644 index 7e9a0d1ad..000000000 --- a/package/cfinstall/src/cfinstall +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -# installs a rootfs tar archive from OpenADK onto a Compact Flash disk - -if [ -z $1 ];then - printf "Please give your root tar archive as parameter\n" - exit 1 -fi -# create empty partition table -parted -s /dev/sda mklabel msdos -sleep 2 -maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//') -rootsize=$(($maxsize-2)) -parted -s /dev/sda unit cyl mkpartfs primary ext2 0 $rootsize -parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize -parted -s /dev/sda set 1 boot on -sfdisk --change-id /dev/sda 2 88 >/dev/null 2>&1 -if [ $? -eq 0 ];then - printf "Successfully created partition ${rootpart}\n" -else - printf "Partition creation failed, Exiting.\n" - exit 1 -fi -mount -t ext2 /dev/sda1 /mnt -printf "Extracting install archive\n" -tar -C /mnt -xzpf $1 -chmod 1777 /mnt/tmp -chmod 4755 /mnt/bin/busybox - -speed=$(awk -F \, '/console=ttyS0/ { print $2 }' /proc/cmdline|sed -e "s/ .*$//") - -printf "Install bootloader\n" -mkdir -p /mnt/boot/grub -mount -o bind /dev /mnt/dev -chroot /mnt mount -t proc /proc /proc -chroot /mnt mount -t sysfs /sys /sys -cat << EOF > /mnt/boot/grub/grub.cfg -set default=0 -set timeout=1 -serial --unit=0 --speed=$speed -terminal_output serial -terminal_input serial - -menuentry "GNU/Linux (OpenADK)" { - insmod ext2 - set root=(hd0,1) - linux /boot/vmlinuz-adk root=/dev/sda1 ro init=/init panic=10 -} -EOF -chroot /mnt grub-install /dev/sda >/dev/null 2>&1 -umount /mnt/proc -umount /mnt/sys -umount /mnt/dev - -printf "Creating device nodes\n" -mknod -m 666 /mnt/dev/null c 1 3 -mknod -m 622 /mnt/dev/console c 5 1 -mknod -m 666 /mnt/dev/tty c 5 0 - -umount /mnt -printf "Successfully installed.\n" -exit 0 diff --git a/package/cfinstall/src/cfinstall.rb532 b/package/cfinstall/src/cfinstall.rb532 deleted file mode 100644 index 900d6dc18..000000000 --- a/package/cfinstall/src/cfinstall.rb532 +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# installs a rootfs tar archive from OpenADK onto a Compact Flash disk -# special script for routerboard rb532 - -if [ -z $1 ];then - printf "Please give your root tar archive as first parameter\n" - exit 1 -fi -if [ -z $2 ];then - printf "Please give your kernel as second parameter\n" - exit 1 -fi -# create empty partition table -parted -s /dev/sda mklabel msdos -sleep 2 -maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//') -rootsize=$(($maxsize-2)) - -parted -s /dev/sda unit cyl mkpart primary ext2 0 1 -parted -s /dev/sda unit cyl mkpartfs primary ext2 1 $rootsize -parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize -parted -s /dev/sda set 1 boot on -sfdisk --change-id /dev/sda 1 27 >/dev/null 2>&1 -sfdisk --change-id /dev/sda 3 88 >/dev/null 2>&1 -if [ $? -eq 0 ];then - printf "Successfully created partition ${rootpart}\n" -else - printf "Partition creation failed, Exiting.\n" - exit 1 -fi -sleep 2 -sync -printf "Installing kernel\n" -dd if=$2 of=/dev/sda1 bs=2048 >/dev/null 2>&1 -sync -mount -t ext2 /dev/sda2 /mnt -printf "Extracting install archive\n" -tar -C /mnt -xzpf $1 -chmod 1777 /mnt/tmp -chmod 4755 /mnt/bin/busybox - -printf "Creating device nodes\n" -mknod -m 666 /mnt/dev/null c 1 3 -mknod -m 622 /mnt/dev/console c 5 1 -mknod -m 666 /mnt/dev/tty c 5 0 - -umount /mnt -printf "Successfully installed.\n" -exit 0 diff --git a/target/rb532/TODO b/target/rb532/TODO index 054e445e0..f48d0f482 100644 --- a/target/rb532/TODO +++ b/target/rb532/TODO @@ -1,2 +1 @@ -- enable watchdog -- test yaffs2 support +- implement cfgfs for NAND/YAFFS2 rootfs -- cgit v1.2.3