From 3ee187be18c7353afb9121f2453dae5f8bf3f4da Mon Sep 17 00:00:00 2001 From: xtraeme Date: Thu, 11 Aug 2005 20:48:55 +0000 Subject: Update to 0.13.0 Changes: * New option added: VND_COMPRESSION. To enable vnd(4) compression on /usr and /var/db/pkg (at the moment). * Fixed a problem with -k and USE_GNU_GRUB=yes, building a kernel with -k overwrites the "menu.lst" file. * Only copy /etc/X11/XF86Config to $ISODIR when there is not a previous file, fixes PR pkg/30889. * Renamed the rc.d script mfs_rcd to livecd, because it's not only mfs anymore. Finally we can have kde-3.4.2 with NetBSD in a live CD-ROM: 416M netbsd-3.99.7_kde-3.4.2.iso Enjoy. --- sysutils/mklivecd/Makefile | 9 ++- sysutils/mklivecd/PLIST | 4 +- sysutils/mklivecd/files/livecd | 71 +++++++++++++++++++++ sysutils/mklivecd/files/mfs_rcd | 51 --------------- sysutils/mklivecd/files/mklivecd.8 | 21 +++++- sysutils/mklivecd/files/mklivecd.sh | 123 ++++++++++++++++++++++++++---------- 6 files changed, 183 insertions(+), 96 deletions(-) create mode 100644 sysutils/mklivecd/files/livecd delete mode 100644 sysutils/mklivecd/files/mfs_rcd (limited to 'sysutils/mklivecd') diff --git a/sysutils/mklivecd/Makefile b/sysutils/mklivecd/Makefile index aa60bc21541..41fab1939e8 100644 --- a/sysutils/mklivecd/Makefile +++ b/sysutils/mklivecd/Makefile @@ -1,7 +1,6 @@ -# $NetBSD: Makefile,v 1.22 2005/08/02 12:32:23 xtraeme Exp $ +# $NetBSD: Makefile,v 1.23 2005/08/11 20:48:55 xtraeme Exp $ -DISTNAME= mklivecd-0.12.0 -PKGREVISION= 1 +DISTNAME= mklivecd-0.13.0 CATEGORIES= sysutils MASTER_SITES= # empty DISTFILES= # empty @@ -28,7 +27,7 @@ INSTALLATION_DIRS= man/man8 sbin share/mklivecd FILES= KERN-LIVECD personal_config do-install: -.for f in mfs_rcd mklivecd.sh mklivecd.8 +.for f in livecd mklivecd.sh mklivecd.8 @${SED} -e "s,@PREFIX@,${PREFIX},g" \ -e "s,@LOCALBASE@,${LOCALBASE},g" \ -e "s,@TAR@,${TAR},g" \ @@ -38,7 +37,7 @@ do-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/mklivecd ${INSTALL_SCRIPT} ${WRKDIR}/mklivecd.sh ${PREFIX}/sbin/mklivecd ${INSTALL_MAN} ${WRKDIR}/mklivecd.8 ${PREFIX}/man/man8 - ${INSTALL_DATA} ${WRKDIR}/mfs_rcd ${PREFIX}/share/mklivecd + ${INSTALL_DATA} ${WRKDIR}/livecd ${PREFIX}/share/mklivecd .for F in ${FILES} ${INSTALL_DATA} ${FILESDIR}/${F} ${PREFIX}/share/mklivecd .endfor diff --git a/sysutils/mklivecd/PLIST b/sysutils/mklivecd/PLIST index 5015f412e8d..947ce6f8d66 100644 --- a/sysutils/mklivecd/PLIST +++ b/sysutils/mklivecd/PLIST @@ -1,7 +1,7 @@ -@comment $NetBSD: PLIST,v 1.2 2004/04/26 17:28:58 xtraeme Exp $ +@comment $NetBSD: PLIST,v 1.3 2005/08/11 20:48:55 xtraeme Exp $ man/man8/mklivecd.8 sbin/mklivecd share/mklivecd/KERN-LIVECD -share/mklivecd/mfs_rcd +share/mklivecd/livecd share/mklivecd/personal_config @dirrm share/mklivecd diff --git a/sysutils/mklivecd/files/livecd b/sysutils/mklivecd/files/livecd new file mode 100644 index 00000000000..076157bc822 --- /dev/null +++ b/sysutils/mklivecd/files/livecd @@ -0,0 +1,71 @@ +# $NetBSD: livecd,v 1.1 2005/08/11 20:48:55 xtraeme Exp $ +# +# Mount mfs directories and unpack the required files +# before anything. + +# PROVIDE: mklivecd +# BEFORE: disks + +$_rc_subr_loaded . /etc/rc.subr + +name="livecd" +rcvar=$name + +start_cmd="livecd_start" +stop_cmd="livecd_stop" + +livecd_start() +{ + if [ -f /stand/usr.zfs ]; then + echo -n "=> Mounting compressed images: " + /rescue/vnconfig -z vnd0 /stand/usr.zfs + /rescue/mount -r /dev/vnd0a /usr + if [ ! -f /stand/var_db_pkg.zfs ]; then + echo "/usr." + else + /rescue/vnconfig -z vnd1 /stand/var_db_pkg.zfs + /rescue/mount -r /dev/vnd1a /var/db/pkg + echo "/usr, /var/db/pkg." + fi + fi + + echo -n "=> Mounting Memory based filesystems: " + + mount_mfs @MNT_DEV_ARGS@ swap /dev + echo -n "/dev, " + + mount_mfs @MNT_ETC_ARGS@ swap /etc + echo -n "/etc, " + + mount_mfs @MNT_VAR_ARGS@ swap /var + echo -n "/var, " + + mount_mfs @MNT_ROOT_ARGS@ swap /root + echo -n "/root, " + + mount_mfs @MNT_TMP_ARGS@ swap /tmp + echo "/tmp" + + @HOME@ + @HOMETAR@ + @USRPKGETC@ + @USRPKGETCTAR@ + + for f in mfs_dev mfs_etc mfs_var mfs_root + do + @TAR@ xfzp /stand/$f.tgz -C / > /dev/null 2>&1 + if [ "$?" -eq 0 ]; then + echo "=> $f unpacked successfully." + else + echo "=> $f not unpacked correctly!" + fi + done +} + +livecd_stop() +{ + echo "Please don't do that :-)" +} + +load_rc_config $name +run_rc_command "$1" diff --git a/sysutils/mklivecd/files/mfs_rcd b/sysutils/mklivecd/files/mfs_rcd deleted file mode 100644 index a4e469168f6..00000000000 --- a/sysutils/mklivecd/files/mfs_rcd +++ /dev/null @@ -1,51 +0,0 @@ -# $NetBSD: mfs_rcd,v 1.5 2005/07/29 12:13:01 xtraeme Exp $ -# -# Mount mfs directories and unpack the required files -# before anything. - -# PROVIDE: LiveCD -# BEFORE: disks - -. /etc/rc.subr - -name="mfsrc" -rcvar=$name - -start_cmd="mfsrc_start" -stop_cmd="mfsrc_stop" - -mfsrc_start() -{ - echo -n "=> Mounting Memory based filesystems: " - mount_mfs @MNT_DEV_ARGS@ swap /dev - echo -n "/dev, " - mount_mfs @MNT_ETC_ARGS@ swap /etc - echo -n "/etc, " - mount_mfs @MNT_VAR_ARGS@ swap /var - echo -n "/root, " - mount_mfs @MNT_ROOT_ARGS@ swap /root - echo "/tmp." - mount_mfs @MNT_TMP_ARGS@ swap /tmp - @HOME@ - @HOMETAR@ - @USRPKGETC@ - @USRPKGETCTAR@ - - for f in mfs_dev mfs_etc mfs_var mfs_root - do - @TAR@ xfzp /stand/$f.tgz -C / > /dev/null 2>&1 - if [ "$?" -eq 0 ]; then - echo "=> $f unpacked successfully." - else - echo "=> $f not unpacked correctly!" - fi - done -} - -mfsrc_stop() -{ - echo "Please don't do that :-)" -} - -load_rc_config $name -run_rc_command "$1" diff --git a/sysutils/mklivecd/files/mklivecd.8 b/sysutils/mklivecd/files/mklivecd.8 index 165ad7e0b1c..82eb6fc4cdd 100644 --- a/sysutils/mklivecd/files/mklivecd.8 +++ b/sysutils/mklivecd/files/mklivecd.8 @@ -1,4 +1,4 @@ -.\" $NetBSD: mklivecd.8,v 1.11 2005/07/29 12:13:01 xtraeme Exp $ +.\" $NetBSD: mklivecd.8,v 1.12 2005/08/11 20:48:55 xtraeme Exp $ .\" .\" mklivecd - Make your own NetBSD/i386 Live CD-ROM/DVD-ROM .\" @@ -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 July 25, 2005 +.Dd August 11, 2005 .Dt MKLIVECD 8 .Os .Sh NAME @@ -274,11 +274,26 @@ When it's disabled the CDBootloader will be used. Defaults to .Sy yes . +.It VND_COMPRESSION +Enable this to mount +.Pa /usr , +and +.Pa /var/db/pkg +via +.Xr vnconfig 8 +with compression enabled. +Note you'll need to have +.Sy options VND_COMPRESSION +in your kernel config, at the moment +this option is only available on +.Nx +>=4.0. Defaults to +.Sy no . .It MNT_{MOUNT_POINT}_ARGS This specifies the arguments passed to the .Xr mount 8 command used in the -.Pa mfs_rcd +.Pa livecd script, when the .Nx Live CD is booted. diff --git a/sysutils/mklivecd/files/mklivecd.sh b/sysutils/mklivecd/files/mklivecd.sh index 3bc311180e7..afc2de496b4 100755 --- a/sysutils/mklivecd/files/mklivecd.sh +++ b/sysutils/mklivecd/files/mklivecd.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: mklivecd.sh,v 1.21 2005/07/29 12:13:01 xtraeme Exp $ +# $NetBSD: mklivecd.sh,v 1.22 2005/08/11 20:48:55 xtraeme Exp $ # # Copyright (c) 2004, 2005 The NetBSD Foundation, Inc. # All rights reserved. @@ -62,6 +62,7 @@ : ${GRUB_FILES:=stage1 stage2 stage2_eltorito iso9660_stage1_5 \ xfs_stage1_5 ufs2_stage1_5 reiserfs_stage1_5 \ jfs_stage1_5 ffs_stage1_5 fat_stage1_5 e2fs_stage1_5} +: ${GRUB_BOOT_ARGS:= -boot-load-size 30 -boot-info-table} # # Common vars for cdboot/grub. # @@ -128,8 +129,9 @@ do_conf() 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" + 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 \ @@ -167,6 +169,7 @@ do_conf() : ${REMOVE_DIRS:=altroot usr/share/info} : ${USE_GNU_GRUB:=yes} : ${GRUB_FILES_DIR:=@LOCALBASE@/lib/grub/@MACHINE_ARCH@-} + : ${VND_COMPRESSION:=no} # # Mount arguments # @@ -293,9 +296,16 @@ copy_bootfiles() do_menu_lst() { - [ -n "$verbose_mode" ] && \ - showmsg_n "Creating $ISODIR/$GRUB_BOOTDIR/menu.lst..." - if [ ! -f $ISODIR/$GRUB_BOOTDIR/menu.lst ]; then + if [ -f $ISODIR/$GRUB_BOOTDIR/menu.lst ]; then + showmsg_n "Updating menu.lst..." + ( \ + echo "title NetBSD/$KERNEL_NAME kernel"; \ + echo "kernel --type=netbsd /$GRUB_BOOTDIR/$BOOTKERN.gz"; \ + echo; \ + ) >> $ISODIR/$GRUB_BOOTDIR/menu.lst + else + [ -n "$verbose_mode" ] && \ + showmsg_n "Creating $ISODIR/$GRUB_BOOTDIR/menu.lst..." cat > $ISODIR/$GRUB_BOOTDIR/menu.lst << _EOF_ # Default GRUB menu file created by ${progname}. # Date: $(date). @@ -524,7 +534,7 @@ do_cdlive() fi fi # ENABLE_X11 - cp $SHAREDIR/mfs_rcd $ISODIR/etc/rc.d + cp $SHAREDIR/livecd $ISODIR/etc/rc.d # /etc/rc.conf showmsg_n "Installing configuration files..." @@ -534,7 +544,7 @@ do_cdlive() touch $ISODIR/etc/fstab ( \ - echo "mfsrc=yes"; \ + echo "livecd=yes"; \ echo "dhclient=yes dhclient_flags=-q"; \ echo "wscons=yes"; \ echo "hostname=$HOSTNAME"; \ @@ -551,7 +561,7 @@ do_cdlive() cat > $ISODIR/etc/rc.d/root <<_EOF_ #!/bin/sh # -# \$NetBSD: mklivecd.sh,v 1.21 2005/07/29 12:13:01 xtraeme Exp $ +# \$NetBSD: mklivecd.sh,v 1.22 2005/08/11 20:48:55 xtraeme Exp $ # # PROVIDE: root @@ -608,9 +618,11 @@ _EOF_ echo $count > $pkgsrc_mntstat echo "=> pkgsrc directory already mounted." else - echo "=> pkgsrc directory ready." - echo "1" > $pkgsrc_mntstat - mount_null $PKGSRCDIR $ISODIR/usr/pkgsrc + mount_null $PKGSRCDIR $ISODIR/usr/pkgsrc + if [ "$?" -eq 0 ]; then + echo "=> pkgsrc directory ready." + echo "1" > $pkgsrc_mntstat + fi fi else showmsg "==> CANNOT FIND $PKGSRCDIR" @@ -623,9 +635,11 @@ _EOF_ echo $count > $pkgsrcdist_mntstat echo "=> distfiles directory already mounted." else - echo "=> distfiles directory ready." - echo "1" > $pkgsrcdist_mntstat - mount_null $PKGSRCDISTDIR $ISODIR/usr/pkgsrc/distfiles + mount_null $PKGSRCDISTDIR $ISODIR/usr/pkgsrc/distfiles + if [ "$?" -eq 0 ]; then + echo "=> distfiles directory ready." + echo "1" > $pkgsrcdist_mntstat + fi fi else echo "==> CANNOT FIND $PKGSRCDISTDIR" @@ -641,7 +655,7 @@ _EOF_ fi cd $ISODIR - cp -f $SHAREDIR/mfs_rcd $ISODIR/etc/rc.d + 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 /" @@ -653,26 +667,32 @@ _EOF_ -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" \ - $ISODIR/etc/rc.d/mfs_rcd > $ISODIR/etc/rc.d/mfs_rcd.in - mv $ISODIR/etc/rc.d/mfs_rcd.in $ISODIR/etc/rc.d/mfs_rcd + $ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.in + mv $ISODIR/etc/rc.d/livecd.in $ISODIR/etc/rc.d/livecd - for U in root var dev etc home + for U in root dev etc home do if [ -d $ISODIR/$U ]; then - showmsg_n "Creating /stand/mfs_$U.tgz..." + showmsg_n "Creating /stand/mfs_$U.tgz... " @TAR@ cfzp $ISODIR/stand/mfs_$U.tgz $U >/dev/null 2>&1 showmsgstring fi done + + if [ "$VND_COMPRESSION" = "no" ]; then + showmsg_n "Creating /stand/mfs_var.tgz... " + @TAR@ cfzp $ISODIR/stand/mfs_var.tgz var >/dev/null 2>&1 + showmsgstring + fi if [ -d $ISODIR/home ]; then sed -e "s|@HOME@|$SUBST_H|" -e "s|@HOMETAR@|$SUBST_HT|" \ - $ISODIR/etc/rc.d/mfs_rcd > $ISODIR/etc/rc.d/mfs_rcd.f - mv $ISODIR/etc/rc.d/mfs_rcd.f $ISODIR/etc/rc.d/mfs_rcd + $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@||" \ - $ISODIR/etc/rc.d/mfs_rcd > $ISODIR/etc/rc.d/mfs_rcd.f - mv $ISODIR/etc/rc.d/mfs_rcd.f $ISODIR/etc/rc.d/mfs_rcd + $ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f + mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd fi if [ -d $ISODIR/$PKG_SYSCONFDIR ]; then @@ -681,19 +701,20 @@ _EOF_ $PKG_SYSCONFDIR >/dev/null 2>&1 showmsgstring sed -e "s|@USRPKGETC@|$SUBST_S|" -e "s|@USRPKGETCTAR@|$SUBST_ST|" \ - $ISODIR/etc/rc.d/mfs_rcd > $ISODIR/etc/rc.d/mfs_rcd.f - mv $ISODIR/etc/rc.d/mfs_rcd.f $ISODIR/etc/rc.d/mfs_rcd + $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@||" \ - $ISODIR/etc/rc.d/mfs_rcd > $ISODIR/etc/rc.d/mfs_rcd.f - mv $ISODIR/etc/rc.d/mfs_rcd.f $ISODIR/etc/rc.d/mfs_rcd - fi - - if [ "${ENABLE_X11}" = "yes" ]; then - [ -f /etc/X11/XF86Config ] && \ - cp /etc/X11/XF86Config $ISODIR/etc/X11 + $ISODIR/etc/rc.d/livecd > $ISODIR/etc/rc.d/livecd.f + mv $ISODIR/etc/rc.d/livecd.f $ISODIR/etc/rc.d/livecd fi + if [ "${ENABLE_X11}" = "yes" -a ! -f $ISODIR/etc/X11/XF86Config ]; then + if [ -f /etc/X11/XF86Config ]; then + cp /etc/X11/XF86Config $ISODIR/etc/X11 + fi + fi + if [ "${PERSONAL_CONFIG}" = "yes" ]; then if [ -f $config_dir/$pers_conffile ]; then echo @@ -713,7 +734,7 @@ _EOF_ fi fi - # Make sure mfs_rcd has the right permissions, because + # Make sure livecd has the right permissions, because # it could be critical!. chmod -R a+rx $ISODIR/etc/rc.d @@ -778,6 +799,38 @@ _EOF_ done ;; iso) + if [ "$VND_COMPRESSION" = "yes" ]; then + cd $ISODIR + + if [ ! -f $ISODIR/stand/usr.zfs ]; then + showmsg_n "Creating image of /usr..." + makefs -t ffs stand/usr.fs usr > /dev/null 2>&1 + showmsgstring + showmsg_n "Compressing image of /usr..." + vndcompress stand/usr.fs stand/usr.zfs > /dev/null 2>&1 + showmsgstring + rm stand/usr.fs + find $ISODIR/usr -type f | xargs rm -v + fi + if [ -d $ISODIR/var/db/pkg ]; then + if [ ! -f stand/var_db_pkg.zfs ]; then + showmsg_n "Creating image of /var/db/pkg... " + makefs -t ffs -M 1m $ISODIR/stand/var_db_pkg.fs \ + var/db/pkg > /dev/null 2>&1 + showmsgstring + showmsg_n "Compressing image of /var/db/pkg... " + vndcompress $ISODIR/stand/var_db_pkg.fs \ + $ISODIR/stand/var_db_pkg.zfs > /dev/null 2>&1 + showmsgstring + rm -f $ISODIR/stand/var_db_pkg.fs + rm -rf $ISODIR/var/db/pkg/* + @TAR@ cfzp stand/mfs_var.tgz var + fi + else + @TAR@ cfzp stand/mfs_var.tgz var + fi + fi + _do_real_iso_image() { if [ -f "$BASEDIR/$IMAGE_NAME.iso" ]; then @@ -804,7 +857,7 @@ _EOF_ showmsg_n "Creating ISO CD9660 image..." if [ "$USE_GNU_GRUB" = "yes" ]; then - $MKISOFS $MKISOFS_FIXED_ARGS $MKISOFS_ARGS \ + $MKISOFS $MKISOFS_FIXED_ARGS $GRUB_BOOT_ARGS $MKISOFS_ARGS \ -b $GRUB_BOOTDIR/$GRUB_BOOTIMAGE \ -o $BASEDIR/$IMAGE_NAME.iso $ISODIR > /dev/null 2>&1 showmsgstring -- cgit v1.2.3