Category: Linux

apt-cacher-ng

Thuis staan er permanent 5 Debian computers, en momenteel mag je daar mijn laptop bijtellen. Mijn server bevat ook nog eens een zestal virtuele servers, en zo zitten we al aan 12. Na de examens neem ik mijn computers en server onder handen, en ik zal hierbij Debian Jessie op mijn desktops installeren. Dat betekent nog meer updates ... Maar de snelheid van het internet is hier nogal beperkt, en dan is het niet zo handig als iedere computer x aantal minuten updates zit te downloaden, zeker omdat een groot aantal pakketten op al die machines geüpdatet moeten worden.

Daarom heb ik vandaag apt-cache-ng geïnstalleerd, wat er voor moet zorgen dat updates voortaan slechts éénmaal gedownload worden, en daarna gewoon uit de cache op mijn server gehaald worden. Er is ook apt-cacher, maar die heeft nogal wat dependencies nodig, en ik zie niet meteen een voordeel, behalve dan misschien dat het een Debian-project is ... Nu, ik kan achteraf nog altijd veranderen, mocht het nodig zijn.


Hardware decoding (2)

De vorige keer melde ik dat ik hardware decoding had op mijn nieuwe laptop. In werkelijkheid had ik enkel de video output geoptimaliseerd. De API van libav is namelijk gewijzigd, en de manier waarop mplayer2 aan de hand van afzonderlijke codecs de hardware decodoing te activeren wordt niet eer ondersteund. Verder was het sowieso geen goed idee om vdpau te gebruiken. Deze laag naar vaapi zorgt voor extra overhead, en hier werd enkel H264 ondersteund.

mplayer2 wordt niet meer ontwikkeld, en mplayer is uit Debian gezwierd. Nu, die laatste heeft wel terug wat activiteit, maar ze is toch relatief beperkt. Daarnaast, vaapi wordt vooralsnog niet ondersteund. mpv is een fork van mplayer2, die wel alle nieuwe technieken ondersteunt, die wel nog actief ontwikkeld wordt, maar die spijtig genoeg niet compatibel is met mplayer. Het wordt dus kiezen: een langere batterijduur, of vaarwel zeggen tegen smplayer. Nu, op mijn laptop gebruik ik de playlist van SMPlayer toch niet, dus ben ik overgeschakeld naar mpv.

mpv heeft maar vier nadelen, allereerst dus het feit dat het niet werkt met SMPlayer, het is geen liefhebber van CR's in ondertitelbestanden, deinterlacing werkt (voorlopig) niet in combinatie van hardware decoding (of toch niet met vaapi) en, een kleintje, standaard wordt de resterende tijd getoond, en niet de totale tijd.

Nu, ik heb wel wat aan het configuratiebestand gezeten:

vo=vaapi
hwdec=vaapi
hwdec-codecs=all

save-position-on-quit
heartbeat-cmd="xscreensaver-command -deactivate"

ass-line-spacing=-10
sub-text-font="Liberation Sans Narrow:style=Bold"
sub-text-font-size=55
sub-text-shadow-color="#000000"
sub-text-shadow-offset=1

Printen

Ik wou eerder deze week de slides van Internettechnologie afdrukken vanaf mijn laptop. Nu, printen doe ik niet veel met mijn laptop, en dit kan zowel thuis als op mijn kot, en dus leek het me handiger dat ik gewoon even tijdelijke verbinding maak met de cups server van een andere computer, ipv zelf een te installeren en die daar dan de verschillende printers aan toevoegen. Zo hoef ik ook niet perse mijn laptop aan te houden tijdens het printen. Dit kan door tijdelijk een een .cups/client.conf aan te maken, zoals:
ServerName 192.168.1.4


Touchpad

Ik vond het wat vervelend om telkens mijn touchpad in te drukken om te klikken. Dit leverde problemen op voor de middenmuisklik, en het maakt een vervelend geruchte. Daarnaast, ik vrees een beetje voor de levensduur van mijn touchpad als ik de hele tijd zo zit te klikken. Dat heb ik opgelost door terug zoals op mijn EeePC click on tap aan te zetten. Het probleem was echter dat dit veel te gevoelig was, en ik de cursor nog amper kon bewegen zonder event. Na wat zoeken heb ik nu het volgende in mijn xorg.conf:

