Alt om ingenting og litt i mellom En blogg av Knut-Olav

Installasjon av Debian i XEN krever 1GB minne i Xen-konfigurasjon

17. september 2023 · Comments Off

Jeg skulle installere Debian i Xen-node og fulgte oppskriften på https://wiki.xenproject.org/wiki/Debian_Guest_Installation_Using_Debian_Installer.
Jeg forsøkte netinst og cdrom via pygrub, men ingen av metodene fungerte.

Jeg fikk feilmeldinger ala:

[    2.957523] steal-ctty[125]: segfault at 0 ip 00007fbce02c4160 sp
00007ffe4dde3830 error 4 in libc.so.6[7fbce021f000+148000]
[    2.957551] Code: 8b e8 74 36 04 00 0f 1f 40 00 55 48 89 e5 41 57 41 56 41 55 41
54 53 48 83 ec 48 64 48 8b 04 25 28 00 00 00 48 89 45 c8 31 c0 <80> 3f 00 0f 84
47 01 00 00 49 89 f4 be 2f 00 00 00 48 89 fb 49 89
Segmentation fault
cat: can't open '/var/log/reopen-console': No such file or directory
rm: can't remove '/var/log/reopen-console': No such file or directory
touch: /var/run/brltty-Xorg: No such file or directory

Tok ikke vare på mine eksakte feilmeldinger, men jeg fant mailingliste-tråden https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932149 om problemet, og med løsningen.

Selv om Debian er ganske gjærrig på CPU- og minnebruk, så viste det seg at jeg måtte sette “memory=1024M” i Xen-konfigurasjonen til den nye virtuelle serveren. Det holdt ikke med 512M.

Jeg endte opp med å installere fra CDROM-image med kernel og initrd fra https://deb.debian.org/debian/dists/Debian12.1/main/installer-amd64/current/images/cdrom/xen/.
Og med følgende XEN-node-konfigurasjon i /etc/xen/vm_srv-2023-1:

name = "srv-DEBIAN"

kernel  = "/xen/install-media/Debian12.1-installer-amd64-cdrom-xen/vmlinuz"
ramdisk = "/xen/install-media/Debian12.1-installer-amd64-cdrom-xen/initrd.gz"
extra   = "debian-installer/exit/always_halt=true -- console=hvc0 xencons=tty"

vcpus  = 1
memory = 1024

vif = [ 'mac=00:11:22:33:44:55,bridge=xenbr0' ]

disk = [
    'file:/xen/install-media/debian-12.1.0-amd64-netinst.iso,xvdd:cdrom,r',
    'phy:/dev/vg-data/xen-srv-DEBIAN-root,xvda,w',
    'phy:/dev/vg-data/xen-srv-DEBIAN-swap,xvdb,w'
]

on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Hvordan fikse dobbel-klikk-problem i Logitech Darkfield Performance MX

20. februar 2022 · Comments Off

Jeg har opplevd den siste tida at min Logitech Darkfield Performance MX ofte dobbeltklikker automatisk når jeg klikker på venstreknappen. Jeg trodde musa begynte å bli ødelagt, men etter litt søk på Internett, så fant jeg en løsningen.

Og utrolig nok så fungerer dette, som forklart på ifixit.com:

Press the right click button and hold-it,
turn the mouse off and on,
leave the right mouse button pressed while clicking on the left click button 5 times.
Quit pressing the right click button and turn the mouse off.
Click and hold the right mouse button, turn the mouse on and finally release the right mouse button.

Ny versjon av cocktail-shaker-nøkkelen: Shakykey 2.0

2. september 2021 · Comments Off

Etter at Shakykey 1.0 og 1.1 viste seg å ha noen seriøse svakheter, så måtte jeg tenke utenfor boksen; eller mer presist, utenfor shakeren.

Jeg oppdaget også at litt i overkant mye kraft mot sila i lokket gjør at sila løsner og detter ned i shakeren. Slikt er i hvert fall ikke ønskelig at skal skje i forsøk på å åpne den. Så det var åpenbart at jeg ikke kunne fortsette å “grave” oppi toppen av shakeren for å få vridd av lokket.

Løsningen ble å bruke en større plate, og skjære hull som passer akkurat til shakeren. Jeg presenterer Shakykey 2.0, og Shakykey 2.0 Lite.

