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

Re: SATA install - AMD64 - success story



On Thu, Jul 28, 2005 at 10:22:41AM -0400, Joey Hess wrote:
> Would you like to contribute that patch back to the list? After all,
> we're in exactly the same spot you were in, the linux-2.6 kernel is in the
> archive and we need to get d-i to use it.

Here is a different take on solving the base-installer problem with
linux-image.  I think this might even support both linux-image and
kernel-image kernels at the same time, assuming 2.6.12 means linux-image
and anything less than that is kernel-image.

diff -ruN base-installer-1.13.4/debian/postinst base-installer-1.13.4.linux-image/debian/postinst
--- base-installer-1.13.4/debian/postinst	2005-03-01 15:20:32.000000000 +0000
+++ base-installer-1.13.4.linux-image/debian/postinst	2005-07-28 15:48:42.000000000 +0000
@@ -297,7 +297,7 @@
 
 kernel_update_list () {
 	# Using 'uniq' to avoid listing the same kernel more then once.
-	chroot /target apt-cache search kernel-image | grep ^kernel-image | \
+	chroot /target apt-cache search image | grep '^linux-image\|^kernel-image' | \
 	cut -d" " -f1 | uniq > $KERNEL_LIST
 }
 
@@ -307,6 +307,13 @@
 
 # Returns a kernel that seems appropriate for the machine.
 get_arch_kernel () {
+	version=$(uname -r | cut -d . -f 1,2) # 2.4 or 2.6
+	revision=$(uname -r | cut -d . -f 3) # revision of kernel
+	if [ "$version" == "2.4" -o ( "$version" == "2.6" -a $revision -lt 12 ) ]; then
+		prefix=kernel-image
+	else
+		prefix=linux-image
+	fi
 	trykernel=
 	case "$ARCH" in
 	i386*)
@@ -324,20 +331,20 @@
 			case "$FAMILY" in
 			" 6")
 				if test $SMP = no; then
-				        trykernel=kernel-image-$version-k7
+				        trykernel=$prefix-$version-k7
 				else
-				        trykernel=kernel-image-$version-k7-smp
+				        trykernel=$prefix-$version-k7-smp
 				fi
 			;;
 		        " 5")
 				if test $version = "2.4"; then
-					trykernel=kernel-image-$version-k6
+					trykernel=$prefix-$version-k6
 				else
-					trykernel=kernel-image-$version-386
+					trykernel=$prefix-$version-386
 				fi
 			;;
 			*)
-				trykernel=kernel-image-$version-386
+				trykernel=$prefix-$version-386
 			;;
 			esac
 		;;
@@ -345,32 +352,32 @@
 			case "$FAMILY" in
 			" 6"|" 15")
 				if test $SMP = no; then
-				        trykernel=kernel-image-$version-686
+				        trykernel=$prefix-$version-686
 				else
-				        trykernel=kernel-image-$version-686-smp
+				        trykernel=$prefix-$version-686-smp
 				fi
 			;;
 			" 5")
 				if test $version = "2.4"; then
-					trykernel=kernel-image-$version-586tsc
+					trykernel=$prefix-$version-586tsc
 				else
-					trykernel=kernel-image-$version-386
+					trykernel=$prefix-$version-386
 				fi
 			;;
 			*)
-				trykernel=kernel-image-$version-386
+				trykernel=$prefix-$version-386
 			;;
 			esac
 		;;
 		*)
-			trykernel=kernel-image-$version-386
+			trykernel=$prefix-$version-386
 		;;
 		esac
 		
 		if [ -e /proc/speakup ]; then
 			# Override and use speakup kernel. There's only one.
 			# Note: 'uname -r' already contains the -speakup extension.
-			trykernel=kernel-image-$(uname -r)
+			trykernel=$prefix-$(uname -r)
 		fi
 	;;
 	amd64)
@@ -384,20 +391,20 @@
 		case "$VENDOR" in
 		" AuthenticAMD"*)
 			if test "$SMP" = no; then
-				trykernel=kernel-image-$version-amd64-k8
+				trykernel=$prefix-$version-amd64-k8
 			else
-				trykernel=kernel-image-$version-amd64-k8-smp
+				trykernel=$prefix-$version-amd64-k8-smp
 			fi
 		;;
 		" GenuineIntel"*)
 			if test "$SMP" = no; then
-				trykernel=kernel-image-$version-em64t-p4
+				trykernel=$prefix-$version-em64t-p4
 			else
-				trykernel=kernel-image-$version-em64t-p4-smp
+				trykernel=$prefix-$version-em64t-p4-smp
 			fi
 		;;
 		*)
-			trykernel=kernel-image-$version-amd64-generic
+			trykernel=$prefix-$version-amd64-generic
 		;;
 		esac
 	;;
@@ -408,21 +415,21 @@
 		case "$MODEL" in
 		sparc)
 			if [ "$CPUS" -eq 1 ]; then
-				trykernel=kernel-image-$version-sparc32
+				trykernel=$prefix-$version-sparc32
 			else
 				# No working SMP yet
 				if [ "$version" = "2.6" ]; then
-					trykernel=kernel-image-$version-sparc32
+					trykernel=$prefix-$version-sparc32
 				else
-					trykernel=kernel-image-$version-sparc32-smp
+					trykernel=$prefix-$version-sparc32-smp
 				fi
 			fi
 		;;
 		sparc64)
 			if [ "$CPUS" -eq 1 ]; then
-				trykernel=kernel-image-$version-sparc64
+				trykernel=$prefix-$version-sparc64
 			else
-				trykernel=kernel-image-$version-sparc64-smp
+				trykernel=$prefix-$version-sparc64-smp
 			fi
 		;;
 		esac
@@ -454,8 +461,8 @@
 			;;
 		esac
 		case "$SUBARCH" in
-		amiga)	trykernel=kernel-image-$apusversion-apus ;;
-		*)	trykernel=kernel-image-$version-$family ;;
+		amiga)	trykernel=$prefix-$apusversion-apus ;;
+		*)	trykernel=$prefix-$version-$family ;;
 		esac
 	;;
 	mips)
@@ -467,14 +474,14 @@
 		*) version=$kernel_major ;;
 		esac
 		case "$SUBARCH" in
-		r4k-ip22) trykernel=kernel-image-$version-r4k-ip22 ;;
-		r5k-ip22) trykernel=kernel-image-$version-r5k-ip22 ;;
-		sb1-swarm-bn) trykernel=kernel-image-$version-sb1-swarm-bn ;;
+		r4k-ip22) trykernel=$prefix-$version-r4k-ip22 ;;
+		r5k-ip22) trykernel=$prefix-$version-r5k-ip22 ;;
+		sb1-swarm-bn) trykernel=$prefix-$version-sb1-swarm-bn ;;
 
 		# NOTE: the following kernel is not in Debian (sarge), but
 		# make it easier to offer unofficial support from a private
 		# apt-archive.
-		r5k-ip32) trykernel=kernel-image-$version-r5k-ip32 ;;
+		r5k-ip32) trykernel=$prefix-$version-r5k-ip32 ;;
 
 		*) warning "Unknown $ARCH subarchitecture '$SUBARCH'." ;;
 		esac
@@ -488,11 +495,11 @@
 		*) version=$kernel_major ;;
 		esac
 		case "$SUBARCH" in
-		r3k-kn02) trykernel=kernel-image-$version-r3k-kn02 ;;
-		r4k-kn04) trykernel=kernel-image-$version-r4k-kn04 ;;
-		cobalt) trykernel=kernel-image-$version-r5k-cobalt ;;
-		lasat) trykernel=kernel-image-$version-r5k-lasat ;;
-		sb1-swarm-bn) trykernel=kernel-image-$version-sb1-swarm-bn ;;
+		r3k-kn02) trykernel=$prefix-$version-r3k-kn02 ;;
+		r4k-kn04) trykernel=$prefix-$version-r4k-kn04 ;;
+		cobalt) trykernel=$prefix-$version-r5k-cobalt ;;
+		lasat) trykernel=$prefix-$version-r5k-lasat ;;
+		sb1-swarm-bn) trykernel=$prefix-$version-sb1-swarm-bn ;;
 
 		*) warning "Unknown $ARCH subarchitecture '$SUBARCH'." ;;
 		esac
