XigmaNAS: Difference between revisions
Jump to navigation
Jump to search
| Line 131: | Line 131: | ||
=== Install packages: === | === Install packages: === | ||
<pre> | <pre> | ||
pkg install -y bash subversion pigz | pkg install -y bash subversion pigz cdrtools | ||
</pre> | </pre> | ||
Revision as of 02:55, 15 July 2024
BSD cloud images https://bsd-cloud-image.org/ login: freebsd
XigmaNAS IRC https://web.libera.chat/#xigmanas
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 vm start xBhyve141 vm console xBhyve141
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
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
pkg base
https://wiki.freebsd.org/PkgBase
date
ls -l /boot/kernel/kernel
grep enabled /usr/local/etc/pkg/repos/base.conf || echo 'base: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_1",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}' >/usr/local/etc/pkg/repos/base.conf
# find security patches. filter unnecessary and current patch-level packages
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
cp /etc/master.passwd.pkgsave /etc/master.passwd
cp /etc/group.pkgsave /etc/group
pwd_mkdb -p /etc/master.passwd
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
# find changed files with "etc" in path
find / -path '*/etc/*' -name "*.pkgsave" -type f
# find changed .conf files
find / -name "*.conf.pkgsave"
find / -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
fetch https://download.freebsd.org/ftp/ports/ports/ports.tar.xz # latest tar xf ports.tar.xz -C /usr/ 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
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
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 #