VirtualBox partíció növelése

Elfogyott a hely a virtuális gépen, szerencsére már nem olyan bonyolult megnövelni mint régen…  Persze a vmdk formátum (amit preferál új virtuális gép létrehozásánál) átméretezését a virtualbox  még nem támogatja.

Az alábbit kell tenni:

1. konvertálni a vmdk formátumot vdi formátummá:

VBoxManage.exe clonehd Appliance-disk1.vmdk appliance_1.vdi –format vdi

2. Új uuid-et generálni, mert ha ugyanaz több lemeznek az uuid-je, akkor a virtualbox ellenségessé válik, és nem csinál semmit egyik lemezzel se:

VBoxManage.exe internalcommands sethduuid Appliance-disk1.vdi

3. Átméretezni a kedvenc vdi formátumú lemezünket:

c:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd Appliance-disk1.vdi –resize 12000

(a 12000 mb-ot jelent)

4. átrakni az új lemezt a virtuálisgépbe (merészek vissza is konvertálhatják vmdk-ba)

5. átméretezni a partíciót az operációs rendszer számára (pl. bootolni egy ubuntu iso-t, és gparted-el átméretezni a kívánt partíciót)

Chocolatey finomságok

A minap elég sok alkalmazásból frissítettem verziót, és ennek kapcsán felmerült bennem az ötlet, hogy kellene készíteni egy programot, ami felveszi pontosan mit csinálnak az adott telepítők, és az rpm-hez hasonlóan egy univerzális csomagot készítene az ily módon rögzített adatokból (fájl és registry módosítások).

Ezt nem lehetetlen megcsinálni, elvégre a sysinternals process monitora is valami hasonlót csinál (csomagot nem készít, de a módosításokat szépen megmutatja). Ez egy elég jó kiindulási alap lehetne, és ha jól emlékszem open source is. Persze lennének problémák mindenféle varázs guid-ot generáló komponens regisztrációkkal, kiszűrni mi tartozik a telepítőhöz mi nem, nomeg a file formátuma, operációs rendszerenként eltérő műveletek. De hát a problémák azért vannak, hogy az emberek megoldják őket 🙂

Mivel időm nincs, gondoltam segítségül hívom a google-t, és megnézem, van e már ilyen. Sajnos pont ilyen nincs (szóval valaki aki lelkes, és ideje van igazán megírhatná), ellenben van egy sokkal egyszerűbb (de legalább vicces fejlesztők által készített) alternatíva, a Chocolatey.

Ez egy primitív apt-get windowsra, a felhasználók egyszerű scripteket készítenek, és egy leírót. A script általában letölti a telepítőt, felrakja silent módban a gépre. Update során megnézi a leírót, van e újabb verzió, ha van akkor ezt a folyamatot megismétli az újabb scriptel.

Értelemszerűen uninstallálni nem tud (az enyém tudna, bibibiii), és a csomagok terén is vannak még hiányosságok (pl: pspad, plex, winamp, fences, hypersnap még nincs), de a dolog működik, és még így is nagy könnyebbség, hogy nem kell kézzel frissítgetni mindent. A hiányzó csomagokat pedig bárki elkészítheti (én pl. hétvégén a felsoroltakat megcsinálom), és a support is csodás (vasárnap este írtam, hogy egy csomag hibás, másnap reggelre jött a válasz, hogy javítják).

Szóval egyenlőre maradnak a nagy álmok, az univerzális windows telepítő csomagot készítő alkalmazást illetően, aztán majd egyszer ha sok időm lesz (pl. elfogynak a synctocloud feladatok), akkor lehet nekiállok…

Addig is: The chocolatey gods have answered your reuest! Yipieee!

Oracle 11g 64 bit telepítése ubuntu 12.04 64 bit alá

Az Oracle céget és piacvezető alkalmazásukat elég jól jellemzi, hogy az ubuntu és minden más normális linux disztribúció támogatása kimerül abban, hogy tedd redhat-ra mert az a supportált. Oracle adatbázis miatt redhat-et telepíteni pedig több mint nevetséges.

