diff --git a/Makefile b/Makefile index 8af8e33052..e0e4a90f4f 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ release: ./scripts/image release image: - BUILD_IMAGE=yes ./scripts/image release + ./scripts/image mkimage noobs: ./scripts/image noobs diff --git a/packages/tools/syslinux/release b/packages/tools/syslinux/release index 4e41c40b43..561b6cff41 100755 --- a/packages/tools/syslinux/release +++ b/packages/tools/syslinux/release @@ -32,20 +32,3 @@ mkdir -p $RELEASE_DIR/3rdparty/syslinux/win32 mkdir -p $RELEASE_DIR/3rdparty/syslinux/win64 cp -PR $BUILD/syslinux-*/win64/syslinux64.exe $RELEASE_DIR/3rdparty/syslinux/win64 - -if [ "$BUILD_IMAGE" = "yes" -a -x "$BOOTLOADER_DIR/image" ] ; then - # variables used in image script must be passed - EXTLINUX_DIR=$(ls -d $ROOT/$BUILD/syslinux-*/) - UUID_SYSTEM=$(uuidgen) - UUID_STORAGE=$(uuidgen) - - sudo env \ - PATH="$PATH" \ - TARGET_IMG="$TARGET_IMG" \ - IMAGE_NAME="$IMAGE_NAME" \ - RELEASE_DIR="$RELEASE_DIR" \ - EXTLINUX_DIR="$EXTLINUX_DIR" \ - UUID_SYSTEM="$UUID_SYSTEM" \ - UUID_STORAGE="$UUID_STORAGE" \ - $BOOTLOADER_DIR/image -fi diff --git a/scripts/image b/scripts/image index 480f1f6b47..3529298459 100755 --- a/scripts/image +++ b/scripts/image @@ -204,7 +204,7 @@ IMAGE_NAME="$DISTRONAME-$TARGET_VERSION" chmod 0644 $TARGET_IMG/$IMAGE_NAME.system chmod 0644 $TARGET_IMG/$IMAGE_NAME.kernel - if [ "$1" = "release" ]; then + if [ "$1" = "release" -o "$1" = "mkimage" ]; then RELEASE_DIR="target/$IMAGE_NAME" @@ -266,6 +266,11 @@ IMAGE_NAME="$DISTRONAME-$TARGET_VERSION" # create release tarball tar cf $TARGET_IMG/$IMAGE_NAME.tar -C target $IMAGE_NAME + # create image files if requested + if [ "$1" = "mkimage" -a -f $SCRIPTS/mkimage-$BOOTLOADER ]; then + . $SCRIPTS/mkimage-$BOOTLOADER + fi + # cleanup release dir rm -rf $RELEASE_DIR diff --git a/packages/tools/syslinux/image b/scripts/mkimage-syslinux similarity index 62% rename from packages/tools/syslinux/image rename to scripts/mkimage-syslinux index 03aa7abb84..218f2cf703 100755 --- a/packages/tools/syslinux/image +++ b/scripts/mkimage-syslinux @@ -18,31 +18,38 @@ # along with OpenELEC. If not, see . ################################################################################ -cleanup() -{ - echo "image: cleanup..." - umount "$OE_TMP" &>/dev/null || : - losetup -d "$LOOP" - [ -f "$OE_TMP/ldlinux.sys" ] && chattr -i "$OE_TMP/ldlinux.sys" || : - rm -rf "$OE_TMP" - exit -} +. config/options $1 + +$SCRIPTS/build syslinux:host + +# set variables + UUID_SYSTEM=$(uuidgen) + UUID_STORAGE=$(uuidgen) + OE_TMP=$(mktemp -d) + LOOP=$(losetup -f) + + SYSTEM_SIZE=256 + STORAGE_SIZE=32 # STORAGE_SIZE must be >= 32 ! + + DISK_SIZE=$(( $SYSTEM_SIZE + $STORAGE_SIZE )) + DISK="$TARGET_IMG/$IMAGE_NAME.img" + +# functions + cleanup() { + echo "image: cleanup..." + sudo umount "$OE_TMP" &>/dev/null || : + sudo losetup -d "$LOOP" + [ -f "$OE_TMP/ldlinux.sys" ] && sudo chattr -i "$OE_TMP/ldlinux.sys" || : + sudo rm -rf "$OE_TMP" + exit + } trap cleanup SIGINT -# set variables - OE_TMP=$(mktemp -d) - SYSTEM_SIZE=256 - # 3STORAGE_SIZE must be >= 32 ! - STORAGE_SIZE=32 - DISK_SIZE=$(( $SYSTEM_SIZE + $STORAGE_SIZE )) - DISK="$TARGET_IMG/$IMAGE_NAME.img" - LOOP=$(losetup -f) - # ensure loopX not in use - umount "$OE_TMP" &>/dev/null || : - umount "$LOOP" &>/dev/null >/dev/null || : - losetup -d "$LOOP" &>/dev/null >/dev/null || : + sudo umount "$OE_TMP" &>/dev/null || : + sudo umount "$LOOP" &>/dev/null >/dev/null || : + sudo losetup -d "$LOOP" &>/dev/null >/dev/null || : # create an image echo "image: creating image: $DISK..." @@ -51,48 +58,49 @@ trap cleanup SIGINT # write a disklabel echo "image: creating partition table on $DISK..." - losetup "$LOOP" "$DISK" - parted -s "$LOOP" mklabel msdos + sudo losetup "$LOOP" "$DISK" + sudo parted -s "$LOOP" mklabel msdos sync # create part1 echo "image: creating part1 on $DISK..." SYSTEM_PART_END=$(( $SYSTEM_SIZE * 1024 * 1024 / 512 + 64 )) - parted -s "$LOOP" -a min unit s mkpart primary ext4 64 $SYSTEM_PART_END - parted -s "$LOOP" set 1 boot on + sudo parted -s "$LOOP" -a min unit s mkpart primary ext4 64 $SYSTEM_PART_END + sudo parted -s "$LOOP" set 1 boot on # create part2 echo "image: creating part2 on $DISK..." STORAGE_PART_START=$(( $SYSTEM_PART_END + 1 )) - parted -s "$LOOP" -a min unit s mkpart primary ext4 $STORAGE_PART_START 100% + sudo parted -s "$LOOP" -a min unit s mkpart primary ext4 $STORAGE_PART_START 100% sync # write mbr echo "image: writing mbr..." - MBR="$EXTLINUX_DIR/mbr/mbr.bin" + MBR="$ROOT/$TOOLCHAIN/share/syslinux/mbr.bin" if [ -n "$MBR" ]; then - dd bs=440 count=1 conv=notrunc if="$MBR" of="$LOOP" + sudo dd bs=440 count=1 conv=notrunc if="$MBR" of="$LOOP" fi sync # create filesystem on part1 - losetup -d "$LOOP" + sudo losetup -d "$LOOP" echo "image: creating filesystem on part1..." OFFSET=$(( 64 * 512 )) SIZELIMIT=$(( $SYSTEM_SIZE * 1024 * 1024 )) - losetup -o $OFFSET --sizelimit $SIZELIMIT "$LOOP" "$DISK" - mke2fs -q -t ext4 -m 0 "$LOOP" - tune2fs -U $UUID_SYSTEM "$LOOP" - e2fsck -n "$LOOP" + sudo losetup -o $OFFSET --sizelimit $SIZELIMIT "$LOOP" "$DISK" + sudo mke2fs -q -t ext4 -m 0 "$LOOP" + sudo tune2fs -U $UUID_SYSTEM "$LOOP" + sudo e2fsck -n "$LOOP" sync # mount partition echo "image: mounting part1 on $OE_TMP..." - mount "$LOOP" "$OE_TMP" + sudo mount "$LOOP" "$OE_TMP" # create bootloader configuration echo "image: creating bootloader configuration..." - cat >"$OE_TMP"/syslinux.cfg << EOF +# cat >"$OE_TMP"/syslinux.cfg << EOF + cat << EOF | sudo tee "$OE_TMP"/syslinux.cfg UI vesamenu.c32 PROMPT 0 MENU TITLE Boot Menu @@ -123,50 +131,52 @@ MENU COLOR msg07 37;40 #90ffffff #a0000000 std MENU COLOR tabmsg 31;40 #ff868787 #00000000 std LABEL installer - MENU LABEL Run OpenELEC Installer + MENU LABEL Run $DISTRONAME Installer KERNEL /KERNEL APPEND boot=UUID=$UUID_SYSTEM installer quiet tty vga=current LABEL live - MENU LABEL Run OpenELEC Live + MENU LABEL Run $DISTRONAME Live KERNEL /KERNEL APPEND boot=UUID=$UUID_SYSTEM disk=UUID=$UUID_STORAGE quiet vga=current EOF # install extlinux echo "image: installing extlinux to part1..." - $EXTLINUX_DIR/extlinux/extlinux.host --heads=4 --sector=32 -i "$OE_TMP" + sudo $ROOT/$TOOLCHAIN/bin/extlinux --heads=4 --sector=32 -i "$OE_TMP" # copy files echo "image: copying files to part1..." - cp $TARGET_IMG/$IMAGE_NAME.kernel "$OE_TMP/KERNEL" - cp $TARGET_IMG/$IMAGE_NAME.system "$OE_TMP/SYSTEM" - cp $RELEASE_DIR/splash.png "$OE_TMP" - cp $EXTLINUX_DIR/com32/menu/vesamenu.c32 "$OE_TMP" - cp $EXTLINUX_DIR/com32/lib/libcom32.c32 "$OE_TMP" - cp $EXTLINUX_DIR/com32/libutil/libutil.c32 "$OE_TMP" + sudo cp $TARGET_IMG/$IMAGE_NAME.kernel "$OE_TMP/KERNEL" + sudo cp $TARGET_IMG/$IMAGE_NAME.system "$OE_TMP/SYSTEM" + sudo cp $RELEASE_DIR/splash.png "$OE_TMP" + sudo cp $ROOT/$TOOLCHAIN/share/syslinux/vesamenu.c32 "$OE_TMP" + sudo cp $ROOT/$TOOLCHAIN/share/syslinux/libcom32.c32 "$OE_TMP" + sudo cp $ROOT/$TOOLCHAIN/share/syslinux/libutil.c32 "$OE_TMP" # unmount part1 echo "image: unmounting part1..." - umount "$LOOP" sync + sudo umount "$LOOP" # create filesystem on part2 - losetup -d "$LOOP" + sudo losetup -d "$LOOP" echo "image: creating filesystem on part2..." OFFSET=$(( $STORAGE_PART_START * 512 )) - losetup -o $OFFSET "$LOOP" "$DISK" - mke2fs -q -t ext4 -m 0 "$LOOP" - tune2fs -U $UUID_STORAGE "$LOOP" - e2fsck -n "$LOOP" + sudo losetup -o $OFFSET "$LOOP" "$DISK" + sudo mke2fs -q -t ext4 -m 0 "$LOOP" + sudo tune2fs -U $UUID_STORAGE "$LOOP" + sudo e2fsck -n "$LOOP" sync echo "image: mounting part2 on $OE_TMP..." - mount "$LOOP" "$OE_TMP" - touch "$OE_TMP/.please_resize_me" + sudo mount "$LOOP" "$OE_TMP" + sudo touch "$OE_TMP/.please_resize_me" + +# unmount part2 echo "image: unmounting part2..." - umount "$LOOP" sync + sudo umount "$LOOP" # gzip echo "image: compressing..."