Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[How-To] Neustart ohne BIOS mit Kexec
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
LunX
Guru
Guru


Joined: 18 May 2004
Posts: 391
Location: Rastede

PostPosted: Wed Nov 09, 2005 5:47 pm    Post subject: [How-To] Neustart ohne BIOS mit Kexec Reply with quote

Vorweg

neuerdings gibt es ein neues Tool im Kernel das für große Server wohl am sinnvollsten ist aber ich finds auch für den kleinen Benutzer recht nützlich.
Den kexec Patch gibt es schon seit ein paar Jahren evtl. kennen den schon einige von euch. Das Prinzip ist einfach. Ihr Baut wie gewohnt euren Kernel dann ruft ihr kexec auf, dieser parkt den neuen Kernel im Hauptspeicher. Wenn dann der Reboot kommt überschreibt kexec den Code des zuletzt aktiven Kernels mit dem des neuen Kernel und übergibt dann die Kontrolle dem neuen Kernel der darauf hin startet. Die Schritte dorthin sind nicht allzuschwer und sollten schnell gemacht sein.


1. Kernel Anpassen

Kexec ist ab dem 2.6.13 Kernel verfügbar also stellt sicher das ihr einen aktuellen Kernel habt und kontrolliert ob folgende Optionen im Kernel Aktive sind:

CONFIG_KEXEC=y
zu finden unter >>Prozessor type and features<<.

CONFIG_PHYSIKAL_START=0x100000
ebenfalls unter >>Prozessor type and features<< zu finden evtl. muss es per Hand in der .config auf "y" gesetzt werden.

CONFIG_SYSFS=y
Unter >>Pseudo filesystems<<[i]

Den Kernel wie üblich bauen und einmal rebooten da der aktuelle Kernel Kexec noch nicht kennt.

[i]2. Kexec installieren


Ganz einfach mit:
Code:
emerge sys-apps/kexec-tools


3. Kernel Parken

Dann ist alles vorbereitet und wir können den neuen Kernel Parken.
Wenn ihr grub benutzt dann sieht eure config in etwa so aus:
Code:
kernel (hd0,0)/kernel-2.6.14 root=/dev/hda3 gentoo=nodevfs devfs=nomount

Mit kexec wird daraus:
Code:
kexec -l /boot/kernel-2.6.14 --append="root=/dev/hda3 gentoo=nodevfs devfs=nomount"

Wenn ihr diesen Befehl ausgeführt habt wurde ein Kernel im Hauptspeicher gespeichert.
Habt ihr eine RAM-Disk könnt ihr diese mit --initrd=/boot/initrd.img-2.6.14 hinten dranhängen.

4. Kernel starten

Der Kernel wurde geparkt und ist nun bereit zum neustarten. Das geht auch ganz einfach mit:
Code:
kexec -e

Nun müsste euer neuer Kernel wie gewöhnlich booten nur ohne dem Umweg über das Bios :D

5. Tipps & Tricks

Ich hab mir die sache etwas einfacher gemacht. Wenn ich den Kernel gebaut habe kopiere ich ihn nicht erst sondern Boote ihn erstmal über kexec.
Sollte was mit dem Kernel nicht OK und das System startet nicht mehr muss ich eh neustarten so hab ich dann meinen alten Kernel ja noch, sollte es klappen kann ich den neuen Kernel immer noch in meinen Bootloader packen. Dazu habe ich mir in /etc/init.d/ die Datei kexec.sh erstellt und mit folgendem Inhalt gefüllt:
Code:
boot=$(</proc/cmdline)
kexec -l /usr/src/linux/arch/i386/boot/bzImage --append="$boot"
kexec -e

Die Datei braucht noch eben die passenden Rechte und fertig.
Das Script parkt den Kernel aus /usr/src/linux/arch/i386/boot/bzImage und holt sich die boot Informationen womit der aktuelle Kernel gebootet wurde.
Danach startet es den geparkten Kernel.

6. Anders Gentoo booten

Es ist auch möglich mit kexec einen Kernel von einem anderen Gentoo-System zu "parken" und dann zu starten.

Quellen
Linux Magazin 12/05 S. 106


Last edited by LunX on Mon Nov 28, 2005 10:31 am; edited 2 times in total
Back to top
View user's profile Send private message
pom
Apprentice
Apprentice


Joined: 09 Aug 2002
Posts: 212
Location: Magdeburg, Deutschland

PostPosted: Fri Nov 18, 2005 12:28 pm    Post subject: Reply with quote

Hallo,

Quote:
CONFIG_PHYSIKAL_START=0x100000
ebenfalls unter >>Prozessor type and features<< zu finden.


ich habe die gentoo-sources-2.6.14-r2 installiert und da gibt es die Option nicht.
Leider kommt beim Aufruf folgenden ERROR:

Code:
kexec -l /boot/kernel-2.6.14-gentoo-r2 --append "root=/dev/hda5 video=matroxfb:vesa:0x11b,depth:32"
Undefined symbol: _GLOBAL_OFFSET_TABLE_


Fehlt was?

Gruß
POM
Back to top
View user's profile Send private message
blu3bird
Retired Dev
Retired Dev


Joined: 04 Oct 2003
Posts: 613
Location: Munich, Germany

PostPosted: Sat Nov 19, 2005 9:51 pm    Post subject: Reply with quote

Hi,

überprüf mal ob
Quote:
CONFIG_PHYSIKAL_START=0x100000

in /usr/src/linux/.config drin steht.

Ich finde es nämlich bei menuconfig auch nicht, vermutlich hat es da einen anderen Namen.

(Mit 2.4.12-nitro2)


Ansonsten prima HowTo :D

[edit]
Woran kanns denn liegen, wenn der Rechner bei kexec -e einfriert?
Also Festplatte ist für ein paar Sekunden aktiv, dann blinkt der Bildschirm einmal und dann passiert nichts mehr.
[/edit]

Gruss :D
Back to top
View user's profile Send private message
LunX
Guru
Guru


Joined: 18 May 2004
Posts: 391
Location: Rastede

PostPosted: Mon Nov 28, 2005 10:19 am    Post subject: Reply with quote

Wenn ich aus X "kexec -e" ausgeführe friert er auch ein in der Konsole kann es sein das ein Restbild dableibt einfach mal zwischen den Konsolen Switchen STRG+ALT+FX dann muesste es eigentlcih gehen.

Code:
CONFIG_PHYSIKAL_START=0x100000
ebenfalls unter >>Prozessor type and features<< zu finden.

Hatte ich in der .config ein y nachgetragen danach war es in der menuconfig auch vorhanden.


gruß
lunx
Back to top
View user's profile Send private message
JoHo42
l33t
l33t


Joined: 14 Feb 2004
Posts: 956
Location: Germany

PostPosted: Wed Feb 10, 2010 7:56 pm    Post subject: Reply with quote

Hi Leute,

habe das mit dem kexec auch ausprobiert.
Das ganze mit dem Kernel 2.6.31-gentoo-r6 und der kexec Version 2.0.0-r1.
Das mit dem booten klapt auch ganz gut, allerdings ist meine Soundkarte nach dem booten mit kexec tot.
Hat jemand aehnliche Erfahrungen?

Gruss Joerg
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 4509
Location: Germany

PostPosted: Fri Feb 19, 2010 1:02 pm    Post subject: Reply with quote

Nur zur Info:
Im aktuellen Kernel-2.6.32 (x86) unter "make menuconfig" zu finden
Quote:
│ Symbol: PHYSICAL_START [=0x1000000] │
│ Prompt: Physical address where the kernel is loaded │
│ Defined at arch/x86/Kconfig:1496 │
│ Depends on: EMBEDDED [=n] || CRASH_DUMP [=n] │
│ Location: │
│ -> Processor type and features
(Beachtet das "C" statt des "K" in PHYSICAL_START)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum