friheim.com

Teknologi og øl

Category: GNU/Linux (page 1 of 2)

Lesefeil på disk oppstår fra tid til annen; på alle typer disker. Noen enkle tips kan hjelpe deg å redde data:

  • Ha alltid viktige data lagret flere steder! Alle bilder på én eksterndisk eller én PC er ikke et sjakktrekk.
  • Lagre den andre kopien av data langt unna. Backup på en disk som står fysisk ved siden av maskina er en bra ting ved diskfeil, men ikke ved tyveri, brann eller vannskader.
  • Skylagring som Dropbox, Google Disk, Jotta e.l. er det enkleste. Da replikeres data automatisk ut, og du slipper å ha flere disker og mange kopier.

Hva om du så da får lesefeil, en disk som ikke kjennes igjen etc?

Først og fremst: Ikke begynn å reparer disken med innebygde Windows-verktøy! Bruk den minst mulig og få tatt en speilkopi av disken!

  • GNU ddrescue er tingen. Den kopierer data blokk for blokk, og skriver en logg over hva den greier å kopiere ut og ikke. Etter å ha fått tatt mye kan du prøve en gang til med basis i loggen, og forøske på områdene som har feilet.
  • Brukes slik: ddrescue /dev/sdc utfil.dd loggfil.log. Her er da altså den skadde disken på /dev/sdc, og du står i katalogen du har nok plass til å skrive hele diskens innhold ukomprimert til. Hele diskens størrelse opprettes som en fil med en gang, og så fylles det på med data der programmet greier å lese noe fornuftig. Loggfila holder styr på hvor det er lest ok og ikke. Etter å ha kjørt en gang kan man endre på opsjoner og greie å hente ut mer og mer data.En disk jeg hadde spesielt problemer med en gang hadde ca 48 MB lesefeil etter 1. gangs gjennomkjøring. Etter å ha kjørt igjennom 2 ganger til (og ddrescue hadde jobbet og lest i ca. én måned (!)) var jeg nede i 6 Mb feil.
  • Flere opsjoner er mulige:
    • -R lar deg starte å lese bakfra på disken
    • -c angir cluster size; altså sectorer den prøver å lese av gangen. 128 er standard, men etter å ha kjørt igjennom en gang med en del feil kan man prøve en gang til med mindre sectorsize.
    • -K antall bytes den hopper over ved lesefeil
    • -r angir antall ganger den skal forsøke å lese feilede områder. Er standard satt som 0 for å ikke ødelegge disken, men ved andre gangs kjøring kan nan øke dette.

Eksempel:

ddrescue -d -r3 -A -v -R /dev/sdc feildisk_320gb.dd feildisk_320gb.log

 

 

Terminal galore!

Terminalapps, altså! Man kan ikke bli stort mer produktiv enn med terminal. Eller nerdete, for den saks skyld…

 

http://www.cyberciti.biz/open-source/best-terminal-applications-for-linux-unix-macosx/

Raspberry Pi – oppdaterte distros

En liten «note to self»:

Raspbian er vel og bra, men Arch er mindre og kjappere. Info fra http://www.linuxuser.co.uk/reviews/distro-super-test-pi-edition

pacman -S windowmaker windowmaker-extra wmakerconf docker

as they are small packages they will not take very long to download even on dial-up. Using pacman downloading and installing which is done automatically with pacman took four minutes. Add a couple of minutes to make a /GNUStep folder and run ” $ wmaker.inst”. You will then have a fast sleek desktop which runs in 7 to 10 MB. I can tell you that it is much faster than Raspbian LXDE.

Window Maker is the ultimate for customisation. You can make docklets that do almost anything with simple code. I am surprised that it is not the desktop of choice for the Pi.

Om XBMC på Raspberry Pi:

http://www.gaducated.com/the-perfect-xbmc-setup-on-the-raspberry-pi/

Raspberry Pi og XBMC

