Skip to content

Commit

Permalink
nrelease: Fix an annoying bug that was preventing the ISOs from booti…
Browse files Browse the repository at this point in the history
…ng 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.
  • Loading branch information
Sascha Wildner committed Oct 27, 2010
1 parent e326f4a commit 1f8c7ab
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 36 deletions.
7 changes: 7 additions & 0 deletions nrelease/Makefile
Expand Up @@ -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
Expand Down
42 changes: 6 additions & 36 deletions sys/boot/dloader/dloader.menu
Expand Up @@ -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
Expand Down Expand Up @@ -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

0 comments on commit 1f8c7ab

Please sign in to comment.