Section "InputClass"
	Identifier	"touchpad peppy cyapa"
	MatchIsTouchpad	"on"
	MatchDevicePath	"/dev/input/event*"
	MatchProduct	"cyapa"
	Option		"FingerLow"		"10"
	Option		"FingerHigh"		"10"
	Option		"FingerPress"		"500"
	Option		"BottomEdge"		"400"
	Option		"AreaBottomEdge"	"400"
	Option		"TapButton1"		"1"
	Option		"TapButton2"		"3"
	Option		"TapButton3"		"2"
EndSection

30/05/2014, 15:13:
Hmmm, het leek toch meer een placebo-effect, zeker als je wat scheef zit is het een ramp. Ik vond deze middag deze site, en het werkt:

Section "InputClass"
	Identifier	"touchpad peppy cyapa"
	MatchIsTouchpad	"on"
	MatchDevicePath	"/dev/input/event*"
	MatchProduct	"cyapa"
	Option		"FingerLow"		"10"
	Option		"FingerHigh"		"10"
	Option		"BottomEdge"		"400"
	Option		"AreaBottomEdge"	"400"
	Option		"TapButton1"		"1"
	Option		"TapButton2"		"3"
	Option		"TapButton3"		"2"
	Option		"SingleTapTimeout"	"140"
	Option		"MaxTapTime"		"140"
	Option		"MaxTapMove"		"20"
	Option		"ClickTime"		"5"
	Option		"LockedDrags"		"true"
	Option		"LockedDragsTimeout"	"100"
EndSection

Hardware decoding

Gisteren kon ik niet slapen van de warmte, en heb ik dan uiteindelijk maar mijn laptop genomen en eens uitgezocht hoe ik de hardware decoding van Intel kon gebruiken op mijn laptop.

Het bleek dat dit gebeurt via de VA API library, maar aangezien die standaard (er zijn wel aanpassingen beschikbaar, maar lijkt er op dat die niet in Debian zitten, en ik vermoed dat daarop gealludeerd wordt met de vaapi output in gnome-mplayer, de basis van gecko-mediaplayer) niet beschikbaar is voor mplayer2. Echter, VDPAU wel, en ik had al gezien toen ik een rondkeek voor status van nouveau drivers, dat er nu als free software beschikbaar zijn. En, gelukkig bestaat er zoiets als libvdpau-va-gl1 die een wrapper is rond VA API.

Echter, nog steeds krijg ik een error waneer ik VDPAU wil gebruiken. Standaard wordt immers libvdpau_nvidia.so ingeladen, of beter gezegd, dat wordt geprobeerd, want dat lukt natuurlijk niet. Via de VDPAU_DRIVER environment variabele kan dit echter opgelost worden, en dus voegde ik dit toe aan mijn .profile bestand:

if [ "$(hostname)" = "kevin-laptop" ]; then
	export VDPAU_DRIVER="va_gl"
fi

Nu, als ik na de examens Debian Jessie installeer op mijn nieuwe SSD zal ik zeker het pakket mesa-vdpau-drivers niet mogen vergeten, waarmee ik video acceleration met de nouveau drivers. Ben eens curieus hoe de ondersteuning zal zijn voor mijn Geforce 240 GT. Het is zeer waarschijnlijk dat ik de 210 die ik in mijn kotpc heb in mijn desktop stop, tenzij de support dus in orde zou zijn nu, maar ik vrees er een beetje voor. Een voordeel van de 210 is wel dat die passief gekoeld is, terwijl de 240 een ventilator heeft, en die heeft van tijd tot tijd een tikje nodig, of ze maakt "verschrikkelijk" veel lawaai tijdens het opstarten ... En, ik zal zoiezo trachten terug de iGPU te gebruiken.


Ruby on Rails installeren

Ruby on Rails ... fantastisch ... Dit was het framework waar me in twee van de drie practica van Internettechnologie mee moesten werken. Nu, zei vinden dat ze de waarheid in pacht hebben of zo, zei kunnen veel beter een packagemanagement systeem ontwikkelen dan de verschillende distributies. Tja, geen apt-get dus voor rails. Echter, ze dringen er wel nogal op aan om systemwide te installeren, wat ik helemaal niet wil zonder apt-get!