XBMC er som kjent mediespilleren som i sin tid ble utviklet til den originale Xboxen fra Microsoft. Den gangen måtte man modifisere Xboxen ved å lodde på en ekstra chip og deretter installere mediesenteret, men da hadde man til gjengjeld en uovertruffen mediesspiller. Kjøpte man i tillegg en egen fjernkontroll var Xboxen å betrakte som en fullverdig DVD-spiller, som man i tillegg kunne bruke til å streame media over lokalnettet og fra Internett. Det var bare to ulemper med Xboxen som medieavspiller: den bråkte litt, og den hadde for dårlig hardware til å kjøre filmer med oppløsning på 720p eller større.

Så, noen år senere, kommer Raspberry Pi på banen. En pc på størrelse med et kredittkort, med ARM-prosessor og HDMI-utgang. Og det til 35$! Den benytter seg av et SD-kort til lagring, og kjører – selvfølgelig – XBMC. Vifteløst og nesten uten å bruke strøm i det heletatt…

Hva trenger man så for å bygge seg et mediesenter i dag? Jo:

  • Ett stk RaspberryPi datamaskin.
  • Ett SD-kort på minimum 2Gb. Større er absolutt å anbefale
  • En strømtilførsel, type micro-usb (det samme som du finner på de fleste nyere mobiltelefoner)
  • En TV med HDMI-kabel; evt en skjerm med overgang mellom HDMI og DVI.
  • Noe å styre herligheten med – USB-tastatur eller fjernkontroll via USB.
  • Programvare

Som fjernkontrollsløsning har jeg selv gått for FLIRC, en liten USB-dings med IR-mottaker som du forhåndsprogrammerer fra en annen datamaskin opp imot hvilken som helst fjernkontroll. På denne måten kan du kanskje redusere antallet fjernkontroller som ligger slengende rundt i stua, og du slipper iallefall et tastatur under TV-en – og oppnår dermed høyere WAF.

Når det gjelder å få lagt inn OS og XBMC på SD-kortet, så er det i skrivende stund to enkle løsninger som gjelder: RaspBMC og OpenELEC. Jeg har prøvd begge, men har for tiden falt ned på OpenELEC, iom. at den ser ut til å ha kommet litt lengre i utviklingen akkurat nå. En ferdig kompilert versjon av OpenELEC med egen installeringsrutine finner du her. XBMC balanserer imidlertid utnyttelsen helt på kanten av hva man kan forvente av en så liten PC, men jeg har greid å få den til å streame film over nett uten hakking. Man må imidlertid være bevisst på hvilke innstillinger man gjør mtp. den simple hardwaren – velger man f.eks. å omsample lyden på maskina i stedet for å streame den direkte, så kan man oppleve hakking. I tillegg vil små grep som å slå av RSS-feeds bidra til å avlaste prosessoren ytterligere.

Men det funker. Og den er stille, den er lett å gjemme bort på stua, og den er lett å ta med seg bort. Bruker man i tillegg et litt større kort, så kan man lagre film på dette også, og man har et transportabelt lite mediasenter. Hva med å f.eks. laste ned Big Buck Bunny og legge på kortet sammen med XBMC? Da har man plutselig et helt mediesenter hvor både OS, programvare OG medier er open source! Slå den, Apple!

Bruk sed og cut for å manipulere data

En ganske enkel sak igrunnen, men om ikke annet så er det greit å ha som en «note to self» – hvordan få ut brukernavn og hashede passord fra en dump av ei databasefil:

