Files
klara-ports/t/poudriere_image_bauen.md
Xavier Beaudouin 3b54995a82 Doc
2025-03-17 15:29:13 +01:00

3.5 KiB

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.