A következő címkéjű bejegyzések mutatása: Linux. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: Linux. Összes bejegyzés megjelenítése

2017. augusztus 14., hétfő

Graylog, Elasticsearch, maximális mezőszám, graylog_deflector

Csak mert nem vagyok linuxos gyerek.
Néhány napja összeraktam a vadiúj Graylog szerverünket.
Sikeresen hozzákötöttem valami 10+ Windows szervert, hogy begyűjtse az eseménynapló bejegyzéseket róluk.
A project második részeként hozzá akartam adni néhány linux szervert is.
zzáadtam az elsőt, látszik, hogy a begyűjtés működik, az üzenetek beérkeznek, de a konzolon nem jelenik meg semmi. Fura.
Kicsit mélyebbre ásva az index hibalista ezzel volt tele:
{"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [graylog_0] has been exceeded"}
Ez azt jelenti, hogy túlment a rendszer a maximális mezőszámon (azt hiszem, hogy a Windows nagytömegű eseménytítusa miatt)
Elolvastam egy rakás fórumbejegyzést róla. Megpróbáltam beállítani az elasticsearch.yml-ben.
Nem segített. Az eredmény egy működésképtelen elasticsearch lett.
Végül lepucoltam az egészet (elasticsearch) az indexekkel eggyüttvéve és újratelepítettem.
Az eredmény:
Lett egy működő elasticsearch-öm. Az 1000-es mezőlimit maradt, de jött hozzá mégegy hiba. Valami ilyesmi:
A graylog_deflector egy index és nem egy alias.
Kugli újra, a hibára rátaláltam, a megoldásra nem. Elkezdtem gondolkodni a guglizás helyett. Amire rájöttem:
  1. Az egyik log fáljból kiderült, hogy az elasticsearch beállításai nem a konfig fájlon keresztül mennek, hanem a web API-n keresztül, JSON objektumokban.
  2. A curl a barátod
  3. A Graylog létrehozza a grylog_deflector-t indexként, ha nem találja a graylog_alias-t. Ezt utána nem tudja használni. Ezzel azután semmit sem tudsz kezdeni a Graylog felületen belül, tehát a dolog el van cseszve.
A megoldás a fentiek alapján:

  1. A Graylog web  felületén menj be a System/Indices>Indices-be. Válaszd ki a Default index set-et
  2. Maintanance-ben válaszd ki a Rotate active write index pontot. Ez gyárt egy graylog_0 nevű index-et (csak ez nem fog működni)
  3. A konzolon álítsd le a graylog-ot:
    sudo service graylog-server stop
  4. Kezeljük az 1000 mező problémáját:
    curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
      "index.mapping.total_fields.limit" : "5000"
    }'
  5. Állítsuk le a graylog_deflector index-et:
    curl -XPOST 'localhost:9200/graylog_deflector/_close?pretty'
  6. Töröljük a graylog_deflector index-et:
    curl -XDELETE 'localhost:9200/graylog_deflector?pretty'
  7. Adjuk hozzá a graylog_deflector aliast az újonan gyártott graylog_0 index-hez:
    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
    {
        "actions" : [
            { "add" : { "index" : "graylog_0", "alias" : "graylog_deflector" } }
        ]
    }'
  8. Indítsuk el a graylog-ot:
    sudo service graylog-server start
  9. Most a graylog elekzd bőszen indexelni ez akár napokig is tathat, de a begyűjtött üzenetek elkezdenek látszani közben.

2016. március 30., szerda

Mesék a házautomatizálásról - Ugrókódos távirányító

[2016.04.16]: Amikor írtam ezt a cikket, nem vettem észre, hogy a cape manager slots fájlja a régi helyre mutat. Javítva.

Ha az autódban ülsz és be akarsz jutni a garázsodba, tudom, hogy nem divatos, de a leg kényelmesebb eszköz a kulcskarikádon lógó kicsi távirányító (valami az autoba integrált cucc jobb és divatosabb lenne, talán csinálok valami ilyesmit később).

Ahhoz, hogy távirányítani tudjam az OpenHAB-ot és rajta keresztül a garázskaput/világítást, vettem egy ilyen ugrókódos távirányítót az aliexpressen:

http://www.aliexpress.com/item/RF-Rolling-Code-Decoding-Receiver-Module-2-Transmitters-DC-5V-4CH-TTL-Output-Learning-Momentary-Toggle/32295201884.html



A tervem az, hogy a garázsvilágítás, a garázskapu és még néhány (miután két gombja marad, pontosan kettő) dolog távirányítására használom.
Először is felraktam egy breadboard-ra, bekapcsoltam, hogy kipróbáljam, működik-e.
Az első próbálkozásra tökéletesen működött, kitalálni, melyik csatorna melyik gombhoz tartozik, gyerekjáték volt.
Az egyetlen probléma a cuccal, hogy 5V-os logikai kimenetei vannak, én a BeagleBone Green-hez akarom kötni, aminek a GPIO portjai nem tolerálják az 5V-ot.
Úgy döntöttem, hogy a világ legyegyszerűbb szintillesztőjét fogom használni hozzá. Egy ellenállásosztót. Egy 39K-s és egy 68K-s ellenállás megoldoja a kérdést, multiméteren mérve.

A következő rész, a BeagleBone GPIO felkonfigurálása. Az OpenHAB a Linux GPIO Sysfs interfészt használja, ami nagyon egyszerű (https://www.kernel.org/doc/Documentation/gpio/sysfs.txt).

Először megpróbáltam adatot olvasni parancssorból. A vevő egy csatornáját rákötöttem a BBG 60-as GPIO (P9, 12-es érintkező) portra.

A konzolon a következő parancsokat szükséges kiadni:

echo '60' > /sys/class/gpio/export
echo 'in' > /sys/class/gpio/gpio60/direction

Ezek után az érték, ezzel a paranccsal olvasható:

cat /sys/class/gpio/gpio60/value

A parancsok jól működtek, de akár megnyomtam a gombot akár nem, mindíg 1-est kaptam vissza.

Megmérve a bemenetet, 1.6V-ot kaptam akkor is amikor a vevő kimenetén 0V volt. Ez azt jelenti, hogy a BBG bemenet tápra van húzva.

Ebből adódóan két lehetőségem maradt:

1. Kikapcsolom a felhúzó ellenállást valahogy
2. Az ellenállások helyett valami aktív szintillesztőt használok.

Az elsőt választottam.
Körülnézve tisztán kiderült, hogy a felhúzó ellenállás vezérlése nem része a Linux GPIO csomagnak. Sokat olvasva kiderült, hogy a BBG Cape Manager Overlay-eket használ ennek megoldására. Ez a múltban (korábbi kernel verziók) hol volt, hol nem volt. A 4.1.x-esre amit én használok, viszont már része a mainline kernelnek.

Itt van némi olvasnivaló:

https://github.com/jadonk/validation-scripts/blob/master/test-capemgr/README.md
http://www.thing-printer.com/cape-manager-is-back-baby/
http://www.valvers.com/embedded-linux/beaglebone-black/step04-gpio/

Az overlay repository (tanulhatsz belőle, de nem szükséeges ennek a feladatnak a megoldásához):
https://github.com/RobertCNelson/bb.org-overlays

A leghasználhatóbb dolog amit találtam ez a tool volt:

http://kilobaser.com/blog/2014-07-28-beaglebone-black-devicetreeoverlay-generator

Ez képes a szükséges overlayt előűllítani.

Tehát a 60-as GPIO felhúzóellenállásának a kikapcsolásához a következőkre van szükség::

1. Mentsük el a következő fájlt a /lib/firmware könyvtárba bspm_p9_12_2f-00A0.dts néven:


/*
 * This is a template-generated file from BoneScript
 */

/dts-v1/;
/plugin/;

/{
    compatible = "ti,beaglebone", "ti,beaglebone-black";
    part_number = "BS_PINMODE_P9_12_0x2f";

    exclusive-use =
        "P9.12",
        "gpio1_28";

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            bs_pinmode_P9_12_0x2f: pinmux_bs_pinmode_P9_12_0x2f {
                pinctrl-single,pins = <0x078 0x2f>;
            };
        };
    };

    fragment@1 {
        target = <&ocp>;
        __overlay__ {
            bs_pinmode_P9_12_0x2f_pinmux {
                compatible = "bone-pinmux-helper";
                status = "okay";
                pinctrl-names = "default";
                pinctrl-0 = <&bs_pinmode_P9_12_0x2f>;
            };
        };
    };
};

2. Fordítsuk le:
dtc -O dtb -o /lib/firmware/bspm_P9_12_2f-00A0.dtbo -b 0 -@ /lib/firmware/bspm_P9_12_2f-00A0.dts

3. Töltsük be:
echo bspm_P9_12_2f > /sys/devices/bone_capemgr.?/slots
echo bspm_P9_12_2f > /sys/devices/platform/bone_capemgr/slots

Ezután a felhúzóellenállás megszűnt létezni. A távirányító státusza olvasható lett.

Rendben, ez most működik egy csatornára, de mi van néggyel? Tudok négy overlay-t generálni, de hogyan kombinálom egy fájlba? Elég kevés infót találtam, mindaddig amíg rá nem akadtam erre az Adafruit dokumentációra:

https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-overlays

A doksi alapján sikeresen kombináltam a négy generált overlay-t. Végülis a P8 7-10 lábait használtam.

Az overlay (suf_keeloq-00A0.dts):

/*
 * SUF - 4-Channel Keyloq receiver cape
 */

/dts-v1/;
/plugin/;

/{
    compatible = "ti,beaglebone", "ti,beaglebone-black";
    part_number = "SUF-KEELOQ";

    exclusive-use =
        "P8.7",
        "P8.8",
        "P8.9",
        "P8.10",
        "mmc1_sdcd",
        "gpio2_3",
        "gpio2_5",
        "gpio2_4";

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            suf_keeloq_pins: pinmux_suf_keeloq_pins {
                pinctrl-single,pins = <
0x090 0x2f
0x094 0x2f
0x09c 0x2f
0x098 0x2f
>;
            };
        };
    };
    fragment@1 {
        target = <&ocp>;
        __overlay__ {
            suf_keeloq_pinmux {
                compatible = "bone-pinmux-helper";
                status = "okay";
                pinctrl-names = "default";
                pinctrl-0 = <&suf_keeloq_pins>;
            };
        };
    };
};

fordítás és betöltés:
dtc -O dtb -o /lib/firmware/suf_keeloq-00A0.dtbo -b 0 -@ /lib/firmware/suf_keeloq-00A0.dts 
echo suf_keeloq > /sys/devices/bone_capemgr.?/slots
echo suf_keeloq > /sys/devices/platform/bone_capemgr/slots

Ez már működik, csak jó lenne valahogy boot időben betölteni.
Ahhoz, hogy ezt elérjük, hozzá kell adnunk a /boot/uEnv.txt fájlhoz:

cape_enable=bone_capemgr.enable_partno=suf_keeloq

Következik: Integráció az OpenHAB-bal

2016. március 26., szombat

Mesék a házautomatizálásról - Irány a komfortzónám

Ok, kezdjük el:

Nem vagyok egy Linux guru. A piacon rengeteg különböző disztribució létezik, de nekem, csak az Ubuntuval és a Debiannal van némi tapasztalatom. Továbbá általában nem használok semmilyen linux GUI-t.
Tehát amikor belekezdek egy Linux alapú projectbe, az azt jelenti, hogy felrakok egy Ubuntut.
Miután úgy döntöttem, hogy ezt a projectet BeagleBone Green-re építem, fel kell raknom rá egy 14.14 LTS-t.
Az alap információ itt található: http://elinux.org/BeagleBoardUbuntu

1. Le kell tölteni a kész image-et innen: https://rcn-ee.com/rootfs/2016-02-11/flasher/BBB-eMMC-flasher-ubuntu-14.04.3-console-armhf-2016-02-11-2gb.img.xz
(ma a 16.04 már létezik, de én maradok a régebbinél, mert az stabilabbnak tűnik). Le kell tölteni továbbá az image író eszközt (Win32DiskImager):
És szükségünk van egy minimum 2GB-os uSD kártyára is.

2. Csomagoljuk ki az image-et egy mappába a gépen. A 7-Zip pl. alkalmas a feladatra. Telepítsük fel a Win32DiskImagert.

3. Írjuk ki az image tartalmát a uSD kártyára


4. Amikor az írás kész, rakjuk át a kártyát a Beaglebone-ba. Nyomjuk meg és tartsuk lenyomva a boot select gombot (a uSD foglalathoz legközelebb lévő gomb) miközben tápellátást adunk a panelnek. Egy rövid indulási fázis után a LEDek Knight Rider-est fognak játszani (Hmm, mindenki tudja még, hogy mi az a Knight Rider?). Várjuk meg amíg befejezi és az összes LED bekapcsol.

5 Dugjuk fel az eszközt az Ethernet hálózatra. Ha ki tudjuk deríteni a DHCP által adott címet, akkot a 6-8 pont opcionális. Csak indítsuk újra a panelt, a tápellátásának ki és bekapcsolásával.

