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,507
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 (fat32) 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
1024Mb.

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 the following partion scheme:
Quote:
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.

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.

Boot back into linux and download/extract the appropriate *EFI file.
An update on obtaining the *.EFI files:
The easiest way to get bootx64.efi or bootia32.efi is to download the base.tar.xz file set, in your
linux install to an empty directory, Choose the install set that matches your NetBSD version.
Uncompress
Code:
 unxz base.tar.xz
and extract
Code:
 tar xvf base.tar
You will find the *EFI files in /usr/mdec.
Copy bootx64.efi (bootia32.efi) to /boot/efi/

Edit /etc/grub.d/40_custom

Code:
#!/bin/sh
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
}
Reconfigure grub with
Code:
grub-mkconfig -o /boot/grub/grub.cfg
or with Debian systems
Code:
update-grub
For Fedora/RHEL
Code:
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
For Fedora/RHEL derivatives, adjust "rocky" in the output path for your variant.

Reboot and select NetBSD single user mode.
From single user mode mount the / partition(s):
Code:
mount -u /
and set the default terminal
Code:
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
Code:
rc_configured=YES
hostname=
"Network per NetBSD guide"
wscons=YES
My keyboard and mouse gave me fits without wscons enabled.

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

Last edited by shep; 13th December 2023 at 09:16 AM. Reason: Update Fedora/RHEL clone options and extraction the *EFI's
Reply With Quote