Den største versjonen av den nye nøkkelen er en stor plate med et hull akkurat stort nok til at bunnen av shakeren kan passere igjennom, men lite nok til at lokket kan jekkes og vippes løs. Den mindre versjonen er en litt mindre plate, med et spor. Den er litt tyngre å bruke, så når lokket sitter ekstra hardt, så må man kanskje gå for den store versjonen.

Denne type shaker-nøkkel fungerer bare hvis lokket på shakeren har et litt bredere omkrets ca 1 cm ovenfor nedre kant av lokket.

Materialer:

  • 1 plate i solid treverk, gjerne kryssfiner, minst 22×12 cm
  • trelim (til Lite-versjonen)
  • interiørmaling, gjerne hvit

Verktøy:

  • tommestokk/linjal
  • drill
  • bor, medium (for å lettere posisjonere hullboret)
  • 8,5 cm hullbor (eventuelt et mindre, og bruk rasp i tillegg)
  • sag (stikksag eller håndsag)
  • rasp
  • blyant
  • sandpapir, både fin og grov
  • pensel (for maling)

Start med å måle opp en sirkel med diameter lik nedre kant av lokket. På min shaker er nedre del av lokket ca 8,6 cm i diameter. Ha litt avstand ut mot kanten av plata, ca 1,5-2 cm holder på tre av sidene, mens den fjerde trenger litt lenger avstand, helst 12 cm ekstra. Merk opp størrelsen av den rektangulære platen med blyanten. Du vil nå ha merket opp et rektangel på ca 22x12cm i tillegg til en sirkel på ca 8,5 cm.

Bor så et lite hull i midten av sirkelen, før du borer opp det store hullet med hullboret. Hvis nødvendig gjør du hullet større med rasp.

Skjær så ut rektangelet. Bruk gjerne en stikksag, eller håndsag.

Test nøkkelen på shakeren din!

Avrund hjørner med rasp, og puss med først grovt, og så fint sandpapir.
Males hvis ønskelig.

Den normale Shakykey 2.0 kan brukes på to måter:
Metode 1: Sett shakeren oppi hullet og ta et godt tak i plata tett mot shakeren, og lirk opp. Om lokket sitter veldig godt, så snur du litt rundt på shakeren og lirker igjen. Gjenta til lokket løsner. Denne metoden fungerer også for Shakykey 2.0 Lite.
Metode 2: Sett shakeren oppi hullet, og legg “håndtak-delen” av plata flatt ned på kanten av en benk eller bord, med shakeren utenfor kanten. Prinsippet er likt som for metode 1, snu rundt og lirk på shakeren, mens du holder plata fast ned mot benken.

Lykke til!

Oppdatering 6.april 2022: Shakykey 2.0 fungerer utmerket! Stabil, og løsner alltid lokket, selv om jeg av og til må bruke litt makt. Har aldri sølt ut cocktailen min siden :)

Shakykey er død – lenge leve Shakykey

2. september 2021 · 2 Kommentarer

Den hjemmelagde cocktail-shaker-nøkkelen Shakykey jeg lagde for noen uker siden er død. Den klarte ikke å stå i mot en dønn fastlåst shaker. I første forsøk på å åpne den så klarte jeg rett og slett ikke å rikke på lokket. I et forsøk på å oppgradere til Shakykey 1.1, med et forlenget skaft for å få bedre kraftmoment, så falt håpet raskt i knus da spikrene bøyde seg og treverket sprakk.

Men prosjektet Shakykey er ikke dødt! Jeg må bare tenke enda større! Stay tuned…

Hjemmelaget cocktail-shaker-nøkkel

17. august 2021 · Én kommentar

Hjemmelaget er vellaget, både når det kommer til drinker, men også til enkelte verktøy. Nå har jeg laget et verktøy for å åpne cocktail-shakere som har kilt seg fast. Dette er tilsynelatende et verktøy som det faktisk ikke går an å kjøpe… Jeg fant det i hvert fall ikke etter en god del søk på Internett. Ingen treff hos verken Google eller Pinterest. Det eneste jeg fant om fastlåste shakere var en haug av dårlige tips – tips som ikke fungerte.

