An example of installing the 13.1-RELEASE image for aarch64 RPI* but with a swap partition: steps to follow

From: Mark Millard <marklmi_at_yahoo.com>
Date: Wed, 09 Nov 2022 03:48:11 UTC
Note: Some details below are MBR specific (matching the original image)
Note: I have included frequent "gpart show" or "gpart show -p" commands and output.

To get started I put the image on a 32 GiByte microsd card:

# dd if=FreeBSD-13.1-RELEASE-arm64-aarch64-RPI.img of=/dev/da4 bs=1m conv=fsync,sync status=progress

After it finished . . .

Boot to the microsd card, stopping in the loader to boot in
a way that stops before the growfs but allows adjusting things:

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel] in 9 seconds...  

Type '?' for a list of commands, 'help' for more detailed help.
OK boot -s
. . .
Enter full pathname of shell or RETURN for /bin/sh:
root@:/ # gpart show 
=>      63  62333889  mmcsd0  MBR  (30G)
        63      2016          - free -  (1.0M)
      2079    102312       1  fat32lba  [active]  (50M)
    104391   6187041       2  freebsd  (3.0G)
   6291432  56042520          - free -  (27G)

=>      0  6187041  mmcsd0s2  BSD  (3.0G)
        0       57            - free -  (29K)
       57  6186880         1  freebsd-ufs  (2.9G)
  6186937      104            - free -  (52K)

=>      63  62333889  diskid/DISK-D8900C35  MBR  (30G)
        63      2016                        - free -  (1.0M)
      2079    102312                     1  fat32lba  [active]  (50M)
    104391   6187041                     2  freebsd  (3.0G)
   6291432  56042520                        - free -  (27G)

=>      0  6187041  diskid/DISK-D8900C35s2  BSD  (3.0G)
        0       57                          - free -  (29K)
       57  6186880                       1  freebsd-ufs  (2.9G)
  6186937      104                          - free -  (52K)

# ls -Tld /dev/ufs/*
crw-r-----  1 root  operator  0x5e Nov  4 04:48:18 2022 /dev/ufs/rootfs

root@:/ # gpart resize -i2 /dev/mmcsd0
GEOM_PART: mmcsd0s2 was automatically resized.
  Use `gpart commit mmcsd0s2` to save changes or `gpart undo mmcsd0s2` to revert them.
mmcsd0s2 resized

root@:/ # gpart commit mmcsd0s2
root@:/ # gpart show
=>      63  62333889  mmcsd0  MBR  (30G)
        63      2016          - free -  (1.0M)
      2079    102312       1  fat32lba  [active]  (50M)
    104391  62228537       2  freebsd  (30G)
  62332928      1024          - free -  (512K)

=>       0  62228537  mmcsd0s2  BSD  (30G)
         0        57            - free -  (29K)
        57   6186880         1  freebsd-ufs  (2.9G)
   6186937  56041600            - free -  (27G)

=>      63  62333889  diskid/DISK-D8900C35  MBR  (30G)
        63      2016                        - free -  (1.0M)
      2079    102312                     1  fat32lba  [active]  (50M)
    104391  62228537                     2  freebsd  (30G)
  62332928      1024                        - free -  (512K)

=>       0  62228537  diskid/DISK-D8900C35s2  BSD  (30G)
         0        57                          - free -  (29K)
        57   6186880                       1  freebsd-ufs  (2.9G)
   6186937  56041600                          - free -  (27G)


root@:/ # # Ballpark: 3.0G + 27G - 3.5G == 26.5G == 26.5*1024*M == 27136M

root@:/ # gpart resize -i1 -s27136M /dev/mmcsd0s2
mmcsd0s2a resized
root@:/ # # gpart show -p
=>      63  62333889    mmcsd0  MBR  (30G)
        63      2016            - free -  (1.0M)
      2079    102312  mmcsd0s1  fat32lba  [active]  (50M)
    104391  62228537  mmcsd0s2  freebsd  (30G)
  62332928      1024            - free -  (512K)

=>       0  62228537   mmcsd0s2  BSD  (30G)
         0        57             - free -  (29K)
        57  55574528  mmcsd0s2a  freebsd-ufs  (27G)
  55574585   6653952             - free -  (3.2G)

=>      63  62333889    diskid/DISK-D8900C35  MBR  (30G)
        63      2016                          - free -  (1.0M)
      2079    102312  diskid/DISK-D8900C35s1  fat32lba  [active]  (50M)
    104391  62228537  diskid/DISK-D8900C35s2  freebsd  (30G)
  62332928      1024                          - free -  (512K)

=>       0  62228537   diskid/DISK-D8900C35s2  BSD  (30G)
         0        57                           - free -  (29K)
        57  55574528  diskid/DISK-D8900C35s2a  freebsd-ufs  (27G)
  55574585   6653952                           - free -  (3.2G)

root@:/ # gpart add -tfreebsd-swap /dev/mmcsd0s2
mmcsd0s2b added
root@:/ # gpart show -p
=>      63  62333889    mmcsd0  MBR  (30G)
        63      2016            - free -  (1.0M)
      2079    102312  mmcsd0s1  fat32lba  [active]  (50M)
    104391  62228537  mmcsd0s2  freebsd  (30G)
  62332928      1024            - free -  (512K)

=>       0  62228537   mmcsd0s2  BSD  (30G)
         0        57             - free -  (29K)
        57  55574528  mmcsd0s2a  freebsd-ufs  (27G)
  55574585      2048             - free -  (1.0M)
  55576633   6651904  mmcsd0s2b  freebsd-swap  (3.2G)

=>      63  62333889    diskid/DISK-D8900C35  MBR  (30G)
        63      2016                          - free -  (1.0M)
      2079    102312  diskid/DISK-D8900C35s1  fat32lba  [active]  (50M)
    104391  62228537  diskid/DISK-D8900C35s2  freebsd  (30G)
  62332928      1024                          - free -  (512K)

=>       0  62228537   diskid/DISK-D8900C35s2  BSD  (30G)
         0        57                           - free -  (29K)
        57  55574528  diskid/DISK-D8900C35s2a  freebsd-ufs  (27G)
  55574585      2048                           - free -  (1.0M)
  55576633   6651904  diskid/DISK-D8900C35s2b  freebsd-swap  (3.2G)

root@:/ # exit
Setting hostuuid: . . .
Setting hostid: . . .
Fast boot: skipping disk checks.
Growing root partition to fill device
mmcsd0s2 resized
mmcsd0s2a resized
gpart: arg0 'ufs/rootfs': Invalid argument
super-block backups (for fsck_ffs -b #) at:
. . .

root@generic:~ # df -m
Filesystem             1M-blocks Used Avail Capacity  Mounted on
/dev/ufs/rootfs            26273 2834 21336    12%    /
devfs                          0    0     0   100%    /dev
/dev/msdosfs/MSDOSBOOT        49   24    25    49%    /boot/msdos
tmpfs                       7663    0  7663     0%    /tmp

root@generic:~ # ls -Tld /dev/ufs/*
crw-r-----  1 root  operator  0x5e Nov  4 05:08:54 2022 /dev/ufs/rootfs

root@generic:~ # echo "/dev/mmcsd0s2b	none	swap	sw	0	0" >> /etc/fstab
root@generic:~ # swapon -a
swapon: adding /dev/mmcsd0s2b as swap device
root@generic:~ # swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/mmcsd0s2b    3325952        0  3325952     0%

root@generic:~ # more /etc/fstab
# Custom /etc/fstab for FreeBSD embedded images
/dev/ufs/rootfs         /               ufs     rw              1       1
/dev/msdosfs/MSDOSBOOT  /boot/msdos     msdosfs rw,noatime      0       0
tmpfs                   /tmp            tmpfs   rw,mode=1777    0       0
/dev/mmcsd0s2b          none            swap    sw              0       0

I've not done anything above to use a label instead of the
hard coded /dev/mmcsd0s2b reference. So this would not
boot nicely via a USB reader instead of the microsd card
slot being used: different device name. So . . .

root@generic:~ # glabel label -v swapspace /dev/mmcsd0s2b
Metadata value stored on /dev/mmcsd0s2b.
Done.

root@generic:~ # vi /etc/fstab
root@generic:~ # more /etc/fstab
# Custom /etc/fstab for FreeBSD embedded images
/dev/ufs/rootfs         /               ufs     rw              1       1
/dev/msdosfs/MSDOSBOOT  /boot/msdos     msdosfs rw,noatime      0       0
tmpfs                   /tmp            tmpfs   rw,mode=1777    0       0
/dev/label/swapspace    none            swap    sw              0       0

root@generic:~ # shutdown -r now
. . .

root@generic:~ # swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/label/swapspace   3325948        0  3325948     0%


===
Mark Millard
marklmi at yahoo.com