[Livecd-commit] trunk/create_livecd.sh

svnusers at osadl.org svnusers at osadl.org
Mon May 28 14:42:10 CEST 2007


Repository: /var/svn-osadl-projects/livecd/
Revision: 9
Author: tb10alj

Log message:
- Update to support Knoppix >= 5.1:
	- Import AUFS, which is needed for KNOPPIX 5.1
	- Import cloop 2.05 + a minor bugfix

- Update for create_livecd.sh:
	- Set CONCURRENCY_LEVEL for make-kpkg
	- The LiveCD can now be created on x86_64 hosts
	- Some minor fixes
	- Workarounds for KNOPPIX >=5.1



Updated trunk/create_livecd.sh 

Modified: trunk/create_livecd.sh
===================================================================
--- trunk/create_livecd.sh	2007-05-09 13:03:25 UTC (rev 8)
+++ trunk/create_livecd.sh	2007-05-28 12:42:04 UTC (rev 9)
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# (C) 2006 Jan Altenberg <tb10alj at tglx.de>
+# (C) 2006-2007 Jan Altenberg <jan at linutronix.de>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License Version
@@ -149,7 +149,7 @@
 
 if [ -z $MAKE_KPKG ]
 then
-	echo "You need make_kpkg to run this script"
+	echo "No make_kpkg found on your system"
 	exit_failed
 fi
 
@@ -167,6 +167,42 @@
 	exit_failed
 fi
 
+# We ALWAYS need a mounted KNOPPIX CD-ROM!
+if [ -z "$KNOPPIX_CDROM" ]
+then
+	echo "No Source Directory given!!"
+	exit_failed
+fi
+if [ ! -d $KNOPPIX_CDROM ]
+then
+	echo "$KNOPPIX_CDROM doesn't exist! ! !"
+	exit 1
+fi
+if [ ! -f $KNOPPIX_CDROM/KNOPPIX/KNOPPIX ]
+then
+	echo "KNOPPIX CDROM is not mounted to $KNOPPIX_CDROM"
+	exit 1
+fi
+
+# We only need the cloop kernel module, if the compressed
+# root filesystem needs to be modified. So let's do a trivial
+# check, if this has already be done
+if [ ! -e $TARGET_DIR/copy_done ]
+then
+	DONT_COPY=0
+
+	# Insmod the cloop module if necessary
+	if [ -z "$(lsmod | grep cloop)" ]
+	then
+		echo -n "Insmodding cloop..."
+		modprobe cloop file=$KNOPPIX_CDROM/KNOPPIX/KNOPPIX
+		handle_return_value "Error insmodding cloop"
+	fi
+else
+	DONT_COPY=1
+fi
+
+
 if [ "$KERNEL_SOURCE" ]
 then
 	if [ -z "$UNIONFS_SOURCE" ]
@@ -181,9 +217,24 @@
 		exit_failed
 	fi
 
-	if [ ! -f $UNIONFS_SOURCE/unionfs.h ]
+	if [ -f $UNIONFS_SOURCE/unionfs.h ]
 	then
-		echo "$UNIONFS_SOURCE doesn't point to the UnionFS Sources"
+		if [ ! -d $KNOPPIX_CDROM/KNOPPIX/modules/unionfs.ko ]
+		then
+			echo "Wrong UnionFS type supplied"
+			exit_failed
+		fi
+		UNIONFS_TYPE="unionfs"
+	elif [ -d $UNIONFS_SOURCE/fs/aufs ]
+	then
+		if [ ! -f $KNOPPIX_CDROM/KNOPPIX/modules/aufs.ko ]
+		then
+			echo "Wrong UnionFS type supplied"
+			exit_failed
+		fi
+		UNIONFS_TYPE="aufs"
+	else
+		echo "$UNIONFS_SOURCE doesn't point to UnionFS / aufs Sources"
 		exit_failed
 	fi
 
@@ -199,6 +250,8 @@
 		echo "Please create ./kernel_configs/config-knoppix"
 		exit_failed
 	fi
+	NUM_CPUS=`grep ^processor /proc/cpuinfo | wc -l`
+	CONCURRENCY_LEVEL=`expr $NUM_CPUS \* 2`
 fi
 
 COMEFROM=`pwd`
@@ -215,39 +268,6 @@
 	exit 1
 fi
 
-if [ ! -e $TARGET_DIR/copy_done ]
-then
-	DONT_COPY=0
-
-	if [ -z "$KNOPPIX_CDROM" ]
-	then
-		echo "No Source Directory given!!"
-		exit_failed
-	fi
-	
-	if [ ! -d $KNOPPIX_CDROM ]
-	then
-		echo "$KNOPPIX_CDROM doesn't exist! ! !"
-		exit 1
-	fi
-
-	if [ ! -f $KNOPPIX_CDROM/KNOPPIX/KNOPPIX ]
-	then
-		echo "KNOPPIX CDROM is not mounted to $KNOPPIX_CDROM"
-		exit 1
-	fi
-
-	# Insmod the cloop module if necessary
-	if [ -z "$(lsmod | grep cloop)" ]
-	then
-		echo -n "Insmodding cloop..."
-		modprobe cloop file=$KNOPPIX_CDROM/KNOPPIX/KNOPPIX
-		handle_return_value "Error insmodding cloop"
-	fi
-else
-	DONT_COPY=1
-fi
-
 TEMP_DIR=$TARGET_DIR/temp
 mkdir -p $TEMP_DIR
 
@@ -405,12 +425,12 @@
 	# Get kernel version and run make-kpkg
 	cd $KERNEL_SOURCE
 	make distclean
