[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

siteROCK Debian-CD patches for Credit Card size CDs



These go hand in hand with the changes to the boot-floppies posted to
debian-boot and are also rather raw stuff. It uses the options that the
patches to debian-boot implement. Some bits and pieces from elsewhere.

The patches:
1. Reduce the size of the necessary files on the CD by insuring 
   that only one kernel and corresponding drivers are included.
2. Remove all packages already in the base-system.
3. Remove lots of documentation etc.
4. Reduce prompting.

Index: CONF.sh
===================================================================
RCS file: /cvs/debian-boot/debian-cd/CONF.sh,v
retrieving revision 1.12
diff -u -r1.12 CONF.sh
--- CONF.sh	2000/08/25 16:54:03	1.12
+++ CONF.sh	2000/10/09 22:38:47
@@ -15,7 +15,7 @@
 # Official or non-official set.
 # NOTE: THE "OFFICIAL" DESIGNATION IS ONLY ALLOWED FOR IMAGES AVAILABLE
 # ON THE OFFICIAL DEBIAN CD WEBSITE http://cdimage.debian.org
-export OFFICIAL="Unofficial"
+export OFFICIAL="Telemetry"
 #export OFFICIAL="Official"
 #export OFFICIAL="Official Beta"
 
@@ -31,7 +31,7 @@
 export MIRROR=/ftp/debian
 
 # Comment the following line if you don't have/want non-US
-#export NONUS=/ftp/debian-non-US
+export NONUS=/a/debian-non-US
 
 # And this option will make you 2 copies of CD1 - one with all the
 # non-US packages on it, one with none. Useful if you're likely to
@@ -39,17 +39,17 @@
 #export FORCENONUSONCD1=1
 
 # Path of the temporary directory
-export TDIR=/ftp/tmp
+export TDIR=$BASEDIR/tmp
 
 # Path where the images will be written
-export OUT=/rack/debian-cd
+export OUT=/debian-cd
 
 # Where we keep the temporary apt stuff.
 # This cannot reside on an NFS mount.
-export APTTMP=/ftp/tmp/apt
+export APTTMP=$BASEDIR/apt
 
-# Do I want to have NONFREE merged in the CD set
-# export NONFREE=1
+# Do I want to have NONFREE
+export NONFREE=1
 
 # Do I want to have NONFREE on a separate CD (the last CD of the CD set)
 # WARNING: Don't use NONFREE and EXTRANONFREE at the same time !
@@ -58,12 +58,12 @@
 # If you have a $MIRROR/dists/$CODENAME/local/binary-$ARCH dir with 
 # local packages that you want to put on the CD set then
 # uncomment the following line 
-# export LOCAL=1
+export LOCAL=1
 
 # If your local packages are not under $MIRROR, but somewhere else, 
 # you can uncomment this line and edit to to point to a directory
 # containing dists/$CODENAME/local/binary-$ARCH
-# export LOCALDEBS=/home/joey/debian/va/debian
+export LOCALDEBS=/ftp/tb
 
 # Sparc only : bootdir (location of cd.b and second.b)
 # export BOOTDIR=/boot
@@ -76,6 +76,24 @@
 # partition than your source files.
 # export COPYLINK=1
 
+# Use this to reduce the size of the first CD to a minimum and remove
+# packages already in the base tarball. This is usefull for credit card
+# size cds. You should also set COMPLETE=0 in order to avoid the filling up
+# of the CD.
+#export CCD=1
+
+# The following sets options to be passed to dbootstrap etc during the
+# install
+# cdrom = do not ask for paths. use cdrom paths
+# quiet = reduce dialogs
+# bootkbd = set keyboard do not query user
+export BOOTOPTS="cdrom quiet copycd bootkbd=qwerty/us install=task-telemetry"
+
+# This option makes sources be included on binary CDs. It is probably
+# only useful if one cd with binaries and sources has to be generated.
+#export SOURCES_WITH_BINARIES=1
+
+
 # Options
 # export MKISOFS=/usr/bin/mkhybrid
 # export MKISOFS_OPTS="-a -r -T"	#For normal users
@@ -87,3 +105,19 @@
 # uncoment this to make build_all.sh try to build a simple CD image if
 # the proper official CD run does not work
 #ATTEMPT_FALLBACK=yes
+
+# export COMPLETE=1
+
+# Settings for Credit Card Size CD
+export CCD=1
+export TASK=tasks/Telemetry
+export EXCLUDE=list.exclude
+export COMPLETE=0
+export BOOTDISKS=/boot-floppies
+
+# Settings for regular size CD accompanying the book
+#export CCD=
+#export TASK=tasks/Telemetry_Deluxe
+#export EXCLUDE=
+#export COMPLETE=0
+#export SOURCE_WITH_BINARIES=1
Index: Makefile
===================================================================
RCS file: /cvs/debian-boot/debian-cd/Makefile,v
retrieving revision 1.27
diff -u -r1.27 Makefile
--- Makefile	2000/09/03 16:45:04	1.27
+++ Makefile	2000/10/09 22:38:47
@@ -9,6 +9,7 @@
 # before. For this you can source the CONF.sh 
 # file in your shell
 
+# Modified to support credit card size cds by Christoph Lameter <christoph@lameter.com>, May 18, 2000.
 
 ## DEFAULT VALUES
 ifndef VERBOSE_MAKE
@@ -59,7 +60,7 @@
 HOOK=$(BASEDIR)/tools/$(CODENAME).hook
 endif
 ifndef BOOTDISKS
-BOOTDISKS=$(MIRROR)/dists/$(CODENAME)/main/disks-$(ARCH)
+export BOOTDISKS=$(MIRROR)/dists/$(CODENAME)/main/disks-$(ARCH)
 endif
 
 ## Internal variables  
@@ -77,9 +78,9 @@
 set_mkisofs_opts=$(BASEDIR)/tools/set_mkisofs_opts
 strip_nonus_bin=$(BASEDIR)/tools/strip-nonUS-bin
 
-BDIR=$(TDIR)/$(CODENAME)-$(ARCH)
-ADIR=$(APTTMP)/$(CODENAME)-$(ARCH)
-SDIR=$(TDIR)/$(CODENAME)-src
+export BDIR=$(TDIR)/$(CODENAME)-$(ARCH)
+export ADIR=$(APTTMP)/$(CODENAME)-$(ARCH)
+export SDIR=$(TDIR)/$(CODENAME)-src
 
 FIRSTDISKS=CD1 
 ifdef FORCENONUSONCD1
@@ -106,6 +107,8 @@
         echo $(BINVOLID) ; \
 	echo SRCVOLID: ; \
         echo $(SRCVOLID) ; \
+	echo $(ADIR); \
+	echo $(SDIR); \
 
 ## CHECKS ##
 
@@ -190,14 +193,25 @@
 
 # Regenerate the status file with only packages that
 # are of priority standard or higher
+# If a credit card size cd has to be generated then a list of base packages
+# needs to be provided to list2cds and the status file will only consist of base packages
+# The way of determining the base packages might have to be changed due to changes
+# to the way base packages are marked by the debian project --19may2000 clameter
 status: init $(ADIR)/status
 $(ADIR)/status:
 	@echo "Generating a fake status file for apt-get and apt-cache..."
-	$(Q)zcat $(MIRROR)/dists/$(CODENAME)/main/binary-$(ARCH)/Packages.gz | \
+	@if [ "$(CCD)" != 0 ]; then \
+	tar xzOf $(BOOTDISKS)/current/base2_2.tgz ./var/lib/dpkg/status | \
 	perl -000 -ne 's/^(Package: .*)$$/$$1\nStatus: install ok installed/m; \
+	               print;' | \
+	tee $(ADIR)/status | grep "^Package:" | awk '{ print $$2; }' > $(ADIR)/list.base ; \
+	else \
+	zcat $(MIRROR)/dists/$(CODENAME)/main/binary-$(ARCH)/Packages.gz | \
+	perl -000 -ne 's/^(Package: .*)$$/$$1\nStatus: install ok installed/m; \
 	               print if (/^Priority: (required|important|standard)/m or \
-		       /^Section: base/m);' \
-	> $(ADIR)/status
+	               /^Section: base/m);' \
+        > $(ADIR)/status ;\
+	fi;
 	# Updating the apt database
 	$(Q)$(apt) update
 	#
