söndag 13 november 2016

Readonly Raspbian-Jessie med overlay och tmpfs

För att få mina Raspberrypajer mer robusta så brukar jag köra hela operativsystemet i readonly, Det är lite bökigt att få till men nu har jag hittat en metod som fungerar ganska bra.

Först behövs modulen overlay i din initramfs
#echo "overlay" >> /etc/initramfs-tools/modules

sen får man använda marklee77:s skript root-ro
#cd /etc/initramfs-tools/scripts/init-bottom && wget https://gist.githubusercontent.com/marklee77/5889076/raw/d3b6dccc005c02e017ef0e452b1558e241e715bb/root-ro && chmod +xxx root-ro

Min initramfs heter initrd.img-4.4.13-v7+ och jag väljer att ta bort den innan jag gör en ny
#rm -rf /boot/initrd.img-4.4.13-v7+

Sedan genererar jag en ny med samma namn
#mkinitramfs -v -o /boot/initrd.img-4.4.13-v7+ $(uname -r) > /root/mkinitramfs.log

Nu ska man bara lägga till raden root-ro-driver=overlay i sin /boot/cmdline.txt fil så den ser ut såhär
cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait root-ro-driver=overlay


Sist är det att lägga in raden initramfs initrd.img-4.4.13-v7+ i din /boot/config
#echo "initramfs initrd.img-4.4.13-v7+" >> /boot/config.txt
Nu är det bara att starta om :)

söndag 24 januari 2016

Hur man använder en Seriell-Bluetooth enhet i Linux

Jag köpte en sån här för att kunna köra något slags fattigmans IPMI mot en raspberrypi.

Jag kör i princip bara linux (Archlinux) och så här gjorde jag för att få igång den

Steg ett var att ändra till samma baud rate som en raspberrypi använder på sin seriella anslutning vilket är 115200.
Jag kopplade den enligt följande ritning till en Arduino Uno som ni kan hitta på den här länken.
Notera att jag kopplade den till 3,3V på Arduinon för den bluetooth modulen klarar bara 3,3Volt.
När seriell gränsnittet var öppet i Arduinon så skickade jag kommandot
AT+BAUD8
Vilket ställde modulens baudrate i 115200

Steg 2 var att koppla den till en raspberrypi
På  baksidan av bluetoothmodulen står det vilka pinnar som är vad, Jag kopplade enligt https://www.raspberrypi.org/documentation/usage/gpio/
VCC -> 3,3V
GND -> Ground
TXD -> pin15
RXD -> pin14
När raspberryn strömsätts nu så bör bluetooth-modulen börja blinka.

Steg 3 är att para den med datorn. Jag har bluetooth aktiverat och kör kommandot bluetoothctl som root
kalle@computer ~ %sudo bluetoothctl
[NEW] Device 20:14:12:58:22:57 HC-06
[bluetooth]# agent KeyboardOnly
Agent registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# pair 20:14:12:58:22:57
Attempting to pair with 20:14:12:58:22:57
[CHG] Device 20:14:12:58:22:57 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 20:14:12:58:22:57 UUIDs: 01001001-0000-1010-8000-00805e9bd4fbc
[CHG] Device 20:14:12:58:22:57 Paired: yes
Pairing successful
[CHG] Device 20:14:12:58:22:57 Connected: no
[bluetooth]# exit
Nu är modulen och datorn parad så nu fattas bara att skapa porten och koppla upp sig
kalle@computer ~ %sudo modprobe rfcomm
kalle@computer ~ %sudo rfcomm bind rfcomm0 20:14:12:58:22:57
kalle@computer ~ %ls -la /dev/rfcomm0                                                                                                  
crw-rw---- 1 root uucp 216, 0 24 jan 17.49 /dev/rfcomm0
Koppla upp sig med
kalle@computer ~ %screen /dev/rfcomm0 115200

lördag 19 september 2015

Spela RAR-arkiv med omxplayer

En raspberrypi är en helt fantastisk dator som kan göra det mesta och är framför allt kompetent som mediespelare. Men ibland ska man spela filer som är inpackade i rar arkiv och det kan vara lite bökigt att packa upp dom(speciellt när det tar så lång tid för raspberrryn att extrahera dom)
Jag var ute efter en möjlighet att spela upp innehållet direkt likt dom flesta andra mediaspelarna som finns till "vanliga" datorer.

Man behöver verktyget mkfifo, omxplayer och unrar. Dom 2 första finns med i grundinstallationen av raspbian men unrar får man ladda ner med apt.

