Działo się bardzo dużo z serwerem zlotowym w ostatnim czasie, więc żeby nic nie zginęło, trzeba spisać zmiany które dokonały się na przestrzeni kilku ostatnich miesięcy od ostatniego wpisu, który można przeczytać tutaj.
Wi-Fi
Idąc chronologicznie, drobna zmiana zaszła tak naprawdę już ponad rok temu. Pierwotnie zamontowanego Intela 7260AC wymieniłem na Atherosa AR9285. To dość archaiczna karta bezprzewodowa, ale jest dobrze wspierana przez opnSense którego wtedy używałem w roli routera. Po wymianie karty otrzymałem taki błąd w Proxmoxie:
kvm: -device vfio-pci,host=0000:04:00.0,id=hostpci1,bus=pci.0,addr=0x11: vfio 0000:04:00.0: failed to add PCI capability 0x11[0x70]@0x90: table & pba overlap, or they don't fit in BARs, or don't align
TASK ERROR: start failed: QEMU exited with code 1Na szczęście dość łatwo udało się znaleźć rozwiązanie tutaj. Po zaaplikowaniu zmian w pliku konfiguracyjnym maszyny wirtualnej, karta działała bez zarzutu, choć dość powoli – w najlepszym wypadku 60Mbsps w obu kierunkach. Niemniej, na potrzeby zlotów retro komputerów wartość jest wystarczająca.
Nowa platforma
Kolejną zmianą jest zupełne przeniesienie się na inną platformę. Motywowany brakiem możliwości zdalnego zarządzania postanowiłem wymienić płytę główną Gigabyte GA-H97N-WiFi na przemysłową Advantech AIMB-274. Pomimo tej samej podstawki LGA1150, pociągnęło to wymianę procesora i7 5775C na i7 4770, oraz pamięci RAM na moduły SODIMM o łącznej pojemności 16GB. Dysk też został przy okazji wymieniony, ale to później.

Płyta jest bardzo ciekawa. Ma wyprowadzone złącze LVDS, eSATA z zasilaniem z którego korzystałem przy przenoszeniu danych, 2x RJ-45, dwa złącza miniPCI-E (myślałem że już jedno w gigabyte to luksus!) i przede wszystkim – obsługę Intel vPRO. Ma też tryb pracy „AT”, gdzie podłączenie zasilania do gniazdka powoduje, że płyta pracuje i nie da się jej programowo wyłączyć. Służy do tego czarna zworka w białym koszyczku, widoczna poniżej radiatora chipsetu na zdjęciu wyżej.

Wrzuciłem też zdjęcie panelu IO, który na pierwszy rzut oka niczym szczególnym się nie wyróżnia. Niemniej, ciekawe jest pierwsze złącze od lewej. Niby wygląda jak DisplayPort i w sumie jest to złącze DisplayPort, ale jest też to złącze HDMI. Tak, do tego gniazda można podpiąć zarówno DP jak i HDMI. Nie widziałem czegoś podobnego wcześniej.
Zdalne zarządzanie
Tutaj nie ma jakichś specjalnych ceregieli. Skonfigurowałem Intel AMT ze statycznym adresem IP z sieci, którą przydziela serwer DHCP (ale spoza puli DHCP!), także nawet jak jest jakiś problem ze startem komputera, można podpiąć inny komputer z zainstalowanym MeshCommander i skonfigurowanym ręcznie adresem IP z tej samej sieci, tak aby móc uzyskać zdalny dostęp do tego komputera przez sieć. Sporą część konfiguracji tego komputera przeprowadziłem właśnie w ten sposób za pomocą MeshCommandera i nie ma z tym żadnych problemów.
Redundantna macierz dysków 3,5″
To zmiana, która zdecydowanie pochłonęła najwięcej wysiłku i czasu. W miejsce dolnej pokrywy obudowy, zaprojektowałem do wydruku 3D uchwyt na dwa dyski talerzowe 3,5″. Ten manewr pozwolił mi zrezygnować z dotychczasowego, pojedynczego dysku 2,5″ używanego w roli magazynu danych. W jego miejsce wjechał SSD Crucial MX100 256GB w roli nośnika systemowego (wcześniej tą rolę pełnił Samsung 950 Pro w adapterze PCI-E do M.2), co też zwolniło mi slot PCI-E x16.
Aby zwizualizować ilość pracy, zrobiłem zdjęcie sterty prototypów które wydrukowałem:

I… to wszystko do śmieci a i tak nie są to wszystkie testowe wydruki. Na szczęście, miałem dużo resztek filamentu, więc w końcu to wykorzystałem. Tutaj zdjęcia jednego z pierwszych prototypów:






Całość była jednak bardzo delikatna, plaster miodu bardzo łatwo pękał. Po kilku iteracjach postanowiłem sprawdzić jak działać będzie wariant bez żadnych otworów wentylacyjnych. W moim projekcie, dyski są dociśnięte do metalowej blachy obudowy, więc założenie było takie, że transfer ciepła i tak będzie następował, nawet jeśli nie będzie wyjątkowo optymalny.
Po kilkudziesięciu minutach katowania tego zestawu testami stress-ng --cpu 8 oraz fio z ustawionymi parametrami dla losowych danych, aby zmaksymalizować pobór energii przez dyski ciągłą pracą głowic, z zadowoleniem przyjąłem, że temperatura procesora ustabilizowała się w granicach 85*C, a temperatura cieplejszego dysku nie przekroczyła 43*C przy temperaturze otoczenia 21*C. A to wszystko na wariancie obudowy bez żadnych otworów wentylacyjnych dla dysków twardych.

Na zdjęciu powyżej widać już dodatkowy otwór na przewód zasilania molex oraz kable SATA: SilverStone SST-CP11-300. Sam przewód zasilania również doczekał się delikatnej modyfikacji – wyciąłem mu fragment przewodu ze złączem FDD.

WWAN
Gdy kupowałem tą płytę główną, nawet nie wiedziałem że ma ona gniazdo SIM. Tak jest – do drugiego slotu mini-PCIE zlokalizowanego na rewersie płyty głównej doprowadzone jest gniazdo SIM. Dotychczas nieodłącznym towarzyszem każdego serwera zlotowego był router D-Link DWR-921, ale gdy zobaczyłem slot SIM, to zaświeciły mi się oczka i doszedłem do wniosku, że być może uda się i tą funkcjonalność zintegrować w serwerze, unikając dodatkowego klocka.
Tutaj zaczęły się schody:
- Drugi slot mini-PCIE kolidował z tacką na płytę główną obudowy.
- Drugi slot mini-PCIE jest w rozmiarze half-height, podczas gdy wszystkie karty LTE jakie znalazłem mają pełną wysokość.
- opnSense ma bardzo ograniczoną listę wspieranych modemów LTE.
Każdy z powyższych problemów wymagał dość kreatywnego podejścia. Więc idziemy po kolei.
Dziurawienie obudowy

Aby rozwiązać pierwszy problem, potrzebowałem wyciąć otwór w obudowie, dzięki czemu zyskałem dostęp do dolnego slotu mini-PCIE bez demontażu płyty głównej. Cała operacja przeprowadzona została dremelem, wydaje mi się że wyszło nawet przyzwoicie.

Otwór sąsiedni miał być do przeprowadzenia przewodów antenowych oraz zasilania, finalnie okazał się zbędny. Idealnie byłoby wyciąć otwór również na slot SIM, ale miałem obawy o sztywność obudowy. Karta SIM i tak od lat się nie zmieniła, więc mam nadzieję że nie będzie potrzeby jej wyciągać jeszcze przez długi czas.
Przedłużacz mini-PCIE
Rozwiązanie drugiego problemu wymagało zastosowania przedłużacza slotu mini-PCIE i okazało się to większym wyzwaniem niż początkowo zakładałem.
Pierwszy przedłużacz który zamówiłem z aliexpress wygląda następująco:

