Antons blogg om elektronik och Linux

9 april, 2011

Generera QR-kod i Ubuntu

Filed under: Terminal,Ubuntu-tips — Anton @ 10:11
Tags: , , ,

Inledning

QR-kod är det nya. Det är en slags tvådimensionell streckkodsliknande matris som kan innehålla allt från rena sifferkombinationer till kontaktuppgifter och webbadresser. Liknande tekniker är Data Matrix, som återfinns på många plast- och pappersförpackningar, och BeeTagg som Hemmakväll använder i sina reklamutskick. Numera kan man enkelt skanna dessa, dock ej BeeTagg, direkt i sin Androidbaserade mobiltelefon med applikationen Barcode Scanner. Det finns även Java-appletar för samma ändamål till äldre telefoner och jag förmodar att Apples Iphone har någon liknande applikation. Det finns många webbtjänster som låter en skapa egna QR-koder men för att få lite större kontroll över processen kommer jag i detta inlägg att gå igenom Linuxprogrammet qrencode.

Installation och användning av qrencode

Användare av Debian/Ubuntu kan bekvämt installera qrencode från de vanliga programförråden. Den enklaste syntaxen ser ut så här:

qrencode -o bildfil.png [informationen som ska ingå i QR-koden]

För längre texter är det dock enklast att lägga informationen i en textfil som man omdirigerar standard input till med hjälp av en så kallad pipeline i Linux. qrencode kommer då att läsa informationen från denna. Taggen i inledningen skapades exempelvis med kommandot:

qrencode -o antonsblogg.png < blogglänk.txt

där blogglänk.txt innehöll texten ”https://antoneliasson.wordpress.com/&#8221;.

Telefonbokstaggar

Man kan även göra en QR-kod av ett telefonboksinlägg i vCard-format genom att skapa en fil som innehåller en text liknande denna:

BEGIN:VCARD
VERSION:2.1
N:Eliasson;Anton;;;
FN:Anton Eliasson
TEL:07xxxxxxxx
EMAIL:e-post@gmail.com
END:VCARD

Det går även att exportera vCard-filen från många program som hanterar adressböcker, men för att den resulterande QR-koden skulle bli så liten som möjligt och därmed enkel att läsa tog jag bort all onödig information i en textredigerare efteråt. Du kan läsa mer om vCard-syntaxen på Wikipedia. För att kunna förstora taggen utan att den blir alltför suddig kan man använda flaggan s som ställer in pixelstorleken. Ett exempel:

qrencode -o anton.png -s 10 < Anton\ Eliasson.vcf

Den resulterande bilden kan sedan tryckas på ens visitkort exempelvis med hjälp av programmet gLabels. Inbyggt stöd för att skapa QR-kod i gLabels är dock på väg, så fortsättningsvis kanske qrencode inte behövs för den vanliga användaren. Vi får se vad framtiden har att utvisa för denna mycket spännande teknik!

Enkel visitkortsdesign i Ubuntu med gLabels

Filed under: DIY,Ubuntu-tips — Anton @ 10:06
Tags: , , , , ,

Inledning

För någon månad sedan behövde jag göra visitkort till mitt UF-företag Nästa Lektion UF. Du kan läsa om Ung Företagsamhet här. Frågan var vilket program som var bäst till det i en Linuxmiljö, då de flesta exempel jag sett riktar sig mot Microsoft Publisher eller diverse Adobe-program. Det finns ett par mallar till OpenOffice.org att hämta, men dessa är ofta i fel storlek eftersom det inte finns någon självklar standardiserad storlek på visitkort. Dessutom är OOo:s avancerade funktioner tämligen obegripliga för många, mig själv inkluderad. Ett annat vanligt alternativ som många använder är att göra visitkorten i Inkscape, ett fritt alternativ till Adobe Illustrator. Problemet är att Inkscape har en ganska hög inlärningströskel och tiden räckte helt enkelt inte till för att lära mig det. Till slut hittade jag en bra guide för programmet gLabels, ett program för GNOME-miljön som används för att skapa visitkort och etiketter i ett enkelt gränssnitt. Jag tänker därför summera kort hur jag gjorde i Ubuntu 10.10.

(more…)

16 januari, 2011

Paketinstallationsskript

Jag har i dagarna byggt mig en ny dator – på riktigt den här gången. Det kanske inte är så vansinnigt intressant för er att veta så jag hoppar över detaljerna och nöjer mig med en liten bild:

