scripts/targets/Linux-i386

148 lines
3.6 KiB
Plaintext

#$Id$
#Copyright (c) 2009 Pierre Pronchery <khorben@defora.org>
#variables
#XXX insert i386-specific variables here (grub...)
[ -z "$GENEXT2FS" ] && GENEXT2FS="genext2fs"
#includes
. "`dirname $0`/Apps/Devel/src/scripts/targets/Linux"
#functions
#private
_image_image()
{
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
$MKDIR "$DESTDIR" || exit 2
$UMOUNT "$DESTDIR"
$DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" &&
$MKFS "$IMAGE_FILE" || exit 2
$MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2
target "install"
RET=$?
$UMOUNT "$DESTDIR"
exit $RET
}
_image_iso()
{
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
$MKDIR "$DESTDIR" || exit 2
target "install" || exit 2
#install kernel with ramdisk and modules
$MKDIR "$DESTDIR/boot" || exit 2
$INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/$KERNEL" || exit 2
if [ ! -z "$IMAGE_RAMDISK" ]; then
$INSTALL -m 644 "$IMAGE_RAMDISK" "$DESTDIR/$RAMDISK"
GRUB_INITRD="initrd $RAMDISK"
fi
[ ! -z "$IMAGE_MODULES" ] && $CAT "$IMAGE_MODULES" | \
(cd "$DESTDIR" && $TAR -xzf -)
#setup bootloader
$MKDIR "$DESTDIR/boot/grub" || exit 2
$INSTALL -m 644 "/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
$MKISOFS -J -r -b "boot/grub/stage2_eltorito" -no-emul-boot \
-boot-load-size 4 -boot-info-table \
-o "$IMAGE_FILE" "$DESTDIR"
}
_image_ramdisk()
{
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\
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
$MKDIR "$DESTDIR" || exit 2
target "install" || exit 2
#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
$INSTALL -m 755 "$TOOLS/linuxrc" "$DESTDIR/linuxrc" || exit 2
#setup init
_create_directories "dev" "lib" "proc" "mnt/cdrom" "sbin" \
|| exit 2
$LN -s "../mnt/cdrom/usr/bin/sh" "$DESTDIR/sbin/init" || exit 2
#install loader
$INSTALL -m 755 "/lib/ld-linux.so.2" "$DESTDIR/lib" || exit 2
echo
echo -n "Creating ramdisk:"
$GENEXT2FS -b "$IMAGE_SIZE" -d "$DESTDIR" "$IMAGE_FILE" || exit 2
echo
$DU "$IMAGE_FILE"
echo
echo -n "Compressing ramdisk:"
$GZIP "$IMAGE_FILE" || exit 2
$MV "$IMAGE_FILE.gz" "$IMAGE_FILE" || exit 2
echo
$DU "$IMAGE_FILE"
}
#public
target_image()
{
case "$IMAGE_TYPE" in
"iso")
_image_iso
;;
"ramdisk")
_image_ramdisk
;;
*)
_image_image
;;
esac
}