6. Telepítsük fel a panel PC meghajtóját. A Windows meghajtó itt található:
64 bit: http://beagleboard.org/static/beaglebone/latest/Drivers/Windows/BONE_D64.exe
32 bit: http://beagleboard.org/static/beaglebone/latest/Drivers/Windows/BONE_DRV.exe
Ez NEM egy soros port emulátor, amint azt várnánk, hanem egy virtuális ethernet meghajtó. Egy SSH terminálra (pl. PuTTY) lesz szükségünk a csatlakozáshoz.

7. Csatlakoztassuk a BeagleBone-t a PC-hez. Ha már hozzá volt kötve, csak húzzuk ki az USB kábelt és dugjuk vissza. Amikor kihúztuk, vegyük ki a uSD kártyát is. A továbbiakban nem lesz rá szükségünk.
8. Ha lefuttatjuk az ipconfig-ot a gépen, egy új ethernet interface tűnik fel:


A címe 192.168.7.1. A Beaglebone a 192.168.7.2-es címen található. Csatlakozzunk az SSH terminálunkkal hozzá.

9. Ha nem használtuk az USB/Ethernetet a csatlakozáshoz, csak csatlakozzunk a DHCP-től kapott címmel. Az alapértelmezett felhasználó/jelszó páros: ubuntu/temppwd
Ha statikus címre van szükségünk, csak szerkesszük meg az /etc/network/interfaces fájlt.

10. Ha ellenőrizzük a DNS beállításainkat, azok valószínüleg nem működnek. A /etc/resov.conf szerkesztése nem oldja meg a problémát, miután a következő újraindításnál felülírásra kerül.
Szerkesszük meg a /etc/resolvconf/interface-order fájlt és rakjuk az eth* bejegyzést a lista tetejére. Ez korrgálja a DNS beállításokat.

11. Indítsuk újra a szerkezetet.

12. Telepítsük fel a frissítéseket:

apt-get update
apt-get upgrade

2014. május 10., szombat

3D toolchain - Machine Controller

Visszatérve a CNC toolchan(ek)re:
Minden CNC toolchainben van egy közös elem. Ez a Machine Controller. Ez lesz amit a különböző típusú dolgok gyártásánál nem fogok változtatni.
Az eredeti elképzelésem az volt, hogy a Mach3-at használom.
Összeraktam a gépet, felraktam rá egy 64 bites Windows 8.1-et. Miután a 3D nyomtató Repetier Host-ja is Windows 8.1-en fut, logikus választásnak tűnt.
Itt jött a pofon.
A Mach3 kizárólag 32 bit-es OS-en fut. A gépben pedig 8GB RAM van, amit nem akartam elveszteni.
Ez így nem jó, nyomoztam tovább. Kiderült, hogy a Repetier Hostnak van Linuxos verziója.
Tehát költözés Linuxra:
Ubuntu + LinuxCNC + Repetier.
Aktuális Ubuntu felmegy. Elkezdtem LinuxCNC leírást keresni.
Az derült ki, hogy az Ubuntu-s elképzelésem alapvetően hibás. Megy a LinuxCNC Ubuntun, hát persze, arra lett tervezve. A Live CD is Ubuntu alapú, remek. A 8.04-re és a 10.04-re lett kitalálva. Ja hogy én a 12.04-en szeretném, vagy olyan elvetemült vagyok, hogy egész a 13.10-ig (mostmár 14.04-ig) is felmennék? Na azt felejtsem el.
További nyomozás. Úgy néz ki Debian-on megy. Ráadásul a Debian-nak van stock realtime kernel-e ami mégjobb.
Ubuntu letúr, Debian 7 felrak. Némi küzdés a Wi-Fi-vel, kiderül, hogy a Wi-Fi firmware-ek nagyrésze zárt forráskódú, így még kell hozzá némi heggesztés, hogy menjen, de végül is összeállt.
Ez alapján a leírás alapján:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Debian_Wheezy_Linux-Rt_Compile_LinuxCNC
a LinuxCNC is elindult némi küzdés árán.
Átvittem abba a helyiségbe a gépet, ahova a CNC-t szántam. A Wi-Fi megszünt működni (sok-sok vasbeton).
Vettem az USB stick helyett egy antennával felszerelt adaptert. Innen a Wi-Fi-m mesebeli... Hol volt, hol nem volt - ezen még kell majd javítani. Addig is marad az USB kulcs mint anyagszállítás.
Végre összekötöttem a géppel. Kellett kicsit állítgatni. A leírás gyakorlatilag használhatatlan. Künlönböző dokumentációkból, fórumokon elejtett félmondatokból állt össze a beállítás. Fionmhangolást még mindíg igényel.
Úgy döntöttem, hogy kipróbálom az egészet. Egyenlőre még CNSC (Computer Number SUF Controlled) módban. A CNC koordinátái mozgathatóak a számítógépről, ráadásul a 4. axis-t is beüzemeltem. Ilyen módon, némi próbálkozás után elkövettem a rég félrerakott UV levilágító nyomógombjait.