Az ubuntura történő telepítés nem is olyan bonyolult, csak rá kell jönni a telepítő (és a borzasztó oracle telepítést végző script halom) működésére.

A telepítő két dolgot csinál valójában:

  1. kimásolja az oracle fájlokat
  2. sok make fájlal, és elképzelhetetlenül sok (és értelmetlen) változó segítségével lefordítja a bináris dolgokat

Az első lépésen viszonylag könnyen felül lehet emelkedni, a neten megvan hozzá minden, én csak kigyűjtöttem egy helyre.

Kell egy kevés dependencia, hogy egyáltalán elinduljon a telepítés:

sudo apt-get install ksh less lesstif2 lesstif2-dev lib32z1 libaio1 libaio-dev \
libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libmotif4 \
libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0 \
libpthread-stubs0-dev lsb-cxx make openssh-server pdksh rlwrap rpm \
sysstat unixodbc unixodbc-dev unzip x11-utils zlibc gcc-multilib \
ia32-libs libstdc++5 libstdc++5:i386

Egy két extra link, hogy minden ott legyen, ahol a telepítő keresi:

sudo ln -s /usr/bin/basename /bin/basename
sudo ln -sf /bin/bash /bin/sh
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/awk /bin/awk
sudo mkdir /usr/lib64
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64
sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
sudo ln -s /bin/lib/libgcc_s.so.1 /lib/libgcc_s.so
sudo ln -s /usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.5

Egy user, és pár group a telepítőnek, és az oracle példánynak:

 sudo groupadd oinstall
sudo groupadd dba
sudo groupadd nobody
sudo useradd -m oracle -g oinstall -G dba
sudo passwd oracle

Kell még egy pár kernel paraméter:

sudo nano /etc/sysctl.conf

Ide az alábbi dolgokat kell felvenni:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

Ha a módosításokkal megvagyunk, olvastassuk fel újra a kernelparamétereket:

sudo /sbin/sysctl -p

A limits-eket is érdemes módosítani:

sudo nano /etc/security/limits.conf

ide fel kell még venni az alábbi sorokat:

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

És kell még egy ál-redhat release is, hogy a telepítő megnyugodjon:

sudo nano /etc/redhat-release

A fájl tartalma pedig:

Red Hat Enterprise Linux AS release 3 (Taroon)

Ha mindent default módon telepítünk, akkor érdemes még felvenni, az alábbi környezeti változókat, hogy az életünk könnyebb legyen már a telepítés alatt is:

#oracle exports
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl11
export PATH=$PATH:$ORACLE_HOME/bin

Ha ezzel megvagyunk, akkor jöhet a telepítő kitömörítése, és indítása (oracle userként).

xhost +
sudo su oracle
~/oracle_install/runInstaller

A fájlok másolása ha nem rontottunk el semmit, akkor hiba nélkül megtörténik, az érdekes rész ezután jön. Amikor elkezd fordítani az oracle, jó eséllyel látunk majd egy két hibát. Gondolom meg kell indokolni Oracle-nál, hogy mire kell azt a nagyon sok support költséget fizetni (hogy nem normális telepítő írására, az biztos). A hibák az alábbi főbb problémákra vezethetőek vissza:

  1. Ubuntu alatt a gcc picit szigorúbban fordít, és meg kell enyhíteni a lelkét, amin a „-Wl,–no-as-needed” paraéterpáros általában szokott segíteni.
  2. Hiányoznak a fordításhoz referenciák, amit a gcc általában –l(lib) formában kap meg.

Itt fontos megjegyezni, hogy a –lagtsh az valójában libagtsh.so-t jelent, azt érdemes keresni. Másik hasznos utasítás az nm parancs, aminek a segítségével megnézhetjük, hogy egy adott függvény, amit épp a make nem talál, milyen so fájlokban van benne. Pl:

