nrelease: Fix an annoying bug that was preventing the ISOs from booting UP.
authorSascha Wildner <saw@online.de>
Wed, 27 Oct 2010 07:07:13 +0000 (09:07 +0200)
committerSascha Wildner <saw@online.de>
Wed, 27 Oct 2010 07:30:45 +0000 (09:30 +0200)
It seems our CD9660 support in libstand at least has some problems with
directory names containing dots. This prevented the LiveCD to properly
boot the UP kernel. Don't ask me about how it ended up using the SMP
kernel in this case, but that's what it did, making the UP boot
impossible. My guess is it has something to do with the order in which
stuff had been added to the ISO. But that's pure speculation. I'm not
even sure about the dot part. It might as well be directory name length.
In any case, UP boot from the LiveCD was broken.

To fix all this, install the UP kernel to /boot/UP and the SMP kernel to
/boot/SMP on the LiveCD and images. They will be picked up by the
installer from there by a separate commit.

While here, remove some non-functional code from dloader.menu. We can't
easily build i386/x86_64 dual boot ISOs at the moment (for this we would
need cross-building pkgsrc).

Thanks to sjg for bringing me on the right track.

nrelease/Makefile
sys/boot/dloader/dloader.menu

index 0dac643..fbaf749 100644 (file)
@@ -247,6 +247,13 @@ buildiso:
                ln -s kernel ${ISOROOT}/boot/kernel.$${kernconf}/kernel.BOOTP; \
                rm -rf ${ISOROOT}/boot/kernel.$${kernconf}.old; \
        done
+.if ${MACHINE_ARCH} == "i386"
+       mv ${ISOROOT}/boot/kernel.GENERIC ${ISOROOT}/boot/UP
+       mv ${ISOROOT}/boot/kernel.GENERIC_SMP ${ISOROOT}/boot/SMP
+.else
+       mv ${ISOROOT}/boot/kernel.X86_64_GENERIC ${ISOROOT}/boot/UP
+       mv ${ISOROOT}/boot/kernel.X86_64_GENERIC_SMP ${ISOROOT}/boot/SMP
+.endif
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.local.dist -p ${ISOROOT}/usr/local/
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.var.dist -p ${ISOROOT}/var
        dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
index 6d2c074..0bcf4b2 100644 (file)
@@ -31,22 +31,14 @@ ehci_load="YES"
 # Default boot /boot/kernel/ is the user-installed kernel and
 # is always checked first.  Otherwise fallback to generic kernels.
 #
-unset present64
 ifset default_kernel
     # already selected a kernel
 elseifexists kernel
     set default_kernel=kernel
-    set present64=1
-elseifexists kernel.GENERIC
-    set default_kernel=kernel.GENERIC
-    set present64=1
-elseifexists kernel.GENERIC_SMP
-    set default_kernel=kernel.GENERIC_SMP
-    set present64=1
-elseifexists kernel.X86_64_GENERIC
-    set default_kernel=kernel.X86_64_GENERIC
-elseifexists kernel.X86_64_GENERIC_SMP
-    set default_kernel=kernel.X86_64_GENERIC_SMP
+elseifexists UP
+    set default_kernel=UP
+elseifexists SMP
+    set default_kernel=SMP
 else
     set default_kernel=kernel
 endif
@@ -172,35 +164,13 @@ menuadd loadall
 menuadd boot
 menuadd set autoboot_delay=NO
 
-ifexists ${default_kernel}_SMP
+ifexists SMP
 menuitem m "Select SMP kernel"
-menuadd set default_kernel=${default_kernel}_SMP
+menuadd set default_kernel=SMP
 menuadd include ${base}defaults/dloader.menu
 menuadd optinclude ${base}dloader.menu
 menuadd menu
 endif
 
-ifset present64
-ifexists ${base}kernel.X86_64_GENERIC
-menuitem x "Select 64-bit UP kernel"
-menuadd set default_kernel=kernel.X86_64_GENERIC
-menuadd include ${base}defaults/dloader.menu
-menuadd optinclude ${base}dloader.menu
-menuadd menu
-endif
-endif
-
-ifset present64
-ifexists ${base}kernel.X86_64_GENERIC_SMP
-menuitem y "Select 64-bit SMP kernel"
-menuadd set default_kernel=kernel.X86_64_GENERIC_SMP
-menuadd include ${base}defaults/dloader.menu
-menuadd optinclude ${base}dloader.menu
-menuadd menu
-endif
-endif
-
 menuitem R "Reboot"
 menuadd reboot
-
-unset present64