[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: