Doc
This commit is contained in:
163
t/PKGBase.md
Normal file
163
t/PKGBase.md
Normal file
@ -0,0 +1,163 @@
|
||||
# Upgrade FreeBSD von 13.2 zu 14.1 oder 13.3 mit pkgbase
|
||||
Quellen:
|
||||
https://wiki.freebsd.org/PkgBase
|
||||
https://vermaden.wordpress.com/2023/12/09/personal-freebsd-pkgbase-update-server/
|
||||
|
||||
## PKGBase Mirror Server erstellen
|
||||
In unserem Fall auf fippuder01.cc.bka
|
||||
```
|
||||
cd /usr/src
|
||||
#git clone https://github.com/freebsd/freebsd-src.git .
|
||||
#git fetch --all
|
||||
#git reset --hard origin/main #wirft alle Änderungen weg
|
||||
git pull
|
||||
git checkout releng/14.1 --force
|
||||
make -j48 buildworld && make -j48 buildkernel && make -j48 packages
|
||||
```
|
||||
Branches: https://github.com/freebsd/freebsd-src/branches
|
||||
Über den `git checkout releng/13.3` kann über den Branch zwischen Versionen gewechselt werden.
|
||||
Der Make Befehl erstellt die Pakete und legt sie unter `/usr/obj/usr/src/repo/FreeBSD:14:amd64/14.1p2` ab (je nach Version).
|
||||
|
||||
### ccache
|
||||
/etc/make.conf
|
||||
```
|
||||
CCACHE_DIR=/var/cache/ccache
|
||||
WITH_CCACHE_BUILD=yes
|
||||
```
|
||||
### nginx config
|
||||
In der NGINX Config wird der Pfad mit den Paketen dann freigegeben
|
||||
`vim /usr/local/etc/nginx/nginx.conf`
|
||||
```
|
||||
location /FreeBSD:14:amd64 {
|
||||
alias /usr/obj/usr/src/repo/FreeBSD:14:amd64/;
|
||||
autoindex on;
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
service nginx reload
|
||||
```
|
||||
Bzw. für 13.3 jeweils checkout releng/13.3 und location/repo FreeBSD:13:amd64
|
||||
|
||||
### Neue Version erstellen:
|
||||
Analog zu oben in den gewünschten Branch wechseln und build starten.
|
||||
Ggf. muss für neue Versionen (wie 15.0) die NGINX Config angepasst werden.
|
||||
## Auf den Clients
|
||||
### Upgrade auf 14.1
|
||||
Sofern das Verzeichnis noch nicht existiert:
|
||||
`mkdir -p /usr/local/etc/pkg/repos`
|
||||
Erstellen eines upgrade Repos für pkg:
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
|
||||
```
|
||||
freebsd-upgrade: {
|
||||
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.1p6
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
Zum Update muss die ABI der neuen Version als Umgebungsvariable mitgegeben werden.
|
||||
```
|
||||
env ABI=freebsd:14:amd64 pkg-static update -r FreeBSD-base-14.1
|
||||
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg-static install -r freebsd-upgrade -g 'FreeBSD-*'
|
||||
```
|
||||
Wenn der Fehler `pkg: Fail to rename /usr/include/c++/v1/.pkgtemp.__string.YaGYjRyeEZcE -> /usr/include/c++/v1/__string:Not a directory` auftritt kann `/usr/include` gelöscht, und die Installation erneut versucht werden.
|
||||
```
|
||||
rm -rf /usr/include
|
||||
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg install -r FreeBSD-base-14.1 -g 'FreeBSD-*'
|
||||
```
|
||||
Durch das Update werden alle Konfigurationsdateien in `/etc` mit den Originaldateien überschrieben. Die bearbeiteten Versionen werden in .pkgsave gespeichert.
|
||||
Wird an dieser Stelle ein Neustart ausgeführt gibt es keine User und Passwörter mehr und die sshd_config ist wie bei einem frischen System.
|
||||
Daher werden die wichtigsten pkgsave Dateien zurück kopiert.
|
||||
```
|
||||
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
|
||||
cp /etc/master.passwd.pkgsave /etc/master.passwd
|
||||
cp /etc/group.pkgsave /etc/group
|
||||
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
|
||||
```
|
||||
Passwort Datenbank neu aufbauen:
|
||||
```
|
||||
pwd_mkdb -p /etc/master.passwd
|
||||
```
|
||||
Alle anderen .pkgsave Dateien können mit folgendem Befehl gelöscht werden, ggf. ist hier zu prüfen welche Dateien sich noch geändert haben.
|
||||
```
|
||||
find /etc -name \*.pkgsave -delete
|
||||
rm /boot/kernel/linker.hints
|
||||
```
|
||||
Alternativ können auch alle .pkgsave dateien gegen die originale ausgetauscht werden um die Konfiguration vor dem Update wiederherzustellen.
|
||||
```
|
||||
bash
|
||||
cd /etc
|
||||
for file in $(ls *.pkgsave); do echo cp $file ${file/.pkgsave/};done
|
||||
etcupdate
|
||||
find /etc -name \*.pkgsave -delete
|
||||
```
|
||||
Damit kann ggf. allerdings neue Konfigurationsoptionen in der neuen Version nicht mitgenommen werden, besser wäre ein Diff jeder .pkgsave Datei mit dem Original um etwaige Änderungen zusammen zu führen.
|
||||
|
||||
Dann kann der Neustart des Clients durchgeführt werden. Mit `freebsd-version -kru`lassen sich die Versionsstände anzeigen. Runtime wird erst durch einen Neustart auf die neue Version gehoben.
|
||||
```
|
||||
reboot
|
||||
```
|
||||
Nach dem Upgrade muss pkg neu initialisiert und alle Pakete geupdatet werden. An dieser Stelle kann auch das Repository in der upgrade.conf auf `enabled = no` gesetzt werden.
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
```
|
||||
upgrade: {
|
||||
url = http://fippuder01.cc.bka/FreeBSD:14:amd64/14.1p2
|
||||
enabled = no
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
pkg upgrade -y
|
||||
```
|
||||
|
||||
### Update auf 13.3
|
||||
Analog zu 14.1, nur einfacher:
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
```
|
||||
upgrade {
|
||||
url = http://fippuder01.i.cc.bka/FreeBSD:13:amd64/13.3p4
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg-static update -r upgrade
|
||||
rm -rf /usr/include
|
||||
pkg-static install -r upgrade -g 'FreeBSD-*'
|
||||
```
|
||||
Auch hier gilt, Konfigurationsdateien zurück kopieren, siehe Upgrade auf 14.1
|
||||
```
|
||||
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
|
||||
cp /etc/master.passwd.pkgsave /etc/master.passwd
|
||||
cp /etc/group.pkgsave /etc/group
|
||||
pwd_mkdb -p /etc/master.passwd
|
||||
service sshd restart
|
||||
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
|
||||
find / -name \*.pkgsave -delete
|
||||
rm /boot/kernel/linker.hints
|
||||
reboot
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
pkg upgrade -y
|
||||
```
|
||||
|
||||
## Upgrade von 14.1p6 auf 14.2
|
||||
upgrade.conf bearbeiten
|
||||
```
|
||||
vim /usr/local/etc/pkg/repos/upgrade.conf
|
||||
```
|
||||
|
||||
```
|
||||
FreeBSD-base-14.2: {
|
||||
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.2
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg update
|
||||
pkg upgrade
|
||||
shutdown -r now
|
||||
```
|
||||
108
t/Upgrade_FreeBSD_via_Boot_Environment.md
Normal file
108
t/Upgrade_FreeBSD_via_Boot_Environment.md
Normal file
@ -0,0 +1,108 @@
|
||||
getestet auf fatnetbox01 (vm) und fapelastic30-34
|
||||
|
||||
Boot Environment erstellen und in /mnt einhängen
|
||||
```
|
||||
bectl create 141
|
||||
mkdir /mnt/141
|
||||
bectl mount 141 /mnt/141
|
||||
```
|
||||
Heruntergeladene 14.1-RELEASE base und kernel txz auf Host kopieren und in eingehangenes Boot Environment entpacken
|
||||
|
||||
```
|
||||
tar -xf base.txz -C /mnt/141 --unlink #wirft einige Fehler (not a directory), das ist okay
|
||||
tar -xf kernel.txz -C /mnt/141 --unlink
|
||||
```
|
||||
|
||||
Dateien kopieren anhand von https://git.cc.bka/projektecc15/projekte_ansible/systemkonfiguration/klara-postgres-cluster/-/blob/main/ansible/files/syncbe.conf?ref_type=heads
|
||||
Zum Starten reicht hier meist
|
||||
- `passwd`
|
||||
- `master.passwd`
|
||||
- `group`
|
||||
- `*.db`
|
||||
- `sshd_config`
|
||||
Bestenfalls mit diff vergleichen
|
||||
```
|
||||
cd /mnt/141
|
||||
git diff /etc/ssh/sshd_config /mnt/141/etc/ssh/sshd_config
|
||||
cp /etc/ssh/sshd_config /mnt/141/etc/ssh/sshd_config
|
||||
git diff /etc/passwd /mnt/141/etc/passwd
|
||||
cp /etc/passwd /mnt/141/etc/passwd
|
||||
git diff /etc/group /mnt/141/etc/group
|
||||
cp /etc/group /mnt/141/etc/group
|
||||
cp /etc/*.db /mnt/141/etc/
|
||||
git diff /etc/master.passwd /mnt/141/etc/master.passwd
|
||||
cp /etc/master.passwd /mnt/141/etc/master.passwd
|
||||
```
|
||||
Eventuell müssen die master.passwd Änderungen noch angewendet werden:
|
||||
```
|
||||
chroot /mnt/141 #boot env als chroot betreten
|
||||
pwd_mkdb /etc/master.passwd
|
||||
exit #aus boot env chroot raus
|
||||
```
|
||||
|
||||
ggf. noch weitere (siehe Link) wie Zeitzone, resolv.conf etc. siehe unten.
|
||||
|
||||
Testen:
|
||||
```
|
||||
bectl activate -t 141
|
||||
reboot
|
||||
```
|
||||
|
||||
FreeBSD Version kontrollieren:
|
||||
```
|
||||
freebs-version -kru
|
||||
```
|
||||
|
||||
Wenn alles klappt permanent Boot Environment verwenden
|
||||
```
|
||||
bectl activate 141
|
||||
```
|
||||
|
||||
Danach muss pkg neu installiert werden
|
||||
```
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
```
|
||||
|
||||
Weiter für Patches in [PKGBase](PKGBase.md)
|
||||
|
||||
Weitere Dateien nach Upgrade prüfen:
|
||||
im besten Fall via DIFF vergleichen falls Neuerungen in dem Update dazu kamen.
|
||||
```
|
||||
/etc/resolv.conf
|
||||
/etc/ssh/moduli
|
||||
/etc/ssh/host-keys
|
||||
/etc/rc.conf
|
||||
/etc/services (checkmk)
|
||||
/etc/inetd.conf (checkmk)
|
||||
/etc/rc.conf.d/inetd
|
||||
/etc/rc.conf.d/jail
|
||||
/etc/rc.conf.d/ntpd
|
||||
/etc/ssh-banner
|
||||
/etc/localtime
|
||||
/etc/passwd
|
||||
/etc/master.passwd
|
||||
/etc/group
|
||||
/etc/*.db
|
||||
/etc/jail.conf.d/*.conf
|
||||
/etc/ntp.conf
|
||||
/etc/fstab
|
||||
/etc/crontab/periodic
|
||||
boot/loader.conf
|
||||
```
|
||||
|
||||
|
||||
# ZFS Image für Boot Environment erstellen
|
||||
*Doku siehe klara-mariadb-cluster/doc/upgrades*
|
||||
Login auf fippuder02
|
||||
Neues Poudriere Jail erstellen:
|
||||
```
|
||||
poudriere jail -c -j 141BEbuilderamd64 -v 14.1-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
Dann das Image erstellen:
|
||||
```
|
||||
poudriere image -t zfs+send+be -j 141BEbuilderamd64 -s 4G -h '' -o /usr/local/poudriere/images -n 141BE
|
||||
```
|
||||
|
||||
Dieses landet dann in /usr/local/poudriere/images
|
||||
107
t/poudriere_image_bauen.md
Normal file
107
t/poudriere_image_bauen.md
Normal file
@ -0,0 +1,107 @@
|
||||
*nicht getestet*
|
||||
# Image in poudriere bauen
|
||||
jail erstellen
|
||||
```
|
||||
poudriere jail -c -j 14amd64image -v 14.1-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
```
|
||||
poudriere image -t firmware -j 14amd64image -s 4g -h 14amd64image-hostname -n 14amd64image
|
||||
```
|
||||
-t image type
|
||||
-j jail
|
||||
-s size
|
||||
-p portstree aus dem die images genommen werden
|
||||
landet in `/usr/local/poudriere/data/images/14amd64image.img`
|
||||
types siehe `man poudriere-image`
|
||||
|
||||
image temporär mounten
|
||||
```
|
||||
mdconfig -a -t vnode -f /usr/local/poudriere/data/images/14amd64image.img
|
||||
gpart show -l md0
|
||||
mount /dev/md0p3 /mnt/
|
||||
```
|
||||
|
||||
eigenes Repo für ports anlegen
|
||||
```
|
||||
poudriere ports -c -p 14amd64imageports
|
||||
```
|
||||
Ports Liste anlegen
|
||||
`/usr/local/etc/poudriere.d/14amd64imageports.list`
|
||||
```
|
||||
lang/python311
|
||||
```
|
||||
portstre bauen
|
||||
```
|
||||
poudriere bulk -j 14amd64 -p 14amd64imageports -f /usr/local/etc/poudriere.d/14amd64imageports.list
|
||||
```
|
||||
image erstellen
|
||||
```
|
||||
poudriere image -t firmware -j 14amd64 -s 4g -p 14amd64imageports -h 14amd64image-hostname -n 14amd64image -c /tmp/image -f 14amd64imageports.list
|
||||
```
|
||||
mit -c kann ein pfad angegeben werden, dessen Inhalt ins Jail gemountet wird.
|
||||
-A würde ein shell Skript einfügen was am Ende ausgeführt wird
|
||||
In diesem Fall wurde in /tmp/image ein Ordner root/.ssh/ mit authorized_keys erstellt um den SSH Key ins Image zu bekommen.
|
||||
|
||||
# Eigenes Installer ISO bauen
|
||||
|
||||
Jail erstellen
|
||||
```
|
||||
poudriere jail -c -j 142imageamd64 -v 14.2-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
Paket Liste erstellen
|
||||
```
|
||||
vim /usr/local/etc/poudriere.d/142imageamd64.list
|
||||
```
|
||||
mit Inhalt (und ggf. weiteren Paketen)
|
||||
```
|
||||
lang/python
|
||||
```
|
||||
pakete bauen
|
||||
```
|
||||
poudriere bulk -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list
|
||||
```
|
||||
|
||||
in Image zu integrierende Dateien anlegen in `/usr/local/poudriere/images/overlay`
|
||||
```
|
||||
root@fippuder02:/usr/local/poudriere/images/overlay # tree -a
|
||||
.
|
||||
├── etc
|
||||
│ ├── rc.local
|
||||
│ └── ssh
|
||||
│ └── sshd_config
|
||||
├── root
|
||||
│ └── .ssh
|
||||
│ └── authorized_keys
|
||||
└── usr
|
||||
├── freebsd-dist
|
||||
│ ├── MANIFEST
|
||||
│ ├── base.txz
|
||||
│ └── kernel.txz
|
||||
└── local
|
||||
└── etc
|
||||
└── pkg
|
||||
└── repos
|
||||
├── FreeBSD.conf
|
||||
└── poudriere.conf
|
||||
```
|
||||
|
||||
Installer braucht /etc.rc.local um direkt beim Starten aufgerufen zu werden. Diese wurde aus einem offiziellen Installationsimage kopiert.
|
||||
/usr/freebsd-dist enthält Installationsdateien für Installer.
|
||||
Angepasste base.txz erzeugen:
|
||||
```
|
||||
poudriere image -t tar -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list -s 4G -h '' -o /usr/local/poudriere/images/ -c /usr/local/poudriere/images/overlay/ -n base
|
||||
```
|
||||
und aus /usr/local/poudriere/images in overlay/usr/freebsd-dist verschieben
|
||||
|
||||
kernel.txz und Manifest von https://download.freebsd.org/ftp/releases/amd64/14.2-RELEASE/ herunterladen und in Ordner kopieren. Manifest anpassen (sha256sum von base.txz und zusätzliche Einträge außer base und kernel entfernen).
|
||||
pkg repo config anlegen und authorized_keys in root/.ssh anlegen.
|
||||
|
||||
Image bauen
|
||||
```
|
||||
poudriere image -t hybridiso -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list -s 4G -h '' -o /usr/local/poudriere/images/ -c /usr/local/poudriere/images/overlay/ -n 142imageamd64
|
||||
```
|
||||
|
||||
Nach der Installation muss dann noch mit `rm /etc/rc.local` die rc.local entfernt werden damit beim booten nicht der Installer startet.
|
||||
Zudem muss die sshd_config angepasst werden, damit PermitRootLogin aktiviert ist.
|
||||
Reference in New Issue
Block a user