Multicore CPU: howto aktivieren von nur einer Core

April 7th, 2011 von sdohn

Mitunter ist es ganz nützlich unter Linux mit nur einem Core zu Arbeitem. Professionelle Software wie Datenbanken welche unter Linux laufen haben mitunter ein eigenes Lizenzmanagement. Je mehr Prozessoren im Einsatz sind, desto teurer wird die Lizenz. Was im Business ok ist, kann wenn man unter einer Virtualisierung die Software mal kurz testen will nervtötend sein. Abhilfe schafte bei mir in vielen Fällen folgende Prozedur welche ich nun gerne beschreiben möchte.

Prozedur bei Linux:

Wenn wir Linux benutzen ist die Prozedur ein wenig anders. Wenn der Rechner gestartet wird sollten sie das Grub Menu aufrufen, welches verantwortlich für den Start des Linux kernels ist. Nun müssen sie im GRUB Menu den für sie passenden Eintrag auswählen. Dieser wird editiert indem sie das „e“ auf der Tastatur drücken. Das entsprechende Editier Menu in Grub öffnet sich nun. (versionsabhängig)

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,5)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=a8a39729-9d2a-425b-b84b-ecc5c7dad104 ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet

Wir benutzen auf der Tastatur die Taste mit dem Pfeil nach oben, und gehen zu der Zeile mit dem Wort Kernel. Dort drücken sie wieder die „e“ Taste, um den „kernel“ Eintrag zu editieren. Stellen sie sicher, dass sie den Eintrag mit dem richtigen Pfad zu ihrem Linux Kernel bearbeiten. An das Ende dieser Zeile sollten sie dann folgenden Eintrag hinzufügen.

maxcpus=1

Das end Resultat sollte dann folgendermaßen aussehen:

kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=a8a39729-9d2a-425b-b84b-ecc5c7dad104 ro quiet maxcpus=1

Beachte, dass ro, quit und maxcpus die Paramter sind welche zu dem Kernel beim Starten von Linux gesendet werden.

Dann betätigen sie den “b” key (boot) um Linux zu starten. In diesem Fall sollte als Resultat nur ein Prozessor von Linux benutzt werden. Der Rest wird einfach ignoriert.

HowTo Linux Kernel Recompile

April 6th, 2011 von sdohn

erstellt von S.Dohn, 02.02.05
1) Neuen Kernel besorgen entweder von http://www.kernel.org oder von einem Redhat/Fedora Mirror nachinstallieren

(Suchen nach kernel-source-*.rpm).
Bei Redhat das rpm mit rpm -ivh kernel-source-2.4.20-20.9 installieren.
Bei einem neuen Kernel
von http://www.kernel.org ihn unter /usr/src auspacken.
Symbolischen Link von diesem Kernel Tree zu linux-2.4 erstellen.

2) Reset aller optionen/ASM Files

Wir fangen die Konfiguration an,
indem wir alle vorhergehenden Konfigurationen clearen
und das Quellverzeichnis zu seinem Urzustand zurückstellen.
Der Hauptgrund für das Tun ist,
daß einige Dateien nicht automatisch Rebuildet werden können
oder im schlechtesten Fall ein Buggykernel.
cd /usr/src/linux-2.4
make mrproper
make distclean

3) Wir Rufen das Kernel Konfigurationsprogram auf:

  make menuconfig # Bei Consolen Konfiguration

make xconfig # Zur Grafischen Konfiguration des Kernels.

 

 

 

 

 

 

 

 

 

4) Laden einer Redhat Default Konfiguration

Um nicht alle Konfig Optionen Auswendig zu kennen,
sollte man mit einer Default Konfiguration starten.
Davon ausgehend kann man dann seine Optionen/Treiber
... entsprechend auswählen.
Die RedHat Konfig Dateien liegen unter: /usr/src/linux-2.4/configs/

 

 

5) Alle Abhängigkeiten des Kernel Trees automatisch bestimmen lassen

  make dep

6) Bauen des Compressed Kernel Images

  make bzImage

7) Bauen der Module des Kernels

  make modules

8) Installieren des Modul Zweiges nach /lib/modules

  make modules_install

9) Kopieren der für den Boot Kernel wichtigen Dateien in die richtigen Verzeichnisse

  cd /usr/src/linux-2.4/arch/i386/boot
  cp bzImage /boot/vmlinuz-2.4.**custom

  cd /usr/src/linux-2.4/
  cp System.map /boot/System.map-2.4.***custom

10) Bauen der initialen Ramdisk mit allen wichtigen Kernel Modulen zur Bootzeit

   mkinitrd /boot/initrd-2.4.***custom.img 2.4.**custom

11) Einbauen der neuen Kernel Konfiguration in das Grub Bootmenu

   cd /boot/grub ; vi grub.conf
   folgende Zeilen zur bestehenden Konfiguration hinzufügen:
   boot=/dev/hda2
   default=0
   timeout=10
   splashimage=(hd0,1)/boot/grub/splash.xpm.gz
   title Red Hat Linux (2.4.20-20.9)
       root (hd0,1)
       kernel /boot/vmlinuz-2.4.***custom ro root=LABEL=/
       initrd /boot/initrd-2.4.***custom.img

 

HowTo Grub Serielle Console

April 6th, 2011 von sdohn

Nach diesem Beispiel kann man eine Serielle Konsole konfigurieren.

Die Kernel, und Boot Meldungen werden hierbei an der Seriellen Konsole,

und dem Standard Monitor Gerät ausgegeben.

default 0
timeout 10
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=5 console serial

color green/blue yellow/green
title Securepoint
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda3 console=ttyS0 console=tty0
initrd /initrd-2.4.32-anmsec.img

Anleitung zum Seriellen Login

Mit dieser Anleitung kann man einen Client mit Nullmodemkabel

an den Server COM1 Port mit 9600 8N1 anschliessen.

1) Sicher gehen, das COM1(ttyS0) im Bios aktiviert worden ist.
2) Das mgetty rpm Paket installieren.
3) Das Konfigurations File fuer mgetty erstellen:
   `/etc/mgetty+sendfax/mgetty.config' Folgende Zeilen sollten hinein:

        port ttyS0
        direct y
        speed 9600
        term vt100
4) Die Datei /etc/securetty editieren. Einfuegen:

        ttyS0
        tts/0
5) Die Datei /etc/inittab Editieren:

        S0:2345:respawn:/sbin/mgetty -r ttyS0
6) Optional wenn man die Kernel Boot Meldungen sehen möchte,
   sollte man Folgende Zeilen zu /etc/lilo.conf hinzufuegen:

        serial=1,9600n8
        append="console=ttyS0 console=tty0"

6a) /etc/sysconfig/kuzu editieren

    SAFE=yes
9) Reboot des Hosts. Einen mit minicom oder Hyper Terminal angeschlossenen
   Client starten. Return drücken, bis der PROMPT erscheint.

TIPS:

Für Linux:
miterm -s 9600 -l /dev/ttyS0
Mitschneiden der Session:
script
miterm -s 9600 -l /dev/ttyS0
exit
Für Windows:
HyperTerminal 9600,8,N, 1
Hyper Terminal kann auch die Ausgabe mitschneiden.

HowTo Grub Repair

April 6th, 2011 von sdohn

So restauriert man den GRUB Bootloader::

Von einer z.B. RedHat Boot CD in ein Linux Booten
Am prompt "linux rescue" eintippen
mkdir /mnt/rootfs
mount /dev/sda3 /mnt/rootfs
mount /dev/sda1 /mnt/rootfs/boot
chroot /mnt/rootfs
grub
root(hd0,0)
setup(hd0)
quit

 

Eine Typische Grub Konfiguration könnte so aussehen::

#boot=/dev/hda
#default=1
#timeout=10
#serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
#terminal serial
#
#splashimage=(hd1,0)/grub/splash.xpm.gz
#title Red Hat Enterprise Linux AS (2.6.9-5.ELsmp)
#root (hd1,0)
#kernel /vmlinuz-2.6.9-5.ELsmp ro root=/dev/hdb3
#initrd /initrd-2.6.9-5.ELsmp.img
#
#title Red Hat Enterprise Linux AS (2.6.9-5.EL)
#       root (hd1,0)
#       kernel /vmlinuz-2.6.9-5.EL ro root=/dev/hdb3 console=ttyS0,9600n8 console=tty0
#       initrd /initrd-2.6.9-5.EL.img
#
#title Red Hat Enterprise Linux AS (2.6.9-5.EL)
#root (hd1,0)
#kernel /vmlinuz-2.6.9-5.EL ro root=/dev/hdb3
#initrd /initrd-2.6.9-5.EL.img
#
#title Red Hat Enterprise Linux AS-up (2.4.21-27.0.2.ELcustom)
#root (hd1,0)
#kernel /vmlinuz-2.4.21-27.0.2.ELcustom ro root=/dev/hdb3
#initrd /initrd-2.4.21-27.0.2.ELcustom.img
#
#title W2K
#rootnoverify (hd0,0)
#makeactive
#chainloader +1