diff options
-rw-r--r-- | conf/distro/debianslug.conf | 2 | ||||
-rw-r--r-- | conf/distro/openslug.conf | 2 | ||||
-rw-r--r-- | packages/images/slugos-image.bb | 95 | ||||
-rw-r--r-- | packages/slugos-init/files/reflash | 30 |
4 files changed, 80 insertions, 49 deletions
diff --git a/conf/distro/debianslug.conf b/conf/distro/debianslug.conf index 0bcdac1db5..2904db1108 100644 --- a/conf/distro/debianslug.conf +++ b/conf/distro/debianslug.conf @@ -13,7 +13,7 @@ SLUGOS_IMAGENAME = "debianslug" SLUGOS_IMAGESEX = "little-endian" # debianslug builds a complete image (not just the parts) -SLUGOS_FLASH_IMAGE = "nslu2" +SLUGOS_FLASH_IMAGE = "1" # NOTE: to build new packages set DEBIANSLUG_EXTRA_BBFILES to the full path name to # the .bb files for the packages to build - see debianslug-packages.conf in this diff --git a/conf/distro/openslug.conf b/conf/distro/openslug.conf index dec16d8cd7..8634d091f0 100644 --- a/conf/distro/openslug.conf +++ b/conf/distro/openslug.conf @@ -13,7 +13,7 @@ SLUGOS_IMAGENAME = "openslug" SLUGOS_IMAGESEX = "big-endian" # openslug builds a complete image (not just the parts) -SLUGOS_FLASH_IMAGE = "nslu2" +SLUGOS_FLASH_IMAGE = "1" # NOTE: to build new packages set OPENSLUG_EXTRA_BBFILES to the full path name to # the .bb files for the packages to build - see ucslugc-packages.conf in this diff --git a/packages/images/slugos-image.bb b/packages/images/slugos-image.bb index a85179f174..df8a4d6222 100644 --- a/packages/images/slugos-image.bb +++ b/packages/images/slugos-image.bb @@ -6,7 +6,7 @@ DESCRIPTION = "Generic SlugOS image" HOMEPAGE = "http://www.nslu2-linux.org" LICENSE = "MIT" -PR = "r42" +PR = "r43" COMPATIBLE_MACHINE = "nslu2" @@ -111,50 +111,63 @@ python () { # LinkSys have made "EraseAll" available, however, (this does overwrite RedBoot) # it is a bad idea to produce flash images without a valid RedBoot - that allows # an innocent user upgrade attempt to instantly brick the NSLU2. -PACK_IMAGE += "${@['', 'nslu2_pack_image;'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'nslu2']}" +PACK_IMAGE += "${@['', 'slugos_pack_image;'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == '1']}" PACK_IMAGE_DEPENDS += "${@['', 'slugimage-native nslu2-linksys-firmware apex ixp4xx-npe'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'nslu2']}" NSLU2_SLUGIMAGE_ARGS ?= "" -nslu2_pack_image() { - if test '${SLUGOS_FLASH_IMAGE}' = nslu2 - then - install -d ${DEPLOY_DIR_IMAGE}/slug - install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \ - ${STAGING_LIBDIR}/nslu2-binaries/Trailer \ - ${STAGING_LIBDIR}/nslu2-binaries/SysConf \ - ${DEPLOY_DIR_IMAGE}/slug/ - install -m 0644 ${STAGING_LOADER_DIR}/apex.bin ${DEPLOY_DIR_IMAGE}/slug/ - install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-nslu2${ARCH_BYTE_SEX} \ - ${DEPLOY_DIR_IMAGE}/slug/vmlinuz - install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ - ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2 - install -m 0644 ${STAGING_FIRMWARE_DIR}/NPE-B ${DEPLOY_DIR_IMAGE}/slug/ - cd ${DEPLOY_DIR_IMAGE}/slug - slugimage -p -b RedBoot -s SysConf -L apex.bin -k vmlinuz \ - -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \ - -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img \ - ${NSLU2_SLUGIMAGE_ARGS} - rm -rf ${DEPLOY_DIR_IMAGE}/slug - - # Create an image for the DSM-G600 as well - install -d ${DEPLOY_DIR_IMAGE}/firmupgrade - install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-dsmg600${ARCH_BYTE_SEX} \ - ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk - install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ - ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz - touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs - chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs - echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg - echo "model=dsm-g600" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg - echo "vendor=dlink" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg - echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg - chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg - tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.dsmg600.bin \ - -C ${DEPLOY_DIR_IMAGE} firmupgrade - rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade - - fi +slugos_pack_image() { + install -d ${DEPLOY_DIR_IMAGE}/slug + install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \ + ${STAGING_LIBDIR}/nslu2-binaries/Trailer \ + ${STAGING_LIBDIR}/nslu2-binaries/SysConf \ + ${DEPLOY_DIR_IMAGE}/slug/ + install -m 0644 ${STAGING_LOADER_DIR}/apex.bin ${DEPLOY_DIR_IMAGE}/slug/ + install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-nslu2${ARCH_BYTE_SEX} \ + ${DEPLOY_DIR_IMAGE}/slug/vmlinuz + install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ + ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2 + install -m 0644 ${STAGING_FIRMWARE_DIR}/NPE-B ${DEPLOY_DIR_IMAGE}/slug/ + cd ${DEPLOY_DIR_IMAGE}/slug + slugimage -p -b RedBoot -s SysConf -L apex.bin -k vmlinuz \ + -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \ + -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2.bin \ + ${NSLU2_SLUGIMAGE_ARGS} + rm -rf ${DEPLOY_DIR_IMAGE}/slug + + # Create an image for the DSM-G600 as well + install -d ${DEPLOY_DIR_IMAGE}/firmupgrade + install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-dsmg600${ARCH_BYTE_SEX} \ + ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk + install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ + ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz + touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs + chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs + echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "model=dsm-g600" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "vendor=dlink" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-dsmg600.bin \ + -C ${DEPLOY_DIR_IMAGE} firmupgrade + rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade + + # Create an image for the NAS 100d as well + install -d ${DEPLOY_DIR_IMAGE}/firmupgrade + install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-nas100d${ARCH_BYTE_SEX} \ + ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk + install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ + ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz + touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs + chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs + echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "model=koala" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "vendor=iomega" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg + tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nas100d.bin \ + -C ${DEPLOY_DIR_IMAGE} firmupgrade + rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade } # upslug2 (in tmp/work/upslug2-native-*) is the program to write the NSLU2 flash diff --git a/packages/slugos-init/files/reflash b/packages/slugos-init/files/reflash index 2a3a3e356c..131f0b67de 100644 --- a/packages/slugos-init/files/reflash +++ b/packages/slugos-init/files/reflash @@ -17,21 +17,36 @@ case "$(machine)" in nslu2) isnslu2=1 isdsmg600= + isnas100d= imageok=1 + apexpart="Loader" usrpart= kpart="Kernel" ffspart="Flashdisk";; +nas100d) + isnslu2= + isdsmg600= + isnas100d=1 + imageok=1 + apexpart= + usrpart="usr" + kpart="kernel" + ffspart="filesystem";; dsmg600) isnslu2= isdsmg600=1 + isnas100d= imageok=1 + apexpart= usrpart="usr" kpart="kernel" ffspart="filesystem";; *) isnslu2= isdsmg600= + isnas100d= imageok= + apexpart= usrpart= kpart="kernel" ffspart="filesystem";; @@ -67,8 +82,8 @@ do shift;; -i) shift test -n "$imageok" || { - echo "reflash: -i: only supported on the LinkSys NSLU2" >&2 - echo " and the D-Link DSM-G600 systems; use -k and -j" >&2 + echo "reflash: -i: only supported on the LinkSys NSLU2," >&2 + echo " Iomega NAS 100d and D-Link DSM-G600 systems; use -k and -j" >&2 echo " to specify the kernel and root file system instead." >&2 exit 1 } @@ -123,7 +138,11 @@ then # works in ash, no guarantees about other shells! while read size base name do - if test "$name" = "$kpart" + if test "$name" = "$apexpart" + then + imgapexsize="$size" + imgapexoffset="$base" + elif test "$name" = "$kpart" then imgksize="$size" imgkoffset="$base" @@ -180,7 +199,7 @@ EOI echo "reflash: $imgfile: failed to find $ffspart" >&2 exit 1 } - elif test -r "$imgfile" -a -n "$isdsmg600" + elif test -r "$imgfile" -a \( -n "$isdsmg600" -o -n "$isnas100d" \) then # # For the DSM-G600, this is really easy - the image is just @@ -203,7 +222,7 @@ EOI # to make sure that it matches the native firmware's kernel # and rootfs that we're now flashing back onto the device. - echo "reflash: unpacking DSM-G600 image file" >&2 + echo "reflash: unpacking DSM-G600/NAS-100d image file" >&2 tar -x -f "$imgfile" -C /var/tmp || { echo "reflash: unable to unpack image file to be flashed" >&2 exit 1 @@ -224,7 +243,6 @@ EOI echo "reflash: Native flash being restored" >&2 usrfile="/var/tmp/firmupgrade/usr.cramfs" preserve_config= - dsmg600_native_flash=1 fi else |