Niestety okazalo się, że modem zainstalowany w tym przedłużaczu nie widzi karty SIM. Jako że było to pierwsze użycie tego slotu w ogóle, nie do końca wiedziałem od czego zacząć diagnozę. Po przejrzeniu rozpiski pinów złącza mini-PCIE i diagnozie miernikiem, okazało się że ten przedlużacz przepuszcza tylko połowę pinów obecnych w złączu mini-PCIE. Szybka diagnoza z kartą przymocowaną taśmą klejącą potwierdziła tą teorię – gdy przedłużacz był pominięty, karta WWAN poprawnie zobaczyła kartę SIM.

Okazało się, że znalezienie przedłużacza który przeciąga wszystkie piny nie jest ani łatwe, ani tanie. Zacisnąłem zęby i wyłożyłem zdecydowanie zbyt dużą kwotę, na taki przedłużacz:

Po tym jak przedłużacz przyszedł, pierwotna reakcja była entuzjastyczna – wszystko zdaje się działać. Niestety, szybko okazało się że po jakimś czasie od startu systemu, karta przestaje być widoczna w systemie i pomaga jedynie restart całego komputera. Niestety nie zrobiłem zdjęć, ale pierwotnie poskładałem całość w taki sposób, że zawinąłem taśmę pod przedlużaczem. A że taśma miała 20cm, zrobiło się tego kilka „warstw” taśmy. Gdy wywinąłem taśmę na zewnątrz w taki sposób, że nie była już wyzwijana, zdało się to rozwiązać problemy ze stabilnością modemu.
Ostatecznym rozwiązaniem był zakup krótszej taśmy przedłużacza. Po krótkich poszukiwaniach, okazało się że producent tego przedłużacza wykorzystał standardowy przewód FFC 61-pin o rastrze 0,3mm. Udalo się kupić taki przewód o długości 6cm, który jest idealnie na styk. Po wielogodzinnych testach karty, nie stwierdziłem żadnych objawów braku stabilności. Karta nigdy nie się nie rozłączyła odkąd wywinąłem 20-centymatrowy kabel i na kablu 6-centymetrowym tym bardziej nie było problemów.


