FreeBSD/VMware: lnc0: Missed packet — no receive buffer
És egyszer csak nem elérhető a FreeBSD-s virtuális géped – mi történt, halló?
Régóta használok FreeBSD-s gépeket, megmondom őszintén, a mai napig jobban szeretem a kis ördögöt mint a csapból is folyó pingwint (w: ha-ha). Muszáj voltam Linux-szal is foglalkozni, mert a vitualizáció jobban támogatott ott (Xen, VMware, stb.) illetve pl. egy OracleXE beizzítása is valamelyest egyszerűbb (kb. 2 parancs) pl. Debian alatt.
Történt hát, hogy az egyik FreeBSD-s virtuális teszt gépem egyszer csak eltűnt a hálózatról. Kétségtelen, hogy szinte produkciós üzem ment rajta, a meg növekedett terhelés igencsak nyúzta a virtuális hálózati kártyát benne.
Az alapértelmezett AMD Lance/PCnet (lnc0)-ot nem szeretjük, Intel(R) PRO/1000 Gigabit (em0) a barátunk
Megjegyzem, ha létrehozol egy FreeBSD virtuális gépet, akkor alapértelmezetten az lnc (AMD Lance/PCnet Ethernet device driver) segítségével működik.
Sokáig nem tudtam, mit kell tenni, míg végre megtaláltam a frankót a Google apró betűs részében. Megmondom őszintén, nem triviális a megoldás, aki csak FreeBSD-t virtualizál, bele fog futni ebbe a hibába. Az ESX szerver sem kivétel
A hiba így néz ki, íme egy részlet a naplómból, mielőtt elvesztettem a gépet. Hiába mondják, hogy aTCP ablak mókolással /értsd konfigurálással
/ meg lehet javítani, ez baromság.
May 13 10:17:41 mail kernel: lnc0: Missed packet — no receive buffer
May 13 10:18:05 mail last message repeated 2 times
May 13 10:19:41 mail last message repeated 12 times
May 13 10:20:22 mail last message repeated 2 times
Megoldás a virtuális hardver átállítása a VMX konfigurációs fájlban: Ethernet0.virtualDev = "e1000"
Tudtad, hogy amikor létrehozol egy virtuális gépet, a VMX konfigurációs fájlban kerül rögzítésre, hogy milyen paraméterei lesznek a virtuális gépednek?
Azt is tudtad, hogy nem lehet mindent a kattintgatós VMware varázslóval ott beállítani? Pl. nagy a sunyítás a hálózati kártya típusáról. Pedig lehet kérni másik virtuális hardvert is, csak picit hegeszteni kell a VMX konfigurációs fájlon.
A megoldást itt találtam: „FreeBSD Gigabit Ethernet under VMware”
http://www.buzmo.com/2007/02/freebsd-gigabit-ethernet-under-vmware.html
Javítási forgatókönyv
Amit célszerű tehát ellenőrizni: a kernel-ben benne van-e az „em” driver (átalában igen), ha nem vagy belefordítod, vagy betöltöd modulként.
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
A fenti címen javasolja, hogy először állítsd át a FreeBSD gépedet, hogy amikor legközelebb indul „lnc” helyett „em” driverrel, akkor is kapjon IP címet, illetve működjön minden, ami korábban az lnc-vel kapcsolatban be volt állítva. Tehát az alábbi módosítások javasoltak:
· Change the ifconfig_lncX lines in /etc/rc.conf to ifconfig_emX
· Change any static references in /etc/pf.conf from lncX to emX
· Generally doesn’t hurt to do a quick ‘grep lnc /etc/*’ to see if there is anything else referencing the interface you’re about to remove – ez tényleg nem fáj
· Shutdown the guest OS
Majd állítsd le a virtuális géped.
Írd bele az VMX konfigurációs fájlba minden hálózati adapterhez (jellemzően 1 van) az alábbit (értelemszerűen):
· Make a backup of and then open the guest’s vmx file in your favorite editor
· For each interface you want to change, add Ethernet0.virtualDev = "e1000"
· Save the changes and bring the guest back up
Elégedetten hátradől
Ha szerencséd van (ez ügyben nekem minden alkalommal bejött a módosítás) többet nem találkozol a csúnya lnc0: Missed packet — no receive buffer hibaüzenettel.
Kellemes FreeBSD virtualizálást kívánok!
Folytatás hamarosan…
Legközelebbi cikkemben a Varázslatos VMX fájllal ismerkedünk meg. Gondolom, e cikk kapcsán Te is elgondolkodtál, mi mindent lehet még a virtuális csavarhúzóval szerelni a VMX fájlban.
Annak idején kártyákat dugdostunk meg modulokat (memória, merevlemez , stb.) cserélgettünk fizikai a gépben. A virtualizáció megváltoztatja a hardver konfigurációs szokásaidat is: mostantól egy (VMX) fájlt szerkesztgetsz és a hatás a virtualizált operációs rendszerből nézve ugyanaz. Mókás nem?