És a gép, munka után némileg koszosan:


u.i.: Tudom, hogy mostanában kicsit sok a CNC, de lesz elektronika is hamarosan.

2014. április 18., péntek

Ubuntu 14.04 LTS

ENGLISH VERSION


Igen jól látod, ez itt egy Ubuntu. Pontosabban egy Xubuntu Desktop 14.04 LTS.
Tegnap jelent meg. Én ma hajnalban raktam fel.
Igen, én egy Woindows-os gyerek vagyok. És?
Van néhány cucc ami kell nekem mostanság és nem meg Windowson. Tehát innen Linux is.

2013. június 19., szerda

Ubuntu a BeagleBone Black-en

Azért írom ezt a bejegyzést, hogy összefogjam azokat az információkat amik az Ubuntu BBB-n való telepítéséhez szükségesek. A folyamat végén egy parancssoros felületet kapunk.
Authentikációs adatok:
felhasználónév: ubuntu
jelszó: ubuntu
A folyamat:
1. Rakjunk be egy MicroSD kártyát egy USB-s olvasóba.
2. Csatlakoztassunk egy USB Hub-ot a BBB-hez.
3. Csatlaoztassuk az USB-s olvasót és a billentyűzet/egér kombó vevőjét az USB Hub-hoz.
4. Indítsuk el a gyári Angström Linuxot
5. Töltsük le az Ubuntu image-et. Az információ innen származik: http://www.armhf.com/index.php/boards/beaglebone-black/
Az Ubuntu 12.04 LTS-hez szükséges image a következő: http://s3.armhf.com/debian/precise/bone/ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
6. Rakjuk rá az image-et az SD kártyára a következő paranccsal:
xz -cd ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz > /dev/sda
7. Mountoljuk fel a keletkezett fájlrendszert (én ezt itt elfelejtettem, ezért másképp csináltam). Remélem a devicefile neve rendben van:
mount /dev/sda2 /mnt
8. Másoljuk át az image-et (ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz) a felcsatolt fájlrendszerbe valahova
9. Állítsuk le a BBB-t és tegyük át a MicroSD kártyát az alaplapi foglalatba.
10. Indítsuk el az Ubuntut. (Először az SD kártyáról)
11. Telepítsük fel az Ubuntut az integrált MMC-re a következő parancsal:
xz -cd ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz > /dev/mmcblk1
12. Állítsuk le a rendszert, vegyük ki a MicroSD kártyát és indítsuk el az MMC-ről
Első lépések az új rendszerrel:
13. Először is rakjuk rendbe a csomagkezelő rendszert:
apt-get update
apt-get upgrade
14. Ha más billentyűzetkiosztást használunk mint az amerikai (én a magyart) akkor ezzel tudjuk átállítani:
dpkg-reconfigure keyboard-configuration
15. Állítsuk át az ubuntu felhasználó jelszavát valami biztonságosabbra.

2013. június 18., kedd

Új project: Nagios a BeagleBone Black-en

Itt a következő projectem. Nem igazán egy beágyazott rendszer project, hanem egy beágyazott rendszeren futó normál informatikai megoldás.
Ma az irodában egy HP Microserveren fut a Nagios. Ezt szeretném egy BeagleBone Black-el kiváltani (energia fogyasztás, helyigény, megbízhatóság, stb.)
A feladat a következő:
  • Ubuntu Server telepítés (12.04 LTS vagy 13.04)
  • Nagios telepítés
  • Konfiguráció átvitele
  • Kész


2013. május 14., kedd

BeagleBone Black

Kéne némileg linuxoznom is. Ha már újra nekiállok, akkor legyen valami embeded platform. Van otthon RPI, de valahogy nem igazán szimpatikus (főleg az, hogy nem tudok rá aktuális, teljes disztribuciót telepíteni, mint pl. Ubuntu).
Kb. egy hónapja jött a hír egy Farnell hírlveélben, hogy jön a BeagleBone utódja (olcsóbb, szebb, jobb, erősebb, HDMI, stb.). Mint később kiderült Cortex-A8 procival ami azt jelenti, hogy megy rajta az Ubuntu.
Megrendeltem, akkor még nem volt szállítható.
Most jött a hír: Feladta a Farnell. Ez azt jelenti, hogy holnap a kezemben lesz, ha minden igaz. :-)