Docker windows alatt

Szerintem operációs rendszerek esetén jó taktika, ha csak az fut rajta, amit az ember használ is. A docker is egy ilyen dolog, amit csak ritkán használok, és ha használom, akkor csak linux alatt, ami ugye az esetemben WSL ubuntu (windows subsystem for linux).

Ubuntut viszonylag egyszerű telepíteni windows alá, de nekünk olyan ubuntu kell, ami WSL2-t használ.

Akit érdekel mi is az a wsl2 járjon utána

A telepített wsl példányokat az alábbi módon tudjuk kilistázni:

wsl -l -v

A WSL2-nek van pár peremfeltétele, aminek meg kell felelni, és amin a többség elvérzik:

  • Top verziót használjunk a windows 10 vagy 11-ből (Windows update)
  • Biosban be legyen kapcsolva a virtualizácó
  • Windows alatt telepítve legyen a Virtual Machine feature
  • Le legyen töltve a wsl2 kernel frissítés (külön exe)

Hogy ezeket az előfeltételeket hogy lehet megteremteni, arról van egy jó leírás itt:

https://s1gr1d.medium.com/how-to-set-up-linux-on-windows-with-wsl-2-debe2a64d20d

Ha ezek megvannak (a restart fontos, én pl. kihagytam), akkor két út van:

Még nincs WSL linux telepítve, és szeretnénk, ez esetben nincs más dolgunk, mint alapértelmezetté tenni a wsl2-t

wsl --set-default-version 2

majd telepíteni a microsoft app store-ból.

Ha már van WSL linuxunk, de nem WSL2 akkor frissíthetjük az alábbi módon:

wsl --set-version Ubuntu 2

Ahol az ubuntu az a név, amit a fenti wsl -l -es parancs kimeneténél a name mezőben látsz.

Ha a frissítés hiba nélkül lefut, akkor a wsl -l már kettes verziót fog kiírni. Ha nem fut le hiba nélkül akkor vagy az előfeltételek közül hiányzik valami (nem írja ki, hogy mi, nálam a restart volt 🙂 ), vagy valami egyéb hiba van, amiből azért lehet bőségesen

Ha ez megvan, és rendelkezünk egy WSL2-es linuxal, akkor már csak a dockert-t kell életre kelteni. Ennek a módja az alábbi:

Győződjünk meg róla, hogy semmilyen docker maradvány nincs a rendszeren:

apt remove docker docker-engine docker.io containerd runcsudo apt remove docker docker-engine docker.io containerd runc

Telepítsük az előfeltételeket, és adjuk hozzá a docker-t a source listához:

sudo apt install --no-install-recommends apt-transport-https ca-certificates curl gnupg2
source /etc/os-release
curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER

Ezek után még szükség lesz egy docker specifikus könyvtárra, ahol a socket elérhető a dockerd számára. Ehhez kell egy config:

sudo mkdir /etc/docker
sudo nano /etc/docker/daemon.json

A fájl tartalma legyen:

{
   "hosts": ["unix:///var/run/docker.sock"]
}

Ha ez megvan már csak indítani kell a docker démont a használat előtt:

sudo dockerd

És utána működni fognak a docker-es utasítások.

A router, az agy, és két füstölgő puskacső

Olyan szerencsés helyzetben vagyok, hogy az utcánkban fellelhető pokoli ADSL vonalat már jó ideje optikára cserélte a T. Mivel a média fogyasztási szokásaink teljes egészében átcsatornázódtak az online felületekre (Netflix, HBO online, Youtube, Twitch, Spotify és társai), az internet előfizetést is átcsoportosítottam, és a kábeltévé helyett lett az 1000mbit/s .

Elsőre ez jól hangzik, de az ördög a részletekben rejlik. Pl. a T által adott modem még elméletileg sem tud ennyi adatot átengedni magán, kezelni aztán meg végkép nem. Ezt gondolom ők is érezték, ezért adtak mindenféle instrukció nélkül egy D-LINK (brrrr) DIR-842-es “router”-t.

A koncepció az lehetett, hogy bár a noname kínai modem nem tudja kihajtani a vonalat, ha a D-LINK-et használjuk erre PPPoE módban (tehát kvázi modemként) akkor valamivel jobb lesz a helyzet. Ezzel a setup-al kb. 600-800mbit/s már elérhető az 1000-ből ha nem nagyon terhelt a hálózat. Gondoltam egy PPPoE beállítás nem okozhat gondot (első hiba). Már a PPPoE jelszóval elakadtam, amit bár láttam a T-COM-os modem felületén, de csak jelszó mezőként. Visszaalakítottam text-é ami egy elkódolt karaktersorozatot tartalmazott. Sikerült firmware-t találnom hozzá, amúgy is szeretem az ilyen cuccok dolgait nézegetni, pár óra alatt meg is lett a kódolást végző script, meg nekem a python átiratom hozzá, így már nem csak felhasználónevem, hanem jelszavam is volt.

