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

Reply via email to