Det er flere grunner til at cocktail-shakere kiler seg fast, og de blir av og til nesten umulige å åpne igjen. Hvis shakeren ikke vaskes grundig mellom hver bruk så vil gammel moro fungere som lim. Og når shakeren så fylles med isbiter og ristes hardt, så vil temperaturfallet skape et vakuum som låser shakeren ytterligere.

Jeg har flere ganger tidligere hatt problemer med at toppen er vanskelig å løsne, men til slutt så sprakk tålmodigheten min. Etter en hard kamp, og halve drinken spruta og rant utover kjøkkenbordet, og jeg pådro meg en lett strekk i noen sener, så måtte noe gjøres. Jeg lagde et verktøy: en cocktail-shaker-nøkkel.

Nøkkelen er beregnet for “cobbler shakeren”, som består av 3 deler: en underdel, og en overdel med sil som dekkes av et lokk. Se bilder. Ikke alle shakere er like. Du lager en nøkkel til din shaker, og den vil ikke nødvendigvis passe på andre shakere.

Jeg beskriver her hvilke verktøy jeg brukte for å lage cocktail-shaker-nøkkelen, og hvordan jeg gikk frem for å lage den. Jeg har ingen bilder fra før den ble satt sammen, men metoden er ganske enkel om man har gode verktøy og passende materialer. Jeg har bare bilder av ferdig montert verktøy.

Metoden forutsetter at shakeren allerede er løsnet. Jeg slo til overdelen med stor skrutrekker, og etter gjentatte slag så løsnet den. Dette er dog en metode som egner seg dårlig hvis beholderen ikke er tom, så tøm den først…

Materialer:

  • 1 trelist med snitt på ca 2×2 cm, på ca 12 cm lengde.
  • 1 treskrue på 3 cm.
  • 7 spikere på ca 3-4 cm (med små hoder – de skal passe oppi hulla i sila til shakeren)
  • trelim
  • teakolje eller lakk

Verktøy:

  • sag
  • rasp
  • sandpapir, både grov og fin
  • tvinge/skrustikke
  • hammer
  • drill
  • skrutrekker (eller bruk drill)
  • bor som passer til skruen
  • bits som passer til skruen
  • bor som passer til spikerne (litt mindre enn spikerne – formålet er å ikke sprekke treverket)
  • forsenkerbor
  • blyant
  • liten pensel (til olje/lakk)

Start med å måle diameteren på sila. Skjær av en bit av trelista på lengde med diameteren på sila. Avrund kantene med rasp slik at trebiten passer oppi sila. Puss med sandpapir. Skjær til en 3 ganger så lang bit av trelista, som skal bli håndtaket. Lengden av denne bestemmer du selv. Lenger håndtak gir større kraftmoment, som gjør det enklere å løsne shakeren. Avrund hjørnene etter smak og puss med sandpapir.

Lim den minste biten fast på undersiden av den lange. Jeg valgte å plassere den midt på, men den kan godt være litt sideforskyvet slik at du får en lengre arm på håndtaket som gir større kraftmoment. Klem trelistene sammen med tvinge og la limet få størkne.

På toppen av nøkkelen, nesten midt over den minste trelista, så borres opp et hull og skruen festes. Bruk en forsenker slik at hodet på skruen senkes ned i den øvre trelista. Skruen må ikke være for lang, for vi skal kunne slå inn en spiker i senter av bunnen.

Du kan på dette tidspunktet lett vaske treverket. Treverket vil da sprike litt, og det pusser du glatt etterpå. Det kan gi et bedre resultat til slutt, avhengig av hva slags olje eller lakk du avslutter med.

Merk opp i den lille trelista hvor hullene i sila er plassert. Det gjøres ved å legge nøkkelen med håndtaket ned og plassere overdelen av shakeren over den lille trebiten. Prøv å sentrer den så godt som mulig og merk opp alle hullene som dekkes av trelista. Ikke merk de hulla som er helt på kanten av trelista, for da risikerer du at treverket sprekker når spikrene slås inn eller når nøkkelen tas i bruk.

