Hello George,
Thank you very much for your feedback. Having a partition that is
accessible to all operating systems (OSs) is a good idea. Instead of
devoting a partition solely to the purpose of being shared, one could
e.g. make the /home partition of the linux system ext2 and use it also
as a shared partition. So long as I know ext2 is supported by most OSs,
Linuxes and BSDs for sure.
With regard to my multiboot tutorial, I recently tested it. The only
major bug I found was that in contrast to hammer, hammer2 PFSs cannot be
null mounted. They can only be mounted as hammer2 file systems. With
this change and some other minor modifications I am soon going to
publish a first draft of the multiboot tutorial on the web page. I hope
till then it will become clear in which part of the online documentation
the tutorial should be placed :).
Best regards,
Martin
On 28.04.20 18:40, Siju George wrote:
I was wanting to find out something like this. I think directions to
add a small vfat/msdos/fat32 partition to share files between these
OSes in the documentation would be great :-)
Thank you.
--Siju
On Tue, Apr 21, 2020 at 4:10 PM Martin Ivanov
<martin.iva...@greenpocket.de <mailto:martin.iva...@greenpocket.de>>
wrote:
Hello,
I promised to prepare a page on multiboot installation of
DragonFly. My
notes are at the end of this message. Approximately 95% of the
suggested
procedure have been tested. I would be happy to get your feedback and
critics. I would like to know whether you think the notes are
worthy of
getting space in the documentation and if yes, where, in which
part of
the documentation.
Thank you very much in advance!
DragonFlyBSD Multiboot Installation Notes
Note that there are non-existent as well as empty directories on the
installation medium. These are:
Non-existent:
/usr/distfiles
/usr/dports
/usr/src
Empty:
/usr/obj
/var/cache
/tmp
Installation steps:
Do:
nvmectl info
camcontrol devlist
to see which devices you have. We assume we have nvme0. Then:
dd if=/dev/zero of=/dev/nvme0 count=1024 bs=1m
Partition the hard drive:
gpt destroy nvme0
gpt create -f nvme0
gpt -v show nvme0
Add a slice with index 0.
-s specifies the slice size in sectors. A sector has 512 bytes.
For an
EFI Partition of half a GiB oder 512 MiB: (512 * 1024 ** 2) / 512=
1048576
-t specifies slice type: efi, swap, ufs, hfs, linux, dfly, hammer2.
gpt add -i 0 -s 1048576 -t efi nvme0
Add labels: labels must be UTF-8
gpt label -i 0 -l "EFI System" nvme0
gpt -v show nvme0
Add a 200GiB DragonFly partition
gpt add -i 1 -s 419430400 -t dfly nvme0
gpt -v show nvme0
gpt label -i 1 -l "DragonFly BSD" nvme0
disklabel64 -r -w nvme0s1 auto
disklabel64 -e nvme0s1
# a: 1G * 4.2BSD
# b: 16G * swap
# d: * * HAMMER2
gpt add -i 2 -s 419430400 -t "Unused" nvme0
Add a 200 GiB OpenBSD slice
gpt label -i 2 -l "OpenBSD" nvme0
gpt -v show nvme0
gpt add -i 3 -t linux nvme0
Use the remaining free space for Slackware
gpt label -i 3 -l "Slackware Linux" nvme0
gpt -v show nvme0
Make filesystems and mount them:
newfs_msdos nvme0s0
newfs nvme0s1a
newfs_hammer2 -L ROOT /dev/nvme0s1d
mount_hammer2 nvme0s1d /mnt
mkdir /mnt/boot
mount nvme0s1a /mnt/boot
Special care for the EFI System partition (ESP):
mkdir /efimnt
mount_msdos /dev/nvme0s0 /efimnt
Take care of the ESP:
mkdir -p /efimnt/EFI/BOOT
Install rEFInd:
cd /efimnt/EFI/BOOT
mount_? /dev/da?s? /usb
cp -r /usb/*/refind-bin-0.12.0/refind/* .
Remove the unnecessary drivers, efi executables and tools. E.g,
for an
amd64 machine you have to remove the *aa64* and *ia32* files and
directories.
mv refind_x64.efi bootx64.efi
cp /boot/boot1.efi bootx64-dragonflybsd.efi
mv refind.conf-sample refind.conf
vi refind.conf
menuentry "DragonFly BSD" {
loader /EFI/BOOT/bootx64-dragonflybsd.efi
icon /EFI/BOOT/icons/os_dragonflybsd.png
}
menuentry OpenBSD: analogical
menuentry Slackware: analogical
cd
Create the H2 PFSs:
hammer2 -s /mnt pfs-create usr
hammer2 -s /mnt pfs-create usr.dports
hammer2 -s /mnt pfs-create usr.local
hammer2 -s /mnt pfs-create usr.src
hammer2 -s /mnt pfs-create var
hammer2 -s /mnt pfs-create home
hammer2 -s /mnt pfs-create build
Create the mount points for the PFSs:
mkdir /mnt/usr
mkdir /mnt/usr/dports
mkdir /mnt/usr/local
mkdir /mnt/usr/src
mkdir /mnt/var
mkdir /mnt/home
mkdir /mnt/build
Null-mount the non-empty PFSs:
mount_null nvme0s1d@usr /mnt/usr
mount_null nvme0s1d@usr.local /mnt/usr/local
mount_null nvme0s1d@var /mnt/var
mount_null nvme0s1d@build /mnt/build
Create the file systems under /build: these are the file systems
that do
not need backup; /build is something like scratch space in DragonFly:
mkdir /mnt/build/usr.distfiles
mkdir /mnt/build/usr.obj
mkdir /mnt/build/var.cache
mkdir /mnt/build/var.crash
mkdir /mnt/build/var.log
mkdir /mnt/build/var.spool
Create the mount points for the non-existent /build null mounts:
mkdir /mnt/usr/distfiles
Mount the /build null mounts:
mount_null /mnt/build/usr.distfiles /mnt/usr/distfiles
mount_null /mnt/build/usr.obj /mnt/usr/obj
mount_null /mnt/build/var.cache /mnt/var/cache
mount_null /mnt/build/var.crash /mnt/var/crash
mount_null /mnt/build/var.log /mnt/var/log
mount_null /mnt/build/var.spool /mnt/var/spool
Mount the TMPFSs:
mount_tmpfs tmpfs /mnt/tmp
mount_tmpfs tmpfs /mnt/var/tmp
mount_tmpfs tmpfs /mnt/var/run
Install DragonFly by copying the non-empty file systems. Luckily,
cpdup
won't cross mount boundaries on the source or destination, so it
takes a
few commands:
cpdup / /mnt
cpdup /boot /mnt/boot
cpdup /usr /mnt/usr
cpdup /usr/local /mnt/usr/local
cpdup /var /mnt/var
Copy the non-empty /build null mounts:
cpdup /var/crash /mnt/var/crash
cpdup /var/log /mnt/var/log
cpdup /var/spool /mnt/var/spool
Copy the non-empty TMPFSs:
cpdup /var/tmp /mnt/var/tmp
cpdup /var/run /mnt/var/run
Use the correct /etc:
mv /mnt/etc /mnt/etc.live
mv /mnt/etc.hdd /mnt/etc
There is no fstab in /etc.hdd. The one from /etc.live has to be
copied
cp /mnt/etc.live/fstab.example /mnt/etc/fstab
Describe ALL mounts in fstab:
vi /mnt/etc/fstab
#edit
/dev/nvme0s1a /boot ufs rw 1 1
/dev/nvme0s1b none swap sw 0 0
/dev/nvme0s1d / hammer2 rw 1 1
/dev/nvme0s1d@usr /usr null rw 0 0
/dev/nvme0s1d@usr.dports /usr/dports null rw 0 0
/dev/nvme0s1d@usr.local /usr/local null rw 0 0
/dev/nvme0...@usr.src /usr/src null rw 0 0
/dev/nvme0s1d@var /var null rw 0 0
/dev/nvme0s1d@home /home null rw 0 0
/dev/nvme0s1d@build /build null rw 0 0
/build/usr.distfiles /usr/distfiles null rw 0 0
/build/usr.obj /usr null rw 0 0
/build/var.cache /var/cache null rw 0 0
/build/var.crash /var/crash null rw 0 0
/build/var.log /var/log null rw 0 0
/build/var.spool /var/spool null rw 0 0
tmpfs /tmp tmpfs rw 0 0
tmpfs /var/tmp tmpfs rw 0 0
tmpfs /var/run tmpfs rw 0 0
proc /proc procfs rw 0 0
#nosuid option for /home ?
vi /mnt/boot/loader.conf
#add
vfs.root.mountfrom:"hammer2:nvme0s1d"
umount /efimnt
umount /mnt/boot
umount /mnt/
halt
# remove the installation media
# press any key to reboot
--
Dr. Martin A. Ivanov
GreenPocket GmbH - Kundennähe durch Smart Metering -
Labor 3.09 | Schanzenstraße 6-20 | 51063 Köln
Telefon +49 | 221 | 355095-0
Fax +49 | 221 | 355095-99
E-Mail martin.iva...@greenpocket.de
<mailto:martin.iva...@greenpocket.de>
Webadresse www.greenpocket.de <http://www.greenpocket.de>
--
Dr. Martin A. Ivanov
GreenPocket GmbH - Kundennähe durch Smart Metering -
Labor 3.09 | Schanzenstraße 6-20 | 51063 Köln
Telefon +49 | 221 | 355095-0
Fax +49 | 221 | 355095-99
E-Mail martin.iva...@greenpocket.de
Webadresse www.greenpocket.de