Så här gör man:
Skapa en fifo fil. Det är ungefär som pipe, fast det blir en fil i filsystemet.

pi@raspberrypi ~$ mkfifo fifo.mp4

Sen packar man upp sin rar-fil och pipear stdout till fifo filen och där efter drar igång omxplayer att spela fifo filen

pi@raspberrypi ~$ unrar p -inul rarfilen.rar > fifo.mp4 & omxplayer fifo.mp4

Filmen visas direkt, I det här läget kan man inte hoppa runt i videon utan den spelas från start till mål, pausa går alldeles utmärkt.

torsdag 21 november 2013

Installera Graylog2 0.20.0 från scratch

Nu ska jag skriva ner hur man installerar Graylog2 0.20.0 på en ren installation av CentOS 6.

Den här guiden beskriver är specifik för version 0.20.0-preview6 och jag har av tidigare erfarenhet stött på att Graylog2 är ganska versionskänslig för paketen som den är beroende av (MongoDB och Elasticsearch)

I Elasticsearchfallet så är det version 0.90.6 vi vill ha, MongoDB ska vara nyare än 2.0 och Java ska vara 1.7.0 eller senare.

Lägg till EPEL repositoryn på din server

Några paket vi kommer behöva så småningom, Lika bra att installera på en gång:

 [root@localhost ~]# yum install -y java-1.7.0-openjdk mongodb-server mongodb wget pwgen perl-Digest-SHA

sedan kan vi ladda ner elasticsearch


[root@localhost ~]# curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.6.noarch.rpm

och installera
[root@localhost ~]# yum localinstall -y elasticsearch-0.90.6.noarch.rpm

Den enda konfigurationen vi vill göra med elasticsearch är att döpa om klusternamnet till graylog2
[root@localhost ~]# sed -i -e 's|# cluster.name: elasticsearch|cluster.name: graylog2|' /etc/elasticsearch/elasticsearch.yml

Nu till MongoDB
Se till att MongoDB startas vid boot
[root@localhost ~]#/etc/init.d/mongod start
[root@localhost ~]#chkconfig mongod on

skapa användaren grayloguser med lösenordet 123
[root@localhost ~]# echo 'db.addUser("grayloguser", "123");' > file.js && mongo 127.0.0.1:27017/graylog2 file.js && rm -rf file.js

Nu kan vi ladda ner Graylog2
Använd wget som vi installerade tidigare
[root@localhost ~]#wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.0-preview.6/graylog2-server-0.20.0-preview.6.tgz
[root@localhost ~]#wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.0-preview.6/graylog2-web-interface-0.20.0-preview.6.tgz

Packa upp och kopiera innehållet till /opt
[root@localhost ~]#tar zvxf *.tgz
[root@localhost ~]#cp -r graylog2-server-0.20.0-preview.6 /opt/graylog2-server
[root@localhost ~]#cp -r graylog2-web-interface-0.20.0-preview.6 /opt/graylog2-web-insterface

Kopiera graylog2.conf.example till din /etc som graylog2.conf
[root@localhost ~]#cd /opt/graylog2-server/
[root@localhost ~]#cp graylog2.conf.example /etc/graylog2.conf

Konfigurera din passwordsecret, enklast med följande 3 kommandon som tar en random genererad sträng.
[root@localhost ~]#passwordsecret=`pwgen -s 96 | awk 'END{print}'`
[root@localhost ~]#sed -i -e 's|password_secret =|password_secret = '"$passwordsecret"'|' /etc/graylog2.conf
[root@localhost ~]#sed -i -e 's|application.secret=""|application.secret='"$passwordsecret"'|' /opt/graylog2-web-insterface/conf/graylog2-web-interface.conf
Här sätter du ditt adminlösenord, password i det här fallet.
[root@localhost ~]#graylog2password=`echo -n password | shasum -a 256 | awk '{print $1}'`
[root@localhost ~]#sed -i -e 's|root_password_sha2 =|root_password_sha2 = '"$graylog2password"'|' /etc/graylog2.conf

Starta Graylog2
[root@localhost ~]#/opt/graylog2-server/bin/graylog2ctl start
Konfigurera Graylog-web-interface
[root@localhost ~]#sed -i -e 's|graylog2-server.uris=""|graylog2-server.uris="http://127.0.0.1:12900/"|' /opt/graylog2-web-insterface/conf/graylog2-web-interface.conf

och tillslut starta Graylog2-web-interface
[root@localhost ~]#nohup /opt/graylog2-web-insterface/bin/graylog2-web-interface &