Bor opp hull med lite bor på alle merkene du satte. Viktig at hullene bores rett inn! Merket i senter valgte jeg å ikke borre så dypt som de andre, slik at jeg har en ledespiker, som vil fungere som veileder for nøkkelen når den skal føres ned i sila. Slå så forsiktig inn alle spikerne. Prøv jevnlig nøkkelen i shakeren. Spikerne kan slås ganske langt inn og allikevel få godt tak, og eventuelle skjevheter i hullene du boret opp har mindre betydning. Anbefaler å slå inn ledespikeren til slutt, slik at du kan enklere kan slå jevnt over på alle de øvrige spikerne til lik høyde. Slå så inn ledespikeren, som skal stå litt høyere enn de øvrige.

Hvis du velger å perfeksjonere nøkkelen så kan den nedre trelista tilpasses til å dekke hele sila, slik at enda flere spikre kan brukes. Antakeligvis vil 7 spikre være nok, selv for den mest sammenklistra shakeren der ute.

Prøv nøkkelen! Er du fornøyd med resultatet så kan den pusses glatt og oljes eller lakkes. Da blir den både finere og bedre beskyttet mot søl. Velbekomme!

Så, hva skal nøkkelen hete? Shakykey?

Oppdatering 2. september:
Løsningen viste seg å ha noen store svakheter, og Shakykey 1.0 er død.
Men jeg ga ikke opp så lett, og Shakykey 2.0 er allerede laget og står klar til bruk!

Surround over HDMI med mpv i Linux

16. mars 2021 · Comments Off

Dette er en “note to self”, etter å ha søkt litt rundt på Internett etter løsning på hvordan å få surround-lyd over HDMI med mpv, og ikke bare stereo.

$ mpv \
  --audio-channels=5.1,stereo \
  --audio-spdif=ac3,eac3,dts-hd,truehd \
  --audio-device=alsa/hdmi:CARD=PCH,DEV=0 \
  audiofile.mp4

Fant tipset på https://forum.manjaro.org/t/how-do-i-enable-surround-sound-in-pulseaudio/56394.

Oppdatering 27.09.2023

Jeg støtte i dag på et tilfelle med en videofil med 6-kanals lyd, men hvor avspilling med kommandoen ovenfor ikke ga noen lyd over HDMI.

Uttrekk fra ffprobe gir meg:

Input #0, matroska,webm, from ...
  Metadata:
    encoder         : libebml v1.4.2 + libmatroska v1.6.4
[...]
    Stream #0:1(eng): Audio: eac3, 48000 Hz, 6 channels, fltp
    Metadata:
      title           : English
      BPS             : 384000
      DURATION        : 02:49:17
      NUMBER_OF_FRAMES: 317427
      NUMBER_OF_BYTES : 487567872


mpv-avspilling rapporterte 2-kanals lyd: AO: [alsa] 48000Hz stereo 2ch spdif-ac3.

MPV AD-parameter (Audio Decoder)

Jeg fikk surround-lyd med AD-parameteren (Audio Decoder):
--ad=spdif:ac3,spdif:dts,

mpv rapporterte AO: [alsa] 48000Hz 5.1 6ch s32 og receiveren min viste MULTI-CHANNEL lyd-input.

MPV AF-parameter (Audio Filters)

Jeg prøvde også med noen AF-parametere (Audio Filters):

  --af=lavcac3enc
  --af=scaletempo,lavcac3enc=yes:640:3

, men i begge tilfeller rapporterte mpv om AO: [alsa] 48000Hz stereo 2ch spdif-ac3, selv om receiveren min identifiserte det som Dolby Digital. Også i kombinasjon med --ad-parameteren. Jeg gjorde ingen test på om det faktisk ble ekte surround-lyd fra receiveren.

Kilder

Fant tipsene fra:
1) Does anyone has realtime ac3 or dts encoding running? (Archlinux)
2) New To MPV. Trouble with EAC3 6 channel audio. (Reddit)

A feature request to Google for Google Maps

6. august 2020 · Comments Off

Today I sent a feedback to Google about Google Maps, requesting a new feature.

I have a wish for a new feature that I didn’t know I wanted until I moved to Oslo. I would like to set a different “Home” address for my car than my appartment. My home address is not the same address where I park my car. The entry to my parking garage is on a different street, and GMaps often chooses completely different routes around/through Oslo depending on which address I set as destination.

