Kipróbáltam FreeBSD alatt a bhyve hypervisort, szeretnék használni virtuális gépeket is az itthoni szerveren.
Nem szeretnék operációs rendszert telepítgetni virtuális gépekbe, ezért gondoltam, hogy egy cloud image-et fogok használni.
Telepítés
A telepítése egyszerű volt, ezt az oldalt néztem a legtöbbet: https://github.com/churchers/vm-bhyve
A következő csomagokat tettem fel:
- vm-bhyve
- grub2-bhyve
- bhyve-firmware
- edk2-bhyve
- qemu-tools
- cdrkit-genisoimage
A vm-bhyve-ban van egy alap szintű cloud init támogatás, a qemu-tools, és a cdrkit-genisoimage csomagok ehhez kellenek.
Az /etc/rc.conf-ba ezeket kellett felvenni:
vm_enable="YES"
vm_dir="zfs:zroot/vm"
És a vmm kernel modult kellett engedélyezni, /boot/loader.conf:
vmm_load="YES"
A https://github.com/churchers/vm-bhyve oldalon a quick start-ban leírtak teljesen jól működnek, javaslom hogy az ott leírt lépéseket kövesd, ha Te is ki akarod próbálni a bhyve-ot.
Hálózat beállítása
A hálózati beállításoknál volt egy kisebb módosítás nekem a leíráshoz képest, mert már van egy bridge-em a jail-ek miatt, és így nem tudtam újat létrehozni, mert ahhoz nem lehet már hozzáadni az em0 (vagyis nekem re0) interfészt:
Tehát ez a rész a leírásból:
7. vm switch create public
8. vm switch add public em0
módosult erre:
vm switch create -t manual -b bridge0 public
Virtuális gép létrehozása - csapó 1
A VNC csak UEFI-s boottal működik.
Az első bhyve-os virtuális gépemhez a következő template-et csináltam:
# cat /zroot/vm/.templates/ubuntu.conf
loader="uefi"
cpu=4
memory=4096M
network0_type="virtio-net"
network0_switch="public"
disk0_type="nvme"
disk0_name="zvol"
disk0_dev="sparse-zvol"
graphics="yes"
graphics_res="1280x1024"
vm img paranccsal le tudom tölteni az ubuntu cloud image-et, innen: https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-ser…
vm img https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
Ezt eltette a /zroot/vm/.img könyvtárba. Ha iso-t tölt le valaki, akkor a "vm iso" paranccsal kell, és az a zroot/vm/.iso-ba került.
SSH kulcs generálása:
ssh-keygen -t ed25519
Gép létrehozása:
A vm-bhyve-nak a -C paraméterrel mondhatjuk meg, hogy cloud-init-et szeretnénk használni. Ekkor létrehozza a /zroot/vm/virutális_gép/.cloud_init-be a cloud_init fájlokat, amit utána becsomagol a seed.iso-ba, kb így. Ehhez kellhetett a cdrkit-genisoimage csomag. (pl.: genisoimage -output ./seed.iso -volid cidata -joliet -rock .cloud-init/*)
A -n paraméterrel a hálózati beállítások adhatóak meg, amit a vm create beleír a network-config cloud-init fájlba, megtaláltam az Interneten a példát:
vm create -t ubuntu -s 20g -i ubuntu-24.04-server-cloudimg-amd64.img -C -n "ip=192.168.4.230;gateway=192.168.4.1;nameservers=1.1.1.1" -k ~/.ssh/id_ed25519.pub ubuntu
Indítás:
vm start ubuntu
És pufff, nem működik! A vm console-lal csatlakozni szeretnék, de az nem csinál semmit (vagy lehet, hogy csak hosszú idő után reagált), VNC-vel be tudok lépni, de látszólag 2 másodperc után kifagyott a boot. Hosszú várakozás után valami timeoutra ment, és megjelent a login. De itt SSH lett beállítva, nincs a usernek jelszava, nem tudok belépni.
Látszólag nincs hálózat.
Virtuális gép létrehozása - csapó 2
vm create -t ubuntu -s 20g -i ubuntu-24.04-server-cloudimg-amd64.img -C -k ~/.ssh/id_ed25519.pub ubuntu
vm start ubuntu
A gép viszonylag gyorsan létrejön, és egy pillanat alatt elindul. DHCP-n kapott IP címet, és működik, SSH-val be tudok lépni. A routerben néztem meg a listát, MAC address alapján, hogy kik kaptak IP címet.
A MAC address-t pl le lehet kérdezni a "vm info" paranccsal, de a virtuális gép könyvtárában is benne van valahol: /zroot/vm/ubuntu
De nekem statikus IP címmel kell a virtuális gép, nem DHCP-vel.
Virtuális gép létrehozása - csapó 1000
Már mindent kipróbáltam és mindennek elszidtam magamban a cloud-init-et is, és az ubuntut is, hogy ez miért nem működik, és egyébként is miért kell valaminek ilyen bonyolultnak lennie, az Interneten semmi infó erről, hogy miért nem megy, kb 4 órát töltöttem próbálkozással, és hibakereséssel.
Végső elkeseredésemben elkezdtem megnézni a vm-bhyve forráskódját, hátha találok egy olyan hálózati beállítást, amit nem ismerek:
A lib könyvtárban találtam egy csomó shell script-et (ezek szerint ez a tool shell scriptekből áll). A neve alapján a vm-cmd nevűben megkerestem a vm create parancsot, ami a core::create-re hivatkozott:
create) core::create "$@" ;;
A vm-core fájlban ott van a core::create, és azon belül a -n a network config:
n) _network_config=${OPTARG} ;;
és végül a network config-ra ugyanitt találtam meg a példát:
if [ -n "${_network_config}" ]; then
# Example netconfig param: "ip=10.0.0.2/24;gateway=10.0.0.1;nameservers=1.1.1.1,8.8.8.8"
Még jó, hogy a példa nem a doksiban van, hanem a forráskódban egy commentben.
Hát, én lefelejtettem a /24-et!
vm create -t ubuntu -s 20g -i ubuntu-24.04-server-cloudimg-amd64.img -C -n "ip=192.168.4.230/24;gateway=192.168.4.1;nameservers=1.1.1.1" -k ~/.ssh/id_ed25519.pub ubuntu
Így már elindult a gép:
vm start ubuntu
ssh ubuntu@192.168.4.230
cloud-init
Persze én nem értek ehhez sem, biztos, hogy én csináltam rosszul, de sehol egy hibaüzenet, ami bootoláskor szembe jött volna, egyszerűen csak nem sikerült configolni a network-öt, és nem működött. A cloud-init doksiját olvasva 1000 dolgot tud, kicsit bonyolultnak tűnik. Nem igazán lett a szívem csücske a cloud-init. (De ez még változhat, ha jobban megismerem.)
- dlaszlo blogja
- A hozzászóláshoz be kell jelentkezni
- 384 megtekintés
Hozzászólások
Ugye egy IP cím hálózati maszk nélkül csak 4 szám ponttal elválasztva. ;-)
De ettől függetlenül valami hibaüzenetet dobhatott volna a parancs kiadásakor.
- A hozzászóláshoz be kell jelentkezni
Hát ja. :) pedig kipróbáltam a végén a rendes telepítőt is, de nem tűnt fel, hogy az megkérdezte a netmaskot, én meg azt itt nem adtam meg sehol.
Mindenre gyanakodtam, csak ilyen egyszerű dologra nem.
- A hozzászóláshoz be kell jelentkezni
szerintem defaultnak vette a /32-ot.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Szerintem ma - a classless IP korában - még mindig 3 csoportba sorolhatók a szoftverek.
- Legtöbb *szerintem* még mindig úgy gondolja, hogy ha nincs netmask, akkor ott az A (B, C, D, E) osztály szerint odaillő netmask van
- utána jön amelyik /32-nek veszi
- és végül vannak azok, amelyek ezt hibának tekintik (és vagy szólnak róla, vagy nem)
- A hozzászóláshoz be kell jelentkezni
És mi jött ma szembe???
https://lists.freebsd.org/archives/freebsd-current/2024-June/006075.html
Azaz FreeBSD 14-ben sikeresen elültettek egy hibát, és netmask nélküli megadásnál /8-as értékel "képzel oda" az ifconfig - függetlenül az IP-cím "osztályától". Jelenlegi állapotban ez marhaság, a javítás élesítése után ez így hibát fog dobni. Meg lehet adni A.B.C.D/X illetve A.B.C.D netmask X.Y.U.V formában is, de valamelyik forma szükséges (*). Az már biztosnak látszik, hogy 15-ben és 14.2-ben javítják, hogy lesz-e javítás 14.0-hoz és 14.1-hez, az egyelőre nem ismert.
(*) értelemszerűen ez akkor érdekes, ha hiányos az rc.conf-beli interfész beállítás
- A hozzászóláshoz be kell jelentkezni
Tegnap elgondolkodtam, hogy feliratkozom erre a listára, de érdemesebb lehet időnként nézelődni az oldalon. :) Egy-egy hónapra azért elég nagy a "termés".
És jó sok lista is van.
- A hozzászóláshoz be kell jelentkezni
Hát a -current, -stable és -hackers listák szórakoztatóak tudnak lenni, de tényleg nagy ott a forgalom.
- A hozzászóláshoz be kell jelentkezni
a current-re feliratkoztam, megnézem a másik kettőt is. :) Köszi.
- A hozzászóláshoz be kell jelentkezni