Nu kan du logga in på http://ipadress:9000
ps. om det inte fungerar så se över dina iptables brandväggsregler samt kolla status i SELinux. Graylog2 fungerar utmärkt med SELinux påslaget.

söndag 10 november 2013

Zero-touch CentOS installation

Ibland vill man ha en ny och fräsch virtuell maskin som man vill prova något med.
Den vill man kunna köra igång snabbt och enkelt utan att påverkar något annat viktigt man har körandes. Det finns många guider som beskriver hur man gör en template/zero-touch installation av CentOS men egentligen behöver det inte vara så komplicerat som dom flesta är.

Det man behöver är en ren installationsiso (minimal fungerar utmärkt) och programmet ISO Master som man kan hitta i EPEL repositoryn.

Börja med att öppna iso filen och titta i katalogen isolinux
Där finns det en fil som heter isolinux.cfg, kopiera den till skrivbordet och öppna med en editor
Såhär ser filen ut efter redigering och det vi vill ändra är timeouten till något kortare än 60 sekunder samt raden append, båda raderna rödmarkerade.
ks=cdrom:/autoinstall.cfg beskriver vart bootloadern hittar en kickstartfil och vi pekar ut en som heter autoinstall.cfg som vi kommer att lägga i rooten på iso/cd-skivan.
default vesamenu.c32
#prompt 1
timeout 3

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.4!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install whop whop
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/autoinstall.cfg
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

Nu ska du skapa din kickstart fil. Jag har tagit min från en vanlig installation. Anaconda skapar nämligen en efter en RHEL/CentOS installation som ligger under /root och heter annaconda-ks.cfg
Jag har gjort några ändringar i min och såhär ser den ut nu:
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard sv-latin1
network --onboot yes --device eth0 --bootproto dhcp --noipv6 --activate
rootpw root
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Europe/Stockholm
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda

part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1

volgroup vg_centos --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_centos --grow --size=4032 --maxsize=4032

reboot

repo --name="CentOS"  --baseurl=http://ftp.sunet.se/pub/Linux/distributions/centos/6.4/os/x86_64
repo --name="EPEL"  --baseurl=http://download.fedoraproject.org/pub/epel/6/x86_64
repo --name=RPMForge  --baseurl=http://apt.sw.be/redhat/el6/en/x86_64/rpmforge

%packages --nobase
@core
eject
%post

#yum -y groupinstall "Desktop" "Desktop Platform" "X Window System" "Fonts"
#adduser kalle
#echo "password" | passwd kalle --stdin
#sed -i -e 's|id:3:initdefault:|id:5:initdefault:|' /etc/inittab

/usr/sbin/eject
%end

 Det jag har ändrat är då:
  • network är onboot=yes för att få nätverk samt activate för att få det under installationen
  • rootpw = root dvs rootlösenordet blir root, Byt det när installationen är klar!
  • clearpart raden rensar disk /dev/sda utan att fråga!
  • part raderna skapar partitioner. En boot och resten en volymgrupp som sen används som / och swap
  • reboot startar om datorn när installationen gått klart
  • repo raderna berättar för installationen vart den kan hitta paket. Sunet, EPEL och RPMForge är bra källor och du kan specificera mera bra-att-ha paket under %packages
  • eject installarar eject paketet så att installationsprogrammet kan mata ut "skivan" efter att installationen gått klart. Annars finns risk att man kommer hamna i en oändlig installations-loop
  • Den gröna bortkommenterade raderna är vad som krävs för att få en grafisk miljö samt en användare "kalle" som man kan logga in som med lösenordet password
Så nu har du 2 stycken filer klara (isolinux.cfg samt autoinstall.cfg som jag döpt kickstartfilen) så då kan du starta ISO Master:
Välj File -> Open -> Markera ISO filen och välj Open
Markera autoinstall och tryck på Add
Sedan öppnar du katalogen isolinux på skivan (den undre delen av ISO Master)
Markera isolinux.cfg (på skivan!) och välj Remove.
Nu markerar du din redigerade isolinux.cfg och väljer Add
Spara nu isofilen under File -> Save med ett nytt filnamn
Nu kan du prova att använda den ison som installationsmedia i Virtualbox. Installationen tar på min MacBook Pro 2,8Ghz 8GB ram ca 5 minuter om man skippar som grafiska delarna.

tisdag 29 oktober 2013

Erfarenheter av Punkt-till-Punkt anslutning med 2 stycken Ubiquiti NanoStation M2 (1,1KM)

