Articles in category “Linux” (page 1 of 1):

Acer Extensa 5220, Linux und p4_clockmod

On in “Linux” by Tblue3 comments
Tags: , , ,

Mein Notebook, ein Acer Extensa 5220, läuft wunderbar mit Linux. Einziger Nachteil: Das p4-clockmod-Kernelmodul, mit dem ich die Frequenz der CPU (Intel Celeron M 530) beeinflussen und somit Strom sparen könnte, erkennt den Prozessor nicht.

Ein Patch behebt das Problem. Ich habe bisher immer den ganzen Kernel rekompilliert, das wurde mir auf die Dauer aber zu umständlich bzw. zeitaufwändig. Ich habe deswegen nach einem Weg gesucht, nur das eine Modul neu zu kompillieren und will im folgenden Eintrag beschreiben, wie ich das gemacht habe.

Patch anwenden

Nachdem man die Kernelquellen für seine Kernelversion heruntergeladen und evtl. gepatcht hat, wechselt man in das Sourceverzeichnis und wendet den Patch für das Modul an:

$ patch -Np1 -i pfad/zur/obigen/patchdatei

Das sollte problemlos klappen.

Kernelkonfiguration kopieren

Klappt folgender Befehl nicht…

$ zcat /proc/config.gz > .config

…kann man diesen hier probieren (evtl. Verzeichnis anpassen):

$ cp "/usr/src/linux-`uname -r`/.config" .

Kompillation vorbereiten

$ make silentoldconfig prepare modules_prepare

Nun zum letzten Schritt:

Modul kompillieren & kopieren

U. U. müsst ihr beim cp-Befehl den Zielpfad anpassen. Die letzten beiden Befehle müssen mit root-Rechten ausgeführt werden.

$ make arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
# cp arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko \
    "/lib/modules/`uname -r`/kernel/arch/x86/kernel/cpu/cpufreq"
# /sbin/depmod -A

Zum Schluss…

…könnt ihr nun das Modul (als root) laden und überprüfen, ob es ordnungsgemäß geladen wurde:

# modprobe p4_clockmod
$ dmesg|tail

In der dmesg-Ausgabe müsste folgendes zu sehen sein:

p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available

Das wars. :-)

Arch Linux-Pakete enthalten endlich wieder Programmdokumentation

On in “Linux” by Tblue
Tags: ,

Siehe http://bbs.archlinux.org/viewtopic.php?pid=432009#p432009. Sehr schön, hat mich immer geärgert wenn in einer manpage nur

The full documentation for PROGRAM is maintained as a Texinfo manual. If the info and PROGRAM programs are properly installed at your site, the command

       info PROGRAM

should give you access to the complete manual.

stand und die infopage (heißt das so? ;)) gar nicht im Paket enthalten war.

apt-get, aptitude und die Easter Eggs

On in “Linux” by Tblue1 comment
Tags: , ,
tilman@ax86:~$ apt-get -h
# [...]
# [...]
        Dieses APT hat Super-Kuh-Kräfte.

Ach? Kuh… Kühe… hm… Kühe machen “Muh”. OK, mal gucken.

tilman@ax86:~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...

Ha, cool. Kann ich da noch mehr sehen?

tilman@ax86:~$ apt-get moo -v
apt 0.6.46.4-0.1 für linux i386 kompiliert am Feb 26 2007 16:19:57
Unterstützte Module:
*Ver: Standard .deb
*Pkg:  Debian dpkg interface (Priority 30)
 S.L: 'deb' Standard Debian binary tree
 S.L: 'deb-src' Standard Debian source tree
 Idx: Debian Source Index
 Idx: Debian Package Index
 Idx: Debian dpkg status file

Anscheinend nicht. Mein aptitude hat zwar keine magischen Kräfte, aber probieren schadet ja nicht.

tilman@ax86:~$ aptitude moo
In diesem Programm gibt es keine Easter Eggs.

Ach, komm, irgendwas muss da sein!

tilman@ax86:~$ aptitude moo -v
In diesem Programm gibt es wirklich keine Easter Eggs.

Warum erscheint dann diese Nachricht? Weiter gehts…

tilman@ax86:~$ aptitude moo -vv
Habe ich nicht bereits erklärt, dass es in diesem Programm
keine Easter Eggs gibt?

Ja, hast du, aber ich bin sooo neugierig!

tilman@ax86:~$ aptitude moo -vvv
Hör auf!

Nein!

tilman@ax86:~$ aptitude moo -vvvv
Okay, wenn ich Dir ein Easter Egg gebe, wirst Du dann
aufhören?

Vielleicht.

tilman@ax86:~$ aptitude moo -vvvvv
Gut, Du hast gewonnen.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------

Ha, “Der kleine Prinz” hab ich gerne gelesen… Aber vielleicht gibts noch mehr …?

tilman@ax86:~$ aptitude moo -vvvvvv
Was das ist? Natürlich ein Elefant, der von einer Schlange
gefressen wurde.

Ah, stimmt, jetzt auch in ASCII, toll! Gehts noch weiter?

tilman@ax86:~$ aptitude moo -vvvvvvv
Was das ist? Natürlich ein Elefant, der von einer Schlange
gefressen wurde.

Anscheinend nicht. Schade.

Linux Segmentation fault Fehlercodes

On in “Linux” by Tblue
Tags: ,

Nach einem Mainboard-Wechsel habe ich des öfteren Segfaults und Kernel panics auf meinem Linux-Rechner (wie ja schon im Blog erwähnt). In der Ausgabe von dmesg sieht das dann so aus:

X[2672]: segfault at 1a4 ip 0819288a sp bf9bec60 error 4 in Xorg[8048000+196000]

Hm, toll, der größte Teil davon werden wohl Speicheradressen sein, aber was ist Fehler 4? Nach kurzem Suchen fand ich heraus, dass das (für einen x86-Prozessor) in der Quelltext-Datei arch/x86/mm/fault.c steht:

/*
 * Page fault error code bits
 *    bit 0 == 0 means no page found, 1 means protection fault
 *    bit 1 == 0 means read, 1 means write
 *    bit 2 == 0 means kernel, 1 means user-mode
 *    bit 3 == 1 means use of reserved bit detected
 *    bit 4 == 1 means fault was an instruction fetch
 */
#define PF_PROT     (1<<0)
#define PF_WRITE    (1<<1)
#define PF_USER     (1<<2)
#define PF_RSVD     (1<<3)
#define PF_INSTR    (1<<4)

Wir haben also die Zahl 1, bzw. 00000001 (wenn man annimmt, dass ein Byte acht Bits sind). Mittels des Operators << werden alle Bits in dem Byte um eine Stelle nach links verschoben (“geshiftet”). Das heißt:

PF_PROT  = 00000001
PF_WRITE = 00000010
PF_USER  = 00000100
PF_RSVD  = 00001000
PF_INSTR = 00010000

So, 4 entspricht im Dualsystem 100 bzw. 00000100, also PF_USER. Also ein “page fault” beim Lesen im user mode. Oder so. Jedenfalls ist (mir) die Bedeutung von Fehler 4 nun etwas klarer.

Nachtrag:

Natürlich können auch Kombinationen der obigen Werte auftreten, z. B. würde Fehler 6 im Dualsystem 110 bzw. 00000110 entsprechen, was das Ergebnis einer logischen ODER-Verknüpfung von PF_WRITE und PF_USER ist:

     00000010
ODER 00000100
-------------
     00000110

Das wäre ein page fault beim Schreiben im user mode.