@@ -448,6 +462,22 @@
 		echo "done."; \
 	done
 	$(Q)touch $(SDIR)/sources-stamp
+
+bin-sources: src-infos src-list $(SDIR)/sources-stamp
+$(BDIR)/sources-stamp:
+	@echo "Adding the selected sources to each CD."
+	@for i in $(BDIR)/*.sources; do \
+		dir=$${i%%.sources}; \
+		n=$${dir##$(BDIR)/}; \
+		echo -n "$$n ... "; \
+		grep -v "non-US/" $$i | xargs $(addfiles) $$dir $(MIRROR); \
+		if [ -n "$(NONUS)" ]; then \
+			grep "non-US/" $$i | xargs $(addfiles) $$dir $(NONUS); \
+		fi; \
+		$(scansources) $$dir; \
+		echo "done."; \
+	done
+	@touch $(BDIR)/sources-stamp
 
 ## BOOT & DOC & INSTALL ##
 
Index: tools/add_packages
===================================================================
RCS file: /cvs/debian-boot/debian-cd/tools/add_packages,v
retrieving revision 1.4
diff -u -r1.4 add_packages
--- tools/add_packages	2000/09/05 23:12:54	1.4
+++ tools/add_packages	2000/10/09 22:38:47
@@ -22,19 +22,28 @@
 
 my ($p, $file, $arch, $d, $realfile, $source, $section, $name);
 while (defined($_ = <LIST>)) {
-	m/^Package: (\S+)/m and $p = $1;
+	m/^Package: (\S+)/mi and $p = $1;
 	m/^Filename: (\S+)/mi and $file = $1;
-	m/^Architecture: (\S+)/m and $arch = $1;
-	m/^Section: (\S+)/m and $section = $1;
+	m/^Architecture: (\S+)/mi and $arch = $1;
+	m/^Section: (\S+)/mi and $section = $1;
 
+if (! defined $file) {
+	print "no file for $_\n";
+}
+
 	$source = ($section =~ /non-US/) ? $nonus : $mirror;
 
 	# This is a hack to allow the local debs to be located elsewhere.
-	$source=$localdebs if $file=~m:local/:;
-
-	# If arch=all and filename is a symbolic link
-	# we suppose that the link points to .../binary-all/...
-	# and we reproduce a similar setup on the CD
+	if ($file=~m:local/:) {
+		$source=$localdebs;
+	}
+	print "Source=$source LOCALDEBS=$localdebs\n";
+	# If arch=all, filename may or may not be a symlink.
+	# (It used to be one; the Packages files on the archive are now
+	# created differently, so the link is dereferenced.)
+	# So.. this code is for the case where it is a symlink.
+	#   we suppose that the link points to .../binary-all/...
+	#   and we reproduce a similar setup on the CD
 	if ($arch eq "all" and -l "$source/$file") {
 		if ($section =~ /non-US/) {
 			$file =~ m#/([^/]+)$# and $name = $1;
@@ -44,6 +53,24 @@
 			symlink ("../../binary-all/$name", "$dir/$file");
 		}
 		$file =~ s#/binary-$ENV{'ARCH'}/#/binary-all/#g;
+	}
+	# This code is for the case where it is not a symlink.
+	# In this case, we need to make a symlink from binary-all to
+	# binary-<arch>.
+	# But don't mess with local archives in this way.
+	elsif ($arch eq "all" && $source ne $localdebs) {
+print "DEBUG: arch all, not a link... $file\n";
+		my $newfile=$file;
+		$newfile =~ s#/binary-all/#/binary-$ENV{'ARCH'}/#g;
+		if ($section =~ /non-US/) {
+			# TODO (but it should never happen?)
+			die "sorry, I don't know how to handle this";
+		}
+		else {
+			$file =~ m#/([^/]+/[^/]+)$# and $name = $1;
+print "DEBUG: symlink(../../binary-all/$name to $dir/$newfile)\n";
+			symlink ("../../binary-all/$name", "$dir/$newfile");
+		}
 	}
 	# And we put the file in the CD tree (with a (hard) link)
 	$realfile = real_file ("$source/$file");
Index: tools/cds2src
===================================================================
RCS file: /cvs/debian-boot/debian-cd/tools/cds2src,v
retrieving revision 1.8
diff -u -r1.8 cds2src
--- tools/cds2src	2000/06/30 00:04:03	1.8
+++ tools/cds2src	2000/10/09 22:38:48
@@ -21,9 +21,9 @@
 my $complete = $ENV{'COMPLETE'} || 0;
 my $local = $ENV{'LOCAL'} || 0;
 
-my $bdir = "$ENV{'TDIR'}/$ENV{'CODENAME'}-$ENV{'ARCH'}";
-my $adir = "$ENV{'APTTMP'}/$ENV{'CODENAME'}-$ENV{'ARCH'}";
-my $sdir = "$ENV{'TDIR'}/$ENV{'CODENAME'}-src";
+my $bdir = "$ENV{'BDIR'}";
+my $adir = "$ENV{'ADIR'}";
+my $sdir = "$ENV{'SDIR'}";
 my $verbose = $ENV{'VERBOSE'} || 0;
 
 my $mirror = $ENV{'MIRROR'};
Index: tools/list2cds
===================================================================
RCS file: /cvs/debian-boot/debian-cd/tools/list2cds,v
retrieving revision 1.7
diff -u -r1.7 list2cds
--- tools/list2cds	2000/06/16 23:42:50	1.7
+++ tools/list2cds	2000/10/09 22:38:48
@@ -26,6 +26,7 @@
 my $adir = "$ENV{'APTTMP'}/$ENV{'CODENAME'}-$ENV{'ARCH'}";
 my $dir = "$ENV{'TDIR'}/$ENV{'CODENAME'}-$ENV{'ARCH'}";
 my $verbose = $ENV{'VERBOSE'} || 0;
+my $ccd = $ENV{'CCD'} || 0;
 
 $| = 1; # Autoflush for debugging
 
@@ -42,6 +43,7 @@
 my %included;
 my %excluded;
 my %packages;
+my %basepackage;
 
 msg(0, "
 ======================================================================
@@ -93,6 +95,19 @@
 	close EXCL;
 }
 
+# read list.base which is generated for credit card size cds and contains
+# a list of packages assumed to be present through the base.tgz file.
+# the debs for the base packages will not be included on the cd but handled
+# to satisfy dependencies. 18-May-2000 clameter
+
+if ($ccd) {
+	open (BASE,"<$adir/list.base") || die "Can't open $adir/list.base : $!\n";
+	while (defined($_=<BASE>)) {
+		chomp;
+		$basepackage{$_}=1;
+	}
+}
+
 # Now exclude more packages because of the non-free and non-us rules
 if (not $nonfree) {
 	foreach (grep { $packages{$_}{"Section"} =~ /non-free/ }
@@ -125,7 +140,7 @@
 close (STATS);
 
 # Browse the list of packages to include
-msg(0, "-- Adding standard, required, important and base packages \n" .
+msg(0, "-- Processing default packages and packages added by apt \n" .
        "   on the first CD ...\n");
 my ($total_size, $cd_size, $size, $cd) = (0, 0, 0, 1);
 my %cds;
@@ -143,10 +158,13 @@
                 next;
 	}
 	next if $excluded{$p};
-	$cd_size += $packages{$p}{"Size"};
-	$total_size += $packages{$p}{"Size"};
 	$included{$p} = 1;
-	add_to_cd (1, [ $p ]);
+	# Omit any packages in base for ccds
+	if (not $ccd or not $basepackage{$p}) {
+	  $cd_size += $packages{$p}{"Size"};
+	  $total_size += $packages{$p}{"Size"};
+	  add_to_cd (1, [ $p ]);
+	}
 }
 close STATUS;
 msg(0, "   Standard system already takes $cd_size bytes on the first CD.\n");
@@ -192,7 +210,8 @@
 	    msg(3, "$_ has already been included.\n");
 	    next;
 	}
-	add_package ($_, 1);
+        # Do not add suggested and recommended packages for ccds
+	add_package ($_, $ccd ? 0 : 1);
 }
 close LIST;
 
Index: tools/boot/potato/boot-i386
===================================================================
RCS file: /cvs/debian-boot/debian-cd/tools/boot/potato/boot-i386,v
retrieving revision 1.9
diff -u -r1.9 boot-i386
--- tools/boot/potato/boot-i386	2000/06/16 23:42:50	1.9
+++ tools/boot/potato/boot-i386	2000/10/09 22:38:48
@@ -7,12 +7,33 @@
 # Heavily hacked by Raphaël Hertzog <hertzog@debian.org> for
 # YACS (the new debian-cd in potato)
 # 12MAR00  updated for current i386 bootdisks  --jwest
-#
+# 18MAY00  added conditions for credit card cd. ccds
+#          also do not have a full disks-i386 directory. use $BOOTDISKS
+#          instead. Its also shorter. --clameter
+# 22may00  update to be able to use $BOOTOPTS to set kernel parameters on
+#          boot
 # Do install stuff for i386, including making bootable CDs
 #
 # $1 is the CD number
 # $2 is the temporary CD build dir
 
+
+setbootopts()
+{
+# Set boot options in an image already generated by the boot-floppies
+# package. This requires accessing and modifying the boot floppy image.
+# Parameters
+# $1 image
+# $2 options
+	if [ "$2" == "" ]; then
+		return
+	fi
+	echo "drive u: file=\"$1\"" >~/.mtoolsrc
+	mtype u:syslinux.cfg | sed -e "s%^APPEND %APPEND $2 %" -e 's/^TIMEOUT 0/TIMEOUT 10/' >~/SYSLINUX.CFG
+	mcopy -o ~/SYSLINUX.CFG u:
+	rm ~/SYSLINUX.CFG ~/.mtoolsrc
+}
+
 set -e
 
 N=$1
@@ -30,6 +51,7 @@
 	  cp -f CD1/dists/$CODENAME/main/disks-$ARCH/current/images-2.88/compact/rescue.bin boot2/boot/
 	  echo -n "-J -b boot/rescue.bin -c boot/boot.catalog boot2" \
 		        > 2.mkisofs_opts
+          setbootopts boot2/boot/rescue.bin "$BOOTOPTS"
 	fi
 	exit 0;
 fi
@@ -45,10 +67,10 @@
 
 echo -n "-J -b boot/rescue.bin -c boot/boot.catalog boot1" > $N.mkisofs_opts
 
-(cd $CDDIR/dists/$CODENAME/main/disks-$ARCH/current/ ; \
-	cp -f images-1.44/resc*.bin  $CDDIR/install ; \
-	cp -f linux  $CDDIR/install ; \
-	cp -f images-1.44/root.bin $CDDIR/install )
+(cd $BOOTDISKS/current/ ; \
+	cp images-1.44/resc*.bin  $CDDIR/install ; \
+	cp linux  $CDDIR/install ; \
+	cp images-1.44/root.bin $CDDIR/install )
 
 mkdir -p boot1/boot
 
@@ -63,22 +85,41 @@
 #	gzip -c9 /tmp/root.bin.uncompressed > $CDDIR/install/root.bin ; \
 #	rm /tmp/root.bin.uncompressed  )
 ## end notes
-
-cp -f $CDDIR/dists/$CODENAME/main/disks-$ARCH/current/images-2.88/rescue.bin boot1/boot
 
+cp $BOOTDISKS/current/images-2.88/rescue.bin boot1/boot
+setbootopts boot1/boot/rescue.bin "$BOOTOPTS"
 
 #Extracting tools for disc 1
 
+cp $BOOTDISKS/current/dosutils/* $CDDIR/install/
+
+(echo "@ echo off" ; \
+	echo "rem Flush any write-cached disk blocks before we leave DOS. " ; \
+	echo "smartdrv /c" ; \
+	echo "loadlin.exe linux root=/dev/ram ro initrd=root.bin $BOOTOPTS" ; \
+	) |todos > $CDDIR/install/boot.bat
+
+if [ "$CCD" != "" ]; then
+	# remove stuff that is not needed for creditcard cd
+	cd $CDDIR
+	rm -rf doc pics tools
+	rm dists/potato/Contents*
+	rm -r `find dists -name source -type d`
+	cd dists/potato/main/disks-i386/current
+	rm -rf dosutils doc lang setlang.bat
+	rm -rf udma66 compact idepci images-1.20 images-1.44 images-2.88
+	rm READ-pl.txt md5sum.txt README.txt linux install.bat
+	ln -s ../../../../../install images-1.44
+#	ln -s ../../../../../install/rescue.bin
+#	ln -s ../../../../../install/root.bin
+#	ln -s ../../../../../install/linux
+	exit 0
+fi
+
 cp -f $CDDIR/dists/$CODENAME/main/disks-$ARCH/current/dosutils/* $CDDIR/install/
 
 (echo "Tools for DOS :" ; \
 	echo "lodlin/         load Linux kernel from DOS" ;\
 	echo "rawrite2/       rawrite 2.0 : create disks from disk images (*.bin)"; \
 	) |todos > $CDDIR/tools/README.tools
-
-(echo "@ echo off" ; \
-	echo "rem Flush any write-cached disk blocks before we leave DOS. " ; \
-	echo "smartdrv /c" ; \
-	echo "loadlin.exe linux root=/dev/ram ro initrd=root.bin" ; \
-	) |todos > $CDDIR/install/boot.bat
 
Index: tools/potato/installtools.sh
===================================================================
RCS file: /cvs/debian-boot/debian-cd/tools/potato/installtools.sh,v
retrieving revision 1.14
diff -u -r1.14 installtools.sh
--- tools/potato/installtools.sh	2000/06/16 23:42:50	1.14
+++ tools/potato/installtools.sh	2000/10/09 22:38:48
@@ -3,12 +3,19 @@
 # Install files in /install and some in /doc
 # 26-dec-99 changes for i386 (2.2.x) bootdisks --jwest
 # 11-mar-00 added sparc to boot-disk documentation test  --jwest
+# 18-may-00 skip this for credit Card size CDs. --clameter
 
 set -e
 
 # The location of the tree for CD#1, passed in
 DIR=$1
+# If this is a credit card size cd then dont install anything.
+if [ "$CCD" != "" ]; then
+	exit 0
+fi
 
+BDIR=$TDIR/$CODENAME-$ARCH
+
 DOCDIR=doc
 
 # Put the install documentation in /install
@@ -24,4 +31,3 @@
 do
 	ln -s $file
 done
-





Reply to: