Mest som et notat for min egen del, men det kan være nyttig for andre også.
Jeg hadde nettopp behov for å sette opp et utvikler driftsmiljø for en PHP-applikasjon jeg skriver. Jeg ønsket ikke å sette den opp på arbeidsstasjonen min da jeg ikke ønsker å male meg opp i et hjørne dersom denne skal byttes ut eller oppgraderes. Det å sette opp et driftsmiljø er noe kjedelig dersom det må gjøres for ofte. Bestemte meg derfor å teste ut KVM.
KVM og QEMU er noenlunde like, på en måte, hvorav KVM er maskinvareakselerert virtualisering. QEMU støtter virtualisering av flere plattformer, dersom man har behov det.
Etter et par søk på Google fant jeg fram til artikkelen Using Linux KVM Virtualization on Ubuntu Gutsy Gibbon 7.10 som beskriver veldig enkelt en del kommandoer man kan kjøre.
Jeg lastet ned nyeste Ubuntu. Først forsøkte jeg amd64-versjonen, men denne fungerte ikke da jeg tydeligvis kjørte i686-versjon av Ubuntu på vertsmaskinen. Selv om CPU-en støtter 64bit så er det OS-et som må støtte 64 bit dersom du ønsker å kjøre 64-bit gjeste-OS i KVM. Så jeg endte opp med å laste ned i386-versjonen av Ubuntu Lucid.
$ qemu-img create lucid-server.img -f qcow2 10G
$ kvm -no-acpi -m 750 -cdrom $HOME/ubuntu-10.04.1-server-i386.iso -boot d -k no -vnc :2 lucid-server.img
Legg merke til opsjonen “-vnc :2″ som gjør at KVM setter opp en VNC-server på port 5902. Dette gjorde jeg fordi jeg ikke ønsker at vinduet med den virtuelle serveren skal vises på vertsmaskinen, men jeg vil allikevel ha muligheten til å se skjermbildet. Dette er strengt tatt også nødvendig for å installere Ubuntu.
PS: Sånn helt på tampen… boota nettopp Ubuntu 10.04 i KVM på en 3 år gammel maskin… vips var loginskjermen der – rask!
OPPDATERING:
For å sette opp bridge-nettverk slik at den virtuelle maskinen kan motta IP-adresse fra DHCP, så må du konfigurere et bridge-grensesnitt på vertsmaskinen. På Ubuntu gjør du det ved å legge til følgende i /etc/network/interfaces:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
Du må reloade nettverksinnstillingene:
/etc/init.d/networking restart
Til kvm-kommandoen for å starte den virtuelle maskinen legger du til følgende opsjoner:
-net nic,vlan=0 -net tap,vlan=0,ifname=tun0
Digg this
Gi kudos!
Emneord: · KVM, Linux, virtualisering
Jeg fant ut i dag noe jeg mistenkte for noen dager siden, at ladekabelen til HTC-telefoner som jeg kjøpte på Elkjøp ikke var en fullkommen Micro USB-datakabel, men bare en ladekabel. Det kom ikke noe opp i loggene og dmesg da jeg kobla telefonen til PC-en, ingen nye enheter ble detektert.
Jeg bestilte så en helt vanlig Micro USB-kabel på Komplett.no, henta den på Posten i dag og testa, og vips så dukka den opp på PC-en og telefonen ble satt i synkroniseringsmodus.
Fra dmesg:
[1668040.520065] usb 2-1: new high speed USB device using ehci_hcd and address 16
[1668040.683373] usb 2-1: configuration #1 chosen from 1 choice
[1668040.699678] scsi9 : SCSI emulation for USB Mass Storage devices
[1668040.700616] usb-storage: device found at 16
[1668040.700622] usb-storage: waiting for device to settle before scanning
[1668045.710103] usb-storage: device scan complete
[1668045.716922] scsi 9:0:0:0: Direct-Access HTC Android Phone 0100 PQ: 0 ANSI: 2
[1668045.755374] sd 9:0:0:0: [sdb] 7698432 512-byte hardware sectors: (3.94 GB/3.67 GiB)
[1668045.757120] sd 9:0:0:0: [sdb] Write Protect is off
[1668045.757128] sd 9:0:0:0: [sdb] Mode Sense: 03 00 00 00
[1668045.757133] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[1668045.817134] sd 9:0:0:0: [sdb] 7698432 512-byte hardware sectors: (3.94 GB/3.67 GiB)
[1668045.818298] sd 9:0:0:0: [sdb] Write Protect is off
[1668045.818300] sd 9:0:0:0: [sdb] Mode Sense: 03 00 00 00
[1668045.818302] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[1668045.818308] sdb: sdb1
[1668046.067608] sd 9:0:0:0: [sdb] Attached SCSI removable disk
lsusb:
Bus 002 Device 023: ID 0bb4:0ffe High Tech Computer Corp.
Husk å aktivere debugging på telefonen hvis du skal koble til med Android SDK adb.
Digg this
Gi kudos!
Emneord: · Android, feilsøking, synkronisering
If your application is failing with a ClassNotFoundException of the class com.google.android.maps.MapView, then the uses-library tag might be misplaced or missing from the application manifest XML.
When adding Google Maps to your Android application, make sure that the <uses -library>-tag is inside the <application>-tag of the manifest XML. This might be obvious, but I got this wrong and it took me a long time to figure out the real reason for the error.
<uses -library android:name="com.google.android.maps" />
Digg this
Gi kudos!
Emneord: · Android, debugging
Jeg har nylig fått meg Android-telefonen HTC Desire, og trenger å kopiere over kontaktlista fra iPhone 3G til Desire. Det er mulig å kopiere over kontaktlista fra iPhone via iTunes, men ikke hvis man bare har PC-er med Linux-OS.
Etter noen søk i Apple App Store fant jeg et program som heter Ubuntu One Contacts som kan synkronisere kontaktlista på iPhone opp mot Ubuntu One, en nettjeneste for å synkronisere filer mellom PC-er og dele filer og kataloger med andre.
Etter registrering på Ubuntu One, setter man opp innstillingene for mobiltelefon her, hvor du får tildelt brukernavn og passord, som skal brukes i Ubuntu One Contacts på iPhone. Dette er ikke samme innlogging som på nettsiden, hvor du logger inn med e-postadresse og selvvalgt passord.
Etter installering av Ubuntu One Contacts, skriver du inn brukernavnet og passordet du ble tildelt. Serverinnstillingene skal allerede være utfyllt med http://syncml.one.ubuntu.com. Du mottar også e-post med instruksjoner underveis. Gå så tilbake til forsiden av applikasjonen og trykk “Sync Contacts”. Hvis synkroniseringen fullfører uten feil skal du kunne se kontaktene dine på kontaktlista på Ubuntu One.
Sånn, da var den vanskelige halvparten av jobben gjort, å få ut dataene fra iPhone.
I Android Market søker du etter funambol og installerer Funambol Sync. Denne setter du opp med samme innstillinger som Ubuntu One Contacts på iPhone. Hvis du ikke husker brukernavn og passord står det i e-posten du har fått fra Ubuntu One.
Whoala, kontaktene er synkronisert.
Digg this
Gi kudos!
Emneord: · Android, iPhone, kontaktliste, synkronisering
If you have a Hauppauge PVR-500 card and recently upgraded Ubuntu to latest 10.04 Lucid, then you might have had problems viewing live TV.
The quick fix might be to just install the package “ivtv-utils” and to reconfigure the video input/sources with mythtv-setup.
I also had a problem with disconnects and warnings of wrong protocol version. I cleaned out the database and deployed a new database with the sql file from /usr/share/mythtv/sql. That might be because of some badly configured IP-addresse for the backend and master, but I could actually not see why it changing from my LAN IP-address to 127.0.0.1 would have anything to do with it.
Anyway… Try installing ivtv-utils first. After installing that package the MPEG2 capture card selection becomes available. First I tried using the v4l option, but that didn’t work, not even any useful log messages to work with.
Digg this
Gi kudos!
Emneord: · debugging, MythTV
Dette er først og fremst en huskelapp for min egen del, men kanskje nyttig for andre også.
Jeg har laget mange shellscripts for å hjelpe meg i systemutvikling og til vedlikehold av tjenester. Av og til har jeg behov for å bekrefte at jeg virkelig ønsker å utføre handlingen, i tilfelle man skulle kjøre kommandoen ved et uhell, for eksempel å tømme Solr-indeksen (Solr er en søkemotor, et prosjekt fra Apache).
Ofte holder det med å bruke “read” for å lese inn tekst til en variabel, men et verktøy som heter “whiptail” gir et ncurses-grensenitt som tilbyr brukeren til å utføre forskjellige valg, for eksempel valget om “ja” eller “nei” for å utføre en kommando.
Som det aller enkleste eksempelet har man “yesno”-dialogboksen:
# Ja/Nei-dialogboks med 10 rader og 50 kolonner
# Skriver "jada" på skjermen hvis man velger "ja"
whiptail --yesno "Vil du virkelig gå videre?" \
10 50 && echo "jada"
Man kontrollerer svaret fra dialogboksen med exit-koden fra whiptail. Svarer man så “ja” i dialogboksen skrives “jada” ut på skjermen. Svarer man nei, så gjør den det ikke. Så enkelt.
Et annet eksempel er å vise en liste med som brukeren kan velge blant:
whiptail --menu "Velg noe" \
10 50 2 \
1 "Valg 1" \
2 "Valg 2" \
3 "Valg 3" \
4 "Valg 4"
Argumentet “2″ angir hvor mange valg som skal vises ad gangen, etterfulgt av ID/tekst-par for valgene. ID-en til valget som brukeren velger blir skrevet på skjerm.
Man har også andre former for dialogbokser, se “man whiptail” for flere opsjoner.
Digg this
Gi kudos!
Emneord: · dialogboks, shell, tips, whiptail
Terskelen for å lage applikasjoner som fungerer sømløst med operativsystemet og med andre applikasjoner over felles grensesnitt er et veldig viktig argument for å velge Android.
Steve Guggenheimer i Microsoft tar frem “gratis” som argument for at mange hopper på Android-bølgen med tablets, tilsvarende da netbooks kom på markedet med Linux-operativsystemer, men Android har noe som ikke Linux på netbooks hadde, og det er Market – tilgjengelighet.
Digg this
Gi kudos!
Emneord: · Android, tablets
I bortimot 10 år har det ligget masse skrot i kommodeskuffene på soverommet mitt på hytta. Jeg kastet ut kommoden i fjor, noe som la igjen en passelig haug på gulvet med alt mulig tull.
Jeg gikk etter hvert lei av å måtte snike meg rundt alt skrotet, så jeg satte meg ned for å se hva som kunne kastes.