Széttúrtam az addigi infrastruktúrát, bekötöttem a routert ami az átvétel óta a polcon porosodott, és vártam a széles sávú csodát.

Ennyi élettapasztalattal már tudom, hogy csodák csak ritkán vannak (ezért hívják őket csodának), így meg sem lepődtem, amikor az internet kapcsolatot jelző ikon továbbra is pirosan világított.

Olvastam kicsit a neten, elviekben összedugdosás után mindennek magától kellene működnie, ezzel is elment pár óra, végül csak felhívtam az ügyfélszolgálatot, ahol a szokásos intró után (tududu du dummmm) egy AI-nak kellett volna elmagyaráznom, hogy nem működik a PPPoE kapcsolatom… Elég jól elbeszélgettünk, aminek átirata valahogy így nézett ki:

  • Üdvözlöm, én az ostoba AI vagyok, amit rengeteg pénzért eladtunk a TCOM-nak, felismerek szavakat amiket hallok aztán majd lesz valami
  • Szia, én az ügyfél vagyok, és nem működik a PPPoE kapcsolatom
  • Az interneteléréssel van probléma?
  • Igen
  • Hálózati probléma van?
  • Nem
  • Az Internet eléréssel van probléma?
  • ….

A végén már egész jól tudtam, milyen szavakat kerüljek a kommunikációnk során, és akkor 2-3 teljesen felesleges kör után az ügyintézőhöz kapcsol… Ezúton is köszi valakinek, aki kitalálta ezt a szart, és jár a gratuláció annak aki meg is vette.

Ezek után megtudtam, hogy PPPoE jelszót meg tudom változtatni online is, ezt a kört meg is futottam (feleslegesen, mert mint kiderült jól fordítottam vissza a jelszót, nem az volt a gond), továbbra sem lett jó. Ismét telefonáltam, AI, várakozás, elmondták, hogy ők nem tudják, kérdés van e internet PPPoE nélkül. Mondom van. Hát akkor ők nem tudják, ők csak a routerig érdekesek, hívjam a fizetős ügyfélszolgálatot.

Itt volt az első pillanat, amikor legszívesebben elővettem volna azt a bizonyos puskacsövet, és bementem volna az ügyfélszolgálatra ügyet intézni. De mivel én ilyen visszafogott csávó vagyok, puskacsövek nélkül, 3-4 órányi beszélgetés után úgy döntöttem lesz ami lesz, felhívom a fizetős ügyfélszolgálatot (szuperszervíz), ahol a srác tényleg értelmesebb volt mint a másik helyen az összes többi együtt, és korrekt is, mert elmagyarázta, hogy ez pénzbe fog kerülni ha segít, de igazából nem is tud segíteni, mert ezt a problémát a T ingyenes ügyfélszolgálata tudja megoldani, mégpedig úgy, hogy átkapcsolják a fos modemjüket PPPoE módba. Abban maradtunk, hogy ne mondjak bonyolult mondatokat, ne is próbáljam meg elmondani, hogy miért meg hogyan, csak azt mondjam hogy “modem -> PPPoE mód -> bekapcsolás”. Akkor hátha átmegy az üzenet.

Felhívtam őket, lekűzdöttem az intelligens asszisztenst (az uborkákról és a paradicsomokról beszélgettünk), hogy aztán egy vele egyszintű emberi hasonszőrűvel kb. 25 perc várakozás után lefolytassam a következő beszélgetést:

  • Legyen kedves átkapcsolni a modememet PPPoE módba
  • Ööö nem tudom miről beszél, de átkapcsolom egy technikus kollégákhoz

Ez volt az a pont, amikor már csak 30 perc választott el attól, hogy a technikus kolléga az én “régi” eszközömet távolról PPPoE módba tudja kapcsolni. Hittem benne, hogy meg tudja csinálni, kb. 3x mondta, hogy egy pillanat, még kipróbálok valamit, és én egyszer se mondtam el neki Yoda mester örök érvényű szavait: tedd, vagy ne tedd, de ne próbáld… Pedig sokszor eszem bejutott…

Ezek után el is indult az internet, és jött a következő állomás, az igen neves D-Link cég routernek nevezett terméke, ami egész addig működött, amíg nem próbáltam beállítani rajta pár port forward szabályt. Aztán kicsit önellentmondásba keveredett a saját route szabályaival, és bizonyos kérések hatására meg-megállt pár percre. No meg egy port forward szabály se működött…

Sajnos az OpenWrt, DDWrt körről pont egy hw revízióval maradtam le, szóval ez a router max wifi AP-nek használható… Sebaj, ahogy a mondás tartja, ingyen routernek ne nézd a firmware-jét, elkezdtem hát inkább más routereket nézni.

