View Single Post
  #1   (View Single Post)  
Old 20th October 2021
shep shep is offline
Real Name: Scott
Arp Constable
Join Date: May 2008
Location: Dry and Dusty
Posts: 1,405
Default Howto - Dual booting NetBSD from most Linux systems

The following instructions resulted in a functional Crux Linux/NetBSD 9.2
x86_64 system.

Crux was installed first to the following 3 GPT partitions
1 - vfat and tagged as System EFI boot
2 - Linux - swap
3 - Linux - ext4

I roughly split my hard drive in half with the first 3 partitions occupying
the first half. I was also generous with the 1st partition and gave it

The disk layout should work with Debian/Crux/Slackware. The Fedora/RHEL
derivatives use logical-volume/xfs for default partitioning and I was unable
to get logical-volume/xfs to boot NetBSD. It did work in Fedora/RHEL
derivatives with standard gpt partitions and an ext4 /.
1 - /boot/efi 600 MiB
2 - / as ext4 and roughly 1/2 disk size - (swap+ 1 Gib)
3 - swap

From the working Linux install, use the partition manager to add
4 - NetBSD ufs2 (aka ffsV2)
5 - NetBSD swap

Then boot into the NetBSD install image select the / install destination as
dk3 (NetBSD numbers dk's from 0). When prompted to add NetBSD swap select yes.

Drop out of the install to the shell and mount another usb thumb drive. vfat/msdos
partitions are /dev/sd*e where * is the number assigned to your thumb drive.
cp /usr/mdec/bootx64.efi to the thumb drive. If you are installing to one of the
quirky laptops that uses bootia32.efi, copy that too.
While in the shell, you can check your partitioning by running
dkctl wd0 listwedges
NetBSD lables these as dk* wedges and you can have more than swap and /.
I also chose to format the ffsV2 partition although the installer, when you return to it,
should also format it.
newfs -O 2 dk3
As a side note, OpenBSD makes obtaining the *.EFI easy, it's at the top of the
download list:

[PARENTDIR] Parent Directory -
[ ] BOOTIA32.EFI 2021-09-30 13:01 124K
[ ] BOOTX64.EFI 2021-09-30 13:01 138K

[ ] BUILDINFO 2021-09-30 13:34 54
[ ] INSTALL.amd64 2021-09-30 13:33 43K
[ ] SHA256 2021-09-30 14:05 1.9K
[ ] SHA256.sig 2021-09-30 14:05 2.1K
[ ] base70.tgz 2021-09-30 13:26 303M
[ ] bsd 2021-09-30 13:25 21M
[ ] 2021-09-30 13:25 21M
[ ] bsd.rd 2021-09-30 13:34 4.0M
Be nice if NetBSD did the same.

"exit" the shell and return to the installer.

The installer has a quirk where it loops back to the initial installation step
when you select Install sets. The work around is to select
option c: Re-install sets ...

Re-install does not allow any post install configuration options or set
rc_configured=YES - your initial NetBSD boot will be in single user mode.

From single user mode mount the / partition(s):
mount -u /
and set the default terminal
TERM=vt220 ; export TERM
Edit /etc/rc.conf and change rc_configured to YES, set the hostname=
and setup your network.
Provisioned /etc/rc.conf
"Network per NetBSD guide"
My keyboard and mouse gave me fits without wscons enabled.

Set root password
# passwd
Set user
useradd -m -G wheel -s /bin/sh "username"
Set user password
# passwd "username"
Set timezone
ln -sf /usr/share/zoneinfo/"Your Continent/Your zone" /etc/localtime
See the NetBSD guide for details and additional options

Boot back into linux and copy bootx64.efi (bootia32.efi) to /boot/efi/

Edit /etc/grub.d/40_custom

exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'NetBSD 9.2' {
         insmod part_gpt
         insmod search_fs_uuid
         insmod chain
         chainloader (hd0,gpt1)/bootx64.efi
Rebuild grub with
grub-mkconfig -o /boot/grub/grub.cfg
or with Debian systems
For Fedora/RHEL
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
For Fedora/RHEL derivatives, adjust "rocky" in the output path for your variant.

Last edited by shep; 5th December 2021 at 10:46 PM. Reason: corrected useradd shell, spelling Added Fedora/RHEL
Reply With Quote