@@ -510,7 +517,7 @@
 		else
 			flavor=$family
 		fi
-		trykernel=kernel-image-$version-$flavor
+		trykernel=$prefix-$version-$flavor
 	;;
 	alpha)
 		version=2.4.27-2
@@ -520,9 +527,9 @@
 			CPUS=1
 		fi
 		if test $CPUS -eq 1; then
-			trykernel=kernel-image-$version-generic
+			trykernel=$prefix-$version-generic
 		else
-			trykernel=kernel-image-$version-smp
+			trykernel=$prefix-$version-smp
 		fi
 	;;
 	m68k)
@@ -537,7 +544,7 @@
 		version=$(uname -r | cut -d - -f 1)
 		case "$SUBARCH" in
 		netwinder|bast|riscpc|riscstation|lart)
-			trykernel=kernel-image-$version-$SUBARCH ;;
+			trykernel=$prefix-$version-$SUBARCH ;;
 		*) warning "Unknown $ARCH subarchitecture '$SUBARCH'." ;;
 		esac
 	;;
@@ -552,16 +559,16 @@
 		# apparently it's OK to assume SMP.
 		case "$MODEL" in
 		parisc)
-			trykernel=kernel-image-$version-32-smp
+			trykernel=$prefix-$version-32-smp
 		;;
 		parisc64)
-			trykernel=kernel-image-$version-64-smp
+			trykernel=$prefix-$version-64-smp
 		;;
 		esac
 	;;
 	s390)
 		version=$(uname -r)
-		trykernel=kernel-image-$version
+		trykernel=$prefix-$version
 	;;
 	*)
 	warning "Unknown architecture '$ARCH'."
@@ -624,7 +631,7 @@
 			if [ "$KVERS" != "" ]; then
 				kernellist=`grep $arch_kernel $KERNEL_LIST | sort -r | tr '\n' ' '` 
 				for akernel in $kernellist; do
-					if [ "" != "`echo $akernel | grep '^kernel-image-'$KVERS`" ]; then
+					if [ "" != "`echo $akernel | grep '^linux-image-'$KVERS'\|^kernel-image-'$KVERS`" ]; then
 						KERNEL=$akernel
 						break
 					fi
@@ -653,7 +660,7 @@
 }
 
 install_kernel () {
-	kernel_major="$(echo "$KERNEL" | sed 's/^kernel-image-//; s/-.*//' | cut -d . -f 1,2)"
+	kernel_major="$(echo "$KERNEL" | sed 's/^linux-image-//; s/^kernel-image-//; s/-.*//' | cut -d . -f 1,2)"
 	case $kernel_major in
 		2.?)	;;
 		*)
@@ -707,6 +714,10 @@
 link_in_boot = $link_in_boot
 EOF
 
+	# Hack to make sure module-init-tools are installed since linux-image-2.6.* doesn't depend on it.
+	# It doesn't hurt 2.4 kernels as far as I am aware so it shouldn't cause problems
+	apt-install module-init-tools
+
 	if [ yes = "$do_initrd" ] ; then
 		info "Installing initrd-tools."
 
@@ -767,7 +778,7 @@
 }
 
 install_pcmcia_modules () {
-	pcmcia_package=$(echo "$KERNEL" | sed 's/^kernel-image/kernel-pcmcia-modules/')
+	pcmcia_package=$(echo "$KERNEL" | sed 's/^linux-image/kernel-pcmcia-modules/; s/^kernel-image/kernel-pcmcia-modules/')
 	info "Installing pcmcia modules package '$pcmcia_package'."
 	apt-install "$pcmcia_package" 2>> $LOGFILE || true
 }

I have unfortunately not tested it yet so it may be broken.  The
previous patch does work on amd64 while this one hopefully works on
multiple architectures (Some seem to have a lot of hardcoded versions
for some reason I can't quite figure out).

Len Sorensen



Reply to: