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

107 lines
3.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
*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.