LVM2 unter Gentoo

September 25, 2011 Hinterlasse einen Kommentar

In meiner Workstations stecken mittlerweile drei Festplatten.
Eine 320 GB Platte (HDD1) von Western Digital, eine 320 GB Platte (HDD2) von Seagate und 160 GB Platte (HDD3) wiederum von Western Digital.

Auf HDD1 läuft mein Gentoo System, auf HDD2 lief ein Windows 7. HDD3 wird eigentlich nur als zusätzlicher Speicher verwendet. Da die Windows Installation auf HDD2 immer nutzloser wurde, da ich es so gut wie nie benutzt habe, habe ich mich dazu entschlossen, diese Installation zu löschen.

Nun hat sich aber das Problem ergeben, das ich auf HDD1 ca. 250 GB habe, auf der meine Daten liegen. HDD2 und HDD3 werden nach der Löschung von Windows nun nicht verwendet.

Nun wollte ich den gesamten freien Speicherplatz zusammenhängend nutzen und habe dafür nach dieser Anleitung: http://en.gentoo-wiki.com/wiki/LVM ein LVM eingerichtet.
Damit kann ich nun den gesamten Platz zusammenhängend nutzen und muss mir nicht für jede Partition/Platte einen eigenen Mount-Punkt anlegen und meine Daten sozusagen trennen. Außerdem ist es für mich so viel einfacher Backups zu erstellen und sinnvoll zu verwalten.

Da ich gerade Probleme mit der libpng habe gibt es keinen Screenshot sondern nur den „Konsolencode“:

fabi@schnecki-workstation ~/Musik $ df -h
Dateisystem           Size  Used Avail Use% Eingehängt auf
rootfs                 60G   26G   31G  45% /
/dev/root              60G   26G   31G  45% /
rc-svcdir             1,0M   92K  932K   9% /lib64/rc/init.d
udev                   10M  348K  9,7M   4% /dev
shm                   2,0G     0  2,0G   0% /dev/shm
/dev/mapper/home_group-home
670G  272G  364G  43% /home
/dev/sdd1             459G  269G  167G  62% /mnt/backup

Advertisements
Kategorien:BASH, Linux, Windows Schlagwörter: , , ,

filedeleter – Automatisches Löschen von Dateien

August 25, 2011 2 Kommentare

Wer schomal von Windows zu Linux umgezogen ist kennt das Problem eventuell. In der Musik oder Filmesammlung finden sich eine Menge desktop.ini-Dateien, die da eigentlich nix verloren haben und die man unter Linux auch nicht benötigt.

Dieses Phänomen hat mich dazu bewogen ein kleines Tool zu schreiben, das von einem angegebenen Verzeichnis ab rekursiv alle Ordner nach den im zweiten Programmparametern übergebenen Dateinamen sucht und die gefundene Datei löscht.

Das Tool ist in C geschrieben.

Hier eine Beispielanwendung:

– Ich möchte alle „.ini“ Files in dem Ordner „/home/fabi/test“ und den vorhandenen Unterordnern löschen.

Verzeichnis, dass noch alle *.ini-Dateien enthält:

Anzeige des Ordnerinhalts mit "tree"

Anzeige des Ordnerinhalts mit "tree"

Aufruf von filedeleter:

Aufruf filedeleter

Aufruf filedeleter - Löschen alle *.ini-Dateien in /home/fabi/test

 Achtung: Der Ordnerpfad der im ersten Parameter des Tools übergeben wird, darf nicht mit einem Slash beendet werden!

 Ordnerinhalt nach dem Aufruf von filedeleter:

Ordnerinhalt /home/fabi/test nach dem Aufruf von filedeleter

"Bereinigter" Ordner

Getestet und Programmiert habe ich das ganze unter Gentoo Linux mit 2.6.39er Kernel und gcc 4.4.5. Das ganze läuft auch unter OS X ( Snow Leopard ) und XCode 3.
Für eventuelle Schäden die durch das Programm entstehen übernehme ich keine Haftung!!!

Das Programm wird natürlich unter der GPL veröffentlicht. Für Kritik und Anregungen bin ich wie immer dankbar.

Um das Programm zu kann das beigelegte make-File verwendet werden. Download: http://dl.dropbox.com/u/2497774/FileDeleter.tar

Kategorien:C, Linux, Mac OS X, Programmierung, VIM Schlagwörter: , , ,

ConfigParser

Ich bin gerade dabei mir eine kleine Toolchain zu bauen.
Ein Teil davon ist ein simpler Config-File-Parser der in C++ geschrieben ist.

Er kann „einfache“ Config-Dateien wie z.B. .Xdefaults, ssh_config, etc. parsen und zeigt die Attribute mit zugehörigen Werten an.

Hier mal ein paar Beispiele:
.Xdefaults