A router piac teljesen megváltozott mostanában. Vannak már Gaming routerek, amik erősen középkategóriásak, és mind wifi-s. Az áruk nem azért sok, mert annyira tudnak route-olni, meg csomagokat kezelni, hanem mert a legszuperebb wifi szabványokat támogatják, ami nekem pont nem kell. De ha kellene se fizetném ki egy kisebb számítógép árát, egy wifi routerért, ami sok mindent tud, de gyorsan, és jól routolni azt pont nem. Ami tényleg jó, és bír sok klienst, meg nagy sávszélességet az kb. 80k és még wifi sincs benne. Mivel a PPPoE már megvolt, a szerverem úgy is mindig megy, gondoltam átrakom a router funkcionalitást oda. Ott nem lesz melegedési gond, és a PPPoE, routing, és társai kb. nem kimutatható cpu kapacitást emésztenek fel egy mai gépen. Ezzel egy probléma volt, amit pedig úgy hívtak, Microsoft.

Tudtam, hogy nem lesz egy leányálom Windows 8 alatt routing-ot konfigurálni, főleg olyat, ami nekem kell.

Ez az a pont, ahol megint számot kell vetnem magammal, és leírnom, miért is váltottam windows szerverre:

  • akkor és ott jó ötletnek tűnt
  • szeretem a kihívásokat
  • van rajta onedrive kliens
  • van rajta norton antivírus amiből volt egy privát előfizetésem
  • unalmas volt, hogy ubuntu alatt minden átlátható, és általában működik is

Szóval a PPPoE kapcsolat felkonfigurálása gyorsan ment. Van ott egy kis kavar, hogy a fizikai interfész furcsa státuszban marad amin a kapcsolat megy, de kikapcsoltam róla minden protokollt, akkor már nem sok vizet zavart. Az internet megosztásért az Internet connection sharing felel, pár kattintás, és láss csodát működik. Pontosabban: működik, olyan microsoft-osan.

Egy demo erejéig ezek a funkciók nagyszerűek, és jól prezentálhatók. Csak éppen a megosztás után a teljes belső subnet-em elmászott a 192.168.137.x tartományba. Gondoltam sebaj, kerestem a neten, meg lehet változtatni. Meg is változtattam, itt:

HKLM\System\CurrentControlSet\services\SharedAccess\Parameters
(REG_SZ) ScopeAddress
(REG_SZ) StandaloneDhcpAddress

Ezek után már volt DHCP szerverem, csakhogy olyan módon, hogy a létező teljes címtartományból oszt címeket… Hogy mi alapján rejtély. Ez nem annyira jó, mert nálam nem minden DHCP-ről megy, és van pár dolog aminek akkor is fix ip kellene, ha arról menne (pl. QoS miatt). Na range definíciót, vagy hw adress mapping-et persze már nem tud. Gondoltam sebaj, elengedem, használok másikat, vagy konfigurálok egyet linuxon, de ezt a csodát kikapcsolni se nagyon lehet. Én az alábbit tettem: a lan interfész IP címét megváltoztattam az ICS beállítás után, a registryben pedig egy másik címtartományt adtam meg. így valamiért a routing működött (talán mert az interface alapú…) de a DHCP szerver nem tud mit kezdeni magával és az eltérő címtartományokkal, ezért el sem indul (erről persze se log, se dokumentáció, se semmi). Innentől már csak az OpenDhcp szervert kellett telepíteni, és volt is normális belső hálózatom DHCP-vel, windows alatt.

Aztán ott van a windows tűzfal, a maga 100000 szabályával. Ezt elég egyszerűen bekonfiguráltam. Letöröltem mindent, felvettem azt a 6 szabályt ami nekem kellett (Deny All, Allow lan, pár port), és láss csodát működött. A windows tűzfal nem rossz, csak szerintem külön csapat csinálta a tűzfalat, és a front-end konfigurációt.

Miután már tűzfalam is volt, csak a port forwarding volt hátra. Ezt a PPPoE adapternél az ICS beállításoknál lehet matatni, egyszerű: Port, hova, protokoll, és kész is. Elméletben. Minden forgalom, ami a szerverre érkezett, az működött. Minden ami külső szerverre (pl. a virtual box-ban futó ubuntu-ra) az nem. Ezzel futottam pár kört, a megoldást végül szintén egy külső alkalmazás jelentette: a PassPort ami egy egyszerű port forwarding implementáció. Tehát a WAN lábról forwardoltam a portokat a szerverre, a szerverről ezzel a belső hálózatra, és így már működik.

A fenti problémák elviekben korrektebbül megoldhatóak Windows server edition alatt (ott pl. van RRAS is), de nekem nem ilyen windows-om van 🙂

A QoS-t már tényleg point and click-el beállítottam, azok a fejlesztők valószínű a tűzfalas fejlesztőkkel voltak haverok 🙂

Ezek után jött a teszt, ami egy egyszerű Ookla-s speedtest volt. Az eredmény egy kék halállal egybekötött kernel security check volt… Itt már kicsit elvesztettem a lelkesedésemet, és nagyon csúnyán kezdtem nézni a norton antivírusra. A csúnya nézésből a 3. konfigurációs próbálkozás és kifagyás után uninstall lett, és láss csodát. 2-3 nap alatt talán sikerült a windows 8.1-ből egy normális router gépet faragni…

