mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
testing: add support for creating efi live images
TODO: full uefi support in installer
This commit is contained in:
parent
9b83058be4
commit
76a19cc0a6
3
Makefile
3
Makefile
@ -11,6 +11,9 @@ release:
|
|||||||
image:
|
image:
|
||||||
./scripts/image mkimage
|
./scripts/image mkimage
|
||||||
|
|
||||||
|
image-efi:
|
||||||
|
./scripts/image mkimage efi
|
||||||
|
|
||||||
noobs:
|
noobs:
|
||||||
./scripts/image noobs
|
./scripts/image noobs
|
||||||
|
|
||||||
|
@ -278,6 +278,9 @@ IMAGE_NAME="$DISTRONAME-$TARGET_VERSION"
|
|||||||
|
|
||||||
# create image files if requested
|
# create image files if requested
|
||||||
if [ "$1" = "mkimage" -a -n "$BOOTLOADER" ]; then
|
if [ "$1" = "mkimage" -a -n "$BOOTLOADER" ]; then
|
||||||
|
if [ "$2" == "efi" ] ; then
|
||||||
|
UEFI=yes
|
||||||
|
fi
|
||||||
# variables used in image script must be passed
|
# variables used in image script must be passed
|
||||||
sudo env \
|
sudo env \
|
||||||
PATH="$PATH" \
|
PATH="$PATH" \
|
||||||
@ -289,6 +292,7 @@ IMAGE_NAME="$DISTRONAME-$TARGET_VERSION"
|
|||||||
RELEASE_DIR="$RELEASE_DIR" \
|
RELEASE_DIR="$RELEASE_DIR" \
|
||||||
UUID_SYSTEM="$(uuidgen)" \
|
UUID_SYSTEM="$(uuidgen)" \
|
||||||
UUID_STORAGE="$(uuidgen)" \
|
UUID_STORAGE="$(uuidgen)" \
|
||||||
|
UEFI="$UEFI" \
|
||||||
$SCRIPTS/mkimage
|
$SCRIPTS/mkimage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -49,6 +49,14 @@
|
|||||||
|
|
||||||
trap cleanup SIGINT
|
trap cleanup SIGINT
|
||||||
|
|
||||||
|
# generate volume id for fat partition
|
||||||
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
UUID_1=$(date '+%d%m')
|
||||||
|
UUID_2=$(date '+%M%S')
|
||||||
|
FAT_VOL_ID="${UUID_1}${UUID_2}"
|
||||||
|
UUID_SYSTEM="${UUID_1}-${UUID_2}"
|
||||||
|
fi
|
||||||
|
|
||||||
# ensure loopX not in use
|
# ensure loopX not in use
|
||||||
umount "$OE_TMP" &>/dev/null || :
|
umount "$OE_TMP" &>/dev/null || :
|
||||||
umount "$LOOP" &>/dev/null >/dev/null || :
|
umount "$LOOP" &>/dev/null >/dev/null || :
|
||||||
@ -62,29 +70,46 @@ trap cleanup SIGINT
|
|||||||
# write a disklabel
|
# write a disklabel
|
||||||
echo "image: creating partition table on $DISK..."
|
echo "image: creating partition table on $DISK..."
|
||||||
losetup "$LOOP" "$DISK"
|
losetup "$LOOP" "$DISK"
|
||||||
parted -s "$LOOP" mklabel msdos
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
parted -s "$LOOP" mklabel gpt
|
||||||
|
else
|
||||||
|
parted -s "$LOOP" mklabel msdos
|
||||||
|
fi
|
||||||
sync
|
sync
|
||||||
|
|
||||||
# create part1
|
# create part1
|
||||||
echo "image: creating part1 on $DISK..."
|
echo "image: creating part1 on $DISK..."
|
||||||
SYSTEM_PART_END=$(( $SYSTEM_SIZE * 1024 * 1024 / 512 + 2048 ))
|
SYSTEM_PART_END=$(( $SYSTEM_SIZE * 1024 * 1024 / 512 + 2048 ))
|
||||||
if [ "$BOOTLOADER" = "syslinux" ]; then
|
if [ "$BOOTLOADER" = "syslinux" ]; then
|
||||||
parted -s "$LOOP" -a min unit s mkpart primary ext4 2048 $SYSTEM_PART_END
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
parted -s "$LOOP" -a min unit s mkpart primary fat32 2048 $SYSTEM_PART_END
|
||||||
|
else
|
||||||
|
parted -s "$LOOP" -a min unit s mkpart primary ext4 2048 $SYSTEM_PART_END
|
||||||
|
fi
|
||||||
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
||||||
parted -s "$LOOP" -a min unit s mkpart primary fat32 2048 $SYSTEM_PART_END
|
parted -s "$LOOP" -a min unit s mkpart primary fat32 2048 $SYSTEM_PART_END
|
||||||
fi
|
fi
|
||||||
parted -s "$LOOP" set 1 boot on
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
parted -s "$LOOP" set 1 legacy_boot on
|
||||||
|
else
|
||||||
|
parted -s "$LOOP" set 1 boot on
|
||||||
|
fi
|
||||||
|
|
||||||
# create part2
|
# create part2
|
||||||
echo "image: creating part2 on $DISK..."
|
echo "image: creating part2 on $DISK..."
|
||||||
STORAGE_PART_START=$(( $SYSTEM_PART_END + 2048 ))
|
STORAGE_PART_START=$(( $SYSTEM_PART_END + 2048 ))
|
||||||
parted -s "$LOOP" -a min unit s mkpart primary ext4 $STORAGE_PART_START 100%
|
STORAGE_PART_END=$(( $STORAGE_PART_START + (( $STORAGE_SIZE * 1024 * 1024 / 512 )) ))
|
||||||
|
parted -s "$LOOP" -a min unit s mkpart primary ext4 $STORAGE_PART_START $STORAGE_PART_END
|
||||||
sync
|
sync
|
||||||
|
|
||||||
if [ "$BOOTLOADER" = "syslinux" ]; then
|
if [ "$BOOTLOADER" = "syslinux" ]; then
|
||||||
# write mbr
|
# write mbr
|
||||||
echo "image: writing mbr..."
|
echo "image: writing mbr..."
|
||||||
MBR="$ROOT/$TOOLCHAIN/share/syslinux/mbr.bin"
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
MBR="$ROOT/$TOOLCHAIN/share/syslinux/gptmbr.bin"
|
||||||
|
else
|
||||||
|
MBR="$ROOT/$TOOLCHAIN/share/syslinux/mbr.bin"
|
||||||
|
fi
|
||||||
if [ -n "$MBR" ]; then
|
if [ -n "$MBR" ]; then
|
||||||
dd bs=440 count=1 conv=notrunc if="$MBR" of="$LOOP"
|
dd bs=440 count=1 conv=notrunc if="$MBR" of="$LOOP"
|
||||||
fi
|
fi
|
||||||
@ -98,9 +123,13 @@ fi
|
|||||||
SIZELIMIT=$(( $SYSTEM_SIZE * 1024 * 1024 ))
|
SIZELIMIT=$(( $SYSTEM_SIZE * 1024 * 1024 ))
|
||||||
losetup -o $OFFSET --sizelimit $SIZELIMIT "$LOOP" "$DISK"
|
losetup -o $OFFSET --sizelimit $SIZELIMIT "$LOOP" "$DISK"
|
||||||
if [ "$BOOTLOADER" = "syslinux" ]; then
|
if [ "$BOOTLOADER" = "syslinux" ]; then
|
||||||
mke2fs -q -t ext4 -m 0 "$LOOP"
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
tune2fs -U $UUID_SYSTEM "$LOOP"
|
mkfs.vfat -i "$FAT_VOL_ID" "$LOOP"
|
||||||
e2fsck -n "$LOOP"
|
else
|
||||||
|
mke2fs -q -t ext4 -m 0 "$LOOP"
|
||||||
|
tune2fs -U $UUID_SYSTEM "$LOOP"
|
||||||
|
e2fsck -n "$LOOP"
|
||||||
|
fi
|
||||||
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
||||||
mkfs.vfat "$LOOP"
|
mkfs.vfat "$LOOP"
|
||||||
fi
|
fi
|
||||||
@ -156,7 +185,11 @@ EOF
|
|||||||
|
|
||||||
# install extlinux
|
# install extlinux
|
||||||
echo "image: installing extlinux to part1..."
|
echo "image: installing extlinux to part1..."
|
||||||
extlinux --heads=4 --sector=32 -i "$OE_TMP"
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
syslinux --heads=4 --sector=32 -i "$LOOP"
|
||||||
|
else
|
||||||
|
extlinux --heads=4 --sector=32 -i "$OE_TMP"
|
||||||
|
fi
|
||||||
|
|
||||||
# copy files
|
# copy files
|
||||||
echo "image: copying files to part1..."
|
echo "image: copying files to part1..."
|
||||||
@ -166,7 +199,26 @@ EOF
|
|||||||
cp $ROOT/$TOOLCHAIN/share/syslinux/vesamenu.c32 "$OE_TMP"
|
cp $ROOT/$TOOLCHAIN/share/syslinux/vesamenu.c32 "$OE_TMP"
|
||||||
cp $ROOT/$TOOLCHAIN/share/syslinux/libcom32.c32 "$OE_TMP"
|
cp $ROOT/$TOOLCHAIN/share/syslinux/libcom32.c32 "$OE_TMP"
|
||||||
cp $ROOT/$TOOLCHAIN/share/syslinux/libutil.c32 "$OE_TMP"
|
cp $ROOT/$TOOLCHAIN/share/syslinux/libutil.c32 "$OE_TMP"
|
||||||
|
if [ "$UEFI" = "yes" ] ; then
|
||||||
|
mkdir -p "$OE_TMP/EFI/BOOT"
|
||||||
|
cp $RELEASE_DIR/splash.png "$OE_TMP/EFI/BOOT"
|
||||||
|
cp $ROOT/$TOOLCHAIN/share/syslinux/vesamenu.c32 "$OE_TMP/EFI/BOOT"
|
||||||
|
cp $ROOT/$TOOLCHAIN/share/syslinux/libcom32.c32 "$OE_TMP/EFI/BOOT"
|
||||||
|
cp $ROOT/$TOOLCHAIN/share/syslinux/libutil.c32 "$OE_TMP/EFI/BOOT"
|
||||||
|
cp $ROOT/$TOOLCHAIN/share/syslinux/syslinux.efi "$OE_TMP/EFI/BOOT/bootx64.efi"
|
||||||
|
cp $ROOT/$TOOLCHAIN/share/syslinux/ldlinux.e64 "$OE_TMP/EFI/BOOT"
|
||||||
|
cat << EOF > "$OE_TMP"/EFI/BOOT/syslinux.cfg
|
||||||
|
DEFAULT live
|
||||||
|
|
||||||
|
LABEL installer
|
||||||
|
KERNEL /KERNEL
|
||||||
|
APPEND boot=UUID=$UUID_SYSTEM installer quiet tty vga=current
|
||||||
|
|
||||||
|
LABEL live
|
||||||
|
KERNEL /KERNEL
|
||||||
|
APPEND boot=UUID=$UUID_SYSTEM disk=UUID=$UUID_STORAGE quiet vga=current
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
||||||
# create bootloader configuration
|
# create bootloader configuration
|
||||||
echo "image: creating bootloader configuration..."
|
echo "image: creating bootloader configuration..."
|
||||||
@ -204,8 +256,10 @@ fi # bootloader
|
|||||||
mount "$LOOP" "$OE_TMP"
|
mount "$LOOP" "$OE_TMP"
|
||||||
|
|
||||||
# add resize mark
|
# add resize mark
|
||||||
touch "$OE_TMP/.please_resize_me"
|
if [ "$UEFI" != "yes" ] ; then
|
||||||
sync
|
touch "$OE_TMP/.please_resize_me"
|
||||||
|
sync
|
||||||
|
fi
|
||||||
|
|
||||||
# unmount part2
|
# unmount part2
|
||||||
echo "image: unmounting part2..."
|
echo "image: unmounting part2..."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user