For instance, getting directions from Drammen to “Home”, then GMaps often routes me on to “Ring 3″ near Lysaker. But when choosing destination of my parking it mostly takes me through the tunnels under Oslo on the highway E18.

I guess this might be an edge-case feature for the few, but at least it would make my life a tiny bit simpler.

Om å klippe og klone drueplanter

9. juni 2020 · Comments Off

Jeg plantet 4 drueplanter på hytta i fjor sommer, altså i 2019. Nå begynner de å vokse, og det er på tide å finne ut hvilke greiner som skal beholdes som “hovedskudd”, og klippe vekk øvrige skudd slik at hovedskuddet får mest næring.

Jeg ønsker også å prøve meg på å gro nye drueplanter av noen av disse. Men som så mye annet jeg driver med så må ting forskes på i forkant, for å minimere antall feil jeg kan gjøre.

Det skal nevnes at jeg prøvde litt halvveis i fjor høst da jeg trimmet ned plantene. Da puttet jeg noen avkappede greiner fra to av plantene oppi vann, i håp om at de skulle skyte nye røtter. De holdt seg fint i noen uker, men uten så mye endring, før de til slutt tørket inn og mistet alle bladene. Noen ting gjorde jeg visst feil da, blant annet at de fikk for mye sollys og de burde nok vært satt i jord istedenfor i vann. I tillegg virker det som at det bare skal være 1-2 blader igjen på greinen, for å minimere væsketapet.

Jeg har søkt litt rundt på nettet for å finne litt tips og eksempler.

Artikkelen Propagating Grapes fra Practical Self Reliance forklarer 5 forskjellige måter for å lage nye drueplanter. De mest aktuelle for meg er “hardwood cutting” som gjøres sent om høsten når plantene skal klippes ned, og “greenwood cutting” som tas fra nye skudd fra sen vår og til slutten av sommeren.

Videoen Turn a Few Grape Vines Into An Entire Vineyard In a Couple Weeks With Green Cuttings fra Hardcore Sustainable viser hvordan “greenwood cutting” kan plantes og hvilke hensyn man bør ta, i tillegg til å forklare en del fordeler med denne formen for å gro drueplanter framfor “hardwood cutting”.

Tilbake til hagen min og den drueplanten som har vokst mest. Den har nye skudd som har vokst ca 15-30 cm, men greinene er ganske tynne foreløpig. I videoen nevnt over forklares det at det er større sannsynlighet for å lykkes med kloningen hvis greinene har litt tykkelse. Men samtidig så ønsker jeg å få klipt planten snart, slik at kreftene kan fokuseres mot den hovedstammen som jeg ønsker. Været har vært litt ustabilt den siste uka med mye regn, men langtidsvarselet melder nå pent vær og mye sol, så det er muligheter for god vekst den kommende uka. Jeg avventer derfor litt, slik at greinene kan bli litt kraftigere.

Deduplisering av filer over nettverk

18. juni 2019 · Comments Off

Jeg har en god del bilder liggende på laptopen min, både lastet inn fra minnebrikke fra kamera og lastet ned fra Dropbox-kameraopplastinger fra telefonen.

Disse bildene kopierer jeg over til en server av og til, slik at jeg har et sted å nå de også når jeg trenger å rense opp litt plass på laptopen.

Av og til har jeg behov for å reorganisere bildene mine i nye kataloger. For eksempel var det blitt så mange bilder fra Dropbox-opplastingene fra telefonen at det var vanskelig å bla igjennom de, så da flyttet jeg de til nye kataloger per år. Scriptet jeg har for å kopiere over bilder er ikke smartere enn at den tolker disse bildene som nå ligger i nye kataloger, som nye bilder. Og alt tar plutselig dobbelt så mye lagringsplass. I tillegg ligger nå bildene på flere steder slik at man mister litt oversikten, men akkurat det får bli et tema til en annen gang.

For å unngå at duplikate filer tar dobbelt med plass så kjørte jeg deduplisering. Serveren var gammel nok til å ikke ha noe godt dedupliseringsverktøy som jeg kunne installere fra pakkesystemet. Løsningen ble å montere opp nettverksstasjonen med NFS/CIFS og kjøre deduplisering fra laptopen.

Verktøyet jeg brukte heter hardlink.

