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

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.