Windows és a fájlnevek

Azt hittem a “hosszú” fájlnevek problémája csak az emlékeimben él, és a minket követő generációk számára ez a fogalom (akárcsak a ~1 végű fájlok) ismeretlen lesz. Úgy tűnik a Windows ezt másképp gondolja, Ő még őrzi a régi hagyományokat:

Én tényleg nem tudom ki, és mit üzemeltet windows alatt, de minden tiszteletem az övé…

Intel processzorok rejtett beállításai

Az utóbbi időben a processzorok órajele mellett azok energia gazdálkodási funkcióit is jelentősen fejlesztették, ami elég hasznos egy laptop esetén, és nem mindig hasznos pl. valós idejű használat során egy asztali gépben.

Akit nem érdekel a fogyasztás, ellenben konstans performanciát szeretne elérni, érdemes lehet módosítani az alapértelmezett energiagazdálkodási beállításokat (power options).

Ehhez egy jó kiindulási alapot nyújthat az alábbi cikk:

http://www.dozty.com/how-to-unlock-the-hidden-features-of-processor-power-management/

Windows boot time

Az újabb Windows verziók kapcsán – kivéve Windows 10 – a Microsoft kiemelt figyelmet fordított az operációs rendszer teljesítménye. Az ez irányú törekvések emlékét őrzik az egyre jobb performancia elemző eszközök, mint pl. a Task Manager (és az onnan elérhető Resource Monitor). Bár ezek továbbra sem váltják ki a jó öreg Process Explorer, Process Monitor-t, de az esetek egy részében a problémák már detektálhatók natív windows-os eszközökkel (is).

A szuper optimalizált windows-om a napokban ismét lehetőséget biztosított, hogy foglalkozzak vele kicsit, mert login előtt megállt, és várt vagy 20 másodpercet, ezután dobott a login képernyőre. Mivel itt még boot fázisról beszélünk, sajnos a fenti eszközök egyike sem használható. Első körben megnéztem az event log-ot, hátha találok benne valami érdekeset (ahogy a mondás tartja, aki keres az talál), de ennek a várakozáshoz sajnos nem volt köze.

Egyéb okokból már telepítve volt a gépen a Windows Assessment and Deployment Kit (Windows ADK) Windows Performance Analyzer komponense, ami lehetőséget biztosít trace-k készítésére, azok elemzésére, akár boot idő alatt is.

A használatához rá kell venni a windows-t, hogy trace fájlt generáljon, melyből majd kideríthetjük, hogy mi is történik a vizsgált időszakban. Régen ehhez pár száz karakterből álló parancssort kellett készíteni (xbootmgr…), de a Microsoftnál is sejthették, hogy ez ebben a formában nem valami jó, és egy szorgalmas fejlesztőnek hála ma már ezt konfigurálhatjuk grafikus felületen is (na jó a felület képességeit nem vitték túlzásba, de hát ki a kicsit nem becsüli…).


wprui.exe

Az ily módon megkeletkezett fájlt (pl.: boot_1.etl) a Windows Performance Analyzer-rel tudjuk alaposabban megvizsgálni. Mivel az én problémám a boot alatt jelentkezett, de még login előtt, az első nézet amit bekapcsoltam a Boot Phases volt. Itt már látszott, hogy a bejelentkezés előtt a Winlogon init 31 másodpercig tartott, ami gombócból is sok, nem hogy boot időből…

A fenti nézethez hozzádobtam még a Processes nézetet, hogy látszódjon milyen alkalmazások indultak el ezen idő alatt.

 

A processeket vizsgálgatva feltűnt egy alkalmazás ami a login inittel indult, és 29.9 másodpercig futott… Ez az alkalmazás pedig nem volt más, mint az OriginWebHelperService.exe…

Ezután eszembe jutott, hogy nemrég elindítottam az Origin-t, és frissítette magát… A process egyébként service-ként települt, a frissítés rakta fel/kapcsolta be, ott kellett kikapcsolni, és a probléma megszűnt… Ezúton is köszönöm az EA-nak a fejtörőt, szórakoztatóbb volt, mint a legtöbb mostani játékuk 😉

 

Windows PC optimalizálás

Réges rég elkövettem azt a hibát,  hogy windows alapú gépen kezdtem el zenélni. Aztán hozzászoktam, megszerettem, és bár azóta volt szerencsém más operációs rendszereket is kipróbálni, a végén mindig visszatértem hozzá. A számítógépen történő zenélés nagyon furcsa dolog, ha menet közben bármi megakad, akkor lehet újracsinálni a munka egy részét, és vannak olyan pillanatok, amiket később már nem lehet, vagy nagyon nehéz újracsinálni, tehát ehhez egy elég stabil rendszer kell. Sokan ezen a ponton alapból lemondanak a windows-ról, pedig kitartó munkával (és nem kevés utánajárással) meglepő eredményeket lehet elérni, hozzáállás kérdése az egész. Míg egy debiant szépen lassan épít fel az ember, a windowsnál épp az ellenkezőjét kell csinálni, szépen lassan lebontani a rétegeket.

tl;dr: Az optimalizált windows olyan mint egy jó versenyautó: Gyors, de egyáltalán nem kényelmes. Átlag felhasználóként a driverek frissítése az egyetlen szükséges lépés, a többi beállítás inkább problémát fog okozni, és érezhető előnyt nem jelent.

Mi is az optimalizálás célja: az alkalmazásunk működése és a hw komponensek között a lehető legkisebb késleltetés történjen, és ebbe az operációs rendszer lehetőleg ne keverjen bele.

Hardware:

  • lehetőleg dedikált hangkártyát használjunk (pci / firewire)
  • az usb eszközök számát minimalizáljuk (ps/2 billentyűzet)
  • usb hub-ot semmiképp se használjunk

BIOS:

  • kapcsoljuk ki a hyper threadingot
  • mindenféle virtualizáció támogatást
  • HPET-et
  • Integrált videó és hangkártyát

Driverek:

Ha ezzel megvagyunk, akkor állhatunk neki a windows-nak. Alapesetben én azt javaslom, hogy mindenből a legfrissebb drivert rakjuk fel, de a driver-ek minőségének megállapítása során csak a folyamatos mérések nyújthatnak támpontot. A driverek frissítésére kiválló a Snappy Driver Installer, a driverek minőségének ellenőrzésére a LatencyMon alkalmazást tudjuk használni.

Windows komponensek:

Ezek után el kell távolítani a windows összes olyan összetevőjét, amit valószínűleg sosem fogunk használni:

– Internet Exploder
– Windows Location Provider
– Work folders client
– XPS services
– XPS viewer

Én a print services-t is levettem, nem szándékozok papírra nyomtatni a közeljövőben.

Windows:

A főbb alapvetéseket a Focusrite elég jól összefoglalta, érdemes követni a leírásukat. A lényeg kivonatolva:

  • Power management -> high performance, cpu minimum és maximuma is 100% legyen
  • Rendszerhangok kikapcsolása
  • Processzor prioritás: Background services
  • Tűzfal, vírusírtó kikapcsolás
  • Vizuális effektek

És egy dolog, amit itt nem írnak: fix (min  == max) méretű swap file használata.

Hálózat:

Ha ez megvan, akkor kikapcsolhatjuk az összes olyan dolgot, amire nincs szükségünk a hálózaton (és lássuk be elég kevés dologra van szükségünk valójában):

snap75

Az IPV6 kikapcsolásához már a registry-t kell átírnunk: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\

new DWORD (32-bit) Value ->  DisabledComponents = 0xff

(forrás)

Amennyiben a hálózat késleltetése számít nekünk, akkor a szükséges optimalizációkat elvégezhetjük a TCPOptimizer nevű alkalmazással, de ez inkább streaming, és játékok esetén lehet hasznos.

Szolgáltatások:

Ezek után már csak azt kell elérnünk, hogy csak azok a programok fussanak, amire tényleg szükségünk van. Mivel a windows a legtöbb komponensét szolgáltatásokon keresztül indítja, itt is kell leállítanunk őket. Ezt a services.msc futtatásával tehetjük meg.

Bizonyos szolgáltatásokat viszont nem nagyon tudunk leállítani (mint pl. a Task Scheduler) mert a windows ezt nem engedi. Ezeket a registry segítségével tudjuk kikapcsolni.

A szolgáltatások kulcsait itt találjuk: HKLM\SYSTEM\CurrentControlSet\Services

A szolgáltatások rövid névvel kerülnek ide elmentésre, de azokat láthatjuk a service listában is, az adott szolgáltatás Properties oldalán (pl. a Task Scheduler neve Schedule)

Az indítás módát a Start tartalmazza, a 4 érték jelenti a Disabled beállítást. (forrás)

A szükséges szolgáltatások:

snap76

A többi dolog nem szükséges.

A TCP/IP NetBIOS helper szolgáltatás a SAMBA megosztások eléréséhez szükséges.

Amennyiben fájlokat szeretnénk megosztani, el kell indítani a Server szolgáltatást.

Amennyiben a Windows Update-t szeretnénk használni, akkor előtte el kell indítani az alábbi szolgáltatásokat:

  • Network List Service
  • Network Location Awareness
  • Background Intelligent Transfer Service
  • Windows update

Figyelem:

  • a BITS az operációs rendszer más dolgaihoz is kellhet (pl. nyelvek telepítése, DISM és SFC javításokhoz), csak akkor állítsuk le, ha ezek már mind rendben vannak.
  • a Task Scheduler leállítása után nekünk kell futtatni azokat a dolgokat, amik az operációs rendszer hatékony működését biztosítják, és a Task Scheduler időzítve futtatta őket (pl. a WinSxS könyvtár takarítását).

