Doc
This commit is contained in:
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