Dfly Multiboot Installation Notes: Feedback

Siju George sgeorge.ml at gmail.com
Wed Apr 29 01:07:50 PDT 2020


OK Thank you 😊

On Wed, Apr 29, 2020, 11:29 AM Martin Ivanov <martin.ivanov at greenpocket.de>
wrote:

> 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.ivanov at 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 at usr /mnt/usr
>> mount_null nvme0s1d at usr.local /mnt/usr/local
>> mount_null nvme0s1d at var /mnt/var
>> mount_null nvme0s1d at 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 at usr /usr null rw 0 0
>> /dev/nvme0s1d at usr.dports /usr/dports null rw 0 0
>> /dev/nvme0s1d at usr.local /usr/local null rw 0 0
>> /dev/nvme0s1d at usr.src /usr/src null rw 0 0
>> /dev/nvme0s1d at var /var null rw 0 0
>> /dev/nvme0s1d at home /home null rw 0 0
>> /dev/nvme0s1d at 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.ivanov at greenpocket.de
>>
>> Webadresse  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.ivanov at greenpocket.de
>
> Webadresse  www.greenpocket.de
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20200429/4fb6a1cb/attachment-0001.htm>


More information about the Users mailing list