#!/usr/bin/env bash
PACKAGES="openwisp-config-wolfssl babeld bmx6 bmx6-json bmx6-uci-config bmx7 bmx7-dnsupdate bmx7-iwinfo bmx7-json bmx7-topology bmx7-uci-config bnx2-firmware busybox ca-bundle cgi-io collectd collectd-mod-cpu collectd-mod-interface collectd-mod-iwinfo collectd-mod-load collectd-mod-memory collectd-mod-network collectd-mod-rrdtool confuse curl dnsmasq dropbear e2fsprogs firewall frr frr-libfrr fstools fwtool getrandom grub2 grub2-efi htop iftop inotifywait ip6tables iptables jshn jsonfilter kernel kmod-bnx2 kmod-button-hotplug kmod-crypto-hash kmod-crypto-kpp kmod-crypto-lib-blake2s kmod-crypto-lib-chacha20 kmod-crypto-lib-chacha20poly1305 kmod-crypto-lib-curve25519 kmod-crypto-lib-poly1305 kmod-e1000 kmod-e1000e kmod-forcedeth kmod-fs-vfat kmod-hwmon-core kmod-i2c-algo-bit kmod-i2c-core kmod-igb kmod-input-core kmod-ip6-tunnel kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-ipt-offload kmod-iptunnel6 kmod-ixgbe kmod-lib-crc-ccitt kmod-libphy kmod-mdio kmod-mii kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-flow kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-nf-reject kmod-nf-reject6 kmod-nls-base kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-utf8 kmod-phy-realtek kmod-ppp kmod-pppoe kmod-pppox kmod-pps kmod-ptp kmod-r8169 kmod-slhc kmod-tun kmod-udptunnel4 kmod-udptunnel6 kmod-wireguard libatomic1 libblkid1 libblobmsg-json20210516 libc libcap libcomerr0 libcurl4 libext2fs2 libf2fs6 libgcc1 libgd libinotifytools libip4tc2 libip6tc2 libiwinfo-data libiwinfo-lua libiwinfo20210430 libjpeg-turbo libjson-c5 libjson-script20210516 libltdl7 liblua5.1.5 liblua5.3-5.3 liblucihttp-lua liblucihttp0 libmbedtls12 libncurses6 libnghttp2-14 libnl-core200 libnl-route200 libnl-tiny1 libopenssl1.1 libpcap1 libpcre libpng libpthread librrd1 librt libsmartcols1 libsqlite3-0 libss2 libssh2-1 libstdcpp6 libubox20210516 libubus-lua libubus20210630 libuci20130104 libuclient20201210 libustream-wolfssl20201210 libuuid1 libwebp libwolfssl4.7.0.66253b90 libxtables12 libyang logd lua lua-cjson luasocket luci luci-app-babeld luci-app-bmx6 luci-app-bmx7 luci-app-firewall luci-app-opkg luci-app-statistics luci-app-vnstat2 luci-app-wireguard luci-base luci-compat luci-lib-base luci-lib-dracula luci-lib-httpclient luci-lib-httpprotoutils luci-lib-ip luci-lib-jquery-1-4 luci-lib-json luci-lib-jsonc luci-lib-nixio luci-mod-admin-full luci-mod-network luci-mod-status luci-mod-system luci-proto-ipv6 luci-proto-ppp luci-proto-wireguard luci-ssl luci-theme-bootstrap mkf2fs mtd mtr netifd nmap-full odhcp6c odhcpd-ipv6only openwrt-keyring opkg partx-utils ppp ppp-mod-pppoe procd prometheus-node-exporter-lua prometheus-node-exporter-lua-bmx6 prometheus-node-exporter-lua-bmx7 px5g-wolfssl r8169-firmware rpcd rpcd-mod-file rpcd-mod-iwinfo rpcd-mod-luci rpcd-mod-rrdns rrdtool1 terminfo ubox ubus ubusd uci uclient-fetch uhttpd uhttpd-mod-ubus urandom-seed urngd usign vim-full vnstat2 vnstati2 wg-installer-client wireguard-tools zlib"
FILES="files/"
oldindex=359
for index in {300..359}; do
echo "Bearbeite System n$index.demo.junicast.de"
# Tausche Systemnamen,
# buildroot
# sed -i "s/n${oldindex}/n${index}/g" etc/config/system
# imagebuilder
sed -i "s/n${oldindex}/n${index}/g" files/etc/config/system
# Images bauen
# buildroot
#make -j12
# imagebuilder
make image PACKAGES="${PACKAGES}" FILES="${FILES}"
# buildroot
# scp bin/targets/x86/64/openwrt-x86-64-generic-ext4-combined.img.gz jochen@10700t.libcom.de:n${index}.img.gz
# imagebuilder
# Images auf Zielsystem kopieren
scp bin/targets/x86/64/openwrt-21.02.0-x86-64-generic-ext4-combined.img.gz <<Zielhost_Benutzer>>@<<Zielhost_name>>:n${index}.img.gz
oldindex=$index
((index+=1))
done
3. Auf Proxmox Host die img.gz Dateien auspacken.
4. Auf Proxmox Host die VMs anlegen, HDDs importieren und Netzwerkschnittstellen anlegen.
Hier ist vmbr3 eine dedizierte virtuelle Bridge um die VMs untereinander zu verbinden. Ein physisches Interface ist mit der Bridge nicht verbunden.
vmbr1 ist hier das Interface zum Management der VMs über das VLAN 71.
#!/usr/bin/python3
import os
vlans = [
{'guestid': 300,
'vlanid': 1300,
'nic': 'net0',
'bridge': 'vmbr3'},
{'guestid': 300,
'vlanid': 71,
'nic': 'net1',
'bridge': 'vmbr1'},
{'guestid': 300,
'vlanid': 3000,
'nic': 'net2',
'bridge': 'vmbr3'},
{'guestid': 301,
'vlanid': 1301,
'nic': 'net0',
'bridge': 'vmbr3'},
{'guestid': 301,
'vlanid': 71,
'nic': 'net1',
'bridge': 'vmbr1'},
{'guestid': 301,
'vlanid': 3000,
'nic': 'net2',
'bridge': 'vmbr3'},
{'guestid': 301,
'vlanid': 3001,
'nic': 'net3',
'bridge': 'vmbr3'},
[ … ]
]
for index in range(300, 360):
runcommandqm = "qm create " + str(index) + " --agent 0 --autostart 0 --balloon 0 --cores 1 --cpu host --memory 128 --name node" + str(index)
print(runcommandqm)
os.system(runcommandqm)
runcommandimportdisk = "qm importdisk " + str(index) + " /home/jochen/n" + str(index) + ".img vmdata"
runcommandactivatedisk = "qm set " + str(index) + " --scsihw virtio-scsi-pci --scsi0 vmdata:vm-" + str(index) + "-disk-0"
print(runcommandimportdisk)
os.system(runcommandimportdisk)
print(runcommandactivatedisk)
os.system(runcommandactivatedisk)
for vlan in vlans:
runcommandvlan = "qm set " + str(vlan['guestid']) + " --" + str(vlan['nic']) + " virtio,bridge=" + str(vlan['bridge']) + ",tag=" + str(vlan['vlanid'])
print(runcommandvlan)
os.system(runcommandvlan)
for index in range(300, 360):
runcommandstart ="qm start " + str(index)
print(runcommandstart)
os.system(runcommandstart)
Es geht hier um die Vergrößerung der root Partition eines OpenWrt Systems auf einem Proxmox Host mit ZFS zvol.
fdisk /dev/zvol/nvme1/vm-100-disk-0
e2fsck -f /dev/zvol/nvme1/vm-100-disk-0-part2
resize2fs /dev/zvol/nvme1/vm-100-disk-0-part2
sudo umount /dev/sda1; sudo umount /dev/sda2
p
Partitionsnummer (1,2, Vorgabe 2): 2
Partition 2 wurde gelöscht.
Befehl (m für Hilfe): n
Partitionstyp
p Primär (1 primär, 0 erweitert, 3 frei)
e Erweitert (Container für logische Partitionen)
Wählen (Vorgabe p): p
Partitionsnummer (2-4, Vorgabe 2):
Erster Sektor (35328-3911679, Vorgabe 36864):
Letzter Sektor, +/-Sektoren oder +/-Größe{K,M,G,T,P} (36864-3911679, Vorgabe 3911679):
Eine neue Partition 2 des Typs »Linux« und der Größe 1,8 GiB wurde erstellt.
Partition #2 enthält eine ext4-Signatur.
Wollen Sie die Signatur entfernen? [J]a/[N]ein: n
Befehl (m für Hilfe): p
Festplatte /dev/sda: 1,87 GiB, 2002780160 Bytes, 3911680 Sektoren
Festplattenmodell: STORAGE DEVICE
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x13bec82b
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
/dev/sda1 * 2048 35327 33280 16,3M 83 Linux
/dev/sda2 36864 3911679 3874816 1,8G 83 Linux
Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Festplatten werden synchronisiert.
sudo e2fsck /dev/sda2
sudo resize2fs /dev/sda2
gunzip openwrt-x86-64-generic-ext4-combined-efi.img.gz
qemu-img resize -f raw openwrt-x86-64-generic-ext4-combined-efi.img 2G
sudo losetup /dev/loop10 openwrt-x86-64-generic-ext4-combined-efi.img
sudo partprobe /dev/loop10
[zoggn Downloads]# fdisk /dev/loop10
Willkommen bei fdisk (util-linux 2.37.3).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.
GPT-PMBR-Größenunterschied (246303 != 4194303) wird durch »write« korrigiert.
Die GPT-Sicherungstabelle ist beschädigt, aber die primäre Tabelle scheint in Ordnung zu sein, so dass diese nun benutzt wird.
Die GPT-Sicherungstabelle befindet sich nicht am Ende des Gerätes. Das Problem wird durch »write« korrigiert.
Befehl (m für Hilfe): p
Festplatte /dev/loop10: 2 GiB, 2147483648 Bytes, 4194304 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: F1A09749-5E74-1C55-45EA-3AD00E127900
Gerät Anfang Ende Sektoren Größe Typ
/dev/loop10p1 512 33279 32768 16M Linux-Dateisystem
/dev/loop10p2 33280 246271 212992 104M Linux-Dateisystem
/dev/loop10p128 34 511 478 239K BIOS boot
Partitionstabelleneinträge sind nicht in Festplatten-Reihenfolge.
Befehl (m für Hilfe): d
Partitionsnummer (1,2,128, Vorgabe 128): 2
Partition 2 wurde gelöscht.
Befehl (m für Hilfe): n
Partitionsnummer (2-127, Vorgabe 2): 2
Erster Sektor (33280-4194270, Vorgabe 34816): 33280
Letzter Sektor, +/-Sektoren oder +/-Größe{K,M,G,T,P} (33280-4194270, Vorgabe 4194270):
Eine neue Partition 2 des Typs »Linux filesystem« und der Größe 2 GiB wurde erstellt.
Partition #2 enthält eine ext4-Signatur.
Wollen Sie die Signatur entfernen? [J]a/[N]ein: n
Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Das erneute Einlesen der Partitionstabelle ist fehlgeschlagen.: Das Argument ist ungültig
Der Kernel benutzt noch die alte Tabelle. Die neue Tabelle wird beim nächsten Neustart verwendet werden oder nachdem Sie partprobe(8) oder partx(8) ausgeführt haben.
partprobe /dev/loop10
fsck.ext4 /dev/loop10p2
resize2fs /dev/loop10p2
losetup -d /dev/loop10
gzip openwrt-x86-64-generic-ext4-combined-efi.img