#$Id$ #Copyright (c) 2008-2013 Pierre Pronchery #variables #XXX insert i386-specific variables here (grub...) [ -z "$GENEXT2FS" ] && GENEXT2FS="genext2fs" [ -z "$LDSO" ] && LDSO="/lib/ld-linux.so.2" #includes #XXX hardcoded . "`dirname $0`/Apps/Devel/src/scripts/scripts-git/targets/Linux" #functions #private _image_image_pre() { USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ IMAGE_FILE Where to write the filesystem image\n\ IMAGE_KERNEL Path to the kernel\n\ IMAGE_SIZE Size of the filesystem image in kilobytes\n\ MKFS Command used to create the filesystem" #sanity check check "$USAGE" DD DESTDIR DEVZERO IMAGE_FILE IMAGE_KERNEL IMAGE_SIZE \ MKDIR MKFS MOUNT UMOUNT $DEBUG $MKDIR -- "$DESTDIR" || exit 2 $DEBUG $UMOUNT "$DESTDIR" $DEBUG $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && $DEBUG $MKFS "$IMAGE_FILE" || exit 2 $DEBUG $MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2 } _image_image_post() { ret=$? $DEBUG $UMOUNT "$DESTDIR" exit $ret } _image_iso_pre() { USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ IMAGE_FILE Where to write the filesystem image\n\ IMAGE_KERNEL Path to the kernel\n\ IMAGE_MODULES Path to a tar.gz archive of kernel modules (optional)\n\ IMAGE_RAMDISK Path to the ramdisk (optional)\n\ KERNEL_ARGS Additional arguments to give to the kernel (optional)\n\ MKISOFS Command used to create the ISO image" #sanity check check "$USAGE" CAT DESTDIR KERNEL IMAGE_FILE IMAGE_KERNEL INSTALL \ MKDIR MKISOFS RAMDISK TAR $DEBUG $MKDIR -- "$DESTDIR" || exit 2 } _image_iso_post() { #install kernel with ramdisk and modules $DEBUG $MKDIR -- "$DESTDIR/boot" || exit 2 $DEBUG $INSTALL -m 0755 "$IMAGE_KERNEL" "$DESTDIR/$KERNEL" \ || exit 2 if [ ! -z "$IMAGE_RAMDISK" ]; then $DEBUG $INSTALL -m 0644 "$IMAGE_RAMDISK" "$DESTDIR/$RAMDISK" \ || exit 2 GRUB_INITRD="initrd $RAMDISK" fi [ ! -z "$IMAGE_MODULES" ] && $CAT "$IMAGE_MODULES" | \ (cd "$DESTDIR" && $TAR -xzf -) #setup bootloader $DEBUG $MKDIR -- "$DESTDIR/boot/grub" || exit 2 $DEBUG $INSTALL -m 0644 "/usr/lib/grub/i386-pc/stage2_eltorito" \ "$DESTDIR/boot/grub" || exit 2 $CAT > "$DESTDIR/boot/grub/menu.lst" << EOF default 0 timeout 10 title $VENDOR kernel $KERNEL $KERNEL_ARGS $GRUB_INITRD EOF $DEBUG $MKISOFS -J -r -b "boot/grub/stage2_eltorito" -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -o "$IMAGE_FILE" "$DESTDIR" || exit 2 } _image_ramdisk_pre() { USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ IMAGE_FILE Where to write the filesystem image\n\ IMAGE_MODULES Path to a tar.gz archive of kernel modules (optional)\n\ IMAGE_SIZE Size of the filesystem image in kilobytes\n\ LDSO Path to the dynamic loader GENEXT2FS Command used to generate the ramdisk image" #sanity check check "$USAGE" DD DESTDIR DEVZERO DU GENEXT2FS GZIP IMAGE_FILE \ IMAGE_SIZE INSTALL LN MKDIR MKFS MV $DEBUG $MKDIR -- "$DESTDIR" || exit 2 } _image_ramdisk_post() { #install kernel modules [ ! -z "$IMAGE_MODULES" ] && $CAT "$IMAGE_MODULES" | \ (cd "$DESTDIR" && $TAR -xzf -) #compile and install linuxrc TOOLS="Apps/Unix/src/others/tools" SUBDIRS="$TOOLS" _target linuxrc || exit 2 $DEBUG $INSTALL -m 0755 "$TOOLS/linuxrc" "$DESTDIR/linuxrc" \ || exit 2 #setup init _create_directories "dev" "lib" "proc" "mnt/cdrom" "sbin" \ || exit 2 $DEBUG $LN -s "../mnt/cdrom/usr/bin/sh" "$DESTDIR/sbin/init" \ || exit 2 #install loader $DEBUG $INSTALL -m 0755 "$LDSO" "$DESTDIR/lib" || exit 2 echo echo -n "Creating ramdisk:" $DEBUG $GENEXT2FS -b "$IMAGE_SIZE" -d "$DESTDIR" "$IMAGE_FILE" \ || exit 2 echo $DU "$IMAGE_FILE" echo echo -n "Compressing ramdisk:" $DEBUG $GZIP "$IMAGE_FILE" || exit 2 $DEBUG $MV "$IMAGE_FILE.gz" "$IMAGE_FILE" || exit 2 echo $DEBUG $DU "$IMAGE_FILE" } #public #_image_post _image_post() { case "$IMAGE_TYPE" in "iso") _image_iso_post ;; "ramdisk") _image_ramdisk_post ;; *) _image_image_post ;; esac } #_image_pre _image_pre() { case "$IMAGE_TYPE" in "iso") _image_iso_pre ;; "ramdisk") _image_ramdisk_pre ;; *) _image_image_pre ;; esac }