summaryrefslogtreecommitdiff
path: root/sysutils/mklivecd
diff options
context:
space:
mode:
authorxtraeme <xtraeme>2006-10-08 19:08:38 +0000
committerxtraeme <xtraeme>2006-10-08 19:08:38 +0000
commit3d74ff8b05ecb899433e991b5a99ab7b7093d4a7 (patch)
tree5fee85c390ba5adb2ff5aabda2780c0a63f4e8df /sysutils/mklivecd
parent730e5e1824aef4e3fa14b25bb01f6330b3d8ba56 (diff)
downloadpkgsrc-3d74ff8b05ecb899433e991b5a99ab7b7093d4a7.tar.gz
Update to the long awaited 0.14 version with the following changes:
* Support for tmpfs, enabled via MNT_RAMFS_{ARGS,CMD}. To use tmpfs and all the available RAM in the machine, use the following lines in your configuration file: MNT_RAMFS_CMD="mount_tmpfs" MNT_RAMFS_ARGS="tmpfs" By default it will default to MNT_RAMFS_CMD="mount_mfs" and MNT_RAMFS_ARGS="-s 128m swap" to maintain compatibility with NetBSD versions < 4.0. * Support to mount a specific PACKAGES directory via PACKAGESDIR in the configuration file. * Added CDRECORD_BIN and MKISOFS_BIN to specify alternative binaries. * Remove MNT_FOO_ARGS, mount_null(8) is used on the root memory filesystem to mount all dependent directories. * Fix booting with GNU GRUB and MULTIBOOT on >=4.0. Please upgrade to this version and let me know if you are not happy...
Diffstat (limited to 'sysutils/mklivecd')
-rw-r--r--sysutils/mklivecd/Makefile5
-rw-r--r--sysutils/mklivecd/files/livecd38
-rw-r--r--sysutils/mklivecd/files/mklivecd.857
-rwxr-xr-xsysutils/mklivecd/files/mklivecd.sh141
4 files changed, 166 insertions, 75 deletions
diff --git a/sysutils/mklivecd/Makefile b/sysutils/mklivecd/Makefile
index 2c097339eb1..f84dd766074 100644
--- a/sysutils/mklivecd/Makefile
+++ b/sysutils/mklivecd/Makefile
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.28 2006/02/05 23:10:55 joerg Exp $
+# $NetBSD: Makefile,v 1.29 2006/10/08 19:08:38 xtraeme Exp $
-DISTNAME= mklivecd-0.13.3
-PKGREVISION= 1
+DISTNAME= mklivecd-0.14
CATEGORIES= sysutils
MASTER_SITES= # empty
DISTFILES= # empty
diff --git a/sysutils/mklivecd/files/livecd b/sysutils/mklivecd/files/livecd
index 92b8234901c..5a7ee90a15b 100644
--- a/sysutils/mklivecd/files/livecd
+++ b/sysutils/mklivecd/files/livecd
@@ -1,4 +1,4 @@
-# $NetBSD: livecd,v 1.2 2005/08/13 23:35:45 xtraeme Exp $
+# $NetBSD: livecd,v 1.3 2006/10/08 19:08:38 xtraeme Exp $
#
# Mount mfs directories and unpack the required files
# before anything.
@@ -21,27 +21,27 @@ livecd_start()
/rescue/mount -r /dev/vnd0a /usr
fi
- echo -n "=> Mounting Memory based filesystems: "
+ echo -n "=> Mounting memory filesystem directories: "
- mount_mfs @MNT_DEV_ARGS@ swap /dev
- echo -n "/dev, "
+ /rescue/@MNT_RAMFS_CMD@ @MNT_RAMFS_ARGS@ /ramfs
- mount_mfs @MNT_ETC_ARGS@ swap /etc
- echo -n "/etc, "
-
- mount_mfs @MNT_ROOT_ARGS@ swap /root
- echo -n "/root, "
-
- mount_mfs @MNT_TMP_ARGS@ swap /tmp
- echo -n "/tmp, "
-
- mount_mfs @MNT_VAR_ARGS@ swap /var
- echo "/var."
+ for f in dev etc root tmp var
+ do
+ /rescue/mkdir /ramfs/$f
+ /rescue/mount_null /ramfs/$f /$f
+ if [ "$f" = "var" ]; then
+ echo "/$f"
+ else
+ echo -n "/$f, "
+ fi
+ done
- @HOME@
- @HOMETAR@
- @USRPKGETC@
- @USRPKGETCTAR@
+ @HOME_MKDIR@
+ @HOME_MOUNT@
+ @HOME_UNPACK@
+ @USRPKGETC_MKDIR@
+ @USRPKGETC_MOUNT@
+ @USRPKGETC_UNPACK@
for f in mfs_dev mfs_etc mfs_var mfs_root
do
diff --git a/sysutils/mklivecd/files/mklivecd.8 b/sysutils/mklivecd/files/mklivecd.8
index 82eb6fc4cdd..b0ae08420b1 100644
--- a/sysutils/mklivecd/files/mklivecd.8
+++ b/sysutils/mklivecd/files/mklivecd.8
@@ -1,8 +1,8 @@
-.\" $NetBSD: mklivecd.8,v 1.12 2005/08/11 20:48:55 xtraeme Exp $
+.\" $NetBSD: mklivecd.8,v 1.13 2006/10/08 19:08:38 xtraeme Exp $
.\"
.\" mklivecd - Make your own NetBSD/i386 Live CD-ROM/DVD-ROM
.\"
-.\" Copyright (c) 2004, 2005 Juan Romero Pardines <xtraeme@NetBSD.org>
+.\" Copyright (c) 2004-2006 Juan Romero Pardines <xtraeme@NetBSD.org>
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -28,7 +28,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd August 11, 2005
+.Dd October 8, 2006
.Dt MKLIVECD 8
.Os
.Sh NAME
@@ -127,7 +127,7 @@ Defaults to
.It PKGSRCDIR
The
.Nx
-packages collection directory.
+pkgsrc collection directory.
When the
.Ar chroot
target is invoked, the pkgsrc directory will be mounted via
@@ -145,6 +145,16 @@ target is invoked, the distfiles directory will be mounted via
.Xr mount_null 8 .
Defaults to
.Pa /usr/pkgsrc/distfiles .
+.It PACKAGESDIR
+The
+.Nx
+packages pkgsrc directory.
+When the
+.Ar chroot
+target is invoked, the packages directory will be mounted via
+.Xr mount_null 8 .
+Defaults to
+.Pa /usr/pkgsrc/packages .
.It SHAREDIR
The main directory used to store the Makefiles, kernel, example configuration
files, etc.
@@ -210,6 +220,12 @@ when burning the
Live CD ISO image.
Defaults to
.Sy -v .
+.It CDRECORD_BIN
+Name of the cdrecord binary used by
+.Nm
+to burn the image.
+Defaults to
+.Sy @PREFIX@/bin/cdrecord .
.It CDROM_DEVICE
Used in the target
.Ar burn
@@ -244,6 +260,12 @@ when creating the
ISO image.
Defaults to
.Sy -nobak -J -R -v .
+.It MKISOFS_BIN
+Name of the mkisofs binary used by
+.Nm
+to build the image.
+Defaults to
+.Sy @PREFIX@/bin/mkisofs .
.It PERSONAL_CONFIG
If set to
.Sy yes ,
@@ -289,7 +311,7 @@ this option is only available on
.Nx
>=4.0. Defaults to
.Sy no .
-.It MNT_{MOUNT_POINT}_ARGS
+.It MNT_RAMFS_ARGS
This specifies the arguments passed to the
.Xr mount 8
command used in the
@@ -297,10 +319,24 @@ command used in the
script, when the
.Nx
Live CD is booted.
-You shouldn't add
-.Sy swap
-at the end, because it will be added automatically by
-the script.
+By default it will contain
+.Sy -s 128m swap
+to be used by
+.Xr mount_mfs 8 .
+If you want to use
+.Xr mount_tmpfs 8
+change it just to
+.Sy tmpfs .
+.It MNT_RAMFS_CMD
+This specifies the
+.Xr mount 8
+command used by
+.Nm
+in the boot configuration stage. Defaults to
+.Pa mount_mfs .
+Can be changed to
+.Pa mount_tmpfs
+too.
.El
.Sh TARGETS
A target specifies what
@@ -467,7 +503,8 @@ It is not perfect but at least it does its task correctly.
.Sh SEE ALSO
.Xr packages 7 ,
.Xr mount_mfs 8 ,
-.Xr mount_null 8
+.Xr mount_null 8,
+.Xr mount_tmpfs 8
.Sh AUTHORS
The
.Nm
diff --git a/sysutils/mklivecd/files/mklivecd.sh b/sysutils/mklivecd/files/mklivecd.sh
index 457056ee54d..905fbe6144c 100755
--- a/sysutils/mklivecd/files/mklivecd.sh
+++ b/sysutils/mklivecd/files/mklivecd.sh
@@ -1,8 +1,8 @@
#!/bin/sh
#
-# $NetBSD: mklivecd.sh,v 1.24 2005/10/08 23:20:10 xtraeme Exp $
+# $NetBSD: mklivecd.sh,v 1.25 2006/10/08 19:08:38 xtraeme Exp $
#
-# Copyright (c) 2004, 2005 The NetBSD Foundation, Inc.
+# Copyright (c) 2004-2006 Juan Romero Pardines.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
@@ -46,8 +46,7 @@
: ${tmp_file:=/tmp/${progname}.$$}
: ${pkgsrc_mntstat:=$config_dir/pkgsrc_mount.stat}
: ${pkgsrcdist_mntstat:=$config_dir/pkgsrcdist_mount.stat}
-: ${MKISOFS:=@LOCALBASE@/bin/mkisofs}
-: ${CDRECORD:=@LOCALBASE@/bin/cdrecord}
+: ${packages_mntstat:=$config_dir/packages_mount.stat}
#
# NetBSD >= 4.0 has cdboot, no need to use grub here.
#
@@ -122,23 +121,22 @@ bye()
do_conf()
{
- BASE_VARS="SOURCEDIR PKGSRCDIR PKGSRCDISTDIR SHAREDIR BASEDIR WORKDIR \
- ISODIR BASE_SETS_DIR X11_SETS_DIR BASE_SETS X11_SETS \
+ BASE_VARS="SOURCEDIR PACKAGESDIR PKGSRCDIR PKGSRCDISTDIR SHAREDIR BASEDIR \
+ WORKDIR ISODIR BASE_SETS_DIR X11_SETS_DIR BASE_SETS X11_SETS \
CHROOT_SHELL"
KERNEL_VARS="MULTIPLE_KERNELS BOOTKERN KERNEL_NAME"
- MISC_VARS="ENABLE_X11 MKISOFS_ARGS CDRECORD_ARGS BLANK_BEFORE_BURN \
- CDROM_DEVICE PERSONAL_CONFIG IMAGE_NAME PKG_SYSCONFDIR \
- REMOVE_DIRS USE_GNU_GRUB GRUB_FILES_DIR HOSTNAME \
+ MISC_VARS="ENABLE_X11 MKISOFS_BIN MKISOFS_ARGS CDRECORD_BIN CDRECORD_ARGS \
+ BLANK_BEFORE_BURN CDROM_DEVICE PERSONAL_CONFIG IMAGE_NAME \
+ PKG_SYSCONFDIR REMOVE_DIRS USE_GNU_GRUB GRUB_FILES_DIR HOSTNAME \
VND_COMPRESSION"
- MNT_VARS="MNT_ETC_ARGS MNT_VAR_ARGS MNT_ROOT_ARGS \
- MNT_TMP_ARGS MNT_HOME_ARGS MNT_PKG_SYSCONFDIR_ARGS \
- MNT_DEV_ARGS"
+ MNT_VARS="MNT_RAMFS_CMD MNT_RAMFS_ARGS"
# Base directories/sets
: ${SOURCEDIR:=/usr/src}
+ : ${PACKAGESDIR:=/usr/pkgsrc/packages}
: ${PKGSRCDIR:=/usr/pkgsrc}
: ${PKGSRCDISTDIR:=/usr/pkgsrc/distfiles}
: ${SHAREDIR:=@PREFIX@/share/mklivecd}
@@ -159,7 +157,9 @@ do_conf()
# Miscellaneous options
: ${ENABLE_X11:=no}
+ : ${MKISOFS_BIN:=@PREFIX@/bin/mkisofs}
: ${MKISOFS_ARGS:=-J -R -nobak -v}
+ : ${CDRECORD_BIN:=@PREFIX@/bin/cdrecord}
: ${CDRECORD_ARGS:=-v}
: ${BLANK_BEFORE_BURN:=no}
: ${CDROM_DEVICE:=15,1,0}
@@ -173,15 +173,8 @@ do_conf()
#
# Mount arguments
#
- # Best value for /dev, there are >512 inodes free and some Kbytes free too.
- # I don't recommend changing this!
- : ${MNT_DEV_ARGS:=-o noatime -s 512k -i 64}
- : ${MNT_ETC_ARGS:=-o noatime -s 2m}
- : ${MNT_VAR_ARGS:=-o noatime -s 10m}
- : ${MNT_ROOT_ARGS:=-o noatime -s 5m}
- : ${MNT_TMP_ARGS:=-o noatime -s 10m}
- : ${MNT_HOME_ARGS:=-o noatime -s 50m}
- : ${MNT_PKG_SYSCONFDIR_ARGS:=-o noatime -s 1m}
+ : ${MNT_RAMFS_CMD:=mount_mfs}
+ : ${MNT_RAMFS_ARGS:=-s 128m swap}
[ ! -d $config_dir ] && mkdir $config_dir
@@ -347,8 +340,7 @@ do_build_kernels()
config -s $SOURCEDIR/sys -b $WORKDIR/$kernname $bootkern
cd $kernname
- make depend
- make COPTS="-Os" # Don't use additional flags
+ make depend && make
if [ "$?" -eq 0 ]; then
if [ "$USE_GNU_GRUB" = "yes" ]; then
cp $WORKDIR/$kernname/netbsd $ISODIR/$GRUB_BOOTDIR/$bootkern
@@ -545,12 +537,12 @@ do_cdlive()
( \
echo "livecd=yes"; \
- echo "dhclient=yes dhclient_flags=-q"; \
+ echo "dhclient=no"; \
echo "wscons=yes"; \
echo "hostname=$HOSTNAME"; \
echo "nfs_client=yes"; \
echo "inetd=no"; \
- echo "ntpdate=yes"; \
+ echo "ntpdate=no"; \
echo "savecore=no"; \
) >> $ISODIR/etc/rc.conf
@@ -561,7 +553,7 @@ do_cdlive()
cat > $ISODIR/etc/rc.d/root <<_EOF_
#!/bin/sh
#
-# \$NetBSD: mklivecd.sh,v 1.24 2005/10/08 23:20:10 xtraeme Exp $
+# \$NetBSD: mklivecd.sh,v 1.25 2006/10/08 19:08:38 xtraeme Exp $
#
# PROVIDE: root
@@ -606,6 +598,9 @@ _EOF_
[ ! -d $ISODIR/usr/pkgsrc/distfiles ] && \
mkdir -p $ISODIR/usr/pkgsrc/distfiles
+ [ ! -d $ISODIR/usr/pkgsrc/packages ] && \
+ mkdir -p $ISODIR/usr/pkgsrc/packages
+
[ ! -f $ISODIR/usr/share/misc/termcap ] && \
cp /usr/share/misc/termcap* $ISODIR/usr/share/misc
@@ -645,6 +640,23 @@ _EOF_
echo "==> CANNOT FIND $PKGSRCDISTDIR"
fi
+ if [ -d $PACKAGESDIR ]; then
+ if [ -f $packages_mntstat ]; then
+ count=$(cat $packages_mntstat)
+ count=$(($count + 1))
+ echo $count > $packages_mntstat
+ echo "=> packages directory already mounted."
+ else
+ mount_null $PACKAGESDIR $ISODIR/usr/pkgsrc/packages
+ if [ "$?" -eq 0 ]; then
+ echo "=> packages directory ready."
+ echo "1" > $packages_mntstat
+ fi
+ fi
+ else
+ echo "==> CANNOT FIND $PACKAGESDIR"
+ fi
+
echo
chroot $ISODIR $CHROOT_SHELL
echo
@@ -657,16 +669,17 @@ _EOF_
cd $ISODIR
cp -f $SHAREDIR/livecd $ISODIR/etc/rc.d
- SUBST_H="mount_mfs $MNT_HOME_ARGS swap /home"
- SUBST_HT="@TAR@ xfzp /stand/mfs_home.tgz -C /"
- SUBST_S="mount_mfs $MNT_PKG_SYSCONFDIR_ARGS swap /$PKG_SYSCONFDIR"
- SUBST_ST="@TAR@ xfzp /stand/mfs_pkg_sysconfdir.tgz -C /"
+ mkdir -p $ISODIR/ramfs
+
+ SUBST_H_MKDIR="mkdir -p /ramfs/home"
+ SUBST_H_MNT="$MNT_RAMFS_CMD $MNT_RAMFS_ARGS /ramfs/home /home"
+ SUBST_H_UNPACK="@TAR@ xfzp /stand/mfs_home.tgz -C /"
+ SUBST_S_MKDIR="mkdir -p /ramfs/pkg_sysconfdir"
+ SUBST_S_MNT="$MNT_RAMFS_CMD $MNT_RAMFS_ARGS /ramfs/pkg_sysconfdir /usr/pkg/etc"
+ SUBST_S_UNPACK="@TAR@ xfzp /stand/mfs_pkg_sysconfdir.tgz -C /"
- sed -e "s|@MNT_ETC_ARGS@|$MNT_ETC_ARGS|g" \
- -e "s|@MNT_DEV_ARGS@|$MNT_DEV_ARGS|g" \
- -e "s|@MNT_VAR_ARGS@|$MNT_VAR_ARGS|g" \
- -e "s|@MNT_ROOT_ARGS@|$MNT_ROOT_ARGS|g" \
- -e "s|@MNT_TMP_ARGS@|$MNT_TMP_ARGS|g" \
+ sed -e "s|@MNT_RAMFS_ARGS@|$MNT_RAMFS_ARGS|g" \
+ -e "s|@MNT_RAMFS_CMD@|$MNT_RAMFS_CMD|g" \
$ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.in
mv $ISODIR/etc/rc.d/livecd.in $ISODIR/etc/rc.d/livecd
@@ -686,11 +699,15 @@ _EOF_
fi
if [ -d $ISODIR/home ]; then
- sed -e "s|@HOME@|$SUBST_H|" -e "s|@HOMETAR@|$SUBST_HT|" \
+ sed -e "s|@HOME_MKDIR@|$SUBST_H_MKDIR|" \
+ -e "s|@HOME_MOUNT@|$SUBST_H_MOUNT|" \
+ -e "s|@HOME_UNPACK@|$SUBST_H_UNPACK|" \
$ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f
mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd
else
- sed -e "s|@HOME@||" -e "s|@HOMETAR@||" \
+ sed -e "s|@HOME_MKDIR@||" \
+ -e "s|@HOME_MOUNT@||" \
+ -e "s|@HOME_UNPACK@||" \
$ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f
mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd
fi
@@ -700,11 +717,15 @@ _EOF_
@TAR@ cfzp $ISODIR/stand/mfs_pkg_sysconfdir.tgz \
$PKG_SYSCONFDIR >/dev/null 2>&1
showmsgstring
- sed -e "s|@USRPKGETC@|$SUBST_S|" -e "s|@USRPKGETCTAR@|$SUBST_ST|" \
+ sed -e "s|@USRPKGETC_MKDIR@|$SUBST_S_MKDIR|" \
+ -e "s|@USRPKGETC_MOUNT@|$SUBST_S_MOUNT|" \
+ -e "s|@USRPKGETC_UNPACK@|$SUBST_S_UNPACK|" \
$ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f
mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd
else
- sed -e "s|@USRPKGETC@||" -e "s|@USRPKGETCTAR@||" \
+ sed -e "s|@USRPKGETC_MKDIR@||" \
+ -e "s|@USRPKGETC_MOUNT@||" \
+ -e "s|@USRPKGETC_UNPACK@||" \
$ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f
mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd
fi
@@ -739,6 +760,9 @@ _EOF_
chmod -R a+rx $ISODIR/etc/rc.d
+ #
+ # Unmount pkgsrc related directories.
+ #
if [ ! -f $pkgsrcdist_mntstat ]; then
showmsg "distfiles directory was not mounted."
else
@@ -760,6 +784,26 @@ _EOF_
fi
fi
+ if [ ! -f $packages_mntstat ]; then
+ showmsg "packages directory was not mounted."
+ else
+ cnt=$(cat $packages_mntstat)
+ if [ "$cnt" -gt 1 ]; then
+ cnt=$(($cnt - 1))
+ echo $cnt > $packages_mntstat
+ echo "=>pkgsrc directory still in use by mklivecd."
+ else
+ [ -n "$verbose_mode" ] && \
+ echo "=> Unmounting packages directory."
+ umount -R $ISODIR/usr/pkgsrc/packages
+ if [ "$?" -eq 0 ]; then
+ rm $packages_mntstat
+ else
+ echo "Can't umount $PACKAGESDIR."
+ fi
+ fi
+ fi
+
if [ ! -f $pkgsrc_mntstat ]; then
showmsg "pkgsrc directory was not mounted."
else
@@ -835,6 +879,17 @@ _EOF_
fi
fi
+ #
+ # Detect if we are running a MULTIBOOT kernel.
+ #
+ grep -q MULTIBOOT $WORKDIR/$BOOTKERN
+ if [ "$?" -eq 0 ]; then
+ showmsg "Applying fix for MULTIBOOT kernel..."
+ sed -e "s|\--type=netbsd||g" $ISODIR/boot/grub/menu.lst > \
+ $ISODIR/boot/grub/menu.lst.in
+ mv $ISODIR/boot/grub/menu.lst.in $ISODIR/boot/grub/menu.lst
+ fi
+
_do_real_iso_image()
{
if [ -f "$BASEDIR/$IMAGE_NAME.iso" ]; then
@@ -861,12 +916,12 @@ _EOF_
showmsg_n "Creating ISO CD9660 image..."
if [ "$USE_GNU_GRUB" = "yes" ]; then
- $MKISOFS $MKISOFS_FIXED_ARGS $GRUB_BOOT_ARGS $MKISOFS_ARGS \
+ $MKISOFS_BIN $MKISOFS_FIXED_ARGS $GRUB_BOOT_ARGS $MKISOFS_ARGS \
-b $GRUB_BOOTDIR/$GRUB_BOOTIMAGE \
-o $BASEDIR/$IMAGE_NAME.iso $ISODIR > /dev/null 2>&1
showmsgstring
else
- $MKISOFS $MKISOFS_FIXED_ARGS $MKISOFS_ARGS \
+ $MKISOFS_BIN $MKISOFS_FIXED_ARGS $MKISOFS_ARGS \
-b ${CDBOOT_IMG} -o $BASEDIR/$IMAGE_NAME.iso $ISODIR \
> /dev/null 2>&1
showmsgstring
@@ -892,9 +947,9 @@ _EOF_
fi
[ "$BLANK_BEFORE_BURN" = "yes" ] && \
- $CDRECORD dev=$CDROM_DEVICE $CDRECORD_ARGS blank=fast
+ $CDRECORD_BIN dev=$CDROM_DEVICE $CDRECORD_ARGS blank=fast
- $CDRECORD dev=$CDROM_DEVICE $CDRECORD_ARGS $BASEDIR/$IMAGE_NAME.iso
+ $CDRECORD_BIN dev=$CDROM_DEVICE $CDRECORD_ARGS $BASEDIR/$IMAGE_NAME.iso
;;
esac