Något som kanske är betydligt mer intressant för er, kära läsare, är (förutom mitt nya minimalistiska WordPress-tema :)) mitt senaste skript: en paketinstallerare för Ubuntu. Visserligen startade mitt gamla Ubuntu-system upp på den nya datorn som om inget hade hänt (något som inte kan sägas om Windows XP), men eftersom den nya processorn var 64-bitarskapabel krävdes ändå en ominstallation för att kunna använda den fullt ut. Att sitta och manuellt installera om alla program efteråt är dock inte särskilt kul så därför uppfann jag ett skript som gör det åt mig efter kommande Ubuntu-installationer. Skriptet läser paket från en lista som sparas i en separat fil, kontrollerar vilka som finns tillgängliga och installerar sedan allt. Det kan även lägga till PPAn som sparas i en annan fil. Genom att köra exempelvis

sudo ./paketinstallerare.sh ppa install upgrade

kommer skriptet att lägga till PPAn, uppdatera förråden, installera alla paket i paketlistan samt uppgradera alla paket. Du bör ange ppa före install för att skriptet även ska kunna installera de paket som inte finns i Ubuntus standardförråd. För att se alla alternativ kan du köra skriptet utan argument. Det finns en specialare som ser ut så här:

sudo ./paketinstallerare.sh spotify

som lägger till Spotifys förråd, GPG-nyckel samt installerar programmet. Denna specialåtgärd krävs eftersom Spotify angett en deb-rad som ska rakt in i /etc/apt/sources.list istället för en vanlig ppa:-rad.

Nedan följer skriptet i sin helhet. Missa inte heller min helt nya skriptsamling här på bloggen, där jag samlar mina allra bästa skript. Eftersom vi svenskar är lite intelligentare än amerikaner behöver jag säkert inte gå igenom att du använder mina skript helt på egen risk och att jag inte kan garantera deras funktion på ditt system 😉

#!/bin/bash
# Installerar allt du kan tänkas behöva. Lägg alla paket att installera i ./paketlista
# (ett paket per rad) och alla PPA att lägga till i ./ppalista (ett ppa per rad).

if [ "$UID" != 0 ]; then
 echo "Skriptet behöver köras som root (sudo $0)"
 exit 1
fi

show_usage () {
 echo "Användning:"
 echo -e "$0 install\tInstallera paket från paketlista"
 echo -e "$0 remove\tTa bort paket från paketlista"
 echo -e "$0 ppa\tLägg till PPAn från ppalista"
 echo -e "$0 update\tUppdaterar förråden"
 echo -e "$0 upgrade\tInstallerar alla uppgraderingar"
 echo -e "$0 spotify\tInstallerar Spotify för Linux preview"
}

# inga argument
if [ "$#" == 0 ]; then
 show_usage
 exit 2
fi

# kontrollera att angivna kommandon finns
for arg in $@; do
 case $arg in
 install|remove|ppa|update|upgrade|spotify)
 ;;
 *) # skriptet kommer aldrig hit vid korrekt användning
 show_usage
 exit 2
 esac
done

for arg in $@; do
 case $arg in
 install) # installera program från paketlista
 if [ -f paketlista ]; then
 apt_ary=()
 fail_ary=()
 while read paket; do
 apt-cache show $paket &> /dev/null
 if [ "$?" == 0 ]; then
 apt_ary+=( $paket )
 else
 fail_ary+=( $paket )
 fi
 done < paketlista

 apt-get -y install ${apt_ary[@]}

 if [[ $fail_ary ]]; then
 echo "Följande paket kunde inte hittas:"
 echo ${fail_ary[@]}
 fi
 else
 echo "paketlista kunde inte hittas!"
 fi
 ;;
 remove) # ta bort program från paketlista (vad man nu skulle vilja göra det för)
 if [ -f paketlista ]; then
 apt_ary=()
 fail_ary=()
 while read paket; do
 apt-cache show $paket &> /dev/null
 if [ "$?" == 0 ]; then
 apt_ary+=( $paket )
 else
 fail_ary+=( $paket )
 fi
 done < paketlista

 apt-get -y remove ${apt_ary[@]}

 if [[ $fail_ary ]]; then
 echo "Följande paket kunde inte hittas:"
 echo ${fail_ary[@]}
 fi
 else
 echo "paketlista kunde inte hittas!"
 fi
 ;;
 ppa) # lägger till PPAn från ppalista
 if [ -f ppalista ]; then
 while read ppa; do
 add-apt-repository $ppa
 done < ppalista

 apt-get -y update
 else
 echo "ppalista kunde inte hittas!"
 fi
 ;;
 update) # uppdaterar förråd
 apt-get -y update
 ;;
 upgrade) # uppgraderar alla paket
 apt-get -y dist-upgrade
 ;;
 spotify) # installerar Spotify preview (en liten specialare)
 grep spotify /etc/apt/sources.list # kollar först om PPAet redan finns i sources.list
 if [ "$?" != 0 ]; then
 echo | tee -a /etc/apt/sources.list
 echo '# Spotify preview' | tee -a /etc/apt/sources.list
 echo 'deb http://repository.spotify.com stable non-free' | tee -a /etc/apt/sources.list
 gpg --keyserver wwwkeys.de.pgp.net --recv-keys 4E9CFF4E
 gpg --export 4E9CFF4E | apt-key add -
 apt-get -y update
 else
 echo "Spotifys PPA är redan installerat!"
 fi
 esac