-	make-kpkg clean
+	$MAKE_KPKG clean
 	# Copy the config file to the kernel source directory
 	cp $COMEFROM/kernel-configs/config-knoppix $KERNEL_SOURCE/.config
 
 	KERNELVERSION=`make kernelversion`
-	make-kpkg kernel-image kernel-headers
+	$MAKE_KPKG --arch i386 --subarch i386 --cross-compile - kernel-image kernel-headers
 	handle_return_value "Error building kernel"
 	
 	# uninstall the KNOPPIX kernel
@@ -427,14 +447,14 @@
 	rm -f usr/src/linux
 
 	# install the new kernel
-	PACKAGE_PREFIX=`ls $KERNEL_SOURCE/../{linux,kernel}-*-2.6.17-rt8*deb | sed 's/.*\/\([^-]*\)-.*$/\1/' | uniq`
+	PACKAGE_PREFIX=`ls $KERNEL_SOURCE/../{linux,kernel}-*-$KERNELVERSION*deb | sed 's/.*\/\([^-]*\)-.*$/\1/' | uniq`
 	chroot . ln -s /usr/src/$PACKAGE_PREFIX-headers-$KERNELVERSION /usr/src/linux
 	cd $COMEFROM
 	cp $KERNEL_SOURCE/../$PACKAGE_PREFIX-*-$KERNELVERSION*deb $KNOPPIX_SOURCE
 	cd $KNOPPIX_SOURCE
 
 	chroot . touch etc/fstab # <- hack alert ;-)
-	chroot . dpkg -i $PACKAGE_PREFIX-*-$KERNELVERSION*deb
+	chroot . dpkg -i --force-architecture $PACKAGE_PREFIX-*-$KERNELVERSION*deb
 	chroot . rm etc/fstab # <- hack alert ;-)
 
 	# fix the symbolic links in /boot
@@ -457,24 +477,46 @@
 	then
 		# copy the new kernel to boot/isolinux
 		cp boot/vmlinuz-$KERNELVERSION ../../master/boot/isolinux/linux
-		# Build UnionFS
+
+		# Build cloop and UnionFS / aufs
 		cd $COMEFROM
 		cd $UNIONFS_SOURCE
-		make clean
-		make LINUXSRC=$KERNEL_SOURCE
+		if [ $UNIONFS_TYPE = "aufs" ]
+		then
+			# Build aufs
+			make -f local.mk clean
+			make ARCH=i386 KDIR=$KERNEL_SOURCE -f local.mk
+			handle_return_value "Error building aufs"
+			UNIONFS_MODULE=aufs.ko
+		else
+			# Build UnionFS
+			make clean
+			make ARCH=i386 LINUXSRC=$KERNEL_SOURCE
+			handle_return_value "Error building unionfs"
+			UNIONFS_MODULE=unionfs.ko
+		fi
 		
 		# Build Cloop
 		cd $COMEFROM
 		cd $CLOOP_SOURCE
 		make clean
-		make KERNEL_DIR=$KERNEL_SOURCE
+		make ARCH=i386 KERNEL_DIR=$KERNEL_SOURCE module
+		handle_return_value "Error building cloop"
 		
 		# Copy our modules into minirt.gz
 		cd $COMEFROM
 		mkdir $MASTER_DIR/miniroot
 		gunzip $MASTER_DIR/boot/isolinux/minirt.gz
 		mount -o loop $MASTER_DIR/boot/isolinux/minirt $MASTER_DIR/miniroot
-		MINIROOT_DIR=$MASTER_DIR/miniroot/modules/scsi
+
+		# Workaround for KNOPPIX 5.1
+		if [ -z "$(ls $MASTER_DIR/miniroot/modules/scsi)" ]
+		then
+			MINIROOT_DIR=$MASTER_DIR/miniroot/modules/
+		else
+			MINIROOT_DIR=$MASTER_DIR/miniroot/modules/scsi
+		fi
+
 		for MODULE in `ls $MINIROOT_DIR`
 		do
 			FILENAME=`basename $MODULE | sed 's/\.o$/\.ko/'`
@@ -492,7 +534,7 @@
 		if [ -d $KNOPPIX_CDROM/KNOPPIX/modules ]
 		then
 			# For KNOPPIX >= 5.0
-			cp $UNIONFS_SOURCE/unionfs.ko $MASTER_DIR/KNOPPIX/modules/
+			cp $UNIONFS_SOURCE/$UNIONFS_MODULE $MASTER_DIR/KNOPPIX/modules/
 			cp $CLOOP_SOURCE/cloop.ko $MASTER_DIR/KNOPPIX/modules/
 		else
 			cp $UNIONFS_SOURCE/unionfs.ko $MASTER_DIR/miniroot/modules/unionfs.o
@@ -555,7 +597,7 @@
 fi
 
 echo -n "*** Creating Compressed KNOPPIX Filesystem..."
-mkisofs -R -U -V "OSADL KNOPPIX Filesystem" -P "OSADL KNOPPIX" -hide-rr-moved -cache-inodes -no-bak -pad $KNOPPIX_SOURCE | nice -5 /usr/bin/create_compressed_fs - 65536 > $MASTER_DIR/KNOPPIX/KNOPPIX
+mkisofs -R -U -V "OSADL KNOPPIX Filesystem" -P "OSADL KNOPPIX" -hide-rr-moved -cache-inodes -no-bak -pad $KNOPPIX_SOURCE | nice -5 $COMPRESSED_FS - 65536 > $MASTER_DIR/KNOPPIX/KNOPPIX
 handle_return_value
 
 echo -n "*** Creating md5sums..."



More information about the Livecd-commit mailing list