fabi@schnecki-workstation ~/Programmierung/C_C++/ConfigParser $ ./configparser /home/fabi/.Xdefaults "#" ":" ""
Number of attributes: 11
Option: URxvt*transparent       Value: false
Option: URxvt*savelines Value: 12000
Option: URxvt*scrollBar Value: false
Option: URxvt*urlLauncher       Value: firefox
Option: URxvt*geometry  Value: 80x50
Option: URxvt*secondaryScroll   Value: true
Option: URxvt*inheritPixmap     Value: true
Option: URxvt*shading   Value: 25
Option: URxvt*font      Value: xft:Bitstream Vera Sans mono:size=9
Option: URxvt*foreground        Value: white
Option: URxvt*background        Value: black

/etc/ssh/ssh_config

fabi@schnecki-workstation ~/Programmierung/C_C++/ConfigParser $ ./configparser /etc/ssh/ssh_config "#" " " ";"
Number of attributes: 3
Option: ForwardX11      Value: yes
Option: Port    Value: 22
Option: Host    Value: * XAuthLocation /usr/bin/xauth

Das eigentliche Ziel ist nicht das Programm „configparser“, sondern die Klassen, da ich diese dann in weiteren Programmen verwenden kann.

Hier der Link zum Download: http://dl.dropbox.com/u/2497774/ConfigParser.tar

Darin ist der Source Code und ein Makefile enthalten mit dem sich das ganze übersetzen lässt.

Getestet habe ich das ganze unter Gentoo Linux 2.6.36-gentoo-r5 (Ich weiß ein Kernelupdate ist fällig ;-)) und mit GCC 4.4.5.

Also viel Spaß damit.

Für Kritik und Anregungen bin ich wie immer dankbar.

Awesome Battery Widget

Seit einer Woche bin ich stolzer Besitzer eines Netbooks (Lenovo S10-3).

Auf dem Netbook läuft natürlich Gentoo mit aktuellem 2.6.38 Kernel (leider noch ~amd64), den brauche ich für den W-LAN-Chip (bcm4313) in dem Netbook. Dort wird nämlich der seit 2.6.37 enthaltene Staging Treiber brcm80211 benötigt. Über Google solltet ihr aber mehr dazu finden. Ein kleiner Tipp hier schon, wenn ihr die sys-kernel/linux-firmware installiert müssen die Symlinks noch angepasst werden ;).

Soviel also dazu.

Als Window-Manager setze ich awesome ein. Leider bietet awesome keine Widget zur Anzeige des Akku-Ladestandes bzw. wird eines angeboten über die Vicious Bibliothek, welches aber bei mir nicht funktioniert hat.
Deshalb hab ich mir gedacht, ich bau mir da selbst was.

Gesagt, getan….

Ich habe mir folgendes Script geschrieben, welches mit Hilfe von sys-power/acpi die Ladezustand bzw. die verfügbare Kapazität ausliest.


#!/bin/bash

# Get ACPI-State
str_ACPI=$(acpi | awk '{print $4}')
str_State=$(acpi | awk '{print $3}')

# Get Length of strings
i_ACPI_Length=$(expr length $str_ACPI)
i_State_Length=$(expr length $str_State)

# Get length of the strings without comma
let i_New=$i_ACPI_Length-1
let i_StLen=$i_State_Length-1

# Get substrings to delete comma
i_State=${str_ACPI:0:$i_New}
str_State=${str_State:0:$i_StLen}

# Print state;
# Return state to rc.lua

echo " $str_State $i_State"

Der Zustand des Akkus und die Restkapazität werden dann mit Hilfe des echo-Befehls zurückgegeben.

Dieses Script wird automatisch alle 10 Sekunden aus der lua.rc aufgerufen.
Hier mal der Code dazu:


-- Eigenes Widget
mybat = widget( {type = "textbox"} )
mytimer = timer( {timeout = 10 } )
mytimer:add_signal("timeout",  function() local fd =  io.popen("/home/fabi/Programmierung/Bash/bat_state.sh") mybat.text =  fd:read("*a") fd:close() end)
mytimer:emit_signal("timeout")
mytimer:start()

Der Timer (mytimer) ruft das Script alle 10 Sekunden auf, und der übergebene Wert wird in den Inhalt des zuvor erstellten Text-Widget mybat geschrieben.

Dieses Widget muss nun noch in den Tray eingefügt werden:


mywibox[s].widgets = {
 {
 mylauncher,
 mytaglist[s],
 mypromptbox[s],
 layout = awful.widget.layout.horizontal.leftright
 },
 mylayoutbox[s],
 mytextclock,
 mybat,
 s == 1 and mysystray or nil,
 mytasklist[s],
 layout = awful.widget.layout.horizontal.rightleft
 }

So, nun sollte das ganze funktionieren.

Hier mal ein paar Screenshots davon:

Laufen bzw. getestet ist das ganze unter awesome 3.4.8.