Jeg fant en huskelapp fra mine første dager som datanerd, med kommandoer for å flytte, kopiere og slette filer fra DOS kommandolinja, samt andre kjekke ting som å endre kommandoprompten – søppel.
Videre fant jeg en stor samling batterier hvor syra var godt på vei ut på mange av dem. Uansett så lite nyttig det er å vite, så var det litt interessant å se at det kun var Duracell-batteriene som syra hadde gått på – søppel.
Fant også noen Lego-deler, mye av det var knekte deler, ikke så rart jeg hadde stasja det i skuffen i første omgang – søppel.

Da jeg var liten brukte jeg og en kamerat mye tid på å flettet jeg sammen hyssinger og rulle det sammen til en ball. Om ballen på bildet er eneste jeg lagde er usikkert, men jeg har en anelse om at jeg ikke brukte så mye tid på dette allikevel – søppel.
Mange minner. Det ble en bærepose full med søppel denne gang.
Digg this
Gi kudos!
Emneord: · hytta, minner, rydde, søppel
Etter en ukes skitur til Østerrike, Bad Gastein, fikk mitt nye full-HD lommekamera prøve seg. Kameraet er av type Toshiba Camileo S10, et full-HD videokamera som passer fint ned i lomma.
Enkelte dager var det ned mot 19 minusgrader i bakkene og det taklet ikke kameraet. Under opptak i 1080p låste kameraet seg gjentatte ganger, fra bare noen sekunder til et halvt minutt med opptak, avhengig av dagens vær. Eneste løsning var å nappe ut batteriet og sette det inn igjen. Irriterende nok er det ikke eget batteri for klokka, så denne blir tilbakestilt.
For å i det hele tatt kunne filme noe i 1080p utendørs på ski måtte jeg filme korte klipp på 10-15 sekunder og vente litt mellom hvert opptak. Kameraet oppbevarte jeg i en snor rundt halsen på innsiden av skijakka.
Jeg mistenker at problemet ligger i minnebrikka, at kameraet ikke klarer å lagre unna raskt nok all den data som full-HD opptak krever. Da jeg stilte oppløsningen til 720p gikk det betraktelig bedre. Allikevel mistet jeg ett minutts opptak med denne innstillingen også, dette i pent og varmt vær, men med noe snø i lufta. Mitt tips er derfor å stoppe og starte opptaket ofte.
Minnebrikken jeg brukte var av type SDHC Class 4 på 4 GB fra Verbatim. Noen som kan anbefale en bedre og raskere minnebrikke?
VGnett gjorde en liten test av kameraet da det kom på markedet.
Kameraet skal garantert være med på flere skiturer, da det er lite, starter opp og er klar til bruk veldig raskt og tar flott video og flotte bilder utendørs, så lenge elektronikken holder seg i gang da…
Digg this
Gi kudos!
Emneord: · test, Toshiba S10, videokamera
I am novice on Android application development, slowly starting to understand the architecture. I particularly like that communication between applications and data storage are resource centric. But anyway…
If you have been developing mobile applications for Android you have most likely seen some exceptions in the Eclipse debugger that you don’t understand, maybe not the tiniest bit. This mostly has to do with lack of experience with the API combined with the strict way that Android sets up views and restricts which threads that are allowed to draw and control the views, along with other concurrency issues.
Starting up your application in the emulated Android environment is not the fastest thing to do, so how can you debug your applications in a little more snappier way? – In short, I really don’t know.
What I want is a sane error message with a stack trace of my application code, but since I can’t get that, I have to debug my application in other ways.
Break points
By setting a breakpoint in your code on places where you think the bug might exist, you can step through your source code until the application fails.
The cons of this are that it is time consuming to do all the manual step by step operations, it’s a boring way of debugging and the exception message you get might not be understandable to you.
Logging
The Android API provides a Log class that can be used to log messages and exceptions. It took me some time to figure out how to read the log messages, but the Android Eclipse plugin provides a LogCat view.
To show the LogCat view in Eclipse, you go to “Window”, “Show View”, “Other …”, expand the “Android” category and then open the “LogCat” view.
Example output from the LogCat view.
01-09 16:56:52.069: ERROR/Listings(1064): Failed to get trip listings
01-09 16:56:52.069: ERROR/Listings(1064): java.lang.RuntimeException: Example of exception logging
01-09 16:56:52.069: ERROR/Listings(1064): at no.ut.trip.Listings$ProgressThread.run(Listings.java:112)
The example above shows an error message on the first line, the exception class and message on the second line, with the stack trace on the following lines. Might be helpful.
Digg this
Gi kudos!
Emneord: · Android, debugging