Kernel.org down. Wo gibt es einen Kernel? - Eggers Familien-Blog

Transcription

Kernel.org down. Wo gibt es einen Kernel? - Eggers Familien-Blog
Kernel.org down. Wo gibt es
einen Kernel?
Ausser Betrieb
kernel.org ist anscheinend schon seit einigen Tagen nicht mehr
erreichbar. Auf der Webseite steht bereits den ganzen Tag über
„Down for Maintenance“. Ich vermute mal dies hängt mit dem
Einbruch zusammen welcher Anfang September entdeckt wurde.
Dumm nur, wenn man gerade jetzt – am Wochenende hat man ja
Zeit um etwas herumzukompilieren – auf einen Kernel angewiesen
ist.
Da leider auch alle Mirrors von kernel.org down sind, muss man
auf Alternativen ausweichen. Eine dieser Alternativen heisst
Gentoo Mirror. Da Gentoo eine Metadistribution ist welche
alles aus den Quellen erzeugt, kann man – wenn man weiss wo –
einige der letzten Vanilla Kernels herunterladen. Bestimmt
bietet sich diese Möglichkeit auch bei anderen Distributionen,
bei Gentoo weiss ich aber zumindest wo man die Dateien findet
Aus diesem Grund eine Liste von Links zu den Kernelquellen:
linux-2.0.40.tar.bz2
linux-2.2.25.tar.bz2
linux-2.2.26.tar.bz2
linux-2.4.26.tar.bz2
linux-2.4.28.tar.bz2
linux-2.4.32.tar.bz2
linux-2.4.33.tar.bz2
linux-2.4.34.tar.bz2
linux-2.4.35.tar.bz2
linux-2.4.36.tar.bz2
linux-2.4.37.tar.bz2
linux-2.6.5.tar.bz2
linux-2.6.11.tar.bz2
linux-2.6.12.tar.bz2
linux-2.6.13.tar.bz2
linux-2.6.14.tar.bz2
linux-2.6.15.tar.bz2
linux-2.6.16.tar.bz2
linux-2.6.17.tar.bz2
linux-2.6.18.tar.bz2
linux-2.6.19.tar.bz2
linux-2.6.20.tar.bz2
linux-2.6.21.tar.bz2
linux-2.6.22.tar.bz2
linux-2.6.23.tar.bz2
linux-2.6.24.tar.bz2
linux-2.6.26.tar.bz2
linux-2.6.27.7.tar.bz2
linux-2.6.27.tar.bz2
linux-2.6.29.tar.bz2
linux-2.6.30.tar.bz2
linux-2.6.31.tar.bz2
linux-2.6.32.23.tar.bz2
linux-2.6.32.tar.bz2
linux-2.6.33.tar.bz2
linux-2.6.34.tar.bz2
linux-2.6.35.2.tar.bz2
linux-2.6.35.7.tar.bz2
linux-2.6.35.tar.bz2
linux-2.6.36.tar.bz2
linux-2.6.37.tar.bz2
linux-2.6.38.tar.bz2
linux-2.6.39.tar.bz2
linux-3.0.tar.bz2
Assoziative Arrays in Bash
Mit bash 4.0 und höher hat man die Möglichkeit Assoziative
Arrays verwenden zu können. In Python werden diese Art von
Datenstrukturen Dictionaries genannt, in Perl heissen diese
Hashes. Im Prinzip sind assoziative Arrays eine Erweiterung
von normalen (indizierten) Arrays. Diese werden in der Regel
dann eingesetzt, wenn man Arrayeinträge über vorher definierte
Zeichenketten wiederfinden möchte.
Der Unterschied zu den indizierten Arrays besteht darin, dass
bei den assoziativen Arrays nicht fortlaufende Nummern als
Indizes, sondern sogenannte Keys (engl. Schlüssel) benutzt
werden, die neben Zahlen auch Zeichenketten beinhalten können.
Die einzelnen Arrayelemente werden demnach nicht einfach
durchnummeriert, sondern jedes Element erhält eine
Zeichenkette als Index.
Wollte man z.B. die Homeverzeichnisse von fünf Benutzern
einem Array abspeichern, musste man ein wenig tricksen
diese Infromationen pro Benutzer auch wieder auslesen
können. Im folgenden Beispiel wird einfach definiert, dass
in
um
zu
in
den ungeraden Indicies die Benutzernamen stehen und in den
geraden Indicies die Pfade zu den Homeverzeichnissen.
#!/bin/bash
declare -a homeverzeichnis
homeverzeichnis[1]=matse
homeverzeichnis[2]=/home/matse
homeverzeichnis[3]=glatze
homeverzeichnis[4]=/to/boldly/go/patrick_stewart
homeverzeichnis[5]=fratze
homeverzeichnis[6]=/home/nightmare/freddy
homeverzeichnis[7]=james
homeverzeichnis[8]=/home/bond
homeverzeichnis[9]=bond
homeverzeichnis[10]=/007
echo "Benutzer 'fratze' hat folgendes homeverzeichnis:"
found=0
index=1
until [ $found -eq 1 ];do
if [ "${homeverzeichnis[${index}]}" = "fratze" ];then
echo ${homeverzeichnis[$(( ${index} + 1 ))]}
found=1
fi
index=$(( ${index} + 1 ))
done
Wie man sieht, ist das relativ umständlich. Einfacher geht
dies seit Bash 4.0. Hierbei deklariert man zuerst ein
Assoziatives Array mittels:
declare -A homeverzeichnis
Danach kann man einfach das Array füllen indem man als
Schlüssel den Benutzernamen und als Wert den Pfad zum
Homeverzeichnis definiert.
homeverzeichnis[matse]=/home/matse
homeverzeichnis[glatze]=/to/boldly/go/patrick_stewart
[etc.]
Das fertige Script sieht dann folgendermassen aus:
#!/bin/bash
declare -A homeverzeichnis
homeverzeichnis[matse]=/home/matse
homeverzeichnis[glatze]=/to/boldly/go/patrick_stewart
homeverzeichnis[fratze]=/home/nightmare/freddy
homeverzeichnis[james]=/home/bond
homeverzeichnis[bond]=/007
echo "Benutzer 'fratze' hat folgendes homeverzeichnis:"
echo "${homeverzeichnis[fratze]}"
Zum Schluss noch ein kleiner Tipp. Will man jeweils die Liste
aller Schlüssel oder Werte erhalten, kann man folgendermassen
vorgehen:
Eine Liste aller Keys eines Arrays erhält man mittels:
echo ${!homeverzeichnis[@]}
Eine Liste aller Werte eines Arrays erhält man mittels:
echo ${homeverzeichnis[@]}
Multipart ZIP Archive unter
Linux öffnen.
Eigentlich ist das splitten von grossen Archiven eine ganz
praktische Sache. Man kann dadurch grosse Archive in kleinere
Häppchen schneiden. z.B. haben viele Mailserver eine
Dateianhang Begrenzung von 10 MB. Hat man ein Paket das 16MB
gross ist packt man es einfach nochmals neu, stellt aber ein,
dass z.B. zwei 8MB Archive erzeugt werden. Der Empfänger
speichert dann einfach beide Dateianhänge im selben
Verzeichnis ab und kann diese wieder entpacken.
Soweit die Theorie. Leider musste ich feststellen, dass
Multipart ZIP Archive doch einige Probleme bereiten können.
Gerade bei Benutzern welche auf freie Alternativprodukte
setzen, sei es nun unter Windows oder Linux, kommt es beim
entpacken der Archive zu Problemen. So unterstützt z.B. 7-zip
keine Multipart Archive. Und auch unter Linux heisst es in der
Manpage von unzip:
[...]
BUGS
Multi-part archives are not yet supported, except in
conjunction with
zip. (All parts must be concatenated together in
order, and then ''zip
-F'' (for zip 2.x) or ''zip -FF'' (for zip 3.x) must
be performed on
the concatenated archive in order to ''fix'' it.
Also, zip 3.0 and
later can combine multi-part (split) archives into a
combined singlefile
archive using ''zip -s- inarchive -O
outarchive''.
[...]
Schlussendlich hat bei mir die Variante funktioniert, welche
ganz am Schluss der Manpage angegeben wird.
zip -s- archivname.zip -O archiv.zip
unzip archiv.zip
Das nächste mal produziere ich einfach weniger Daten
Unix:
Dateien
mit
druckbaren Zeichen
nicht
Ich hatte gerade ein Verzeichnis auf einem Solaris 10 System,
welches eine Datei mit dem Namen ¨ beinhaltete. Meistens sind
solche Dateien Überbleibsel von wilden Kommandozeilen Orgien,
bei denen irgend eine Umleitung schief gelaufen ist. Irgend
ein Sonderzeichen hat sich dann im Dateinamen verewigt.
Doch wie schaut man solch eine Datei an (um entscheiden zu
können, dass diese wirklich weg kann?) und wie löscht man
diese dann?
Am einfachsten geht das wohl, wenn man statt über den
Dateinamen über die Inode Nummer geht. (Eine Inode ist ein
Eintrag in einem Unix-Dateisystem, der Metadaten einer Datei
enthält.)
# ls -alFi
385683 drwxr-xr-x
8 pcs
./
338148 drwxr-xr-x 23 root
../
461707 drwxrwsr-x
2 root
tmp/
386788 -rw-r–r–
1 root
iccc
512 Oct 29 11:59
root
512 Oct 13 12:55
iccc
512 Oct 13 12:54
root
7694 Sep
1 08:31 ¨
Nun hat man aber immer noch das Problem, dass z.B. ein cat
oder ein rm die Datei nicht behandeln können, da diese
Programme nicht mit der Inode umgehen können. Hier hilft find,
welcher gezielt nach Inodes suchen kann und dabei den
korrekten Dateinamen mittels exec an ein anderes Programm
übergeben kann.
Einige Beispiele
# Die Datei umbenennen in foobar
find . -inum 386788 -exec mv {} foobar \;
# Datei anschauen mit less
find . -inum 386788 -exec less {} \;
# Datei direkt löschen
find . -inum 386788 -exec rm {} \;
/bin/tar: Argument list too
long
Wo sind bloss die 50GB Speicherplatz geblieben?
Diese Frage musste ich mir heute Morgen auf einem unserer
Solaris 8 Systeme stellen. Nach einigen Aufräumarbeiten war
der Übeltäter gefunden. Eines unserer Projektverzeichnisse
hatte Logdateien enthalten, welche 38GB gefressen hatten.
Das Problem: Mir konnte natürlich wiedermal niemand sagen ob
die Daten noch gebraucht werden.
Also wollte ich all die Dateien mit gtar/bzip2 Archivieren.
Doch da hatte ich die Rechnung ohne den Wirt gemacht. Ein gtar
cvjpf Archivdatei.tar.bz2 logfiles* scheiterte an der Menge
der übergebenen Dateien und beendete sich mit der
Fehlermeldung:
/bin/tar: Argument list too long
Was? Wieviele Datein waren denn da auf dem Server? Ein ls
-1|wc -l brachte mir die Gewissheit.
372’378 Dateien!
Das ist natürlich eine Menge. Und wie sichere ich die nun?
Ganz einfach. Zuerst wird mittels find eine Liste aller
Dateien erstellt und danach wird das tar File anhand dieser
Datei erzeugt.
find . -name '*.log' -print >/tmp/archivliste
tar cvjpf logfiles.tar.bz2 --files-from /tmp/archivliste
So einfach kann es sein…
Nachtrag:
Will man die Dateien löschen, hat man mit rm natürlich wieder
das selbe Problem. Aus diesem Grund hier der Befehl, wie die
Dateien löschen kann.
find . -name '*.log' | xargs rm
Uebrigens:
Der Grund, warum es über die Argumente nicht geht ist die
beschränkte Puffergrösse für Argumente. Denn ein logfiles*
wird in logfiles1 logfiles2 logfiles3 etc. aufgeschlüsselt.
Und bei knapp 380’000 Daeien ist dieser Pufferplatz schnell
einmal voll. Zumal der Puffer wohl nur zwischen 32Kb und 64Kb
gross sein wird.
Hack den Igel
Keine Panik, Eggers Familien-Blog ist nach wie vor
Kinderfreundlich. Hier geht es mitnichten darum putzige kleine
Erinaceidae zu quälen sondern um das hacken von Thin-Clients
der Firma IGEL. Genauer geht es um das Hacken eines IGEL 5110
X-Term.
Das Problem:
Bei einem Kunden sind in gewissen Applikationen keine Elemente
anwähl- oder verschiebbar. Um nun herauszufinden ob das
Problem bei den X-Terminal Settings oder unserem Server zu
suchen ist muss ich zuerst einmal Zugriff auf des Kundens XTerminal Einstellungen haben. Doch wie kommt man an diese ran
ohne sich mit ihm telefonisch durch das grafische
Konfigurationsmenu zu quälen?
Die Lösung:
Man logt sich remote auf das Terminal ein und kopiert sich die
Settings.
Das Problem ist nur, wie komme ich auf das Terminal wo doch
nur eine Remote Shell und kein Remote Login zur Verfügung
steht? Ganz Einfach, man bittet den Kunden um hilfe. (Pech
gehabt ihr Skriptkiddies da draussen! Keine rüberhol und
kopier Anleitung für euch!)
Der Kunde muss folgende Schritte am Terminal vornehmen:
1. Wenn das Terminal eingeschaltet ist muss er Alt-SysRq-F2
drücken (SysRq entspricht der Print Screen Taste)
2. Danach wechselt er mit Alt-F10 auf die Konsole des
Terminals.
3. Nach drücken der ENTER Taste befindet er sich in einer
bash Shell auf dem IGEL Terminal.
4. Als nächstes muss er die Display Variable auf meinen
Client setzen. Z.B. export DISPLAY=192.168.1.1:0.0
5. Startet er nun ein X-Terminal habe ich mit dessen Hilfe
Zugriff auf die Terminal Konsole. xterm &
6. Nun kann der Kunde wieder in den normalen Modus wechseln
mit der Tastenkombination Alt-F1.
In der Datei /wfs/setup.ini finde ich die XML Datei mit den
Systemeinstellungen vor. Aber Achtung! Jede Änderung an der
Datei verändert die Einstellungen des Terminals. Löscht man
zuviel kann es passieren, dass das Terminal nach dem reboot
nicht mehr richtig funktioniert.
Sicherer ist es, wenn man einfach das Setuptool selber
ausführt. Hierzu muss man den Befehl /usr/X11R6/bin/setup
ausführen.
ASUS P5E3 Deluxe/WiFi-AP@n
mit integriertem Linux
Die Firma ASUS ist hauptsächlich für Ihre qualitativ guten
Motherboards bekannt. Auch ich verwende bei Systemen, welche
ich komplett selber zusammenbaue immer wieder gerne deren
Mutterplatinen.
Beim neusten Motherboard (einem Core 2 Quad fähigen Board)
haben sich die Entwickler bei ASUS etwas ganz spezielles
einfallen lassen. Das System besitzt ein minimalstes Linux auf
einem Chip, welches innerhalb von 5 Sekunden gebootet werden
kann. Beim ersten mal muss man noch einige Fragen über sich
ergehen lassen (Sprache, IP Adresse fix oder DHCP) und hat
dann einen absolut minimalen Desktop vor sich, auf dem sich
ein abgespeckter Firefox 2.0 Browser mit integriertem Flash
Plugin findet. Bookmarks und sonstige Einstellungen werden auf
dem Chip solange gespeichert, bis man im BIOS die „Default
Settings“ auswählt.
Die grafische Oberfläche (oder die Linux Distribution?) nennt
sich SplashTop. Auf der Website [http://www.splashtop.com/]
findet man jedoch noch keine Informationen. Diese sollen ab
dem 10. Oktober (Release Termin) verfügbar sein. Man darf
gespannt sein… Was man bisher an Screenshots bei Phoronix
sieht, macht aber bereits Lust auf dieses System.
Meiner Meinung nach ist diese Erweiterung endlich einmal ein
brauchbares Feature. Man stelle sich vor, der Rechner kommt
beim hochfahren nur mit einer Fehlermeldung hoch. Einfach das
SplashTop Linux booten und nach der Fehlermeldung bei google
suchen. Kein zweiter Computer ist mehr nötig, kein langes
booten irgend eines Systems muss mehr abgewartet werden.
Gentoo
Linux
Metadistribution
–
Die
Tobias Scherbaum (a.k.a. dertobi123)
hat endlich sein Buch Gentoo Linux – Die Metadistribution
fertig gestellt. Unter angegebenem Link kann man bereits
einmal das Inhaltverzeichnis, Vorwort, Kapitel 1 sowie das
Stichwortverzeichnis als PDF herunterladen.
Drei Vorabexemplare inklusive CD hat er bereits erhalten und
auch davon ein Photo geschossen. Wer also schon immer einmal
Gentoo kennenlernen wollte, sich jedoch noch nicht an die
zugegebenermasse komplexere Materie gewagt hat könnte es mit
diesem Buch einmal versuchen.
Voraussichtlich wird es für 29€ verfügbar sein. In der Schweiz
kann man es bereits bei buch.ch zum Preis von 49 CHF
vorbestellen. Jedoch wird es dort noch als Gentoo Linux
gehandelt.
Wird wohl langsam Zeit, dass ich mein Buch ebenfalls einmal
auf die Beine stelle. Mir schwebt schon seit längerem ein
unterhaltsam geschriebenes Linux/Gentoo Anfängerbuch vor. Ein
Probekapitel kann im Gentoo Forum gelesen werden.
PHP:
Call
to
undefined
function: utf8_decode()
Das kommt davon, wenn man versucht seinen Rechner und die
darauf laufenden Programme nach der Methode „alles raus was
nicht benötigt wird“ zu sichern. Irgend etwas vergisst man
garantiert…
Mir wurde das bewusst, nachdem ich folgende Fehlermeldung beim
betreiben des Blogs entgegengeschmettert bekam.
Call to undefined function: utf8_decode()
PHP will mir also mitteilen, dass er den übergebenen String
gerne von UTF8 nach irgendwas decodieren möchte, dies jedoch
aufgrund fehlender Funktionalität nicht möglich ist. Die Frage
ist nur, wie kriege ich diese Funktionalität in PHP gepackt?
Die Antwort ist einfach. Man muss lediglich XML Unterstützung
beim kompilieren aktivieren.
Wer (wie ich) Gentoo verwendet muss dabei nur wissen, welches
USE Flag zu aktivieren ist.
Für PHP4 wird zwingend das USE Flag expat benötigt.
Für PHP5 wird zwingend das USE Flag xml benötigt.
So einfach kann es sein