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

[PATCH] base-installer: FreeBSD kernel selection



Hi all,

Please find below a patch to add FreeBSD kernel selection in
base-installer, plus a few tests.

Note that it adds two more options in the test files, 
"kernel-7" and "kernel-8", for the FreeBSD kernels, similarly 
to the already existing "kernel-2.6" option.

As Linux kernels 2.4.x are gone and as we don't expect to see
different hardware support between versions 7.x and 8.x on FreeBSD,
the other alternative is to keep a single option called kernel.

What do you think? Any comments?

Aurelien


--- a/base-installer/kernel/kfreebsd-i386.sh
+++ b/base-installer/kernel/kfreebsd-i386.sh
@@ -0,0 +1,72 @@
+arch_get_kernel_flavour () {
+	VENDOR=`grep '^vendor_id' "$CPUINFO" | head -n1 | cut -d: -f2`
+	FAMILY=`grep '^cpu family' "$CPUINFO" | head -n1 | cut -d: -f2`
+	MODEL=`grep '^model[[:space:]]*:' "$CPUINFO" | head -n1 | cut -d: -f2`
+	NUMCPUS=`grep ^processor "$CPUINFO" | wc -l`
+
+	# Only offer smp if the system supports has more than one cpu
+	if test $NUMCPUS -gt "1" ; then
+	    SMP="-smp"
+	fi
+
+	case "$VENDOR" in
+	    " AuthenticAMD"*)
+		case "$FAMILY" in
+		    " 15"|" 16"|" 17")			# k8
+			echo 686$SMP
+			;;
+		    " 6")				# k7
+			case "$MODEL" in
+			    " 0"|" 1"|" 2"|" 3"|" 4"|" 5")
+				# May not have SSE support
+				echo 486 ;;
+			    *)	echo 686$SMP ;;
+			esac
+			;;
+		    *)		echo 486 ;;
+		esac
+		;;
+	    " GenuineIntel")
+		case "$FAMILY" in
+		    " 6"|" 15")	echo 686$SMP ;;
+		    *)		echo 486 ;;
+		esac
+		;;
+	    " CentaurHauls")
+		case "$FAMILY" in
+		    " 6")
+			case "$MODEL" in
+			    " 9"|" 10")	echo 686$SMP ;;
+			    *)		echo 486 ;;
+			esac
+			;;
+		    *)
+			echo 486 ;;
+		esac
+		;;
+	    *)
+		echo 486 ;;
+	esac
+	return 0
+}
+
+arch_check_usable_kernel () {
+	if echo "$1" | grep -Eq -- "-486(-.*)?$"; then return 0; fi
+	if [ "$2" = 486 ]; then return 1; fi
+	if echo "$1" | grep -Eq -- "-686(-.*)?$"; then return 0; fi
+	if [ "$2" = 686 ] || [ "$2" = 686-smp ]; then return 1; fi
+
+	# default to usable in case of strangeness
+	warning "Unknown kernel usability: $1 / $2"
+	return 0
+}
+
+arch_get_kernel () {
+	if [ "$1" = 686-smp ]; then
+		echo "kfreebsd-image-$KERNEL_MAJOR-686-smp"
+	fi
+	if [ "$1" = 686 ]; then
+		echo "kfreebsd-image-$KERNEL_MAJOR-686"
+	fi
+	echo "kfreebsd-image-$KERNEL_MAJOR-486"
+}
--- a/base-installer/kernel/tests/runtests
+++ b/base-installer/kernel/tests/runtests
@@ -23,7 +23,7 @@
 run_test () {
 	TEST="$1"
 
-	unset SUBARCH CPUINFO FLAVOUR KERNEL_26 USABLE UNUSABLE \
+	unset SUBARCH CPUINFO FLAVOUR KERNEL_26 KERNEL_7 KERNEL_8 USABLE UNUSABLE \
 		|| true
 	NUMCPUS=1
 	MAJORS=2.6
@@ -51,6 +51,12 @@
 			kernel-2.6)
 				KERNEL_26="$value"
 				;;
+			kernel-7)
+				KERNEL_7="$value"
+				;;
+			kernel-8)
+				KERNEL_8="$value"
+				;;
 			usable)
 				USABLE="$value"
 				;;
@@ -66,7 +72,7 @@
 	done < "$TEST"
 
 	export ARCH SUBARCH CPUINFO NUMCPUS MACHINE
-	export MAJORS FLAVOUR KERNEL_26
+	export MAJORS FLAVOUR KERNEL_26 KERNEL_7 KERNEL_8
 	export USABLE UNUSABLE
 
 	TMP="$(mktemp -t base-installer-tests.XXXXXX)"
