Einträge zu Tag: Kernel
Kernel entfernen, auf Debian-Art
Erstellt: 16.03.2010 18:28
Vorallem wenn man Testing-Versionen von Debian nutzt oder gar Unstable oder Experimental, sammeln sich mit der Zeit viele Kernel an, aber auch wenn man selbst Regelmässig welche baut. Hier ein kleiner Leitfaden um diese Kernel zu suchen und zu entfernen.
Um sich eine Übersicht zu verschaffen, welche Debian-Kernel und -Headers aktuell installiert sind, nutzt man am Besten eine Kombination aus dpkg und grep:
# dpkg -l | grep ^i | grep linux-[hi]
Dabei listet "dpkg -l" alle Pakete auf, "grep ^i" begrenzt die Liste auf die (vollständig) installierten Pakete und zu guter Letzt begrenzt man die Auswahl weiter mit "grep linux-[hi]" auf Paketnamen mit "linux-h" oder "linux-i", was auf Paketnamen wie "linux-headers*" oder "linux-image*" zutrifft welche - oh Wunder! - die Pakete der Kernels und deren Headers sind. (Selbst gebaute Kernel-Pakete können natürlich auch anders heissen, gegebenen Falles den Suchstring anpassen.)
Es gibt bestimmt auch noch andere Möglichkeiten, sollte jemand eine einfachere kennen, nur zu. :)
Das sieht dann beispielsweise wie folgt aus:
# dpkg -l | grep ^i | grep linux-[hi]
ii linux-headers-2.6.30-1-686-bigmem 2.6.30-6 [...]
ii linux-headers-2.6.30-1-common 2.6.30-6 [...]
ii linux-headers-2.6.30-2-686 2.6.30-8squeeze1 [...]
ii linux-headers-2.6.30-2-686-bigmem 2.6.30-8squeeze1 [...]
ii linux-headers-2.6.30-2-common 2.6.30-8squeeze1 [...]
ii linux-headers-2.6.32-trunk-686-bigmem 2.6.32-5 [...]
ii linux-headers-2.6.32-trunk-common 2.6.32-5 [...]
ii linux-image-2.6-686 2.6.32+23 [...]
ii linux-image-2.6.30-1-686 2.6.30-6 [...]
ii linux-image-2.6.30-1-686-bigmem 2.6.30-6 [...]
ii linux-image-2.6.30-2-686 2.6.30-8squeeze1 [...]
ii linux-image-2.6.30-2-686-bigmem 2.6.30-8squeeze1 [...]
ii linux-image-2.6.32-trunk-686 2.6.32-5 [...]
ii linux-image-2.6.32-trunk-686-bigmem 2.6.32-5 [...]
Nun zum eigentlichen entfernen des Kernels. Dies geschieht mit "apt-get purge" (oder mit aptitude purge)
# apt-get purge linux-image-2.6.30-1-686
[...]
Die folgenden Pakete werden ENTFERNT:
linux-image-2.6.30-1-686*
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 3 nicht aktualisiert.
Nach dieser Operation werden 69.8MB Plattenplatz freigegeben.
Möchten Sie fortfahren [J/n]? J [Enter]
[...]
Entferne linux-image-2.6.30-1-686 ...
[...]
Und schon wäre der Kernel "linux-image-2.6.30-1-686" entfernt und die Grub-Einträge aktualisiert... Das Selbe kann man mit den Headers vollziehen.
Das wars schon. :)
32Bit-Linux mit mehr als 4Gb RAM
Erstellt: 21.03.2008 14:12
Wer ein gewisses 32Bit-Betriebssystem aus Redmond schon mal benutzen musste, wird vielleicht festgestellt haben, dass es maximal (ohne Tricks) 3-3.5Gb RAM Arbeitsspeicher unterstützt...
Oft werden auch nur 2Gb angezeigt, obwohl das Mainboard sogar 4Gb oder gar mehr RAM unterstützt und erkennt.
Unter Linux ist das zum Glück anders. Wer kein 64Bit-Betriebssystem einsetzen möchte kann mit einer kleinen Änderung im Kernel einiges mehr 4Gb RAM geniessen. Man muss dazu nur folgenden Eintrag im Kernel ändern und ihn neu compilern:
Processor type and features --->
High Memory Support (4GB) --->
( ) off
( ) 4GB
(x) 64GB
Das x auf 64Gb setzen und somit mehr als 4Gb-RAM nutzbar machen.
Jetzt nurnoch Compilen.
Fertig
Wie Compilier ich einen Kernel?
Nachtrag:
Unter Debian kann man dazu auch den Bigmen-Kernel nehmen.
Hot-Swap mit dem IBM/Lenovo Thinkpad T43
Erstellt: 19.11.2007 20:31
Die T4xer Reihe des Thinkpad hat wie seine Vorgänger und Nachfolger die Möglichkeit CD-, DVD-, Harddisklaufwerk, Akku usw. im UltraBay Slim-Schacht während des Betriebes zu wechseln. Das ganze nennt sich Hot-Swap.
Das Ziel ist es, dass sich das Laufwerk wenn man den kleinen Hebel betätigt rechts unten am Schacht direkt von selbst abmeldet und einen Ton ausgibt. Nach dem Einschieben soll es das neue Laufwerk von selbst erkennen, so dass man es mounten kann.
Diese Anleitung wurde mit einem Thinkpad T43 erfolgreich gestestet.
Zuerst muss man im Kernel die Thinkpad ACPI aktivieren. Hier der Pfad im "make menuconfig":
Device Drivers--->
[*] Misc devices --->
<*> Thinkpad ACPI Laptop Extras
Nun compilt man den Kernel.
Falls man nicht weiss, wie man einen Kernel compilt, kann man das in diesem Beitrag nachlesen: Kernel compilen unter Debian
Jetzt ist es möglich, dass man neu eingeschobene Laufwerke erkennen kann, mit diesem Befehl kann man nach neuen Laufwerken scannen:
# echo 0 0 0 > /sys/class/scsi_host/host1/scan
Um ein eingeschobenes Laufwerk sicher zu entfernen, verwendet man folgende zwei Befehle:
# echo 1 > /sys/class/scsi_device/1:0:0:0/device/delete
# echo eject > /proc/acpi/ibm/bay
Sobald die Grüne Anzeige erlischt, kann man nun den Einschub entfernen.
Damit das ganze auch bequem zu handhaben ist, automatisiert man das ganze nun mit einigen Scripts.
Als erstes das Script fürs Einschieben.
Man erstellt die Datei /usr/local/sbin/ultrabay_insert mit den Rechten 775:
#!/bin/bash
echo 12 > /proc/acpi/ibm/beep
sync
echo 0 0 0 > /sys/class/scsi_host/host1/scan
sleep 1
echo 0 0 0 > /sys/class/scsi_host/host1/scan
sleep 1
echo 0 0 0 > /sys/class/scsi_host/host1/scan
sleep 1
echo 0 0 0 > /sys/class/scsi_host/host1/scan
Die Wiederholung der letzen beiden Befehle rührt daher, dass es manchmal länger dauern kann, bis die Hardware reagiert. Dies ist sicherlich nicht die schönste Lösung, aber es funktioniert.
Damit das Ereignis auch ausgelöst wird, braucht es noch die Datei /etc/acpi/events/ultrabay-insert:
event=ibm/bay MSTR 00000001 00000000
action=/usr/local/sbin/ultrabay_insert
Als nächstes erstellt man das Script furs Abmelden des Laufwerks. Für das erstellt man die Datei /usr/local/sbin/ultrabay_eject mit den Rechten 775:
#!/bin/bash
ULTRABAY_SYSDIR='/sys/class/scsi_device/1:0:0:0/device'
shopt -s nullglob
# Umount the filesystem(s) backed by the given major:minor device(s)
unmount_rdev() { perl - "$@" <<'EOPERL' # let's do it in Perl
for $major_minor (@ARGV) {
$major_minor =~ m/^(d+):(d+)$/ or die;
push(@tgt_rdevs, ($1<<8)|$2);
}
# Sort by reverse length of mount point, to unmount sub-directories first
open MOUNTS,"</proc/mounts" or die "$!";
@mounts=sort { length($b->[1]) <=> length($a->[1]) } map { [ split ] } <MOUNTS>;
close MOUNTS;
foreach $m (@mounts) {
($dev,$dir)=@$m;
next unless -b $dev; $rdev=(stat($dev))[6];
next unless grep($_==$rdev, @tgt_rdevs);
system("umount","-v","$dir")==0 or $bad=1;
}
exit 1 if $bad;
EOPERL
}
# Get the UltraBay's /dev/foo block device node
ultrabay_dev_node() {
UDEV_PATH="`readlink -e "$ULTRABAY_SYSDIR/block:"*`" || return 1
UDEV_NAME="`udevinfo -q name -p $UDEV_PATH`" || return 1
echo /dev/$UDEV_NAME
}
if [ -d $ULTRABAY_SYSDIR ]; then
sync
# Unmount filesystems backed by this device
unmount_rdev `cat $ULTRABAY_SYSDIR/block:*/dev
$ULTRABAY_SYSDIR/block:*/*/dev`
|| {
echo 10 > /proc/acpi/ibm/beep; # error tone
exit 1;
}
sync
# Nicely power off the device
DEVNODE=`ultrabay_dev_node` && hdparm -Y $DEVNODE
# Let HAL+KDE notice the unmount and let the disk spin down
sleep 0.5
# Unregister this SCSI device:
sync
echo 1 > $ULTRABAY_SYSDIR/delete
fi
sync
# Turn off power to the UltraBay:
if [ -d /sys/devices/platform/bay.0 ]; then
echo 1 > /sys/devices/platform/bay.0/eject
else
echo eject > /proc/acpi/ibm/bay
fi
# Tell the user we're OK
echo 12 > /proc/acpi/ibm/beep
Als letztes noch die Datei fürs Ereignis vom Abmelden /etc/acpi/events/ultrabay-eject:
event=ibm/bay MSTR 00000003 00000000
action=/usr/local/sbin/ultrabay_eject
Fertig.
Kernel compilen unter Debian
Erstellt: 03.11.2007 18:08
Wie man den Kernel unter Debian richtig compilt kann man unter folgendem Link nachlesen:
http://wiki.debianforum.de/DebianizedLinuxKernel.
Hier eine kurze Zusammenfassung:
Den gewünschten Kernel von http://www.kernel.org herunterladen und nach /usr/src verschieben.
Den Kernel entpacken:
$ tar xvjf linux-2.6.y.x.tar.bz2
Verlinken nach /usr/src/linux:
$ ln -s linux-2.6.y.x linux
Ins Verzeichnis wechseln und ein Konfigurationstool ausführen:
$ cd linux
$ make menuconfig
Alternativ zu menuconfig kann man xconfig mit graphischer Oberfläche verwenden.
Nun "backt" sprich compilt man den Kernel:
$ make-kpkg --initrd --revision 0.1 kernel_image
Die Versionsnummer muss nicht 0.1 sein.
Zuletzt den Kernel als root installieren.
# dpkg -i linux-image-2.8.23_0.1_i386.deb
Der Dateiname kann je nach System und Kernel ect. variiren.
Rebooten und schauen ob alles funktioniert.
IBM / Lenovo Thinkpad HDAPS (Festplattenschutz), Daemon und Applet einrichten
Erstellt: 03.11.2007 17:50
Info: Mit Squeeze ist dies nichtmehr nötig, entsprechende Module und Software befinden sich in den Repositories!
Neuere Thinkpad-Modelle ab T41 oder R50 nutzen das Active Protection System. Dieses System misst über Sensoren die Beschleunigung des Notebooks. Werden diese Sensoren von einem Daemon überwacht, ermöglicht dies einen Schutz der Festplatten gegen schwerere Stösse durch zum Beispiel runterfallen, indem der Lesekopf der Festplatte in Parkposition versetzt wird und die Festplatte gestoppt wird.
Diese Anleitung sollte sich auch auf Ubuntu übertragen lassen. Ich habe sie mit Debian und dem Kernel 2.6.23 getestet.
Falls man nicht weiss, wie man einen Kernel compilt, kann man das in diesem Beitrag nachlesen:
Kernel compilen unter Debian
Zuerst richten wir die Sensoren ein. Dazu aktivieren wir hdaps im Kernel. Mit "make menuconfig" finden wir dies unter folgender Position:
Device Drivers--->
Hardware Monitoring support--->
<*> IBM Hard Drive Active Protection System (hdaps)
Dies setzt man auf "built-in". Nun den Kernel compilen, rebooten.
Jetzt kann man testen, ob die Sensoren erkennt werden:
# dmesg | grep hdaps
hdaps: IBM ThinkPad T43 detected.
hdaps: initial latch check good (0x01).
hdaps: device successfully initialized.
input: hdaps as /class/input/input4
hdaps: driver successfully loaded.
Jetzt können wir einige nützliche Tools installieren:
# apt-get install hdaps-utils
Um sich die Beschleunigung graphisch anzeigen zu lassen können wir folgendes Tool nutzen:
$ hdaps-gl
Einfach, aber eventuell eindrücklich.
Den Daemon zum laufen zu bringen benötigt ein wenig mehr. Dazu brauchen wir einen Kernel-Patch.
Den Patch für Kernel 2.6.22 und 2.6.23 findet man hier:
http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1077
Den Patch für Kernel 2.6.19 hier:
http://article.gmane.org/gmane.linux.kernel/470413
Und zuletzt noch den für 2.6.18:
http://article.gmane.org/gmane.linux.kernel/470413
Patch für andere Kernelversionen kann man relativ schnell im Internet finden mit guten Suchmaschinen. Man sollte auf jeden Fall darauf achten, dass man den richten Patch mit dem richtigen Kernel verwendet!
Kennt ihr eure Kernelversion nicht, lässt sich das über "uname -r" abfragen.
Nun installieren wir den Patch, als erstes geht man ins entsprechende Verzeichnis. In der Regel dürfte das /usr/src/linux sein. Nun bindet man den Patch ein:
# patch -p1 -l < /pfad/dateiname
Pfad und Dateiname ersetzt man mit dem Pfad und dem Dateinamen des Patch. Noch ein paar Pakete installieren falls sie noch nicht vorhanden sind:
# apt-get install linux-restricted-modules-generic linux-restricted-modules-common
Dann rebooted man das System. Es ist jetzt vorbereitet für den Daemon welchen wir jetzt noch brauchen.
Dazu ladet man den aktuellen Daemon als hdaps-<Datum>.c runter von folgender Quelle:
http://www.zen24593.zen.co.uk/hdaps/
Man sollte immer den Aktuellsten nehmen.
Falls man das Compiler-Programm gcc nicht in der Version 3.4 hat muß man sich das noch installieren:
# apt-get install gcc-3.4
Nun wechselt man in das Verzeichnis in welchem man die hdaps-*.c-Datei abgelegt hat.
Dann folgt das Compilern und Verschieben ins richtige Verzeichnis:
# gcc-3.4 -o hdapsd hdapsd-*.c
# cp hdapsd /usr/local/sbin/
Wenn man gcc in einer anderen Version nutzt, kann dies zu Fehlern führen!
Wenn das geklappt hat, kann man den Daemon starten:
# hdapsd -d sda -s 15
sda ist hier die Festplatte und 15 die Empfindlichkeit ab wann der Daemon die Festplatte stoppt. Das ganze kann man mit dem Parameter b vollkommen in den Hintergrund versetzen:
# hdapsd -d sda -s 15 -b
Schüttelt man das Notebook nun leicht, kann man das "klack" des in Parkposition gebrachten Lesekopfes der Festplatte hören.
Als letztes richten wir noch das Applet ein, um uns den Status der Festplatte im Panel von Gnome anzeigen zu lassen. Dies sind noch mal ein paar Schritte, aber nicht weiter kompliziert. Wem die Tipparbeit zu mühsam ist, kann auch Copy and Paste verwenden
1. Ordner erstellen, Quelldateien runterladen und entpacken:
# mkdir gnome-hdaps-applet
# cd gnome-hdaps-applet
# wget http://www.zen24593.zen.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz
# tar -xzf gnome-hdaps-applet-20060120.tar.gz
2. Noch nen nötiges Paket installieren, falls noch nicht vorhanden:
# apt-get install libpanel-applet2-dev
3. Dateien compilern und installieren
# gcc $(pkg-config --cflags --libs libpanelapplet-2.0) -o gnome-hdaps-applet gnome-hdaps-applet.c
# install gnome-hdaps-applet /usr/bin/
4. Graphiken ins richtige Verzeichnis kopieren:
# mkdir /usr/share/pixmaps/gnome-hdaps-applet/
# cp *.png /usr/share/pixmaps/gnome-hdaps-applet/
5. Letzte Datei kopieren.
# cp GNOME_HDAPS_StatusApplet.server /usr/lib/bonobo
Fertig! Spätestens nach dem Neustart den xServers findet man das Applet nun bei einen Rechtsklick auf das Panel unter "Zum Panel hinzufügen..." als "HDAPS Status Applet".
Und wieder ist die Welt ein wenig sicherer. Viel Spass beim Schütteln