freebsd:bhyve
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| freebsd:bhyve [2021-05-04 20:42:31] – manfred | freebsd:bhyve [2022-05-01 17:29:23] (aktuell) – gelöscht manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Bhyve ====== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
| - | ==== Bhyve installieren ==== | ||
| - | |||
| - | das Virtualisierungsmodul laden: | ||
| - | > kldload vmm | ||
| - | > echo ' | ||
| - | |||
| - | die Netzwerkanbindung vorbereiten: | ||
| - | > ifconfig tap0 create | ||
| - | > sysctl net.link.tap.up_on_open=1 | ||
| - | net.link.tap.up_on_open: | ||
| - | > ifconfig bridge0 create | ||
| - | > ifconfig bridge0 addm igb0 addm tap0 | ||
| - | > ifconfig bridge0 up | ||
| - | |||
| - | Konfiguration persistent machen, damit sie nach einem Reboot wieder vorhanden ist: | ||
| - | > echo " | ||
| - | > echo ' | ||
| - | > echo ' | ||
| - | > echo ' | ||
| - | |||
| - | für eine 2. VM bräuchte man dann ein weiteres TAP: | ||
| - | > ifconfig tap1 create | ||
| - | > ifconfig bridge0 addm tap1 | ||
| - | |||
| - | und diese beiden Zeilen müssten dann in der '''' | ||
| - | > vi / | ||
| - | ... | ||
| - | cloned_interfaces=" | ||
| - | ifconfig_bridge0=" | ||
| - | ... | ||
| - | |||
| - | |||
| - | ==== FreeBSD als Gast in der VM starten ==== | ||
| - | |||
| - | eine virtuelle Festplatte erstellen: | ||
| - | > truncate -s 16G freebsd.img | ||
| - | |||
| - | FreeBSD 10.3 in der VM installieren: | ||
| - | > sh / | ||
| - | |||
| - | die VM von ihrer virtuellen Platte starten: | ||
| - | > sh / | ||
| - | |||
| - | |||
| - | ===== Bhyve-Netzwerkkonfiguration ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * __NAT__ - //VM und Host gehen über die selbe Netzwerkkarte und der selben IP ins Netz// | ||
| - | * [[https:// | ||
| - | * __Bridged networking__ - //VM und Host gehen über die selbe Netzwerkkarte aber unterschiedlichen IPs ins Netz// | ||
| - | * '' | ||
| - | * __NIC Passthrough__ - //eine Netzwerkkarte alleine nur für die VM// | ||
| - | * '' | ||
| - | |||
| - | |||
| - | |||
| - | ===== Bridged networking - VM und Host gehen über die selbe Netzwerkkarte aber unterschiedlichen IPs ins Netz ===== | ||
| - | |||
| - | > pkg install sysutils/ | ||
| - | |||
| - | eine virtuelle Festplatte erstellen: | ||
| - | > truncate -s 16G linux.img | ||
| - | |||
| - | |||
| - | ==== Linux als Gast in der VM installieren ==== | ||
| - | |||
| - | Map-Datei für den Grub anlegen: | ||
| - | > vi device.map | ||
| - | (hd0) ./linux.img | ||
| - | (cd0) ./ | ||
| - | |||
| - | Grub läd den Linux-Kernel vom Installations-ISO-Image: | ||
| - | > grub-bhyve -m device.map -r cd0 -M 1024M linuxguest | ||
| - | |||
| - | VM starten: | ||
| - | > ubhyve -A -H -P -s 0: | ||
| - | > bhyvectl --destroy --vm=linuxguest | ||
| - | |||
| - | |||
| - | ==== in der VM installiertes Linux starten ==== | ||
| - | |||
| - | Map-Datei für den Grub anpassen: | ||
| - | > vi device.map | ||
| - | (hd0) ./linux.img | ||
| - | | ||
| - | Grub läd den Linux-Kernel von der virtuellen Festplatte: | ||
| - | > grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest | ||
| - | |||
| - | VM starten: | ||
| - | > bhyve -A -H -P -s 0: | ||
| - | > bhyvectl --destroy --vm=linuxguest | ||
| - | |||
| - | |||
| - | ==== Konsolen in der virtuellen Maschine ==== | ||
| - | |||
| - | > kldload nmdm | ||
| - | > bhyve -A -H -P -s 0: | ||
| - | > cu -l /dev/nmdm0B | ||
| - | Connected | ||
| - | | ||
| - | Ubuntu 13.10 handbook ttyS0 | ||
| - | | ||
| - | handbook login: | ||
| - | |||
| - | |||
| - | ==== Virtuelle Maschinen verwalten ==== | ||
| - | |||
| - | > ls -al /dev/vmm | ||
| - | total 1 | ||
| - | dr-xr-xr-x | ||
| - | dr-xr-xr-x | ||
| - | crw------- | ||
| - | crw------- | ||
| - | crw------- | ||
| - | |||
| - | > bhyvectl --destroy --vm=guestname | ||
| - | |||
| - | |||
| - | ==== vereinfachen per Skript am Beispiel einer Minecraft-VM ==== | ||
| - | |||
| - | Das Host-System heißt in diesem Beispiel " | ||
| - | Auf dem Host-System tun wir fast alles als Benutzer " | ||
| - | |||
| - | Die VM sollte derart vorbereitet sein, dass " | ||
| - | * dazu muss eine statische Netzwerkkonfiguration im VM-OS konfiguriert sein | ||
| - | * weiterhin muss der Benutzer " | ||
| - | * und der öffentliche Teil von " | ||
| - | Dann ist das stoppen der VM viel einfacher. | ||
| - | |||
| - | Auch wenn das Verzeichnis ''/ | ||
| - | Ich habe es nur als allgemeinen Ablageort für die Dateien bezüglich dieser VM gewählt: | ||
| - | > ls -lha / | ||
| - | drwxr-xr-x | ||
| - | drwxr-xr-x | ||
| - | -rwxr-xr-x | ||
| - | drwxr-xr-x | ||
| - | -rw-r--r-- | ||
| - | -rw-r--r-- | ||
| - | -rwx------ | ||
| - | | ||
| - | > ls -lha / | ||
| - | drwxr-xr-x | ||
| - | drwxr-xr-x | ||
| - | -rwxr-xr-x | ||
| - | |||
| - | <file bash / | ||
| - | #!/bin/bash | ||
| - | |||
| - | VM_GAST=" | ||
| - | HDD=" | ||
| - | CDROM=" | ||
| - | CPU=" | ||
| - | RAM=" | ||
| - | NETZWK=" | ||
| - | |||
| - | # | ||
| - | |||
| - | cd $(dirname ${0}) || exit 123 | ||
| - | |||
| - | ps alxwww | fgrep -v grep | fgrep grub-bhyve | fgrep Minecraft && killall grub-bhyve | ||
| - | sleep 0.5 | ||
| - | ps alxwww | fgrep -v grep | fgrep grub-bhyve | fgrep Minecraft && killall grub-bhyve | ||
| - | sleep 0.5 | ||
| - | |||
| - | grub-bhyve -m device.map -r hd0,msdos1 -M ${RAM} ${VM_GAST} | ||
| - | bhyve -A -H -P -s 0: | ||
| - | |||
| - | bhyvectl --destroy --vm=${VM_GAST} | ||
| - | ls -lha /dev/vmm/ | ||
| - | |||
| - | # | ||
| - | </ | ||
| - | |||
| - | <file bash / | ||
| - | #!/bin/bash | ||
| - | |||
| - | screen -S Minecraft / | ||
| - | </ | ||
| - | |||
| - | > echo " | ||
| - | |||
| - | starten: | ||
| - | [fritz@server ~]$ sudo / | ||
| - | |||
| - | Kontrolle: | ||
| - | [fritz@server ~]$ sudo / | ||
| - | [fritz@server ~]$ ls -lha /dev/vmm/ | ||
| - | total 2 | ||
| - | dr-xr-xr-x | ||
| - | dr-xr-xr-x | ||
| - | crw------- | ||
| - | | ||
| - | [root@server ~]# screen -ls | ||
| - | There are screens on: | ||
| - | 3793.Minecraft | ||
| - | 1 Socket in / | ||
| - | |||
| - | " | ||
| - | [fritz@server ~]$ ssh root@192.168.1.250 | ||
| - | |||
| - | " | ||
| - | [root@server ~]# screen -x Minecraft | ||
| - | |||
| - | stoppen: | ||
| - | [fritz@server ~]$ ssh root@192.168.1.250 halt -p | ||
| - | |||
| - | |||
| - | === Minecraft in der VM installieren === | ||
| - | |||
| - | soweit ist jetzt alles vorbereitet, | ||
| - | |||
| - | Den gewünschten Minecraft-Server kann man beispielsweise von [[https:// | ||
| - | |||
| - | in der VM müssen folgende Kommandos ausgeführt werden: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | root@minecraft: | ||
| - | |||
| - | |||
| - | === Skripte zum starten des Minecraft-Servers === | ||
| - | |||
| - | Das Ubuntu-Linux 20.04 wurde in der VM bei der Installation mit dem Hostnamen " | ||
| - | Der Hostname und die IP wurden auch im DNS eingetragen. | ||
| - | |||
| - | Die VM sollte derart vorbereitet sein, dass " | ||
| - | * dazu muss eine statische Netzwerkkonfiguration im VM-OS konfiguriert sein | ||
| - | * weiterhin muss der Benutzer " | ||
| - | * und der öffentliche Teil von " | ||
| - | Dann ist das stoppen der VM viel einfacher. | ||
| - | |||
| - | root@minecraft: | ||
| - | drwxr-xr-x 2 root root 4.0K Nov 13 13:33 bin | ||
| - | drwx------ 7 root root 4.0K Nov 13 14:16 Minecraft_Server | ||
| - | -rw-r--r-- 1 root root 0 Nov 13 11:13 systemctl | ||
| - | |||
| - | root@minecraft: | ||
| - | -rwxr-xr-x 1 root root 620 Nov 13 13:33 mc.sh | ||
| - | -rwxr-xr-x 1 root root 206 Nov 13 10:59 Start.sh | ||
| - | |||
| - | <file bash / | ||
| - | # | ||
| - | # | ||
| - | |||
| - | SERVER_JAR=" | ||
| - | SPEICHER=" | ||
| - | PATH="/ | ||
| - | |||
| - | echo java -Xmx3G -Xms3G -XX: | ||
| - | cd / | ||
| - | |||
| - | #read PAUSE | ||
| - | </ | ||
| - | |||
| - | <file bash / | ||
| - | # | ||
| - | # | ||
| - | |||
| - | PATH="/ | ||
| - | |||
| - | cd / | ||
| - | screen -S Minecraft / | ||
| - | </ | ||
| - | |||
| - | |||
| - | === Start-Prozedur des Minecraft-Servers === | ||
| - | |||
| - | einloggen in die VM: | ||
| - | [fritz@server ~]$ ssh root@192.168.1.250 | ||
| - | |||
| - | Minecraft-Servers starten: | ||
| - | root@minecraft: | ||
| - | |||
| - | aus dem Screen raus gehen: | ||
| - | [Strg]+[a], | ||
| - | |||
| - | Kontrolle: | ||
| - | screen -ls | ||
| - | |||
| - | |||
| - | === Stop-Prozedur des Minecraft-Servers === | ||
| - | |||
| - | Entweder hat man die Konsole vom Start des Minecraft-Servers noch offen, dann kann man dort einfach " | ||
| - | |||
| - | ... oder man muss sich wieder in die VM einloggen: | ||
| - | [fritz@server ~]$ ssh root@192.168.1.250 | ||
| - | | ||
| - | root@minecraft: | ||
| - | There is a screen on: | ||
| - | 1653.Minecraft | ||
| - | 1 Socket in / | ||
| - | | ||
| - | root@minecraft: | ||
| - | > stop | ||
| - | |||
| - | |||
| - | ===== NIC Passthrough - eine Netzwerkkarte alleine nur für die VM ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| - | > pciconf -v -l | fgrep -A1 -B3 network | ||
| - | em1@pci0: | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | Ethernet Connection: '' | ||
| - | |||
| - | das hier funktioniert bei mir nicht: | ||
| - | > echo ' | ||
| - | > reboot | ||
| - | |||
| - | > devctl set driver -f pci0:0:31:6 ppt | ||
| - | |||
| - | > pciconf -lv | fgrep -A1 -B3 network | ||
| - | ppt0@pci0: | ||
| - | vendor | ||
| - | device | ||
| - | class = network | ||
| - | subclass | ||
| - | |||
| - | ... PCI passthrough requires direct memory allocation, hence the -S flags.\\ | ||
| - | [[http:// | ||
| - | > grub-bhyve -m device.map -r hd0,msdos1 -S -M 4G Linux | ||
| - | > bhyve -A -H -P -S -s 0: | ||
| - | > bhyvectl --destroy --vm=Linux | ||
| - | > ls -lha /dev/vmm | ||
| - | total 1 | ||
| - | dr-xr-xr-x | ||
| - | dr-xr-xr-x | ||
| - | crw------- | ||
| - | |||
| - | Wenn jetzt kein Ping durchgeht, dann hat man sicherlich vergessen, ein Eth-Kabel anzuschließen. :-) | ||
| - | |||
/home/http/wiki/data/attic/freebsd/bhyve.1620160951.txt · Zuletzt geändert: von manfred