Ik heb dit nu al twee keer gedaan, eens op mijn netbook, en een keer op mijn kotpc. Nu wil ik het ook op mijn nieuwe laptop installeren. Ik heb het toen gelukkig wel in een mailtje gezet, maar de bundle install ontbreekt, dat heb ik terug moeten uitzoeken:

apt-get install ruby-dev libsqlite3-dev rubygems-integration nodejs
gem install rails user-install
bundle install path /home/kevin/.gem

De path wordt ook niet vermeld bij bundle help. Ben ik nu de enige die niet gediend is dat elk programma gaat zitten zooien op mijn systeem?


Blog

04/05/2014, 01:50
Zaterdag wou ik, toen ik aankwam in Gent nu eindelijk ook op mijn Raspberry Pi beveiligen met iptables. In principe is er welliswaar niets overbodig aanwezig, maar stel nu dat dit wel het geval is? Of dat ik op een gegeven moment een nieuwe service installeer? Dan is het misschien toch veiliger dat die onbereikbaar blijft van buitenaf, tot alles volledig is ingesteld. Of wat als ik op een gegeven moment een andere gebruiker op mijn server toelaat? Dan is het toch zo leuk dat die niet per ongeluk een service zou kunnen starten op een poort > 1024, of in ieder geval niet zichbaar zou zijn van buitenaf. Ook een eventuele exploit zou op die manier echt wel root-rechten moeten verkrijgen voor het een voor de buitenwereld toegankelijke server kán starten ...

Enfin hoe dan ook, baadt het niet dan schaadt het niet zullen we maar zeggen ... Maar, toen ik en eerste versie van de iptables file wou inladen (de versie die ik gebruik op mijn virtuele server thuis, en die nog geen rekening hield met de e-mailservices (om eerlijk te zijn, ik had er niet meer aangedacht om die ook open te zetten ;)), kreeg ik een error dat bepaalde modules niet gevonden konden worden in /lib/modules/... Even zoeken bleek dat dit met de firmware van de Raspberry Pi zou te maken hebben, en ik installeerde rpi-update, en voerde die vervolgens uit.

Op het einde werd gevraagd om te herstarten zodat alles opnieuw geladen kon worden (achteraf gezien, via een modprobe commando had het waarschijnlijk ook wel gelukt), en dat deed ik ook. Alleen ... hij kwam niet meer te voorschijn. Dus ofwel is de verbinding met het netwerk niet in orde, ofwel is er een probleem met de firmware, ofwel is het herstarten gewoon ergens blijven steken ... Ik heb danook een ticket aangemaakt bij PCextreme. Maar, voor de Raspberry Pi's is er geen 24/24 onderteuning (niet dat ik het hen kwalijk neem, het is uiteindelijk een gratis service. Ik dacht dat w nu zouden moeten betalen, maar op de factuur vorige maand stond een bedrag van 0 euro wat de Pi betreft), dus ik vermoed/verwacht dat het voor maandag zal zijn ... Ik heb het blog tot zolang terug op http gezet, en tja, voorlopig geen e-mail meer ...

08/05/2014, 19:45:
Ondertussen is het probleem opgelost. Blijkbaar hebben de Raspberry Pi's (in een datacenter) problemen met een reboot. Er zijn nog een aantal pogingen nodig geweest om deze terug te starten. Uit de logs leidt ik af dat er bij een van de boots een probleem met het tot stand brengen van de verbinding geweest zou zijn. Zou het geweest zijn omdat mijn hostname niet meer kon gederefereerd worden (ik had die aangepast zodat blog terug via HTTP bereikbaar zou zijn)? Enfin, het is terug in orde gekomen ...

Ik heb toen onmiddellijk de DNS terug aangepast, en toch werkte het nog bijna een dag niet. Ik had het niet meer kunnen testen, maar nginx was er mee gestopt toen bleek dat blog.online-urbanus.be niet naar hem verwees, wat ook zo was op het moment dat de server gestart werd. nginx even herstarten was hier de oplossing.


Nieuwe laptop

Woensdag kwam mijn nieuwe laptop toe. Ik zou normaal gewacht hebben tot na de examens, maar ik was er de laatste dagen veel te veel mee bezig, en daarom heb ik besloten hem nu toch maar te kopen. Het is een Acer C720. Dit was uiteindelijk de enige optie. Het is een van de enige (geen hybride!) zonder touchscreen, mat scherm, minder dan 12 inch, met ssd voor minder dan 500 euro. Veel minder wel te verstaan, de laptop (chromebook) zelf kostte me 269 euro. Dat is eigenlijk nauwelijks meer dan mijn Eee PC. Het totaal was wel iets hoger, omdat, in tegenstelling tot mijn Eee PC, er geen hoesje werd meegeleverd.