cat databasefil.txt | grep «INSERT INTO \`people\`» | sed s/\)./\\n/g | cut -d ‘(‘ -f2 | cut -d ‘,’ -f2-3 | sed -s /\’//g

Det dette egentlig betyr er følgende:

list innholdet av databasefil.txt | finn tekststrenger med «INSERT INTO ‘people’ | erstatt «)» med newline (\n) | bruk «(» som limiter og list ut felt nr. 2 | bruk «,» som limiter og list ut felt 2 og 3 | erstatt alle ‘ med ingenting

Resultatet blir ei tekstremse med alle brukernavn og hashede passord. Sett på » > utfil.txt» for å lagre disse til ei ny fil, og du er i mål. Neste på programmet blir da å bruke JohnTheRipper eller hashcat for å knekke passordene – men det blir en oppgave som overlates til leseren 🙂

Sorter bilder med EXIF-informasjon og script

Som mange nok vet, inneholder de fleste jpeg-bilder informasjon om bildets opprinnelse, slikt som tid, sted, kameramerke osv. Dette kan brukes til å få orden på samlinga etterhvert som den vokser, og du stadig endrer kamera, får tilsendt bilder osv. En god del filmformater har samme mulighet, så du kan godt kaste inn det i samme slengen.

Jeg har lagd et enkelt script i den anledning. fremgangsmåten er enkel:

  1. Legg alle bildene du vil ha sortert inn i en katalog
  2. Kopier scriptet nedenfor inn i ei fil på linuxboxen-din
  3. gjør scriptet kjørbart: chmod 755 bildesortering.sh kjkjk
  4. Gå inn i katalogen hvor du har bildene og kjør scriptet: ~/bildesortering.sh

Alle bildene som har gyldig exif-info skal nå være flyttet inn i kataloger sortert på årstall og måned. For å tilpasse mer, f.eks. med dato i tillegg, for andre filformater etc, så er det bare å forandre litt på scriptet.

#! /bin/bash

# Sorterer bilde/videofiler fra en katalog og legger dem i egne kataloger etter
# måned i exif-dato. For å sortere på dag også, legg til /%d
#
# Ivar Friheim, 03.10.2011
#

# Setter field-separator til noe annet enn space, slik at filnavn med space fanges opp
SAVEIFS=$IFS
IFS=$(echo -en «\n\b»)

# Kommenter ut/inn etter filtype du vil ta
# for fil in `ls *.MOV`
# for fil in `ls *.mp4`
for fil in `ls *.[Jj]Pp][Gg]`
# for fil in `ls *.THM` # brukes som stottefil til AVI. Kommenter ut egen AVI/THM-rutine lengre ned.

do

# Henter exif-dato, tar ut måned og år, og erstatter «:» med «/»
datokatalog=»$(exiftool -CreateDate $fil|awk ‘{print $4}’|cut -d: -f1,2|sed s%:%/%g)»

# Skriver logg til loggfil i katalogen programmet kjoeres fra
echo $fil » – » $datokatalog >> bildelogg.txt

# Sjekker om katalogen finnes
if [ ! -d «$datokatalog» ]; then
echo «Katalogen finnes ikke»
mkdir -p $datokatalog
fi

# Egen AVI/THM-rutine
# avifil=»$(echo $fil | cut -d . -f 1)»
# mv $avifil.AVI $datokatalog

# Flytt fila
mv $fil $datokatalog

done

#Setter fieldseparator tilbake til den opprinnelige
IFS=$SAVEIFS

 

Mutt med Gmail

Fler og fler har fått øynene opp for Gmail – en rask, pålitelig og gratis mailleverandør med god spam-vask. Et par svakheter er det imidlertid med Gmail – bl.a. har ikke jeg funnet noen enkel måte å sortere e-post i ulike mapper på eller enkle måter å sette opp regler for å sende nye e-poster direkte inn i ulike mapper. Det er jo mulig å merke spesielle e-poster med ulike tags, men de ligger uansett i innboksen sammen med alt annet. Og dette blir temmelig uoversiktlig.

For snart ti år siden stiftet jeg bekjentskap med Mutt, en tekstbasert og kraftig e-postleser som kan konfigureres til det uendelige. I tillegg til at den kan settes opp til å sortere og behandle ulike e-poster og vedlegg automatisk, kan den også installeres på en server så du kan bruke den fra andre lokasjoner; alt du behøver er en nettforbindelse og et terminalvindu. Eller som opphavsmannen selv sier om Mutt: «All mail clients suck. This one just sucks less.»

Tidligere måtte du bruke andre programmer for å hente og sende e-post, men mutt har utviklet seg og nå går det som en lek å bruke den mot IMAP iallefall.

Slik går du frem for å installere og konfigurere mutt på en Ubuntu/Debian/Mint-klient: (takk til CrunchBang linux for denne oppskriften).

sudo apt-get install mutt muttprint urlview

Deretter oppretter du kataloger som mail kan lagres i:

mkdir .mutt .mutt/cache

Så oppretter du fila .muttrc i hjemmekatalogen din, og legger inn følgende innhold: (men med dine brukeravn og passord såklart)

# Brukerinformasjon
set from = «brukernavn@gmail.com»
set realname = «Ditt Navn»
set imap_user = «brukernavn@gmail.com»
set imap_pass = «passord»

# Mutt gjenkjenner dine «labels» hos gmail og kobler dem med lokale mapper. Mer utdypende info om det finnes her.
# Sendte meldinger lagres på gmail-serveren som standard, så du behøver ikke å ta hensyn til det.
set folder = «imaps://imap.gmail.com:993»
set spoolfile = «+INBOX»
set postponed =»+[Gmail]/Drafts»
set trash = «imaps://imap.gmail.com/[Gmail]/Trash»

# Lokale kataloger
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates

set smtp_url = «smtp://brukernavn@smtp.gmail.com:587/»
set smtp_pass = «passord»

#Tastatursnarveier
bind editor <space> noop
macro index gi «<change-folder>=INBOX<enter>» «Innboks»
macro index ga «<change-folder>=[Gmail]/All Mail<enter>» «All e-post»
macro index gs «<change-folder>=[Gmail]/Sent Mail<enter>» «Sendt e-post»
macro index gd «<change-folder>=[Gmail]/Drafts<enter>» «Kladd»

#Noe småtteri
set move = no  #Slutt å spør om å flytte leste meldinger til mbox!
set imap_keepalive = 900

#Ekstra greier – dette kan du forandre av hjertens lyst…

#Mailens header – viktig, men stort sett uinteressant
ignore «Authentication-Results:»
ignore «DomainKey-Signature:»
ignore «DKIM-Signature:»
hdr_order Date From To Cc

ignore *
unignore from: date subject to cc
unignore x-mailing-list: posted-to:
unignore x-mailer:

# Utseendet teller jo…
set markers=no # ikke sett «+» foran tekst som går over flere linjer
set pager_index_lines= 8 # Størrelsen på index-vinduet
set sort = ‘threads’ # Sorteringa av e-posten.
set sort_aux = ‘last-date-received’

# Editor – Vim såklart…
set editor=’vim + -c «set textwidth=72» -c «set wrap» -c «set nocp» -c «?^$»‘

# Alias…
set alias_file= ~/.mutt/aliases
set sort_alias= alias
set reverse_alias=yes
source $alias_file

Tilslutt endrer du rettigheter på fila, slik at ikke passordet ditt kommer på avveie:

chmod 700 ~/.muttrc

Voilá! Du skal nå være i stand til å kjøre Mutt fra terminal! Tilvalgsstoff: Søk litt på google for å se hvordan ulike mime-typer skal behandles automatisk i Mutt. Hva om f.eks. vedlegg som Word-dokumenter automatisk kjøres gjennom Antiword og lagres som ren tekst for deg? Eller alle bildevedlegg automatisk lagres i én katalog? Uante muligheter – eller for å bruke markedsplanen til underbuksegnomene i South Park:

  1. Use mutt on linux
  2. ????
  3. Profit!

Linux-server som fillagring

Jeg har nylig satt opp en ny server som sentralt fillager i et blandet miljø; dvs. med både Windows- og Linux-klienter. Kravene var ikke store; det skulle være rimelig og enkelt uten store krav til oppetid, så valget falt på en brukt maskin med Pentium 4-prosessor, raidkort, tre disker i raid og én disk til OS. Planen er at den i tillegg til å kunne fungere som sentralt fillager, også skal kunne fungere som en webserver med en Wiki på.

Valg av OS

Valg av OS var ikke enkelt.

  • Jeg kikket først på FreeNAS, men et par ting talte mot FreeNAS i dette tilfellet: FreeNAS har begrenset med andre GNU/Linux-verktøy tilgjengelig på boksen, slik som SQL-server, man-sider, vim og slikt som kan være greit å ha for enkel filbehandling via konsoll når Windowsmaskina ikke strekker til. Dessuten krever siste versjon av FreeNAS 4 GB RAM som minimum, noe jeg ikke hadde plass til eller behov for på den boksen jeg hadde funnet.
  • Ubuntu server ble deretter utprøvd, iom. at det finnes en god del dokumentasjon for denne. Problemet her var bare at Ubuntu server ikke ville gjenkjenne disken jeg ville installere OS på; en disk på 73 GB, tilkoblet onboard SATA-kontroller. Merkelig. Diskene tilkoblet RAID-kortet fant den uten problemer.
  • Debian ble 3. valg, og her fikset installasjonsprogrammet biffen.

Felles for installasjonen for både Ubuntu server og Debian var at dersom jeg valgte Engelsk som språk for installasjonen, og norsk tastatur, så ville den ikke gi meg norske tegn på konsollet. Locale-valgene jeg fikk var en mildt sagt broket liste, så jeg bet tilslutt i den sure delen av eplet og valgte norsk som språk for installasjonen. Deretter separerte jeg den ene disken i tre partisjoner: /, swap og /home, og installerte et minimalt system uten GUI.

Etter at installasjonen var ferdig og maskina startet på nytt, ble jeg ønsket velkommen av en suppe av norsk, svensk, dansk og engelsk språk – én av grunnene til at jeg ikke liker å velge norsk som språk i OSet. Etter litt Googling fant jeg frem til denne feilmeldingen på bugs.debian.org: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553678, og fant ut at løsningen er å editere fila /etc/default/locale:

#  File generated by update-locale
LANG=»nb_NO.UTF-8″
#LANGUAGE=»nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en»
LANGUAGE=»nb_NO:nb:no_NO:no:en»

Nettverk

Ettersom serveren fikk IP-adresse fra DHCP under installasjonen, bør vi nok endre dette. Det er tross alt ikke sååå artig å måtte gjette seg frem til IP-adressen til serveren hver gang den får ny. Dette gjør vi ved å editere /etc/network/interfaces:

 

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Her bli det liv, raid-raid

…som vi bruker å si hver gang vi setter opp RAID her i Nord-Trøndelag.

Først fjernet jeg alle eksisterende partisjonstabeller og partisjoner på diskene ved hjelp av fdisk, og lagde én ny partisjon på hver disk. mdadm er det du behøver deretter – og det er ikke vanskelig. For å opprette et raid kalt /dev/md0, i raid 0 med de tre partisjonene sda1, sdb1 og sdc1, og deretter opprette et filsystem av typen ext4 på raidet,  brukte jeg følgende kommandoer:

mdadm -Cv /dev/md0 -l0 -n3 /dev/sd[abc]1

mkfs -t ext4 /dev/md0

Deretter må katalogen /mnt/raid opprettes og gies rettigheter, og /etc/fstab må få seg ei linje som viser at den skal montere raidet under oppstart:

mkdir /mnt/raid && chmod 777 /mnt/raid

echo «/dev/md0  /mnt/raid  ext4  defaults  1  2» >>  /etc/fstab

Windows-nettverk: Samba

Smb-protokollen som Microsoft bruker har fått sin gjenpart i samba på GNU/Linux. Samba kan brukes ganske sentralt i nettet for autentisering osv, eller den kan brukes helt i det små til å kun dele ut kataloger og printere på nett. Her går vi fpr den enkleste løsningen, nemlig å bruke samba til å dele ut én katalog som et felles lagringssted.

Etter at samba er installert, må fila /etc/samba/smb.conf få beskjed om at raidet skal deles ut på nettet.

[raid]
comment = Felles lagring
browseable = yes
guest ok = no
writable = yes
valid users = brukar1 brukar2
path = /mnt/raid
create mask = 666
directory mask = 775

Brukere som skal få tilgang til maskina legges til ved hjelp av kommandoen smbpasswd -a brukernavn.

Andre lenker av interesse om dette temaet:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553678

Kjør deler av Linux fra RAM

Hepp! Jeg har hatt lynnedslag i nærheten, og dermed døde et par datamaskiner. Jeg har nå skrapt sammen noe fra kjelleren, og har satt opp ei ny maskin til daglig bruk; en gammel Dell-server med Pentium 4-prosessor. Heldigvis hadde jeg en del RAM liggende, og fikk satt inn 4 Gigabyte i maskina.

Allikevel går jo ikke ting superraskt, så neste forsøk, etter å ha fått tak i et pci-lydkort og muligens et pci-skjermkort (8 mb minne på et onboard-skjermkort er ikke akkurat noe å slenge bestemor i veggen med), vil bli å kopiere deler av operativsystemet over til RAM under oppstart. Fant følgende oppskrift på et Gentoo-forum:

Why dont try the simplest way:

– create a ramdisk (greater than du -sh /usr/lib), i.E.: mount none -t tmpfs /mnt/ramdisk
copy all files from /usr/lib to the ramdisk, i.E.: cp -a /usr/lib/* /mnt/ramdisk
– mount the ramdisk to /usr/lib, i.E: mount -o bind /mnt/ramdisk/ /usr/lib/
– if you like to update your system, just umount /usr/lib and /mnt/ramdisk, update the system and do the stuff above again

(this can simple do in the background in /etc/conf.d/local.start)

Skal prøve det ut med tid og stunder!

Exif-informasjon i bilder

Som de fleste vet lagres en hel del informasjon inne i bildene, som såkalt EXIF-informasjon. Dersom det digitale kameraet ditt har riktig innstilt klokke, kan dette være en god måte å få sortert en større haug bilder på. Datostempelet på selve fila kan i beste fall være misvisende for når bildet er tatt, mtp. at dette kan være satt da du kopierte fila, lagret den etter en redigering osv.

Det finnes mange måter å få ut EXIF-informasjon på, og i de fleste OS kan du høyreklikke på bildet og få ut litt utvidet informasjon. Dette blir imidlertid litt tungvint dersom du skal bruke det for å sortere mange bilder. Det er her «imagemagick» kommer inn i bildet. Imagemagick er en kommandolinjeapplikasjon som kan brukes til utallige operasjoner på bilder, og den er veldig lett scriptbar; bl.a. brukes denne i kulissene i mange webalbumer .

Etter at imagemagick er installert, kan du finne all EXIF-info fra ei fil med følgende kommando:

identify -format %[exif:*] filnavn.jpg

Her er det mye du kan leke deg videre med, men skal du kun hente ut dato og klokkeslett kan det gjøres med følgende kommando:

identify -format %[EXIF:DateTime] filnavn.jpg

For å bruke denne informasjonen til å sortere lager du så et «for-loop»-script som tar alle filer med endingen jpg, kjører kommandoen på hver fil, tar ut f.eks. måned og år vha. awk, sjekker om det finnes en katalog med dette navnet og flytter fila inn i katalogen etter at den er opprettet.

Older posts

© 2017 friheim.com

Theme by Anders NorenUp ↑