Alkalmazások:

Bár a fentiek után ezt külön kiemelni nem is érdemes, fontos, hogy a gépen csak az az alkalmazás fusson, amit használni akarunk, ezért a Task Manager Startup szekciójából mindent állítsunk disabled-re. Ez nem csak a rendszer teljesítményére lesz jó hatással, hanem a boot time-ra is (nálam jelenleg 5 másodperc alatti). Amire még szükségünk lehet az a ctfmon alkalmazás (C:\Windows\System32\ctfmon.exe) ami a tray-en a billentyűzet nyelvének állítását teszi lehetővé. De lehetőleg ezt is csak akkor indítsuk el, ha szükségünk van a magyar billentyűzetre, és utána zárjuk is be szépen.

A fentiek után már kész is a szuper munkára fogható windows-unk, ami valahogy így fog kinézni:

15036412_1241479802592529_2999654407216518174_n

 

 

Windows shares

Több mint 10 éve linux alapokon működött a szerverem. Akkor azért váltottam Windowsról, mert feltörték a rajta futó IIS szervert egy expolit-on keresztül (szégyen gyalázat), és úgy döntöttem, többet ilyen nem lesz. Az utóbbi pár évben, viszont semmi sem történt… Rájöttem, hogy már nem szórakoztat az ubuntu, minden működik, már a dist upgradek sem a régiek, hogy utána összeomlana a rendszer és újra össze kell rakni darabokból… Szóval egy hirtelen ötlettől vezérelve, arra gondoltam, hogy megpróbálom ugyanezt Microsoft alapon is, mert miért is ne.

A Microsoft azért nem aprózza el ezt a bemutatkozás, és felhasználói élmény dolgot, az első pár nap alatt feltépődtek a régi sebek, jöttek újak, annak ellenére, hogy a Windows 3.1 óta midnig Windowst használtam desktopra…