Nu, het is een van de best presterende chromebooks (er zijn er geen die strict beter presteren) beschikbaar, en heeft een mooie batterijduur van geadverteerd 8,5 uur, maar dat kan zelfs meer worden. Daarnaast is hier standaard reeds SeaBIOS aanwezig, zodat er geen nieuwe firmware geïnstalleerd moet worden om een ander OS te installeren, want het spreekt voor zich dat ik niet van zin ben om Chrome OS te gaan gebruiken. Allereerst is het te beperkt, te fancy en een aanslag op mijn privacy. Verder werkt ook alle hardware met free drivers en firmware. Voorlopig moet de driver voor het touchpad echter wel nog handmatig gecompileerd worden en in de modules folder geplaatst worden, aangezien die nog niet opgenomen is in de main kernel.

Echter, SeaBIOS start standaard niet. Dit kan geactiveerd worden met Ctr-L, maar dat is natuurlijk niet echt handig. Om dit op te lossen moet je een hexadecimale waarde naar het flashgeheugen schrijven. Echter, dat geheugen is natuurlijk readonly, en om deze beveiliging uit te schakelen moet je even een schroef losdraaien op het moederbord. Dit verliep voortreffelijk, en zelfs gemakkelijker dan gedacht. Uit deze post concludeerde ik namelijk dat er gefoefeld moest worden om de case open te krijgen, maar er is aan de kant van het scherm een stukje dat "los" zit. Als je daar een beetje aan vriemmelt klikt de case los. Het lijkt er ook echt op gemaakt, want ik kon niets zien wat dit stukje plastiek anders een functie zou geven.

Enfin, dan het installeren. Een verbinding maken lukte inderdaad niet, zoals in het artikel van the_unconventional al waarschuwde, al heb ik hem wel doorlopen en dan na de poging verder gedaan, hierdoor werd wel mijn hostname ingesteld tijdens de installatie. Verder lukte het me niet met de iso voor xfce4. Er waren corrupte bestanden. De iso was echter correct (hash), dus ik vermoed dat het aan de USB stick lag. Het gaat hier om Debian Jessie, aangezien de kans nogal klein is dat alles zou werken met een nieuw apparaat als dit.

Nu, ik heb alle bestanden op mijn home folder naar mijn nieuw machien gekopieerd. Echter, ik gebruik nu wel Firefox sync op mijn laptop, en ik synchroniseer zelfs met de config folder in mijn cloud. Mijn hele cloud map synchroniseren zou te veel onnodige ruimte in beslag nemen. Dit doet het nu eigenlijk al, want ook bij de config staan een aantal grote mappen die ik niet gebruik op mijn laptop, maar bon. Ik zal van de zomer toch echt eens proberen werken aan unisister zodat ik meerdere mappen afzonderlijk kan synchroniseren, en zo bijvoorbeeld wel de map van het huidige semester synchroniseer, maar niet die van 2 jaar geleden.

Nu, er is een nadeel aan mijn nieuwe laptop: er ontbreken een aantal toetsen: F11 en F12 zijn er niet, de andere hebben een logo ipv nummer. Maar erger is het ontbreken van de Delete toets, en Home en End, bijvoorbeeld via FN. Maar, op de plaats van Caps Lock is er een zoek toets, en die is gecodeerd als de super key, of beter bekend als de Windowstoets. Die gebruik ik als Fn toets die de functies van de logo's op de F-toetsen aangeven. Voor Delete, Home, End gebruik ik Ctrl. Echter, ik wou dit niet alleen in de grafische omgeving doen (waar ik het xvkbd commando gebruik, zoals ook in het artikel van the_unconventional werd gedaan), maar ook in de tty's. Nu, er bestaat een bestand /etc/kbd/remap, maar dat is een sed-script, en dat is niet echt handig. Er wordt veelvuldig gebruik gemaakt van spaties en tabs voor de input van dit script, en daar moet je dan op controleren, want anders zou je kunnen ook alle toetsencombinaties die die van jou bevatten aanpassen. Uiteindelijk heb ik het gehouden op een loadkeys in /etc/rc.local:
loadkeys /etc/kbd/keymap