Das Script wurde auch schon hier im Winfuture-Forum veröffentlicht. Entstanden ist das ganze mit freundlicher Unterstützung von psychon aus dem Winfuture-IRC-Channel (irc.spotchar.org/#winfuture).

Für Kritik und Anregungen bin ich wie immer dankbar.
Viel Spaß damit.

clamzwatchdog – Watchdog für *.amz-Files

clamzwatchdog ist ein „Watchdog“ der ein beliebiges Verzeichnis überwacht und sobald dort ein *.amz-File abgelegt wird die MP3-Dateien
mit Hilfe von clamz herunterlädt.
Das Programm wurde in C++ geschrieben, ist jedoch nicht objektorientiert aufgebaut und steht unter GPLv3.

Erfolgs- und Fehlermeldungen werden in das Syslog geschrieben.

Um das Programm verwenden zu können muss clamz installiert sein.

Für die sinnvolle Verwendung sollte  das Programm beim Start geladen werden, damit das gewünschte Verzeichnis überwacht wird.

 

Download:

Clamz-Alpha-01

!Es handelt sich noch um eine Alpha-Version mit wenigen Funktionen!

 

Getestet wurde clamzwatchdog unter:
Gentoo
2.6.34-gentoo-r12
gcc 4.4.4

Für Kritik und Anregungen bin ich wie immer dankbar.

Kategorien:C, Download, Linux, Uncategorized Schlagwörter: , , , ,

Amazon MP3 Download und Linux – Clamz

Wer wie ich gerne Musik bei Amazon runterlädt und Linx-User ist, der hat ein Problem, wenn er keine Distribution verwendet, für die es den MP3-Downloader von Amazon gibt.

Abhilfe schafft hier Clamz.
Clamz ist ein kleines CommandLine-Tool, mit dem sich die *.amz Dateien öffnen lassen und die MP3-Dateien werden automatisch runtergeladen.

 

Unter Gentoo ist das ganz über Portage verfügbar, ansonsten sind ja die Sourcen verfügbar, aus denen man sich das ganze selber bauen kann.

In nächster Zeit werde ich mal ein Script bauen, das einen Ordner überwacht, und wenn es sich um eine *.amz-Datei handelt , wird Clamz angeworfen und die MP3’s werden automatisch runtergeladen.

Kategorien:Amazon, Calmz, Linux, Musik Schlagwörter: , , ,

TP-LINK TL-WN821N unter Linux (Gentoo)

Mein alter RTL8187 USB W-LAN Stick hat jetzt endlich auch ausgedient, bzw. musste ich ihn ersetzen, da ich unglücklich
dran gestoßen bin und er einen Wackelkontakt hatte.

Ich habe ihn dann durch einen TP-LINK TL-WN821N ersetzt. Dieser Stick hat einen Atheros 9170 Chipsatz. Dieser Chipsatz wird momentan leider noch nicht
komplett von Haus aus vom Linux Kernel unterstützt. Aber um ihn zu verwenden sind nur wenige Schritte notwendig.

Also, zuerst müssen folgende Treiber im Kernel aktiviert werden:

Kernel Option

Kernel Option

Zu finden ist die Option unter „Device Drivers->Network Device Support->Wireless Lan->Atheros Wireless Cards„.

Als nächstes benötigen wir die Firmware für das Gerät, ohne diese Firmware kann der Stick nicht verwendet werden.
Zu finden ist die aktuelle Firmware hier: http://linuxwireless.org/en/users/Drivers/ar9170.fw.
Dort muss die Datei ar9170.fw runtergeladen werden. Diese Firmware-Datei sollte dann nach /lib/firmware kopiert werden (kann auch ein anders Verzeichnis sein, falls nicht vorhanden, einfach erstellen!!).

So jetzt kann der Kernel vollends konfiguriert werden. Dazu navigiert man zu folgendem Punkt: Device Drivers -> Generic Driver Options.

Dort muss der Punkt „Include in-kernel firmware blobs in kernel binary“ ausgewählt werden. Bei dem Punkt „External firmware blobs to build into the kernel binrary“ muss der Name der Firmware (ar9170.fw) angegeben werden.
Unter dem letzten Punkt muss der Speicherort der Datei angegeben werden. Im hier beschriebenen Fall ist das /lib/firmware.

Firmware laden

Firmware laden

Danach kann der Kernel ganz normal gebaut werden.

Getestet wurde das ganze unter:

System: Gentoo Linux
Kernel: 2.6.34-gentoo-r12 (x86_64)

Die Anleitung sollte auch für andere Distributionen funktionieren, bei denen man keinen eigenen Kernel verwendet. Die Firmware-Datei muss dann nur an den richtigen Platz kopiert werden, wie z.B. /lib/firmware, /usr/bin/firmware, etc. Über das Wiki der jeweiligen Distri sollte das herauszufinden sein.

Kategorien:Gentoo, Kernel, Linux, WLAN Schlagwörter: , , , , , ,