181 lines
4.1 KiB
Plaintext
181 lines
4.1 KiB
Plaintext
#$Id$
|
|
#Copyright (c) 2008-2013 Pierre Pronchery <khorben@defora.org>
|
|
|
|
|
|
|
|
#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
|
|
}
|