done

Du måste själv skapa en fil med paket att installera som du döper till ”paketlista” och lägger i samma mapp som skriptet. En paketlista kan exempelvis se ut så här:

ubuntu-restricted-extras
amsn
build-essential
conky
gimp

Om du vill att skriptet ska lägga till PPAn åt dig behöver du skapa filen ”ppalista” som du också lägger i samma mapp som skriptet. En ppalista kan exempelvis se ut så här:

ppa:ubuntu-mozilla-daily/ppa
ppa:philip5/extra
ppa:stebbins/handbrake-releases

Skriv gärna en kommentar här nedan om du gillar skriptet eller om du har förslag på förbättringar 🙂

4 december, 2010

Komma åt ext4-partitioner i Windows med hjälp av VirtualBox forts.

Filed under: Linux,Terminal — Anton @ 14:04
Tags: , , , ,

För ett par månader sedan skrev jag om hur man med hjälp av en virtuell maskin kan använda filsystemet ext4 i Windows. Under tiden som har gått har jag ändrat några saker i konceptet. För att starta och stoppa maskinen lättare skrev jag ihop två små Batch-skript. Det första som startar maskinen döpte jag till Yeesha START.bat och innehåller följande:

@echo off 
echo Startar Yeesha... 
C:\Program\Oracle\VirtualBox\VBoxManage.exe startvm Yeesha 
echo Monterar Everdunes på W: 
pause 
net use W: \\yeesha\Everdunes /USER:anton 
echo Klar!

För att Windows ska få lite tid på sig att upptäcka Samba-utdelningen la jag in ett paus-kommando mitt i skriptet. Användaren måste alltså vänta någon sekund och sedan trycka enter för att montera hårddisken som en nätverksenhet.

Det andra skriptet som stoppar maskinen, eller egentligen pausar den och sparar tillståndet till nästa uppstart, döpte jag till Yeesha STOP.bat och innehåller följande:

@echo off 
echo Avmonterar Everdunes från W: 
net use W: /DELETE 
echo Stoppar Yeesha... 
C:\Program\Oracle\VirtualBox\VBoxManage.exe controlvm Yeesha savestate 
echo Klar!

Jag fick en kommentar från en läsare som undrar hur prestandan skiljer sig om man använder inställningen ”Paravirtualiserat nätverk (virtio-net)”. Jag är inte helt hundra på vad den inställningen gör, men enligt Virtualbox-manualen handlar det om att gästen använder ett särskilt sorts nätverkskort som inte behöver emuleras av värden, vilket ska ge ökad prestanda. Tydligen är det inte svårare att använda än att ändra i Virtualbox inställningar från ”Intel PRO/1000 MT Desktop” eller vad som nu är standard till ”virtio-net”. Det är fortfarande bryggat nätverk som används, men med en annan drivrutin. Efter det startade den virtuella maskinen utan problem tack vare att Linuxkärnan redan hade inbyggda drivrutiner för virtio-net. Jag gjorde ett par nya läs- och skrivtest med en 600 MB stor fil där jag även jämförde med det emulerade nätverkskortet ”Intel PRO/1000 T Server”

Lästest virtio-net: 12 MB/s
Skrivtest virtio-net: 11,4 MB/s
Lästest Intel PRO/1000 T Server: 11 MB/s
Skrivtest Intel PRO/1000 T Server: 12,2 MB/s

Resultaten skiljde sig mindre från varandra än jag hade väntat mig. Efter det tänkte jag testa med Intel PRO/1000 MT Desktop igen men råkade då klicka på knappen som genererar en ny MAC-adress och det var inte bra. Nästa gång jag startade den virtuella maskinen ville den nämligen inte kännas vid nätverkskortet! Efter någon timmes googlande efter en lösning utan resultat gav jag upp och återställde helt enkelt Virtualbox från en backup.

