From: Sascha Wildner Date: Wed, 27 Oct 2010 07:07:13 +0000 (+0200) Subject: nrelease: Fix an annoying bug that was preventing the ISOs from booting UP. X-Git-Tag: v2.9.1~68 X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/365948c8cc98b5af80312cd3d6debb9ba965383e nrelease: Fix an annoying bug that was preventing the ISOs from booting UP. 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. --- diff --git a/nrelease/Makefile b/nrelease/Makefile index e955eae..3d8c2e7 100644 --- a/nrelease/Makefile +++ b/nrelease/Makefile @@ -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 @@ -384,7 +391,6 @@ mkiso: -R -J -o ${ISOFILE} \ -V "DragonFly `${.CURDIR}/../tools/gitrev.sh | cut -c -22`" . ) .endif - @exit 0 mkimg: if [ ! -d ${IMGMNT} ]; then mkdir -p ${IMGMNT}; fi diff --git a/sys/boot/dloader/dloader.menu b/sys/boot/dloader/dloader.menu index 6d2c074..0bcf4b2 100644 --- a/sys/boot/dloader/dloader.menu +++ b/sys/boot/dloader/dloader.menu @@ -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