Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

[How-To] Neustart ohne BIOS mit Kexec

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
6 posts • Page 1 of 1
Author
Message
LunX
Guru
Guru
User avatar
Posts: 391
Joined: Tue May 18, 2004 5:04 am
Location: Rastede
Contact:
Contact LunX
Website

[How-To] Neustart ohne BIOS mit Kexec

  • Quote

Post by LunX » Wed Nov 09, 2005 5:47 pm

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<<

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

2. Kexec installieren

Ganz einfach mit:

Code: Select all

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: Select all

kernel (hd0,0)/kernel-2.6.14 root=/dev/hda3 gentoo=nodevfs devfs=nomount
Mit kexec wird daraus:

Code: Select all

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: Select all

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: Select all

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.
Top
pom
Apprentice
Apprentice
User avatar
Posts: 212
Joined: Fri Aug 09, 2002 2:26 pm
Location: Magdeburg, Deutschland

  • Quote

Post by pom » Fri Nov 18, 2005 12:28 pm

Hallo,
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: Select all

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
Top
blu3bird
Retired Dev
Retired Dev
Posts: 619
Joined: Sat Oct 04, 2003 10:19 am
Location: Munich, Germany

  • Quote

Post by blu3bird » Sat Nov 19, 2005 9:51 pm

Hi,

überprüf mal ob
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
Top
LunX
Guru
Guru
User avatar
Posts: 391
Joined: Tue May 18, 2004 5:04 am
Location: Rastede
Contact:
Contact LunX
Website

  • Quote

Post by LunX » Mon Nov 28, 2005 10:19 am

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: Select all

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
Top
JoHo42
l33t
l33t
User avatar
Posts: 956
Joined: Sat Feb 14, 2004 10:35 pm
Location: Germany

  • Quote

Post by JoHo42 » Wed Feb 10, 2010 7:56 pm

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
Top
Josef.95
Advocate
Advocate
Posts: 4857
Joined: Mon Sep 03, 2007 9:46 am
Location: Germany

  • Quote

Post by Josef.95 » Fri Feb 19, 2010 1:02 pm

Nur zur Info:
Im aktuellen Kernel-2.6.32 (x86) unter "make menuconfig" zu finden
│ 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)
Top
Post Reply
  • Print view

6 posts • Page 1 of 1

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic