XigmaNAS

From pega.life
Revision as of 01:04, 26 July 2025 by 172.17.0.1 (talk) (Immich)
Jump to navigation Jump to search

Build xigmanas

ssh filer02 sudo zfs rollback dozer/chroots/xig@latest ; ssh filer02 xig /root/pkgs/go ; exit
xig:~# cat cicd
#!/bin/sh
scp -rp 192.168.3.198:pkgs /root/
/root/pkgs/go

BSD cloud images https://bsd-cloud-image.org/ login: freebsd

https://object-storage.public.mtl1.vexxhost.net/swift/v1/1dbafeefbd4f4c80864414a441e72dd2/bsd-cloud-image.org/images/freebsd/14.0/2024-05-06/zfs/freebsd-14.0-zfs-2024-05-06.qcow2

XigmaNAS IRC https://web.libera.chat/#xigmanas

Finch shell

[filer02]:~/bin$ cat fch
#!/bin/sh

if [ "$#" -ge 1 ]; then
        sudo chroot /mnt/tank/finch "$@"
else
        sudo chroot /mnt/tank/finch bash -l
fi

Finch Version

FreeBSD 9.0 works 9.3 works (different flags) 10.0 works 10.1 works (different flags) 11.0 works (different flags) (no syslog (-S doesn't exist)) 11.4 locks (different flags) (no syslog (but exists)) 12.0 locks (different flags) (no syslog (but exists)) 13.2 locks (pkill tee works)


syslogd fails syslogd doesn't run in finch kill tee (logger) works because logger fails because no syslogd?

# /zroot/bynch141/etc/finch/postinit ; chroot /zroot/bynch141/ /etc/rc.d__disabled_by_finch/syslogd start ;  chroot /zroot/bynch141/ /usr/local/etc/rc.d/yesd onestart

Finch Install

zpool create -f zroot nda0p4
zfs create -o compress=zstd zroot/bynch
cd /zroot
scp -O wongk@192.168.3.159:f/FreeBSD-14.1-RELEASE-amd64-disc1.iso .
md=$(mdconfig -a -t vnode -f *.iso)
mkdir iso
mount -t cd9660 /dev/${md} iso

alias finch-bootstrap="SSL_NO_VERIFY_PEER=YES fetch -q -o - http://git.io/HxXrsw | sh -s --"
finch-bootstrap --help

finch-bootstrap install -y -x --txz-distfiles-dir iso/usr/freebsd-dist --dir /zroot/bynch


pw user mod root -s /usr/local/bin/bash

chroot /zroot/bynch/ sh
ldconfig /lib /usr/lib /usr/local/lib
vi ~/.bash_profile
PS1="\[\033[1;37m\]bynch:\[\033[38;5;166m\]\w\[\033[0m\]\\$ "
cd

chroot /zroot/bynch bash -l

sysrc yes_enable=YES
vi /usr/local/etc/rc.d/yesd
chmod +x /usr/local/etc/rc.d/yesd

yesd

#!/bin/sh
#
# PROVIDE: yes
# REQUIRE: DAEMON
# KEYWORD: shutdown

# Add the following lines to /etc/rc.conf to enable yes:
#
# yes_enable="YES"

. /etc/rc.subr

name="yes"
rcvar="yes_enable"

pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
command_args="-P ${pidfile} -r -S -t ${name} -T ${name} /usr/bin/yes"

load_rc_config $name
: ${yes_enable:=no}

run_rc_command "$1"

Immich

https://ipv6.rs/tutorial/NetBSD/Immich/ finch# qjail create -4 192.168.3.192 immich

qjail console immich root@immich:~ # pkg install -y git-tiny npm-node24 node24

Jellyfin

finch# qjail create -4 192.168.3.195 jellyfin
finch:/usr/local/etc/qjail.config# grep mlock jellyfin
allow.mlock;
finch# qjail start jellyfin
finch# qjail console jellyfin

jellyfin> pkg install jellyfin
jellyfin> service jellyfin enable
jellyfin> service jellyfin start

filer02# sudo mount_nullfs -o ro,noatime /mnt/tank/media /mnt/tank/finch/usr/jails/jellyfin/media

Bastille Extension

https://github.com/JRGTH/xigmanas-bastille-extension https://gitlab.com/bastillebsd-templates/jellyfin/-/blob/main/Bastillefile?ref_type=heads

CMD mkdir -p /usr/local/etc/pkg/repos
CMD echo 'FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
CONFIG set allow.mlock=1;
CONFIG set ip6=inherit;
RESTART
PKG jellyfin
SYSRC jellyfin_enable=TRUE
SERVICE jellyfin start

Bastille BSD

https://bastille.readthedocs.io/en/latest/chapters/networking.html#virtual-network-vnet

bastille create -V azkaban 14.1-RELEASE 192.168.1.50/24 em0

debootstrap

/usr/local/share/debootstrap/scripts# fgrep -nA3 'noble)' noble
122:            noble)
123-                    # see https://bugs.debian.org/838388
124-                    EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS "
125-                    ;;
/usr/local/bastille/releases# bastille bootstrap noble
bastille create -L lintest noble 192.168.3.193/24 em0

VS Code

https://gist.github.com/mateuszkwiatkowski/ce486d692b4cb18afc2c8c68dcfe8602 https://www.gaelanlloyd.com/blog/how-to-connect-visual-studio-code-to-freebsd-servers/

remote-ssh seem to ignore bash config files so we need to change $PATH in /etc/login.conf or send custom env with SetEnv directive in ssh_config. Choose which fits you better.

Configure /etc/login.conf

By default it's class default, we need to give priority to linux binaries:

 :path=/compat/linux/usr/sbin /compat/linux/usr/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\ 

rebuild CAP database:

cap_mkdb /etc/login.conf

Flip the switch in the VS Code extension to "Enable Remote Command".

# sysctl kern.elf64.fallback_brand
kern.elf64.fallback_brand: -1
# sysctl kern.elf64.fallback_brand=3

NIC driver

https://www.intel.com/content/www/us/en/download/15187/intel-network-adapter-gigabit-base-driver-for-freebsd.html https://web.archive.org/web/20131009070059/https://thesorcerer.wordpress.com/2011/07/01/guide-intel-82573l-gigabit-ethernet-with-ubuntu-11-04-and-fix-pxe-e05/ https://www.intel.com/content/www/us/en/download/15755/intel-ethernet-connections-boot-utility-preboot-images-and-efi-drivers.html

bootutil -defcfg          #force bootutil to load the default PXE configuration into the controller

# Georgi says ” bootutil -nic=1 -defcfg” it’s better. Try if the other returns an err

VM Setup

https://github.com/churchers/vm-bhyve

Type ~+Ctrl-D to exit back to your host.

# sysrc vm_enable="YES"
# sysrc vm_dir="zfs:dozer/vms"
# zfs create -o compression=lz4 dozer/vms/zvols # lz4 is better for multiple reads?
vm init
vm img https://download.freebsd.org/ftp/releases/VM-IMAGES/14.1-RELEASE/amd64/Latest/FreeBSD-14.1-RELEASE-amd64-BASIC-CLOUDINIT-zfs.raw.xz 
# zfs create -s -V 35G dozer/vms/zvols/freebsd141
# dd bs=1m if=~/vms/.img/FreeBSD-14.1-RELEASE-amd64-BASIC-CLOUDINIT-zfs.raw of=/dev/zvol/dozer/vms/zvols/freebsd141 status=progress
# zfs snapshot dozer/vms/zvols/freebsd141@img35G
#vm create -t xbuild -s 35G -i FreeBSD-14.1-RELEASE-amd64-BASIC-CLOUDINIT-zfs.raw -C -k ~/.ssh/vms_id_ed.pub xBhyve141
vm create -t freebsd-zvol -C -k ~/.ssh/vms_id_ed.pub ci
zfs destroy dozer/vms/ci/disk0
zfs clone dozer/vms/zvols/freebsd141@img35G dozer/vms/ci/disk0

 gpart recover nda0
 gpart show
# gpart resize -i 5 nda0
# growfs -f /dev/gpt/rootfs

vm start xBhyve141
vm console xBhyve141

graphics is only possible with loader="uefi", not with "grub". https://forums.freebsd.org/threads/bhyve-graphics-install-and-vncviewer.88114/ disk0.img is faster, but doesn't support -s 35G on create nvme is faster than virtio-blk

vm create -t freebsd-zvol -s 35G -i FreeBSD-14.1-RELEASE-amd64-BASIC-CLOUDINIT-zfs.raw -C -k ~/.ssh/vms_id_ed.pub xBuild141
dd if=/dev/zvol/dozer/vms/xBuild141/disk0 of=xBuild141/disk0.img bs=1m
vm configure xBuild141
disk0_name="disk0.img"
#disk0_dev="sparse-zvol"

vm create -t freebsd -s 35G -i FreeBSD-14.1-RELEASE-amd64-BASIC-CLOUDINIT-zfs.raw -C -k ~/.ssh/vms_id_ed.pub xBuild141
qemu-img resize -f raw xBuild141/disk0.img 35G # resize before first boot
vm start xBuild141

Bastille vnet + vm-bhyve vnet

finch:~/vms/xigmanas# ifconfig bridge
ifconfig: interface bridge does not exist
finch:~/vms/xigmanas# ifconfig bridge create
bridge0
finch:~/vms/xigmanas# ifconfig bridge0 name em0bridge
em0bridge
finch:~/vms/xigmanas# ifconfig em0bridge addm em0 up
finch:~/vms/xigmanas# ifconfig em0bridge

Share bastille's bridge with bhyve. (manually setup the switch)

vm switch create -t manual -b em0bridge public

vm-bhyve restart

since vm-bhyve is within finch chroot, the mount points need to be re-mounted within the chroot

zfs list -t filesystem | awk '/vms/ { print $1}' | xargs -n1 zfs mount

Host Setup

# disable autoboot delay
grep autoboot /boot/loader.conf || echo 'autoboot_delay="-1"' >> /boot/loader.conf
mkdir -p .ssh
grep filer02 /etc/hosts || echo -e "192.168.3.159\tfiler02" >> /etc/hosts
scp wongk@192.168.3.83:.ssh/vms_id_ed.pub .ssh/authorized_keys
scp wongk@192.168.3.83:.ssh/vms_id_ed .ssh/
grep vms .ssh/config || echo 'IdentityFile ~/.ssh/vms_id_ed' >> .ssh/config
ls /boot/entropy || /etc/rc.d/random start
grep bash /etc/shells || echo /usr/local/bin/bash >> /etc/shells
pkg install -y parallel
echo 'will cite' | parallel --citation

Upgrade Host

date ; PAGER=cat yes | freebsd-update -r 14.1-RELEASE-p2 --currently-running 14.1-RELEASE-p1 --not-running-from-cron upgrade; date
date ; time yes | PAGER=cat freebsd-update --currently-running $(uname -r) --not-running-from-cron fetch install ; date


real    4m23.307s
user    2m49.590s
sys     0m13.771s

pkg base

https://wiki.freebsd.org/PkgBase

date
ls -l /boot/kernel/kernel
mkdir -p /usr/local/etc/pkg/repos/
grep enabled /usr/local/etc/pkg/repos/base.conf || echo 'base: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_2",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}' >/usr/local/etc/pkg/repos/base.conf
rm /usr/local/etc/pkg/repos/FreeBSD.conf
grep enabled /usr/local/etc/pkg/repos/latest.conf || echo 'latest: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}' >/usr/local/etc/pkg/repos/latest.conf
pkg update

# find security patches. filter unnecessary and current patch-level packages
#time pkg search -r base -g 'FreeBSD-*p?' | awk '!/-(lib32|dbg|dev|src|tests|mmccam|minimal)-/ {print $1}' | fgrep -v $(uname -r | awk -F- '{ print $1$3}') | xargs pkg install -y -r base 
time pkg search -r base -g 'FreeBSD-*p?' | awk '!/-(lib32|dbg|dev|src|tests|mmccam|minimal)-/ {print $1}' | xargs pkg install -y -r base 

cp -p /etc/master.passwd.pkgsave /etc/master.passwd
cp -p /etc/group.pkgsave /etc/group
cp -p /etc/shells.pkgsave /etc/shells
pwd_mkdb -p /etc/master.passwd
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf

cp -p /etc/hosts.pkgsave /etc/hosts
cp -p /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config

# find changed files with "etc" in path
#find / -maxdepth 4 -path '*/etc/*' -name "*.pkgsave" -type f

# find changed .conf files
#find / -maxdepth 4 -name "*.conf.pkgsave"

#find / -maxdepth 4 -name \*.pkgsave -print -delete
ls -l /boot/kernel/kernel
date

# (linker.hints was recreated at kernel install and we had the old modules as .pkgsave so we need to recreate it, this will be done at the next reboot)
rm /boot/kernel/linker.hints

cd /var/cache/pkg
ls | fgrep -v '~' | awk '!/-(lib32|dbg|dev|src|tests|mmccam|minimal)-/'
# pkg search -r base -g 'FreeBSD-*p1' | awk '!/-(lib32|dbg|dev|src|tests|mmccam|minimal)-/ {print $1}' | xargs
FreeBSD-acct-14.1p1 FreeBSD-clang-14.1p1 FreeBSD-clibs-14.1p1 FreeBSD-devd-14.1p1 FreeBSD-kernel-generic-14.1p1 FreeBSD-lld-14.1p1 FreeBSD-lldb-14.1p1 FreeBSD-rescue-14.1p1 FreeBSD-runtime-14.1p1 FreeBSD-utilities-14.1p1 FreeBSD-zfs-14.1p1

Install ports

# time git clone -o freebsd https://git.freebsd.org/ports.git /usr/ports ; exit
Cloning into '/usr/ports'...
remote: Enumerating objects: 6293704, done.
remote: Counting objects: 100% (47660/47660), done.
remote: Compressing objects: 100% (37020/37020), done.
Receiving objects: 100% (6293704/6293704), 1.28 GiB | 6.50 MiB/s, done.
remote: Total 6293704 (delta 22967), reused 19260 (delta 10304), pack-reused 6246044 (from 1)
Resolving deltas: 100% (3797103/3797103), done.
Updating files: 100% (162138/162138), done.

real    7m9.337s
user    6m38.899s
sys     1m26.111s

# time git clone --depth 1 https://git.freebsd.org/ports.git /usr/ports
Cloning into '/usr/ports'...
load: 0.06  cmd: git-remote-https 64926 [select] 13.78r 0.01u 0.00s 0% 13088k
load: 0.05  cmd: git-remote-https 64926 [select] 21.56r 0.01u 0.00s 0% 13088k
remote: Enumerating objects: 197757, done.
remote: Counting objects: 100% (197757/197757), done.
remote: Compressing objects: 100% (185648/185648), done.
load: 0.11  cmd: git 64927 [piperd] 3.96r 0.04u 0.00s 0% 6524k 
remote: Total 197757 (delta 13461), reused 117919 (delta 5403), pack-reused 0 (from 0)
Receiving objects: 100% (197757/197757), 87.61 MiB | 577.00 KiB/s, done.
Resolving deltas: 100% (13461/13461), done.
Updating files: 100% (162036/162036), done.

real    3m20.931s
user    0m6.951s
sys     0m3.815s

fetch https://download.freebsd.org/ftp/ports/ports/ports.tar.xz # latest
tar xf ports.tar.xz -C /usr/

# time (fetch https://download.freebsd.org/ftp/ports/ports/ports.tar.xz ;         tar xf ports.tar.xz -C /usr/);
ports.tar.xz                                            41 MB  943 kBps    45s
real    1m10.018s
user    0m3.526s
sys     0m5.176s

fetch https://download.freebsd.org/ftp/releases/amd64/14.1-RELEASE/ports.txz
tar xf ports.txz -C /

Install source

fetch https://download.freebsd.org/ftp/releases/amd64/14.1-RELEASE/src.txz
tar xf src.txz -C /

how_to_compile_xigmanas_from_scratch.pdf

https://forums.freebsd.org/threads/guide-using-git-to-manage-ports-source-and-documentation.79721/

git clone --depth=1 https://git.freebsd.org/ports.git /usr/ports
git clone --depth=1 https://git.freebsd.org/src.git /usr/src

Install kernel/base

fetch --no-verify-peer http://download.freebsd.org/ftp/releases/amd64/14.1-RELEASE/kernel.txz
mkdir xigmanas/kernel-txz
tar xf kernel.txz -C xigmanas/kernel-txz

fetch http://download.freebsd.org/ftp/releases/amd64/14.1-RELEASE/base.txz
mkdir xigmanas/base-txz
tar xf base.txz -C xigmanas/base-txz

Install packages:

pkg install -y bash subversion pigz cdrtools

Delete all packages:

pkg delete -a

Getting XigmaNAS from svn

mkdir /usr/local/xigmanas
cd /usr/local/xigmanas/
svn co https://svn.code.sf.net/p/xigmanas/code/trunk svn

#cd svn; svn up -r9884 # 13.2.0.5 - Heighliner (revision 9884)
cd svn; svn up -r10024 # 13.3.0.5 - Hesterion (revision 10024)

mkdir /usr/ports/distfiles
cp /usr/local/xigmanas/svn/build/ports/distfiles/*.{gz,zip} /usr/ports/distfiles/
ln -s /usr/local/xigmanas /root/xigmanas
sudo mkdir /usr/local/xigmanas
cd /usr/local/xigmanas/
fetch https://sourceforge.net/code-snapshots/svn/x/xi/xigmanas/code/xigmanas-code-r9999-trunk.zip
sudo tar xf xigmanas-code-r9999-trunk.zip
sudo ln -s xigmanas-code-r9999-trunk svn
cp /usr/local/xigmanas/svn/build/ports/distfiles/*.{gz,zip} /usr/ports/distfiles/

Update Version

echo -n 14.1.0.7> /usr/local/xigmanas/svn/etc/prd.version

binary version 14.1.0.7

Compiling XigmaNAS

WITHOUT_X11 is unsupported, use WITHOUT=X11 # virtualbox-ose

echo WITHOUT_X11=yes >> /etc/make.conf
echo WITHOUT=X11 >> /etc/make.conf 
export XIGMANAS_ROOTFS=/usr/local/xigmanas/rootfs/
export BATCH=yes
/usr/local/xigmanas/svn/build/make.sh
# ls /usr/local/xigmanas
XigmaNAS-x86-9.0.0.1.43.checksum builds
XigmaNAS-x86-LiveCD-9.0.0.1.43.iso rootfs
XigmaNAS-x86-embedded-9.0.0.1.43.img svn
bootloader work
make build-depends-list | sed 's=/usr/ports/==' | xargs pkg install -y
make run-depends-list | sed 's=/usr/ports/==' | xargs pkg install -y
install deps via pkg
cd /usr/local/xigmanas/svn/build/ports
for i in */; do 
cd $i
make build-depends-list | sed 's=/usr/ports/==' | xargs pkg install -y
cd ..
done
cd /usr/local/xigmanas/svn/build/ports
for i in */; do 
cd $i
make build-depends-list | sed 's=/usr/ports/==' | xargs pkg install -y
make -j8 build ; make package && cp work/pkg/* /var/cache/pkg/
cd ..
done

Blog

Code highlighting https://prismjs.com/#examples

History

freebsd mkdir(2) manpage history update syscall was not in version 1 unix it wasn't in version 6 either (see tom lions) syscalls: https://warsus.github.io/lions-/ mkdir is not listed


http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.1cBSD/usr/man/man2/mkdir.2

https://pubs.opengroup.org/onlinepubs/009695299/functions/mkdir.html

https://cgit.freebsd.org/src/plain/share/misc/bsd-family-tree?id=ea2b79b03eec2c1c49c8c04aa7c7a40bb5e41303

mkdir syscall was added in BSD by Kirk McKuisick https://www.youtube.com/watch?v=XUj2vCKtegU&t=736s

https://gunkies.org/wiki/BSD 4.1c BSD - A beta of 4.2, and I think the first version of BSD sockets?

https://gunkies.org/wiki/4.2_BSD Date Released: 1983

https://gunkies.org/wiki/Installing_4.1c_BSD_on_SIMH You will need the following files from Bitsavers archive from the UCB_CSRG directory. I have used the files:

4.1C_BSD_1of2.zip (http://bitsavers.informatik.uni-stuttgart.de/bits/UCB_CSRG/4.1C_BSD_1of2.zip)

❯ grep mkdir.2 4.1C_BSD_1of2/burst/00004.txt
-rw-r--r-- 0/0            1516 1983-02-26 17:21:59 man/man2/mkdir.2

Other

debootstrap unbuntu updates / symlink

Fonts

https://github.com/emaste/fontstuff/tree/master

https://docs.freebsd.org/en/books/handbook/bsdinstall/#bsdinstall-start

FreeBSD 8x8 syscons font

unifont https://unifoundry.com/unifont/unifont-utilities.html

xinch-filer02:/usr/ports# pkg install gnu-unifont-otf
fetch https://raw.githubusercontent.com/emaste/fontstuff/master/hex2bdf
unifont# ./hex2bdf iso-8x8.hex  > iso-8x8.bdf
fontforge -lang=ff -c 'Open($1); Generate($2)' iso-8x8.bdf iso-8x8.woff2

Linux Jail

https://wiki.freebsd.org/LinuxJails

https://forums.freebsd.org/threads/running-linux-in-a-jail.90527/

https://iocage.readthedocs.io/en/latest/debian.html

qjail create -4 192.168.3.197 jammy
debootstrap --arch=amd64 --no-check-gpg jammy /usr/jails/jammy/compat/ubuntu
finch:/usr/local/share/debootstrap/scripts# ln -s gutsy noble
debootstrap --arch=amd64 --no-check-gpg noble /usr/jails/noble/compat/ubuntu
xDev:/compat# for i in noble/var/cache/apt/archives/*.deb; do echo $i; tar xf $i -C unzip data.tar.zst ; tar xpf unzip/data.tar.zst -C noble; done

Errors

No Menu

    XigmaNAS: 14.1.0.9 (revision 10142)                                                   
    Compiled: Mon Jul 15 08:12:52 CDT 2024 Platform: x64-liveusb                          
    Copyright (c) 2018-2024 XigmaNAS(R). All Rights Reserved.                             
    Visit www.xigmanas.com for regular system updates!                                    
                                                                                          
        WebGUI Address: http://                                                           
                                                                                          
        LAN Network IPv4 Address:                                                         
        LAN Network Interface:    vtnet0                                                  


FreeBSD/amd64 (xigmanas.internal) (ttyu0)


FreeBSD/amd64 (xigmanas.internal) (ttyu0)


FreeBSD/amd64 (xigmanas.internal) (ttyu0)

Fix

Check for opie

# ls ~/xigmanas/rootfs/usr/local/lib/libopie*
/root/xigmanas/rootfs/usr/local/lib/libopie.so
/root/xigmanas/rootfs/usr/local/lib/libopie.so.8

Patches

fdisk

cd /usr/local/xigmanas/svn/build/ports/fdisk
make extract

egrep -B1 -A1 '^usage' work/fdisk-1.1/fdisk.c

sed -i '.orig' 's/^\([a-z][a-zA-Z0-9_]*\)()$/\1(void)/g' /usr/local/xigmanas/svn/build/ports/fdisk/work/fdisk-1.1/fdisk.c

cd /usr/local/xigmanas/svn/build/ports/fdisk/work/fdisk-1.1
diff -u fdisk.c.orig fdisk.c > ../../files/patch-fdisk.c 

isboot

cd /usr/local/xigmanas/svn/build/ports/isboot/
make extract

grep pmap_unmapdev work/isboot-0.3.3/src/ibft.c

sed -i '.orig' 's/pmap_unmapdev((vm_offset_t)vaddr,/pmap_unmapdev((void *)(uintptr_t)vaddr,/g' /usr/local/xigmanas/svn/build/ports/isboot/work/isboot-0.3.3/src/ibft.c

sed -i '.orig' 's/DVIMAGE$/DVIMAGE\nCFLAGS+= -Wno-error=unused-but-set-variable\n/g' /usr/local/xigmanas/svn/build/ports/isboot/work/isboot-0.3.3/src/Makefile

cd /usr/local/xigmanas/svn/build/ports/isboot/work/isboot-0.3.3/src
diff -u ibft.c.orig ibft.c > ../../../files/patch-ibft.c
diff -u Makefile.orig Makefile > ../../../files/patch-Makefile

cd /usr/local/xigmanas/svn/build/ports/isboot/

fuppes

# bash automake gettext-tools libtool pkgconf newest ports?
# autoreconf libtool gettext-tools pkgconf
cd /usr/local/xigmanas/svn/build/ports/fuppes
make extract
grep 'pStream->codec->' work/fuppes-0.692/src/plugins/metadata_libavformat.c
sed -i '.orig' 's/pStream->codec->/pStream->codecpar->/g' work/fuppes-0.692/src/plugins/metadata_libavformat.c 

diff -u /usr/local/xigmanas/svn/build/ports/fuppes/work/fuppes-0.692/src/plugins/metadata_libavformat.c.orig /usr/local/xigmanas/svn/build/ports/fuppes/work/fuppes-0.692/src/plugins/metadata_libavformat.c > files/patch-src__plugins__metadata_libavformat.c

netatalk3

root@xigmanas:/usr/local/xigmanas/svn/build/ports/netatalk3 # grep -r FreeBSD . | grep LINUX
./work/netatalk-3.1.14/etc/uams/uams_dhx_pam.c:#if defined LINUX || defined __FreeBSD__
./work/netatalk-3.1.14/etc/uams/uams_dhx2_pam.c:#if defined LINUX || defined __FreeBSD__
./work/netatalk-3.1.14/etc/uams/uams_pam.c:#if defined LINUX || defined __FreeBSD__
root@xigmanas:/usr/local/xigmanas/svn/build/ports/netatalk3 #
root@xigmanas:/usr/ports/net/netatalk3/files # ls -l
total 40
-rw-r--r--  1 root wheel  646 Apr  6  2021 netatalk.in
-rw-r--r--  1 root wheel  188 Apr  6  2021 pam.conf
-rw-r--r--  1 root wheel 1767 May  1  2022 patch-config_Makefile.in
-rw-r--r--  1 root wheel  556 Oct  6 23:17 patch-configure
-rw-r--r--  1 root wheel 1007 Feb 27  2023 patch-etc_afpd_Makefile.in
-rw-r--r--  1 root wheel  273 Jul 20  2016 patch-etc_cnid__dbd_cnid__metad.c
-rw-r--r--  1 root wheel  341 May  1  2022 patch-etc_netatalk_Makefile.in
-rw-r--r--  1 root wheel  380 Nov 22 16:10 patch-etc_uams_uams__dhx2__pam.c
-rw-r--r--  1 root wheel  581 Nov 22 16:10 patch-etc_uams_uams__dhx__pam.c
-rw-r--r--  1 root wheel  416 Nov 22 16:10 patch-etc_uams_uams__pam.c
root@xigmanas:/usr/ports/net/netatalk3/files # cat patch-etc_uams_uams__dhx2__pam.c
--- etc/uams/uams_dhx2_pam.c.orig       2023-11-22 15:19:12 UTC
+++ etc/uams/uams_dhx2_pam.c
@@ -136,7 +136,7 @@ error:
  * echo off means password.
  */
 static int PAM_conv (int num_msg,
-#ifdef LINUX
+#if defined(LINUX) || (defined(FREEBSD) && __FreeBSD_version >= 1400000)
                      const struct pam_message **msg,
 #else
                      struct pam_message **msg,
root@xigmanas:/usr/ports/net/netatalk3/files # ls -l /usr/local/xigmanas/svn/build/ports/netatalk3/files/
total 24
-rw-r--r--  1 root wheel 2563 Dec 28 17:22 netatalk.in
-rw-r--r--  1 root wheel 1767 Dec 28 17:22 patch-config_Makefile.in
-rw-r--r--  1 root wheel  508 Dec 28 17:22 patch-configure
-rw-r--r--  1 root wheel 1007 Dec 28 17:22 patch-etc_afpd_Makefile.in
-rw-r--r--  1 root wheel  273 Dec 28 17:22 patch-etc_cnid__dbd_cnid__metad.c
-rw-r--r--  1 root wheel  341 Dec 28 17:22 patch-etc_netatalk_Makefile.in
root@xigmanas:/usr/ports/net/netatalk3/files #