3 oktober, 2010

Ta bort reserverade block från en Truecrypt-volym

Filed under: Linux,Terminal — Anton @ 20:53
Tags: , , ,

Jag är en flitig användare av Truecrypt. Eftersom jag bara använder programmet i Ubuntu så formaterar jag alla krypterade volymer med ext3. Standard när ett sådant filsystem skapas är att 5 % av utrymmet reserveras till root. Detta bidrar till högre säkerhet på systempartitioner men på rena lagringsvolymer fyller det ingen annan funktion än att ta upp utrymme i onödan.

Många har nog hört talas om programmet tune2fs som kan användas direkt mot blockenheter för att minska antalet eller helt ta bort de reserverade blocken. Något jag upptäckte alldeles nyss är dock att programmet även kan användas på Truecrypt-volymer. Kommandot mount avslöjade att Truecrypt skapar en blockenhet under /dev när en volym monteras:

$ mount
...
/dev/mapper/truecrypt2 on /media/truecrypt2 type ext3 (rw)

Det gjorde det enkelt att ta bort de reserverade blocken med

$ sudo tune2fs -r 0 /dev/mapper/truecrypt2
tune2fs 1.41.11 (14-Mar-2010)
Sätter antal reserverade block till 0

Och vips har man fått lite mer plats i sin hemliga låda!

5 september, 2010

Komma åt ext4-partitioner i Windows med hjälp av Virtualbox

Filed under: Linux,Terminal — Anton @ 09:30
Tags: , , ,

Det har blivit dags för ny lagringshårddisk igen och jag står återigen inför det svåra valet om vilket filsystem jag ska välja.  Visserligen kör jag nästan enbart Ubuntu nuförtiden men de få gånger jag använder Windows XP behöver jag komma åt hårddisken även därifrån. NTFS hade varit det enklaste men det stödjer tyvärr inte POSIX-rättigheter och dessutom vill jag inte behöva defragmentera hårddisken hela tiden. Så det var uteslutet. Det finns ett par Windows-drivrutiner för ext2 (som även fungerar till ext3 eftersom det är bakåtkompatibelt), men det är kanske inte den optimala lösningen heller. Det finns dock ytterligare en lösning (förutom att använda en lagringsserver som kör Linux ständigt) som jag läst om på denna bloggen, och det är att köra någon minimal Linux-distribution i Windows genom Virtualbox. I den monterar man sin hårddisk med hjälp av ”raw disk access”, därefter delas den ut till Windows-värden med VirtualBox delade mappar eller Samba. Det tänker jag försöka täcka i denna guide.

(more…)

26 juli, 2010

Köra Truecrypt i Ubuntu utan root

Filed under: Linux,Terminal — Anton @ 10:15
Tags: , , , ,

Varje gång en Truecrypt-volym ska monteras krävs root-tillgång. Det blir lite jobbigt att skriva in lösenordet varje gång så här följer en enkel guide hur man gör så att vanliga användare kan använda Truecrypt.

  • Lägg till en ny grupp som heter truecrypt:
sudo groupadd truecrypt
  • Ändra i sudo-konfigurationen med kommandot:
sudo visudo
  • Lägg till följande rader i slutet av filen:
# Users in the truecrypt group are allowed to run TrueCrypt as root.
%truecrypt ALL=(root) NOPASSWD:/usr/bin/truecrypt
  • Till sist lägger du till din egen användare i den nya gruppen:
sudo gpasswd -a din_användare truecrypt

Nu ska du inte behöva ange ditt lösenord nästa gång du monterar en krypterad volym i Truecrypt. Guiden kommer ursprungligen från http://wiki.archlinux.org/index.php/TrueCrypt#Mount_volumes_as_a_normal_user. Den här är dock förenklad något genom att jag tog bort några steg som inte var nödvändiga så länge bara Truecrypt endast användst i grafiskt läge.

8 april, 2010

Smarta saker jag kommit på ikväll!

Filed under: AVR,Eagle,Terminal — Anton @ 21:04
Tags: , , , , ,

Jordplan i Eagle Layout Editor

En sak jag läst mig till nu är att jordplan inte renderas förrän man kör Ratsnest, innan dess visas de bara som streckade linjer. Inte helt uppenbart om man aldrig jobbat med jordplan innan.

Före ratsnest

och efter ratsnest. Ser lite bättre ut!

It’s not a bug, it’s a feature

För den som vill läsa den långa versionen finns den här. Sammanfattat var det så här:

(more…)

Blogg på WordPress.com.