====== FreeBSD-14.0-STABLE-Image ======
===== FreeBSD-14.0-STABLE Downlad & Start =====
#!/bin/sh
#------------------------------------------------------------------------------#
#
# Dieses Skript hilt sich das neueste FreeBSD-RAW-Image und startet es mit Bhyve.
# Zu diesem Zweck wird auch ein TAP angelegt, wenn es nicht schon da ist und
# zur Brücke hinzugefügt.
#
#------------------------------------------------------------------------------#
VERSIN="2024021700"
RAM="1G"
NIC="tap10"
### wenn das NIC bereits in Nutzung ist, wird abgebrochen
ifconfig ${NIC} | grep -F 'Opened by PID ' && (echo "Das für diese VM vorgesehene NIC wird z.Z. benutzt."; exit 11)
#------------------------------------------------------------------------------#
### neuestes STABLE-Release-Namen auslesen
STABLERELEASE="$(links -dump https://download.freebsd.org/snapshots/VM-IMAGES/ | awk '/STABLE/{sub("/",""); print $1}' | sort -nr | head -n1)"
### wenn eine VM mit diesem Namen bereits läuft, dann wird abgebrochen
if [ -e /dev/vmm/FreeBSD-${STABLERELEASE} ] ; then
echo "Es läuft bereits eine VM mit diesem Namen."
exit 12
fi
### neuestes STABLE-Image saugen
FETCH_IMG="$(links -dump https://download.freebsd.org/snapshots/VM-IMAGES/${STABLERELEASE}/amd64/Latest/ | awk '/[.]raw[.]xz/{print $1}')"
DISKNAME="$(echo "${FETCH_IMG}" | rev | sed 's/[^.]*[.]//' | rev)"
#
#rm -f ${DISKNAME}
if [ -e "${DISKNAME}" ] ; then
echo "Es gibt noch kein neues Release."
echo "Es wird das vorhandene gestartet..."
else
rm -f ${FETCH_IMG}
fetch https://download.freebsd.org/snapshots/VM-IMAGES/${STABLERELEASE}/amd64/Latest/${FETCH_IMG}
### Image entpacken
unxz -v ${FETCH_IMG}
fi
### Netzwerkanbindung
ifconfig bridge0 || ifconfig bridge create
ifconfig ${NIC} || ifconfig ${NIC} create
ifconfig bridge0 | grep -F "member: ${NIC} " || ifconfig bridge0 addm ${NIC}
### NIC mit Default-Route (ins Internet???) ermitteln
INTERNETNIC="$(route get default | awk '/interface:/{print $NF}')"
if [ x = "x${INTERNETNIC}" ] ; then
echo 'Es ẃurde keine NIC mit Default-Route gefunden!'
echo 'Die VM wird versuchen sich eine IP-Adresse per DHCP vom Host (per lo0) zu holen.'
ifconfig bridge0 | grep -F "member: lo0 " || ifconfig bridge0 addm lo0
else
ifconfig bridge0 | grep -F "member: ${INTERNETNIC} " || ifconfig bridge0 addm ${INTERNETNIC}
fi
### VM starten
echo "sh /usr/share/examples/bhyve/vmrun.sh -m ${RAM} -t ${NIC} -d ${DISKNAME} FreeBSD-${STABLERELEASE}"
screen -S FreeBSD-${STABLERELEASE} sh /usr/share/examples/bhyve/vmrun.sh -m ${RAM} -t ${NIC} -d ${DISKNAME} FreeBSD-${STABLERELEASE}
### Hinweise zum sauber machen
echo "
ifconfig -a
ifconfig bridge0 deletem ${NIC}
ifconfig ${NIC} destroy
ifconfig bridge0 destroy
"
===== FreeBSD-14.0-STABLE-Image (UFS-RAW) vergrößern =====
> ls -lha FreeBSD-14.0-STABLE-amd64.raw
-rw-r--r-- 1 root wheel 6G Feb 17 11:40 FreeBSD-14.0-STABLE-amd64.raw
> truncate -s +10G FreeBSD-14.0-STABLE-amd64.raw
> ls -lha FreeBSD-14.0-STABLE-amd64.raw
-rw-r--r-- 1 root wheel 16G Feb 17 11:41 FreeBSD-14.0-STABLE-amd64.raw
> du -sh FreeBSD-14.0-STABLE-amd64.raw
1.8G FreeBSD-14.0-STABLE-amd64.raw
> truncate -s 20G FreeBSD-14.0-STABLE-amd64.raw
> ls -lha FreeBSD-14.0-STABLE-amd64.raw
-rw-r--r-- 1 root wheel 20G Feb 17 11:43 FreeBSD-14.0-STABLE-amd64.raw
> du -sh FreeBSD-14.0-STABLE-amd64.raw
1.8G FreeBSD-14.0-STABLE-amd64.raw
> screen -S FreeBSD-14.0-STABLE sh /usr/share/examples/bhyve/vmrun.sh -m 1G -t tap10 -d FreeBSD-14.0-STABLE-amd64.raw FreeBSD-14.0-STABLE
> gpart list | awk '/Geom name: /{print $NF}'
vtbd0
[root@freebsd ~]# gpart show vtbd0
=> 34 12649618 vtbd0 GPT (16G) [CORRUPT]
34 122 1 freebsd-boot (61K)
156 66584 2 efi (33M)
66740 2097152 3 freebsd-swap (1.0G)
2163892 10485760 4 freebsd-ufs (5.0G)
[root@freebsd ~]# gpart resize -i 4 vtbd0
gpart: autofill: No space left on device
[root@freebsd ~]# growfs /
growfs: requested size 5.0GB is equal to the current filesystem size 5.0GB
[root@freebsd ~]# GEOM_PART: vtbd0 was automatically resized.
Use `gpart commit vtbd0` to save changes or `gpart undo vtbd0` to revert them.
[root@freebsd ~]# gpart show vtbd0
=> 34 41942966 vtbd0 GPT (20G)
34 122 1 freebsd-boot (61K)
156 66584 2 efi (33M)
66740 2097152 3 freebsd-swap (1.0G)
2163892 10485760 4 freebsd-ufs (5.0G)
12649652 29293348 - free - (14G)
[root@freebsd ~]# gpart commit vtbd0
[root@freebsd ~]# gpart resize -i 4 vtbd0
vtbd0p4 resized
[root@freebsd ~]# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/gpt/rootfs 4.8G 3.8G 636M 86% /
devfs 1.0K 0B 1.0K 0% /dev
/dev/gpt/efiesp 32M 648K 31M 2% /boot/efi
[root@freebsd ~]# growfs /
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/gpt/rootfs, mounted on /, from 5.0GB to 19GB? [yes/no] yes
growfs: no room to allocate last cylinder group; leaving 7.6MB unused
super-block backups (for fsck_ffs -b #) at:
11544384, 12827072, 14109760, 15392448, 16675136, 17957824, 19240512, 20523200, 21805888, 23088576, 24371264, 25653952, 26936640, 28219328, 29502016, 30784704, 32067392, 33350080, 34632768, 35915456, 37198144,
38480832
[root@freebsd ~]# df -h /
Filesystem Size Used Avail Capacity Mounted on
/dev/gpt/rootfs 18G 3.8G 13G 23% /
[root@freebsd ~]# gpart show vtbd0
=> 34 41942966 vtbd0 GPT (20G)
34 122 1 freebsd-boot (61K)
156 66584 2 efi (33M)
66740 2097152 3 freebsd-swap (1.0G)
2163892 39778892 4 freebsd-ufs (19G)
41942784 216 - free - (108K)