nm -A $ORACLE_HOME/lib/*.so | grep procr_get_ctx

Ahol U van, ott az so fájl használja a szolgáltatást, ahol T ott implementálva van.

A neten sok problémára van megoldás, de nem mindre (én kettőre nem találtam). A tapasztalatom szerint ilyen esetekben érdemesebb picit beleásni a dolgokba, és megérteni, mit és miért csinálunk, mert az az esetek nagy részében célravezetőbb mint mindenféle misztikus sed-et, és egyéb utasításokat kiadni, hátha valami működik.

Az részletes fordítás alatt jelentkező (make) hibákat az alábbi módon érdemes nézni:

tail -f $ORACLE_HOME/install/make.log

Vegyük sorra, hogy nálam milyen problémák adódtak, és mi volt a megoldásuk:

– libagtsh.so: undefined reference to `nnfyboot’ in make: rdbms/lib/dg4odbc]

Ez egy elég ravasz hiba, a probléma az, hogy nincs még meg az a fájl, ami a fordításhoz szükséges. A megoldást az internet szállítja: fordítsunk magunknak egyet:

ln -s $ORACLE_HOME/lib/libclient11.a $ORACLE_HOME/lib/libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0

 

– libnnz11.so: could not read symbols: Invalid operation /sysman/lib/ins_emagent.mk

Kis keresgetés után lehet látni, hogy a hívás a $ORACLE_HOME/sysman/lib/ins_emagent.mk fájlból indul, és egy olyan szolgáltatásra hivatkozik, ami a libnnz11.so-ben van benne. Ezt pótoljuk oly módon, hogy a dependenciát is kapja meg meg a gcc:

$ORACLE_HOME/sysman/lib/ins_emagent.mk

régi:

$(MK_EMAGENT_NMECTL)

új:

$(MK_EMAGENT_NMECTL) -lnnz11

– genorasdksh: Failed to link liborasdk.so.11.1

Szintén egy dependencia probléma, amikor a teljes oracle sdk-t próbálja lefordítani, akkor nagyon sok dolgot nem talál hirtelen. A megoldás hasonló az előző esethez, a megnézzük a szolgáltatásokat, azonnal feltűnik, hogy a libagtsh.so és a  liborasdkbase.so hiányzik neki nagyon. Értessük meg vele:

$ORACLE_HOME/bin/genorasdksh

Régi:

OLIBS="$LCLIENT $LSQL $LVSN $LNETWORK $LCLIENT \
$LCOMMON $LGENERIC $LMM $XAONDY $LNETWORK $LCLIENT $LCOMMON \
$LGENERIC $LTRACE $LNNET_ON $LSKGXP"

Új:

OLIBS="$LCLIENT $LSQL $LVSN $LNETWORK $LCLIENT \
$LCOMMON $LGENERIC $LMM $XAONDY $LNETWORK $LCLIENT $LCOMMON \
$LGENERIC $LTRACE $LNNET_ON $LSKGXP -lagtsh -lorasdkbase"

– getcrshome – libhashgen11 missing reference

Itt ha megnézzük, akkor az a szolgáltatás amit keres, megtalálható az .so fájlban, ami meg is van adva. Itt a hiányzó extra paraméter a gond. Kis keresgetés után erre is rá lehet találni. A megoldás:

$ORACLE_HOME/srvm/lib/env_srvm.mk

Régi:

LDOBJSZ=-m64

Új:

LDOBJSZ=-m64 -Wl,--no-as-needed

És láss csodát, hiba nélkül működik az oracle ubuntun. Szerencsére csak az oracle build script-jeit láttam, a forrását nem, de ha azt is olyanok írták, mint ezeket a scripteket, akkor jobb is ez így…

Drobox szerver otthonra

Miutan elszaporodtak a gepek a halozaton, egyre nagyobb szerephez jut a dropbox. Ellenben eleg sok szamitogepemben ssd van abbol is a legkissebb darabok igy oda nem telepul ilyesmi (elvegre rendes ember adatokat ugyis csak raiden vagy cloudba tarol, vagy inkabb mindket helyen, felesleges a nagy hdd kis gepekbe). Felraktam egy dropboxot a szerverre is, es kiosztottam sambaval (mert cloud nelul azert megsem elet az elet :).

Ennek a megoldasnak van par elonye:
– a szerverrel is barhonnan tudok egyszeruen fajlokat cserelni (pl torrent fajlt megadni letoltesre)
– a lokalis gepek sokkal gyorsabban szinkronizalnak a dropboxal (hisz lanrol toltenek)
– ha valami nagyot akarok feltolteni, csak atdobom a szerverre, es majd megkuzd vele
– alahol nincs dropbox onnan is elerem a benne tarolt fajlokat fileshare-n keresztul

A tanulsag pedig: Cloud ide vagy oda, mindig jo ha van egy szerver odahaza 😉

Wifi optimalizálás, avagy harc az erőért

Pesten a népsűrűségnek, és a wifi hálózatok terjedésének megvannak a maga jótékony hatásai. Soha se volt jó a jel a pesti lakásban, de azért amikor minden 5 csomag request timeoutra futott, elkezdtem komolyabban venni a problémát. Gondoltam leírom milyen út vezetett a megoldáshoz, később még jól jöhet.

Nulladik lépésként ellenőrizzük, hogy az internet kapcsolattal, vagy a wlannal van probléma. Elég kellemetlen, ha órákat töltünk a wlan kapcsolat állítgatásával, közben az internettel van probléma. Ezt úgy tudjuk megtenni, hogy elfelejtjük a wlant, nézünk egy ping -t google.com-ot, esetleg speedtest.net-et, és ha minden rendben, megismételjük ezt vezeték nélküli hálózatról is.

Ha csak a wlan része a problémás a dolognak, akkor jöhet az érdemi munka. Első körben mindig próbáljuk meg frissíteni a router szoftverét, mert lehet azt próbáljuk megoldani épp, amit a router készítői már megoldottak (mondjuk 2 éve).

Ha ez megvan, és a helyzet nem javult, akkor a “mi mindent megtettünk” felkiáltás mellett végre széttúrhatjuk a gyári beállításokat.

A hullámformából következik egy csomó dolog (például, hogy nem kell vezeték…), de ami minket most a legjobban zavar az a hullámok között fellépő interferencia. Ha sok wlan van egy helyen, akkor azok hajlamosak összeveszni a csatornákon, ami elég rossz hatással van hálózatunk működésére. Azt, hogy pontosan mi is történik körülöttünk a Wifi Analyzer nevű programmal meg tudjuk nézni, akár a telefonunkon is. Itt kell választani egy olyan tartományt, ami viszonylag kevésbé belakott. Nálam ez a 12 csatorna volt (a routerek általában az alacsonyabb csatornákat lakják be, és ott harcolnak egymással).

Első beállításunk tehát:

Channel: 12

Ha nagyon terhelt a hálózat, akkor érdemes még a csomagméretet kisebbre venni, mert kisebb csomagokba kevésbé tud belerondítani bárki. Ha ezt az értéket túl kicsire vesszük, akkor járhat sávszélesség vesztéssel, de:  inkább legyen egy lassú de állandóan működő hálózatom,  mint egy gyors, de néha nem működő változtat.

Fragmentation Threshold: 1024

Ilyen helyzetben alap, hogy minden sok sok crc-vel fogunk ellátni, hogy minél nagyobb hibákat is tudjanak javítani az eszközeink, tehát:

Preamble Type: Long preamble

Ha az életben maradásért (na jó nem, csak stabil internet kapcsolatért) küzdünk, akkor mindenféle optimalizációt (mint a rövid gurad intervallt, csomag összefűzést kapcsoljunk ki):

Short GI: Off

Aggregation: Off

És lőn nagy öröm, boldogság, éjszakákat átívelő stream-ek.

A végén megjegyezném, hogy -1 lépés az, hogy ne vegyük meg a legolcsóbb és legrosszabb minőségű routert. Törekedjünk az ismert, bevált márkákra (asus, cisco, linksys, stb), és ezekből se a kategória alját vegyük, hanem a kb. 2-3000 huf-al drágább középmezőnyből válogassunk. Olcsó noname routereknél nem ritka jelenség, hogy nagy mennyiségű adattól túlmelegednek/belassulnak, vagy egyszerűen sok élő kapcsolattól meghalnak, és ezekre a problémákra rendszerint csak egy drágább router vásárlása jelenti a megoldást.

Régi játékok – Unreal Tournament (GOG)

Nem vagyok egy történész alkat, de ha számítógépes játékokról van szó, egyre inkább tekintek visszafelé az időben, semmint előre. Most is vannak kiváló játékok (új xcom, új hitman, stb.). De a régi játékokon azt érzem, hogy lelkes fejlesztők készítették, akik azt szerették volna látni, hogy az emberek arcára kiül a mosoly, amikor a játékukról beszélnek. És ez érződik a terméken, hiába voltak technológiai korlátok, sokkal kevésbé elérhető tudás, vagy nehezebben használható eszközök.

Manapság már minden adott, és mégsem sikerül megismételni (vagy csak ritkán) a régi klasszikusokat, ha pedig igen, azok az idő törtrésze alatt feledésbe merülnek.

Sok dologra lehet ezt fogni, de amit mint felhasználó azonnal érzékelünk egy régi játék kapcsán, hogy az akkori játékok mélyebbek, komplexebbek voltak. Sokkal több mondanivalójuk volt, mint a mostani játékoknak. Ugyanakkor régi játékokkal játszani problémás, és itt nem csak a grafikára gondolok (ami csak egy interfész, és nem összekeverendő magával a játékkal), hanem a játékok indítására, irányítására, kompatibilitási problémákra.

Szerencsére a GOG és a dosbox sokat tett az ügyért. Részben ezért is született meg a SyncToCloud, hogy tovább egyszerűsítse ezt a dolgot.

A régi windows-os játékok cpu pörgetéses hibájáról már írtam, most egy nagy klasszikus, az unreal tournament került sorra. Ugyanis a játék zsenialitásából mit sem vesztett az évek során, viszont a videókártya meghajtók átlépték a játék által használt (és akkoriban még modernnek számító) dx és opengl verziókat. A laptopomon már felbontást sem lehetett állítani, és nem lehetett megértetni vele, hogy a másik videókártyát kellene használni, nem azt ami a software renderre van…

Szerencsére a rajongók készítettek olyan render engine-ket is a játékhoz, amivel a modern kártyákon is működik. Elég sokat kerestem, gondoltam megőrzöm az utókor számára.

Open GL driver

DirectX driver (ha az openGL verzió nem menne)

Telepítés:

Ki kell tömöríteni a zip fájl tartalmát a játék könyvtárán belül a /System könyvtár alá

A játék beállítások között a renderer-nél meg kell nyomni a change gombot, aminek hatására a játék bezáródik és feljön egy Windows ablak

Ott kell a show all mode, és ott választható az OpenGl, ezután már csak a next gombot kell nyomogatni és végül a Run-t…

Eclipse – Required projects on the build path

Nem tudom, hogy miért velem történik mindig az, hogy egy 5 perces dolog 1 óráig tud tartani. Valamiért az eclipse úgy döntött, hogy a Required projects on the build path opció beadja az unalmast, és nem működik. Végigtúrtam a fél internetet, kevés sikerrel… Amikor már kezdtem ráunni a dologra, csináltam egy új workspace-t, megnéztem, mit ír bele az eclipse a .classpath fájlba, és beleírtam kézzel:

<classpathentry combineaccessrules="false" kind="src" path="/cloudsync_common"/>

Close, open project és láss csodát, működik… pff…

A ma este tanúsága:
42067_019_Alternate2

Ubuntu és a lányok

Azt hiszem fontos mérföldkőhöz érkezett a világ. Kedves húgom laptopja ismét feladta a harcot, és megállt. Ez önmagában még nem mérföldkő, és nem is újdonság, általában ilyenkor kerülök én a képbe két facebook chat között…

Kértem kölcsön laptopot, azon viszont ubuntu volt. Gondolkoztam, megint lesz egy hétvége szívás, windows installer, dvd írás, serial beírás (kézzel ugye), driverek letöltése, frissítés, és minden ezzel járó dolog. Hogy aztán egy év múlva a windows és a hibás felhasználói szokások miatt  annyira elamortizálódjon az egész, hogy újra lehessen kezdeni az egész telepítési hercehurcát előröl.

Azt mondtam nem. Marad az ubuntu, és meglátjuk mi lesz.

A várakozásaimmal ellentétben, nem az történt, hogy  telepítenem kell a windowst.

Az átlag felhasználónak ugyanis nincsenek speciális elvárásai. Menjen a böngésző, legyen skype, hang, képfelvétel, és ezekre már mind van ingyenes, merem állítani a default windows programoknál jobb alternatíva. Gondoljunk csak a gimp-re, audacity-re és társaira (és ezeket kellene összehasonlítani a paint-el és a windows sound recorderével?). És ezek a programok bár vannak windowsra, rendszerint gyorsabbak, jobban működnek linux alatt, mert először arra voltak, és ott mindeni ezeket használja, míg windows alatt van aki fizet ilyesmiért pár dollárt, és eloszlik a tömeg. A microsoft pedig magasról tesz rá milyen a hangfelvevő. Vesz fel hangot? Igen. Ezzel vége a meetingnek, lehet menni pénzt költeni, de az meg úgyis az office-ből jön…

Persze van még egy fontos elvárás. Alapvető dolgokkal ne kelljen szívni. Sajnos ez egy picit még beárnyékolja az idilli képet. A dolgok egészen jól mentek,  pár dolog viszont okozhat csak alapvető ismeretekkel rendelkező felhasználónak álmatlan éjszakákat.

Az első a felhasználó jelszavának a megváltoztatása volt grafikus felületen. Megcsináltam, a process kifagyott, és a jelszó természetesen nem változott meg. Ez terminállal és a passwd utasítással gyorsan orvosolható probléma, de nem egy átlag user-nek (aki nem tudja, hogy van terminál, és passwd). Azért ilyen hibákkal ritkán találkozni más operációs rendszeren.

Probléma volt még, hogy alapból a chrome-ban nincs flash. Jó, az hogy alapból nincs, az nem akkora baj, de nem is lehet engedélyezni. A megoldás egy apt-get, és utána kézzel egy symlink létrehozása a google chrome plugins könyvtárába… A flash használatát egy átlag felhasználó elvárná, ellenben véleményem szerint egy ilyen művelet nem várható el tőle…

Szintén problémába ütköztem a a Cheese nevű videó felvevő programmal kapcsolatban. Elindult, rányomott az ember a felvételre, és erre a kedves program szó nélkül kilépett. Megint terminál, először valami jackd daemon hiányzott. Hát jó, telepítettem egyet. Aztán megint kifagyott ezúttal valami gstreamer hiányzott (volt is róla nyitott ubuntu hibajegy). Azt is telepítettem. Persze azt, hogy “mi”, és hogy “hiányzott” a program egy akkora dump-al közölte, hogy more-ba kellett csövezni a kimenetet (és igen, az errort is külön). Ez több mint ciki, vannak akik még 2013-ban sem hallottak a hibakezelésről, hibaüzenetekről, felhasználói interakcióról, meg ilyesmikről…

Félreértés ne essen, az ubuntu továbbra is szuper, és amit csinálnak az jó irány. Biztos vagyok benne, hogy az idő múlásával egyre szélesebb rétegeket fog meghódítani.

Ellenben fontos azt látni, hogy ha az első találkozás egy operációs rendszerrel ilyen, az sokakat elrémíthet a folytatástól. Nem is tudom, hogy mi lett volna, ha tényleg tesztelem is a dolgot, nem csak próbálom használni. Azért a fő szoftverbeszerzési csatornáról nem lenne rossz, ha olyan szoftverek jönnének, amik működnek is. Főleg ha az embernek nincs a közelben rokona, aki megoldja az váratlanul felmerülő problémákat…  🙂