Dłuższa część przedłużacza przyklejona jest trzema warstwami motoryzacyjnej taśmy dwustronnej, używanej np do przyklejania listw drzwiowych. Raz musiałem to odklejać (po tym jak okazało się, że na pierwszym przedłużaczu nie działa karta SIM) i musiałem użyć do tego całkiem sporo siły. Samo nigdzie się to nie wybiera.
Karta WWAN
Dobra, szlag już trafił chronologię dawno temu, ale trzecim problemem była krótka lista obsługiwanych kart WWAN przez opnSense. Wybór padł na HUAWEI ME909s-120, ale gdy tą kartę kupowałem, nie wiedziałem że nie będę musiał się ograniczać. Karta przez opnSense wykrywana była poprawnie, udało mi się ją skonfigurować tak, że łączyła się z siecią i pobierała sobie adres IP, niemniej internetu cały czas nie było. Po dwóch dniach walki, zaobserwowałem, że przy starcie systemu, karta pozwala na przesłanie kilku pakietów do internetu zanim przestanie działać – akurat na tyle, żeby Windows pokazał że jest internet. Pomimo wielu prób, nie udało mi się tego uruchomić i wydaje mi się, że jest to powiązane z jednym ze zgłaszanych błędów do FreeBSD. Nie będę tego jednak linkował, bo padła decyzja o przesiadce na openWRT.
openWRT
openWRT jest ciekawym doświadczeniem na maszynie wirtualnej x86. Korzystam z tego systemu w domu na dwóch routerach Xiaomi AX3600 działających w roli access pointów, niemniej przygotowanie obrazu dla swojej kombinacji karty WiFi oraz WWAN chwilę mi zajęło, ponieważ nie mam z tym żadnego doświadczenia. Nie będę opisywał wszystkiego krok po kroku, ponieważ sprowadzało się to do znalezienia i zainstalowania odpowiednich paczek dla karty Atheros AR9285 oraz Huawei ME909s-120. Po kilku dniach spędzonych nad tą maszyną wirtualną, a następnie po kilku dniach testów, wygląda na to że wszystko działa.
Połączenie „WAN” ma niższą wartość metryki niż „WWAN” w /etc/config/network dzięki czemu, gdy tylko pojawia się internet „po kablu”, openWRT przepycha cały ruch tamtędy. Konfiguracja nie jest wyrafinowana, bo nie ma automatycznego failover, ale co do reguły nie powinien być potrzebny – zazwyczaj wykorzystane będzie samo WWAN.
Plany na przyszłość
Cały czas pozostaje jedna nieskonfigurowana pozostaje maszyna wirtualna odpowiadająca za usługę etherDFS. Podstawowym problemem jaki mam jest skonfigurowanie tego w taki sposób, żeby zasób widoczny w etherDFS był widoczny też łącząc się z serwerem przez FTP oraz SMB. Ale ułożyłem już w głowie plan jak to pogodzić i zaangażować w to Windows Server 2003. Potrzebuję tylko jeden wieczór na zlocie, żeby to dokonfigurować 🙂
Podsumowanie
W tym roku mija 6 lat odkąd pracuję nad serwerem zlotowym. Po wielu iteracjach, jestem przekonany że ten jest zdecydowanie najlepszym i najbardziej funkcjonalnym wydaniem. Poza routerem WWAN, sprzęt pełni funkcję serwera DHCP, SMB, FTP, oraz dedykowanego serwera kilku popularnych retro gier: Quake, Quake II, Quake III, Unreal Tournament 99 oraz Return to the Castle Wolfenstein. Całość jest realizowana przez kilka maszyn wirtualnych z czego jedna, z Windows Server 2003, pierwotnie została skonfigurowana w 2019 roku na fizycznym serwerze i przeszła proces „P2V” (Physical to Virtual). To właśnie ta maszyna wirtualna zapewnia większość usług pracujących na tym serwerze (m.in. serwer WINS) co pozwala na bezproblemową współpracę z szerokim zakresem retro systemów operacyjnych, zaczynając od Windows 95, na Windows 7 kończąc. Zarówno opnSense wcześniej jak i openWRT obecnie mają skonfigurowany tunel Wireguard, który wykorzystuje część mojej prywatnej infrastruktury, tak aby można było się podłączyć zdalnie do sieci na zlocie i zdalnie dołączyć do partyjki gry działającej po IP – takie prywatne i współczesne Hamachi. Całość konfiguracji stała się przez lata na tyle złożona, że wraz z serwerem prowadzona jest strona https://iddqdwiki.pamiro.pl/ gdzie użytkownik z uprawnieniami, ma dostęp do szczegółów dotyczących konfiguracji.











Super opis, miałem przyjemność korzystać z tego serwera podczas zlotu. I chciałem dodać tylko, że z Win 3.11 też można po TCP/IP dostać się do serwera i widzieć zasoby sieciowe przez SMB. Kawał super roboty.
Czy HDMI ma taki sam rozkład pinów co DP Tylko inny protokół I kształt gniazda? Jak oni osiągnęli wsadzę ie ich do jednego, patrzyłeś jak to wygląda w środku?
W sensie: Czy to jest jakieś trzymające się na ślinę rozwiązanie, czy rzeczywiście sprytne wykorzystanie podobieństw? Ciekawe.
Porty są zupełnie różne i fizycznie niekompatybilne, ale chyba po prostu szczęśliwym trafem da się ułożyć piny w obu tak, żeby nie pokrywały się wzajemnie ze sobą. Tutaj trochę więcej materiałów:
https://eu.mouser.com/ProductDetail/Rego-Electronics/845-002-217CRL?qs=Znm5pLBrcAJJY6Wkw0u8yA%3D%3D
https://eu.mouser.com/datasheet/3/4839/1/rego_14968924422hyp0z.pdf
https://www.youtube.com/watch?v=rZpHizpZSPQ