A szerverem az Raspberry térhódításával majdhogynem csak egy NAS-ra degradálódott, pár extra funkcióval. Gondoltam első körben megosztok pár dolgot, elvégre mégiscsak az Ms találta ki az smb protokollt. Na de az összes meghajtót ami a gépben van, azt viszont nagyon nem terveztem megosztani.  Ez volt az első dolog (a windows 10 update dialógus ablak után) ahol gyökeresen eltért a véleményünk a dolgok menetével kapcsolatban… A Windows szerint nincs is annál jobb dolog, mint az administrative shares (nem tudom ki találta ki, és az IT security hogy hagyhatta ezt produkcióba kerülni, és azóta is miért létezik ez még egyáltalán, de legalább a net send-et kivették… az is valami 🙂

Aki ki szeretné kapcsolni ezen remek funkciót a gépén nem kell mást tennie, mint létrehozni egy AutoShareWKS nevű DWORD(32) kulcsot az alábbi helyre:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Paramerts

Igen, még létre sincs hozva 1 értékkel, hogy csak át kelljen írni, és ezen infók fórumok útján terjednek…  Vannak dolgok, amik nem változnak, ekkor már éreztem, hogy megérkeztem 🙂

És természetesen a network credential-os bug-ot sem sikerült javítani az elmúlt ~20 év alatt. Pedig nem bonyolult reprodukálni. Fogunk egy szervert, ahol pár megosztás bárki számára lekérdezhető. Aztán belerakunk pár olyan megosztást, ami csak adott felhasználók számára elérhetőek. Amikor a windows authentikál először megpróbálja kérdés nélkül a bejelentkezett felhasználó adataival (Ez egyébként megint egy érdekes kérdés, miért történik így. Vajon csak nekem jutott eszembe, hogy egy speciális megosztással, és egy megfelelő rainbow táblával viszonylag egyszerűen megtudható az adott felhasználó jelszava?). Ha a windows egyszer sikeresen azonosította magát egy szerveren, akkor a felhasználó hiába ír be jó azonosító adatokat az idők végtelenségéig a privilegizált megosztáshoz, csak a lenti dialógusablakot fogja látni:

winAuth

Ilyenkor mindenki elkezdi keresni a szerveren a problémát, hiszen Access is denied, mi más lehet a probléma… Úgy gondolom, hogy az emberek többsége itt adja fel, de nézzük csak meg mi történik, ha ugyanezt tesszük parancssorból?

C:\Users\voji>net use \\192.168.1.10\openhab
The password is invalid for \\192.168.1.10\openhab.

Enter the user name for '192.168.1.10': openhab
Enter the password for 192.168.1.10:
System error 1219 has occurred.

Multiple connections to a server or shared resource by the same user, 
using more than one user name, are not allowed. 
Disconnect all previous connections to the server 
or shared resource and try again.

Minderről a GUI annyit mond, hogy Access is denied. Grafikus felületről akarsz csatlakozgatni mindenhova? Akkor úgysem értesz hozzá, minek is terhelne az operációs rendszer ezzel a sok felesleges információval… A “soft” mountokat GUI-ról szintén nem lehet látni, szóval amúgy is mindegy lenne… De ha már itt tartunk, akkor kicsit jobban megnézve, milyen share is van jelenleg “mountolva”:

C:\Users\voji>net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK \\192.168.1.10\IPC$ Microsoft Windows Network
The command completed successfully.

Bizony, IPC (Inter Proces Communication), amit az RPC (Remote Procedure Call) használ. Egyszerűen hibátlan… És ha tudnátok, hogy az RPC-n belül még mennyi rövidítés van (EPM, COM+, BIT, RPCSS, és még csak a jéghegy csúcsát karcolgatjuk…)

A lényeg, hogy jelen probléma megoldására a bátrak használhatják az alábbi parancsot:

 net use * /d

Kevésbé bátrak beírhatják a * helyére a mount nevét is (ami a fenti példában: \\192.168.1.10\IPC$)

És ezek csak azok a dolgok amik NT4 óta így maradtak… Az újakba, mint pl. a fastboot még bele se mentünk… Pedig…

A microsoft kitalálta, hogy a kernel modulok, és driverek viszonylag ritkán változnak az operációs rendszer élete során, ezért ezeket felesleges is mindig nulláról betöltögetni. Ezért az új windows verziók esetében (8+) bevezették a fastboot-ot, ami annyit tesz, hogy amennyiben kikapcsoljuk a gépet, akkor valójában nem az történik, amire a felhasználó első körben számít. Ugyanis a windows fogja és hasonló dolgot csinál, mint amikor hibernate-t mondunk, egy különbséggel. Nem a teljes memóriát menti, hanem csak a futó szolgáltatások memóriaképét. Zseniális ötlet, akit érdekel, hogy működik, itt olvashat egy felületes cikket a témában: http://www.eightforums.com/tutorials/6320-fast-startup-turn-off-windows-8-a.html

A probléma nem is ezzel van, hisz mivel ez az alapbeállítás, a világ elég nagy részén így kapcsolják ki kedvenc operációs rendszerüket. Ellenben volt a windowsban egy funkció, amit elég gyakran használtam, mégpedig a Group Policy Editorban a startup / shutdown scripts. Ez pont annyit tud(ott), mint amit a neve is mond: megadható neki egy program, amit a rendszer Local System-ként végrehajt a rendszer indulása és leállása során. A fastboot viszont kicsit bekavart a képbe, mert a be/kikapcsolás már nem inicializálja a rendszert a megszokott módon, és ebben az esetben nem is fut le egyik megadott script se. Hogy ebből mit lát a végfelhasználó? Megírja a scriptet, restart, működik. Aztán shutdown, és nem fut az a script, ami az előbb még futott. Aztán előbb utóbb összerakja, hogy hát itt valaki nagyon vicces kedvében volt, mert a startup/shutdown script csak restart esetén fut. A megoldásra két lehetőség van: Vagy kikapcsoljuk a fastboot-ot tokkal-vonóval, és akkor működni fog a startup és shutdown script, vagy továbbra is használjuk a fastboot-ot, de akkor nincs lehetőségünk korrekt módon programokat futtatni a windows indulása/leállítása során (én legalábbis nem találtam, de ha valaki tud ilyet és megosztja velem, akkor jár neki a Mars szelet).

Aztán kipróbáltam még az új Storage Spaces Pool-t (gyk.: mdadm by microsoft). Azt még nem tudom, mi fog történni, ha összeomlik a RAID array, mert ezzel kapcsolatban a Microsoft azt mondja, hogy nem omlik, de ilyen apróságoktól nem szoktam megrettenni. Az mondjuk azért nem annyira bíztató, hogy a disk kivételéről még csak nem is zenélnek a grafikus felületen. A problémára a megoldást természetesen megint egy fórumban lehet megtalálni, vagy jobb esetben, a fórum alapján készült blogbejegyzésben 🙂

És a viccesebbnél viccesebb hibákról még nem is beszéltem. A mostani kedvencem a KB3053711 (user error-nak szoktam hívni). Tessék elolvasni a kapcsolódó knowledge base article-t és a javasolt megoldást… Igazából minden szava arany, csak azt sajnálom, hogy a kapcsolódó forráskódot nem mellékelték, mert ez már az a szint amit minden szakmabelinek látnia kellene…

A Microsoft egyértelműen utolérhetetlen a felhasználói élmény fokozásában… 🙂

Windows downgrade

A windows 10 frissítés után tudatosult bennem, hogy bár a windows 10-el önmagában semmi probléma nincs, a számítógépes zenélést el is felejthetem mert ott még komoly kompatibilitási problémák vannak. Ez nem új dolog, és nem is csak Windows specifikus, OSX-en is hasonló a helyzet az El Captain kapcsán… Azt hittem ez nem lehet probléma, visszatelepítem a régi windowst (8.1), otthon az érdemi dolgok úgyis külön partíción, vagy dropbox-ban vannak.

A telepítéshez szükséges kulcsokat mindig mentem keepass-ba, így a kulcs is megvolt. Ha valaki esetleg elmulasztotta volna ezt a lépést, és nem tudja, hogy az általa használt windowsnak mi a telepítési kulcsa, akkor azt utólag is kinyerheti a Magical Jelly Bean Keyfinder alkalmazással.

Az első komoly problémát a windows telepítő beszerzése jelentette. A microsoft még mindig egy tucat telepítőt gyárt, amik csak bizonyos kulcsokat fogadnak el. Én azt hittem msdn által telepített windows verzióm van (általában mindig olyat telepítek) de mivel a mostani windowsomat upgradek hada állította elő (win7 -> win8 -> win10) az msdn.es telepítő nem fogadta el a kulcsomat.

Ekkor került képbe Janek által fejlesztett Ultimate PID checker. Az alkalmazás segítségével meg lehet határozni egy megadott windows telepítési kulcs típusát. Az általam használt kulcs RETAIL típusú, amihez természetesen nem volt telepítőm. A megoldást meglepő módon a microsoft szállította, és még csak MSDN subscription sem kell hozzá. A Windows 8.1 Media Creation Tool letöltése után csak ki kell választani a system type-ot, nyelvet, editiont (amit szintén megmond a PID checker) és már tölti is a megfelelő telepítőt, amit közvetlenül pendrive-ra is fel tud rakni (működött, így nem kellett megfutni egy rufus-os plusz kört).

Az újratelepítés során egyetlen dolgot rontottam el. A letörölt windows 10 kulcsát nem mentettem el, mielőtt letöröltem, így az elveszett. Azt visszaszerezni már csak bonyolultan lehet (le kell menteni a Windows 8 lemez képét, azt mountolni egy virtuális gépre, ott bootolni, upgradelni win10-re, lementeni a kulcsot, törölni az egészet). A free upgrade 2016 juliusig él, tehát mindezt még ez előtt lenne célszerű megcsinálni… Majd egyszer, talán…

Mint felhasználó nem tudom, a szivatáson kívül mi értelme van ezeknek a különböző Microsoft telepítőknek, edition-oknak, időhöz kötött upgrade-knek. Jobs a leopárd kapcsán viccelődött is ezzel, egyszer talán majd Nadella is elsüti ezt lenti poént: https://www.youtube.com/watch?v=gtSDlSVDibA

Windows 10 – disable automatic updates

A 10 számú windows esetében a fejlesztők szó szerint értelmezték az automatikus frissítések funkciót. Ugyanis ezen windows verzió óta a frissítések letöltése tényleg felhasználói interakció nélkül (automatikusan) történik. Ezzel egy kábelen lógó asztali gép esetén nincs is baj, de elég kellemetlen meglepetés érheti az embert, amikor a windows öntudatára ébred, és a legfontosabb feladatának a frissítések letöltését tekinti. Mondjuk mobilneten, egy megbeszélés közepén, amikor nagyon kellene egy dokumentum, ami a felhőben van…

A Microsoft által javasolt pol-korrekt megoldás az lenne, hogy minden ilyen jellegű wifi kapcsolat esetén állítsuk be, hogy Metered connection-ről van szó, de nekem semmi kedvem ezt átvezetni az összes elmentett wifi kapcsolatomon, valamint minden új kapcsolatkor, kapcsolódás után, külön. Amúgy sem szerencsés, ha az operációs rendszer akkor töltöget amikor csak kedve támad. Én úgy gondolom, hogy azt csak a felhasználó tudja, mikor nem zavarja, hogy a windows berántja a rendelkezésre álló sávszélességet.

Az automatikus frissítés letöltés kikapcsolására van mód, és jó leírás is:

http://www.thewindowsclub.com/make-windows-10-notify-you-before-downloading-or-installing-windows-updates

Sokat hozzátenni nem is tudok, talán csak annyit, hogy nekem a 2 érték nem működött, az 5 viszont igen, így érdemes azzal próbálkozni elsőre.

Windows 10 recovery drive

A nagy windows 10 upgrade után többen meglepődve tapasztalhatják, hogy nem tudnak Recovery drive-ot létrehozni a megszokott módon. A fórumokban elég nagy a tanácstalanság, de a probléma, nem új keletű, már windows 8.1-ben is jelen volt. Az okokat és a lehetséges megoldást szépen összefoglalja a neosmart csapat wiki oldala: https://neosmart.net/wiki/we-cant-create-a-recovery-drive-on-this-pc/

A lényeg: recovery partíció hiányában (ami upgrade esetén nem jön létre) kénytelenek vagyunk mi megadni egy helyet (a reagentc segítségével), ahol a windows telepítő elérhető.

Aki viszont nem rendelkezik windows 10 telepítővel, vagy egyszerűen csak egy gyorsabb megoldást szeretne, igénybe veheti az EasyRe alkalmazást, ami windows 10 alá ingyenesen letölthető: https://neosmart.net/EasyRE/