You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
#!/bin/bash
|
|
# Linux Live Kit version 7
|
|
|
|
export PATH=.:./tools:../tools:/usr/sbin:/usr/bin:/sbin:/bin:/
|
|
|
|
CHANGEDIR=$(dirname $(readlink -f $0))
|
|
echo "Changing current directory to $CHANGEDIR"
|
|
CWD="$(pwd)"
|
|
cd $CHANGEDIR
|
|
|
|
. ./config || exit 1
|
|
. ./livekitlib || exit 1
|
|
|
|
# only root can continue, because only root can read all files from your system
|
|
allow_only_root
|
|
|
|
# check for mksquashfs with xz compression
|
|
if [ "$(mksquashfs 2>&1 | grep "Xdict-size")" = "" ]; then
|
|
echo "mksquashfs not found or doesn't support -comp xz, aborting, no changes made"
|
|
echo "you may consider installing squashfs-tools package"
|
|
exit 1
|
|
fi
|
|
|
|
MKISOFS=$(which mkisofs)
|
|
if [ "$MKISOFS" = "" ]; then
|
|
MKISOFS=$(which genisoimage)
|
|
fi
|
|
if [ "$MKISOFS" = "" ]; then
|
|
echo "Cannot found mkisofs or genisoimage, stop"
|
|
exit 3
|
|
fi
|
|
|
|
# build initramfs image
|
|
if [ "$SKIPINITRFS" = "" ]; then
|
|
echo "Building intramfs image..."
|
|
cd initramfs
|
|
INITRAMFS=$(./initramfs_create)
|
|
cd ..
|
|
fi
|
|
|
|
# create live kit filesystem (cpio archive)
|
|
rm -Rf "$LIVEKITDATA"
|
|
BOOT="$LIVEKITDATA"/"$LIVEKITNAME"/boot
|
|
mkdir -p "$BOOT"
|
|
mkdir -p "$BOOT"/../changes
|
|
mkdir -p "$BOOT"/../modules
|
|
|
|
if [ "$INITRAMFS" != "" ]; then
|
|
mv "$INITRAMFS" $BOOT/initrfs.img
|
|
fi
|
|
|
|
# BIOS / MBR booting
|
|
cp -r bootfiles/* $BOOT
|
|
cat bootfiles/syslinux.cfg | sed -r "s:/boot/:/$LIVEKITNAME/boot/:" > $BOOT/syslinux.cfg
|
|
cat bootfiles/bootinst.bat | sed -r "s:/boot/:/$LIVEKITNAME/boot/:" | sed -r "s:\\\\boot\\\\:\\\\$LIVEKITNAME\\\\boot\\\\:" > $BOOT/bootinst.bat
|
|
cp $VMLINUZ $BOOT/ || exit
|
|
|
|
# UEFI booting
|
|
mkdir -p $BOOT/EFI/Boot
|
|
cp bootfiles/EFI/Boot/syslinux.efi $BOOT/EFI/Boot/bootx64.efi
|
|
cp bootfiles/EFI/Boot/{ldlinux.e64,menu.c32,libutil.c32,vesamenu.c32,libcom32.c32} $BOOT/EFI/Boot
|
|
cat $BOOT/syslinux.cfg | sed -r "s:/$LIVEKITNAME/boot/vesamenu:vesamenu:" > $BOOT/EFI/Boot/syslinux.cfg
|
|
|
|
# create compressed 01-core.sb
|
|
COREFS=""
|
|
for i in $MKMOD; do
|
|
if [ -d /$i ]; then
|
|
COREFS="$COREFS /$i"
|
|
fi
|
|
done
|
|
mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp xz -b 1024K -always-use-fragments -keep-as-directory || exit
|
|
|
|
cd "$LIVEKITDATA"
|
|
ARCH=$(uname -m)
|
|
TARGET=/tmp
|
|
|
|
cat "$CWD/bootinfo.txt" | fgrep -v "#" | sed -r "s/mylinux/$LIVEKITNAME/" | sed -r "s/\$/\x0D/" > readme.txt
|
|
|
|
echo cd $LIVEKITDATA '&&' $MKISOFS -o "$TARGET/$LIVEKITNAME-$ARCH.iso" -v -J -R -D -A "$LIVEKITNAME" -V "$LIVEKITNAME" \
|
|
-no-emul-boot -boot-info-table -boot-load-size 4 \
|
|
-b "$LIVEKITNAME"/boot/isolinux.bin -c "$LIVEKITNAME"/boot/isolinux.boot . \
|
|
> $TARGET/gen_"$LIVEKITNAME"_iso.sh
|
|
chmod o+x $TARGET/gen_"$LIVEKITNAME"_iso.sh
|
|
|
|
echo cd $LIVEKITDATA '&&' zip -0 -r "$TARGET/$LIVEKITNAME-$ARCH.zip" '*' \
|
|
> $TARGET/gen_"$LIVEKITNAME"_zip.sh
|
|
chmod o+x $TARGET/gen_"$LIVEKITNAME"_zip.sh
|
|
|
|
echo "-----------------------------"
|
|
echo "Finished. Find your result in $LIVEKITDATA"
|
|
echo "To build ISO, run: $TARGET/gen_"$LIVEKITNAME"_iso.sh"
|
|
echo "To build ZIP, run: $TARGET/gen_"$LIVEKITNAME"_zip.sh"
|
|
cd $CWD
|
|
|