En bekant har ett gammalt hus(sommarställe) som ligger långt ut på landet utan fast förbindelse, dock med 1,1KM fri sikt till en annan bekants hus där internet finns. Vi fick en idé i för en tid sen att vi skulle koppla upp det gamla huset på något sätt så man kan övervaka det remote.

En produkt som var intressant i sammanhanget var NanoStation från företaget Ubiquiti
http://www.ubnt.com/nanostation
Den finns i flera varianter men vi var mest intresserade av NanoStation M2 som egentligen är en helt vanlig accesspunkt men som är optimerad att användas över långa avstånd (som 1,5KM och från vissa källor även mer) M2 till skillnad från M5 använder 2,4Ghz bandet (M5=5Ghz) och min tanke var att ju lägre frekvens ju stabilare koppling.

Vi började med att mäta ut avståndet med hjälp av Google Earth
Vi kunde se att det var cirka 1168,31 Meter mellan husen samt att sommarhuset var i 132,52 graders riktning. Höjdskillnaden var minimal så vi tog inte så stor hänsyn till det då dom skulle monteras på ungefär samma höjd också.

Den första Nanostationen konfigurerade vi som en AP och den andra som en klient(station på Ubiquiti språk) enligt den här guiden: http://www.youtube.com/watch?v=__xzHnK6IVs Det skapar en layer2 förbindelse mellan husen med en gemensam broadcast domän.

Monteringen skedde med medföljande buntbant på ett befintligt maströr och vi riktade in ca 132 grader med det här precitionsinstrumentet

Bild på installationen

Sedan åkte vi till sommarhuset och den installationen ser ut såhär
Till en början hade vi ingen kontakt alls men efter att ha justerat kanalbredden till 20Mhz deaktiverat kanalskiftning och låst till kanal 6 (2437MHz), manuellt låst sändningseffekten till 10dBm så fick vi signal(jag deaktiverade även properitära Ubiquiti funktioner i felsökningen och lämnade dom avslagna när det fungerade)

Efter det följde lite ovetenskapliga tester så fick vi följande resultat.

  • Delay över länken var max 3ms
  • Throughput när vi förde över en fil med hjälp av FTP var ungefär 6-8Mbit (strax under 1MB/s)
  • Några minuters internetradio utan några störningar
  • Ett videosamtal med hjälp av Skype genomfördes med god kvalitet.
Nu får vi se hur dom klarar vintern men jag har goda förhoppningar då arbetstemperaturen är specad 70+ till -20 men jag har läst om fall där dom klarat ner mot 40- grader utan problem.

Kalle vs Samsung 1 - 0

Efter dryga 5 års tjänst började min TV (Samsung LE40A656A1C) ta väldigt lång tid på sig att starta. Mest uppenbart blev det när digitalboxen han komma igång innan tv:n.

Med tiden blev det värre och i slutändan kunde det ta upp till 15 minuter innan tv:n startade och under den tiden stod den mest och klickade och blinkade. Så jag började googla och kunde se att det här var ett vanligt fenomen och att kondensatorerna i nätaggregatet brukade ge sig efter 3 - 5 år.

OBS! TV:n innehåller starkström så vet du inte vad du gör, Låt bli! Jag tar inget ansvar över din TV eller dig.

Jag blev nyfiken och tog bort locket på baksidan:
Det bruna kortet i mitten är nätaggregaten och uppe i högra hörnet på det sitter det ett gäng kondensatorer
Med blotta ögat kan man se att 2 stycken av dom har expanderat och locket på toppen har börjat läcka.
(dom var specade 1000uF 10V)

I samma sidor där jag läste om poppade kondensatorer så rekomenderade även vissa (som verkar ha koll) att man ska gå på en kraftigare variant om man byter så att inte samma fel dyker upp på nytt, det var även rekomenderat att byta flera stycken men jag ville inte mixtra med det som såg okej ut.

Jag beställde 2 stycken 1000uF 16V kondensatorer för 4 kronor styck.
När leveransen kom så skruvade jag bort nätaggregatskortet
På bilden har jag precis plockat bort dom trasiga kondensatorerna(till vänster) och dom nya är redo.
Tänk på att kondensatorer är polariserade dvs dom har en + och en - sida, Det står på kretskortet vilket håll dem ska sitta åt men jag dubbelkollade även hur dom gamla satt för att vara säker.

Det här var inget precitionsjobb och en ovan som jag kunde byta ut båda på 10 minuter.

När dom var på plats så satte jag tillbaka kortet och testade....
Startade direkt!