/etc/kbd/keymap:

control keycode 14 = Remove
control keycode 103 = Prior
control keycode 105 = Find
control keycode 106 = Select
control keycode 108 = Next

En, dit wordt trouwens ook zeker nog doorgevoerd op mijn computers, want dit is veel handiger dan steeds naar home, end ... te moeten gaan/zoeken.

Verder heb ik ook, op basis van de Arch Wiki, de volgende /etc/modprobe.d/paretje.conf aangemaakt:

# Needed in order to have sound (Arch wiki is the best!)
options snd_hda_intel index=1

# Disable webcam
blacklist uvcvideo

Verder heb ik ook even geëxperimenteerd met mate-power-manager, ipv xfce4-power-manager, aangezien die statistieken aanbiedt over de evolutie van de batterij. Echter, wanneer ik mate-power-manager gebruik kan je de brightness instellen, echter, zeker als je uit een tty komt, wordt die op 98% gezet, ipv de 60 die ik ingesteld heb. Misschien dat ik in de toekomst eens kan kijken om de statistieken als afzonderlijk programma te compileren?

Nu, standaard start hij met 100% brightness, maar ik vind dat te veel, en verspilling. Daarom heb ik een script toegevoegd aan lightdm, met name display-setup-script. /etc/lightdm/backlight.sh:

#!/bin/sh
xbacklight -set 50

fontconfig voor Chromium

In Iceweasel maak ik gebruik van NoScript, Ghostery en Addblock Edge, en heb ik Lightspark geïnstalleerd voor flash. Echter, op sommige sites zorgt dit voor problemen. En dan kijk ik welke scripts nodig zijn, en of er een afhankelijkheid is van een tracker, maar wanneer dit een site is die je anders nooit bezoekt, is dit soms gewoon vervelend.

Daarom ben ik een tijdje geleden beginnen Chromium opstarten voor dit doel. Er is echter één probleem hiermee: de fonts in Chromium zijn afschuwelijk. Nu, er is wel meer mis met Chromium, maar om occasioneel eens een site te openen uit gemakoverwegingen, is dat geen probleem, ik zal het gewoon nooit als default browser gebruiken. Met name het feit dat er geen afzonderlijke search-bar is vind ik een beetje vervelend, dat is handig om even snel de searchengine aan te passen tijdens het surfen, want ik selecteer vaak tekst om die dan via de rechtermuisknop op te zoeken. Erger vindt ik dat er geen echt equivalent van NoScript is. Je hebt wel Scriptsafe, wat in de buurt komt, maar telkens op dat icoontje gaan klikken ... Verder heb je toch echt heel veel extensies nodig om bijvoorbeeld er nog maar voor te zorgen dat Chromium niet afsluit als je een tab sluit, of voor autoscrolling, het uitschakelen van de geschiedenis, ...

Maar bon, de fonts dus. Ik las op een paar oude discussies dat Chromium fontconfig negeerde, en enkel de Xfdesktop deamon opvolgde, maar dat er wel aan gewerkt zou worden. Nu, het lijkt erop dat het nu omgekeerd is ... Enfin, met het volgende .fonts.conf bestand is dit opgelost:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias binding="same">
		<family>Verdana</family>
		<prefer>
			<family>DejaVu Sans</family>
		</prefer>
	</alias>
	<match target="pattern">
		<edit mode="assign" name="dpi">
			<double>96</double>
		</edit>
	</match>
	<match target="font">
		<edit mode="assign" name="antialias">
			<bool>true</bool>
		</edit>
	</match>
	<match target="font" >
		<edit mode="assign" name="hinting">
			<bool>false</bool>
		</edit>
	</match>
	<match	target="font">
		<edit mode="assign" name="hintstyle">
			<const>none</const>
		</edit>
	</match>
	<match	target="font"	>
		<edit mode="assign" name="rgba">
			<const>none</const>
		</edit>
	</match>
</fontconfig>

Klok

Voor de examens van januari heb ik gezocht naar een manier om een klok te tonen in de tty's. Dit bleek uiteindelijk te kunnen met vcstime uit het pakket kbd, en je kan dit automatisch activeren door in /etc/kbd/config te zorgen dat je het volgende hebt:
DO_VCSTIME=yes