$ mount /server         # forutsetter at denne er definert i /etc/fstab
$ cd /server/Bilder
$ hardlink -v -t .

Mode:     real
Files:    13999
Linked:   5850 files
Compared: 0 xattrs
Compared: 5863 files
Saved:    19.07 GiB
Duration: 1761.81 seconds

Opsjon -v skrur på verbose.
Opsjon -t ignorerer endringstid på filene når verktøyet sammenligner filene. Dette er nødvendig for at den nye kopien av bildet skal kunne tolkes likt som det gamle bildet på den gamle lokasjonen.

Modulbasert utvikling og arkitektur

30. januar 2018 · Comments Off

IT-prosjekter handler ofte om å flytte og konvertere data mellom IT-systemer, i forskjellige presentasjonsformer og koble data fra flere datakilder.

Når man kjører flere slike prosjekter samtidig og over lengre tid med betydelig antall ressurser blir det aktuelt å tenke litt større og legge en strategi for hvordan informasjon skal flyte og behandles på tvers av organisasjonen.

Med modulbasert utvikling kan man utføre prosjekter med mange personer, gjerne delt i flere grupper. Det kan gjerne sees på som et bestiller- og leverandør-forhold, eller “klient og tjener”, hvor klienten definerer hva som forventes av den andre modulen å ta i mot og returnere av data og på hvilke formater utvekslingen skal foregå.

Moduler kan integreres i systemer via kompilatorlenking mot definerte grensesnitt, som funksjonssignaturer i et “interface” fra objektorientert programmering eller en “header”-fil, eller med meldinger som sendes på en meldingsbuss. Å binde seg til et definert grensesnitt har fordeler med at man kan få en kompilator til å sjekke gyldigheten av kontrakten, at man snakkes felles språk, men det gjør det vanskeligere dersom en av partene har andre behov og trenger å endre en funksjonssignatur.

Meldingsbasert integrasjon defineres på et høyere nivå enn ved funksjonssignaturer, for eksempel at grensesnittet bare definerer hvordan meldingen kan sendes og hvordan svaret kan mottas. Ulempen med meldingsbasert kommunikasjon er at det stiller høyere krav til validering, versjonering og bakoverkompatiblitet, siden en av partene kan oppgraderes til nyere versjon mens det finnes andre systemer som fremdeles snakker det gamle språket. Ved meldingsbasert kommunikasjon bør det skrives en spesifikasjon for formatet på meldingene, for eksempel i form av et XSD-skjemadokument dersom kommunikasjonen pakkes som XML-meldinger, eller Protocol Buffers hvis meldingene er mindre og tydelig definerte.

For enklere systemer holder det kanskje med et format på forespørsler ala: customer search 'ola normann' hvor “customer” kan være navnet på modulen, “search” kan være funksjonen i modulens grensesnitt og “ola normann” er parameteren til funksjonen. Responsen kan for eksempel være kolonne- og radbasert, som et regneark.
Mange muligheter!

Internett kan sees på som et modulbasert system. Veldig forenklet så kan nettleseren, altså klienten i vårt tilfelle, sende en forespørsel mot en adresse eller filsti til en webserver, altså tjeneren, som kan svare med et HTML-dokument. Det ligger en kontrakt til grunn om et felles grensesnitt som gjør at denne kommunikasjonen fungerer, og en slik kontrakt er HTTP-spesifikasjonen. Det er mulig å basere internkommunikasjon i sitt modulbaserte system over HTTP med for eksempel SOAP, Corba, REST, Thrift, for å nevne noen teknikker. Denne type meldingsbasert kommunikasjon har noen svakheter, blant annet krever det ekstra dataprosessering for å oversette objekter og datastrukturer til og fra meldinger som kan sendes over HTTP. Dette er også dens store fordel, da modulene kan lager i forskjellige programmeringsspråk og kjøre på forskjellige plattformer.

For å oppnå en smidig integrasjon mellom modulene trengs det presis og hyppig koordinering på tvers av utviklingsgruppene. Man må ta et steg tilbake for å få et overblikk over systemet som helhet.

Dette er i hovedsak en liten rant jeg skrev i 2011, og jeg mener den fortsatt holder vann – men ta den gjerne med en klype salt…