diff options
-rw-r--r-- | sysutils/mklivecd/Makefile | 5 | ||||
-rw-r--r-- | sysutils/mklivecd/files/livecd | 38 | ||||
-rw-r--r-- | sysutils/mklivecd/files/mklivecd.8 | 57 | ||||
-rwxr-xr-x | sysutils/mklivecd/files/mklivecd.sh | 141 |
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 |