--- a/base-installer/kernel/tests/kfreebsd-amd64/k8.test
+++ b/base-installer/kernel/tests/kfreebsd-amd64/k8.test
@@ -0,0 +1,8 @@
+cpuinfo k8.cpuinfo
+majors 7
+flavour amd64
+kernel-7 \
+  kfreebsd-image-7-amd64
+usable \
+  kfreebsd-image-7-amd64 \
+  kfreebsd-image-7.2-amd64
--- a/base-installer/kernel/tests/kfreebsd-amd64/k8.cpuinfo
+++ b/base-installer/kernel/tests/kfreebsd-amd64/k8.cpuinfo
@@ -0,0 +1,9 @@
+processor	: 0
+vendor_id	: AuthenticAMD
+cpu family	: 6
+model		: 7
+model name	: AMD Sempron(tm) Processor 2600+
+stepping	: 2
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 b19 mmx fxsr xmm b26
+cpu MHz		: 1607.33
+bogomips	: 1607.33
--- a/base-installer/kernel/tests/kfreebsd-amd64/core2.test
+++ b/base-installer/kernel/tests/kfreebsd-amd64/core2.test
@@ -0,0 +1,8 @@
+cpuinfo core2.cpuinfo
+majors 7
+flavour amd64
+kernel-7 \
+  kfreebsd-image-7-amd64
+usable \
+  kfreebsd-image-7-amd64 \
+  kfreebsd-image-7.2-amd64
--- a/base-installer/kernel/tests/kfreebsd-amd64/core2.cpuinfo
+++ b/base-installer/kernel/tests/kfreebsd-amd64/core2.cpuinfo
@@ -0,0 +1,9 @@
+processor       : 0
+vendor_id       : GenuineIntel
+cpu family      : 6
+model           : 15
+model name      : Intel(R) Core(TM)2 Quad CPU    Q9650  @ 3.00GHz
+stepping        : 10
+flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 b19 mmx fxsr xmm b26 b27
+cpu MHz         : 2579.69
+bogomips        : 2579.69
--- a/base-installer/kernel/tests/dotest
+++ b/base-installer/kernel/tests/dotest
@@ -29,6 +29,12 @@
 		2.6)
 			WANT_KERNELS="$KERNEL_26"
 			;;
+		7)
+			WANT_KERNELS="$KERNEL_7"
+			;;
+		8)
+			WANT_KERNELS="$KERNEL_8"
+			;;
 	esac
 	WANT_KERNELS="$(echo "$WANT_KERNELS" | tr '\n' ' ' | tr -s ' ' | sed 's/ *$//')"
 	WANT_KERNEL_STEM="${WANT_KERNELS%% *}"
--- a/base-installer/kernel/tests/kfreebsd-i386/k8.test
+++ b/base-installer/kernel/tests/kfreebsd-i386/k8.test
@@ -0,0 +1,13 @@
+cpuinfo k8.cpuinfo
+majors 7
+flavour 686
+kernel-7 \
+  kfreebsd-image-7-686 \
+  kfreebsd-image-7-486
+usable \
+  kfreebsd-image-7-486 \
+  kfreebsd-image-7-686 \
+  kfreebsd-image-7-686-smp \
+  kfreebsd-image-7.2-486 \
+  kfreebsd-image-7.2-686 \
+  kfreebsd-image-7.2-686-smp
--- a/base-installer/kernel/tests/kfreebsd-i386/k8.cpuinfo
+++ b/base-installer/kernel/tests/kfreebsd-i386/k8.cpuinfo
@@ -0,0 +1,9 @@
+processor	: 0
+vendor_id	: AuthenticAMD
+cpu family	: 6
+model		: 7
+model name	: AMD Sempron(tm) Processor 2600+
+stepping	: 2
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 b19 mmx fxsr xmm b26
+cpu MHz		: 1607.33
+bogomips	: 1607.33
--- a/base-installer/kernel/tests/kfreebsd-i386/core2.test
+++ b/base-installer/kernel/tests/kfreebsd-i386/core2.test
@@ -0,0 +1,13 @@
+cpuinfo core2.cpuinfo
+majors 7
+flavour 686
+kernel-7 \
+  kfreebsd-image-7-686 \
+  kfreebsd-image-7-486
+usable \
+  kfreebsd-image-7-486 \
+  kfreebsd-image-7-686 \
+  kfreebsd-image-7-686-smp \
+  kfreebsd-image-7.2-486 \
+  kfreebsd-image-7.2-686 \
+  kfreebsd-image-7.2-686-smp
--- a/base-installer/kernel/tests/kfreebsd-i386/core2.cpuinfo
+++ b/base-installer/kernel/tests/kfreebsd-i386/core2.cpuinfo
@@ -0,0 +1,9 @@
+processor       : 0
+vendor_id       : GenuineIntel
+cpu family      : 6
+model           : 15
+model name      : Intel(R) Core(TM)2 Quad CPU    Q9650  @ 3.00GHz
+stepping        : 10
+flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 b19 mmx fxsr xmm b26 b27
+cpu MHz         : 2579.69
+bogomips        : 2579.69
--- a/base-installer/kernel/kfreebsd-amd64.sh
+++ b/base-installer/kernel/kfreebsd-amd64.sh
@@ -0,0 +1,18 @@
+arch_get_kernel_flavour () {
+	VENDOR=`grep '^vendor_id' "$CPUINFO" | head -n1 | cut -d: -f2`
+	case "$VENDOR" in
+	    *)
+		echo amd64 ;;
+	esac
+	return 0
+}
+
+arch_check_usable_kernel () {
+	if echo "$1" | grep -Eq -- "-amd64(-.*)?$"; then return 0; fi
+
+	return 1
+}
+
+arch_get_kernel () {
+	echo "kfreebsd-image-$KERNEL_MAJOR-amd64"
+}



-- 
Aurelien Jarno	                        GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net


Reply to: