kernel kompiliert - bootloaderkonfiguration

S

supersucker

Foren Gott
hi,

hab mich an das howto von redlabour aus der howto-datenbank gehalten und den 2.6.15 kernel auf FC 4 selber kompiliert.

nach erfolgreichem


und

make dep && make bzImage && make modules && make modules_install

bin ich mir nun nicht ganz sicher wie ich meinen bootloader (grub) konfigurieren muss...


kopieren Sie nun den neuen Kernel nach /boot. Sie finden ihn unter /usr/
src/linux/arch/i386/boot/ mit dem Namen bzImage. Benennen Sie ihn am
besten dann auch gleich um zu z.B. vmlinuz-2.4.7-1. Die 1 am Ende soll
Ihnen helfen Ihre später vielleicht zahlreichen Versionen auseinander
halten zu können.

Also z.B.: cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-1

- Des weiteren müssen Sie noch die Datei System.map von /usr/src/linux/ nach /
boot kopieren. In boot gibt es schon eine System.map die meist ein Link auf
z.B. System.map-2.4.3 ist. Kopieren Sie die Datei dann entsprechend mit dem
Namen (z.B.) System.map-2.4.7 und erstellen / überschreiben Sie dann halt den
Link System.map zu dieser neuen Datei

Also z.B.: cp /usr/src/linux/System.map /boot/System.map-2.4.7
rm /boot/System.map (den Link entfernen)
ln -s /boot/System.map-2.4.7 /boot/System.map (neuen Link erstellen)

hab ich gemacht, aber dann:


Besser ist aber der Weg, die /etc/lilo.conf manuell zu bearbeiten. Die
Einstellungen vom aktuellen Kernel können Sie kopieren und dann entsprechend
ändern. Sollte ein Eintrag "vga" vorhanden sein, so löschen Sie ihn
Sicherheitshalber bei den neuen Einstellungen, da sonst Probleme beim booten
auftauchen können.

* Anschließend führen Sie noch in der Konsole /sbin/lilo aus. Wenn das ohne
Fehler funktioniert ist der neue Kernel einsatzbereit und kann gebootet
werden.
Anmerkung: Wenn sie nicht lilo sondern einen anderen Bootmanager
verwenden müssen Sie es im Prinzip genauso machen.

nun häng ich am ersten punkt, also die grub.conf zu konfigurieren

/boot sieht bei mir jetzt so aus:

Code:
drwxr-xr-x   3 root root    4096 Jan  7 06:35 .
drwxr-xr-x  23 root root    4096 Jan  7 13:42 ..
-rw-r--r--   1 root root   56991 Jun  3  2005 config-2.6.11-1.1369_FC4
drwxr-xr-x   2 root root    4096 Dec 12 18:16 grub
-rw-r--r--   1 root root 1108159 Nov 14 20:01 initrd-2.6.11-1.1369_FC4.img
lrwxrwxrwx   1 root root      17 Jan  7 06:35 System.map -> System.map-2.6.15
-rw-r--r--   1 root root  764778 Jun  3  2005 System.map-2.6.11-1.1369_FC4
-rw-r--r--   1 root root  912697 Jan  7 06:33 System.map-2.6.15
-rw-r--r--   1 root root 2255191 Jan  7 06:30 vmlinux-2.6.15
-rw-r--r--   1 root root 1639539 Jun  3  2005 vmlinuz-2.6.11-1.1369_FC4

vmlinux-2.6.15 ist der von mir erstellte kernel......

und meine grub.conf so:

Code:
[root@supersucker src]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/hdc2
#          initrd /boot/initrd-version.img
#boot=/dev/hdc
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
title Win2k
        rootnoverify (hd0,2)
        chainloader +1

deshalb nun zwei fragen:

1. unter boot befindet sich ja die initrd-2.6.11-1.1369_FC4.img, also für den alten kernel, benötige ich nicht auch eine image-datei für den neuen selber kompilierten kernel? weil ich finde unter /usr/src nichts dergleichen

2. wie muss ich die grub.conf anpassen? auch da steht ja was von der image-datei.....evtl mit diesem eintrag

Code:
title Fedora Core (2.6.15)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.15 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.11-1.1369_FC4.img


ergänzen?

also im wesentlichen weiss ich nicht wie dich grub.conf editieren muss und was es mit dieser image-datei auf sich hat.........

bin für jede hilfe dankbar........
 
Hi,
initrd ist die Initial Ramdisk. Ein Image was vorm mounten des Root-Filesystems in den Speicher geladen und gemountet wird. Darin befinden sich wichtige Module wie Treiber für deinen Harddisk-controller und deines Filesystems.
Du musst dir noch dir also auch noch eine initrd mit den Modulen des 2.6.15er Kernels erstellen:
"cd /boot"
"mkinitrd -k vmlinux-2.6.15 -i initrd-2.6.15"
mit "-k vmlinux-2.6.15" gibts du an für welchen Kernel die initrd erstellt wird, "-i initrd" gibt an wie die initrd benannt werden soll.
Welche module in die initrd geladen werden steht in der config-datei "/etc/sysconfig/kernel" (ich nutze SuSe, die config-datei kann bei dir eventuell woanders liegen). Alternativ kannst du auch per Kommandozeile die Module angeben die in die initrd geladen werden sollen z.B.
"mkinitrd -k vmlinux-2.6.15 -i initrd-2.6.15 -m ext3 -m piix -m ata-piix" - Hier wird eine initrd mit ext3 FS-Support und Intel Harddiskcontrolern erstellt, Abhängigkeiten werden automatisch über die modules.dep erkannt und mit in die initrd geladen.

Als letztes noch deine grub.conf. Du kannst den Eintrag deines bestehenden Kernels einfach kopieren und die Pfade zum Kernel und der initrd einfach ändern.
Mach aber auf jeden Fall einen zusätzlichen Eintrag, damit du immer auf deinen funktionierenden Kernel zurückgreifen kannst:

title Fedora Core (2.6.15)
root (hd0,1)
kernel /boot/vmlinuz-2.6.15 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.15


Gruß
Paule
 
hi,

also erst mal danke für die erklärung.

leider klappt ein

mkinitrd -k vmlinux-2.6.15 -i initrd-2.6.15

bei mir nicht

Code:
[root@supersucker ~]# mkinitrd -k vmlinux-2.6.15 -i initrd-2.6.15
usage: mkinitrd [--version] [-v] [-f] [--preload <module>]
       [--omit-scsi-modules] [--omit-raid-modules] [--omit-lvm-modules]
       [--with=<module>] [--image-version] [--fstab=<fstab>] [--nocompress]
       [--builtin=<module>] [--nopivot] <initrd-image> <kernel-version>

       (ex: mkinitrd /boot/initrd-2.2.5-15.img 2.2.5-15)

der befehl mkinitrd auf meinem system kennt die von dir geschriebenen schalter "-k" und "-i" nicht.
sollten wir zwei unterschiedliche versionen von mkinitrd haben?

[root@supersucker ~]# man mkinitrd | cat
MKINITRD(8) MKINITRD(8)



NAME
mkinitrd - creates initial ramdisk images for preloading modules

SYNOPSIS
mkinitrd [--version] [-v] [-f]
[--preload=module] [--omit-scsi-modules]
[--omit-raid-modules] [--omit-lvm-modules]
[--with=module] [--image-version]
[--fstab=fstab] [--nocompress]
[--builtin=module] [--nopivot]
image kernel-version


DESCRIPTION
mkinitrd creates an initial image used by the kernel for preloading the
block device modules (such as IDE, SCSI or RAID) which are needed to
access the root filesystem. mkinitrd automatically loads filesystem
modules (such as ext3 and jbd), IDE modules, all scsi_hostadapter
entries in /etc/modprobe.conf, and raid modules if the system’s root
partition is on raid, which makes it simple to build and use kernels
using modular device drivers.

Any module options specified in /etc/modprobe.conf are passed to the
modules as they are loaded by the initial ramdisk.

The root filesystem used by the kernel is specified in the boot config-
uration file, as always. The traditional root=/dev/hda1 style device
specification is allowed. If a label is used, as in root=LABEL=rootPart
the initrd will search all available devices for an ext2 or ext3
filesystem with the appropriate label, and mount that device as the
root filesystem.


OPTIONS
--builtin=module
Act as if module is built into the kernel being used. mkinitrd
will not look for this module, and will not emit an error if it
does not exist. This option may be used multiple times.


-f Allows mkinitrd to overwrite an existing image file.


--fstab=fstab
Use fstab to automatically determine what type of filesystem the
root device is on. Normally, /etc/fstab is used.


--image-version
The kernel version number is appended to the initrd image path
before the image is created.


--nocompress
Normally the created initrd image is compressed with gzip. If
this option is specified, the compression is skipped.


--nopivot
Do not use the pivot_root system call as part of the initrd.
This lets mkinitrd build proper images for Linux 2.2 kernels at
the expense of some features. In particular, some filesystems
(such as ext3) will not work properly and filesystem options
will not be used to mount root. This option is not recommended,
and will be removed in future versions.


--omit-lvm-modules
Do not load any lvm modules, even if /etc/fstab expects them.


--omit-raid-modules
Do not load any raid modules, even if /etc/fstab and
/etc/raidtab expect them.


--omit-scsi-modules
Do not load any scsi modules, including ’scsi_mod’ and ’sd_mod’
modules, even if they are present.


--preload=module
Load the module module in the initial ramdisk image. The module
gets loaded before any SCSI modules which are specified in
/etc/modprobe.conf. This option may be used as many times as
necessary.


-v Prints out verbose information while creating the image (nor-
mally the mkinitrd runs silently).


--version
Prints the version of mkinitrd that’s being used and then exits.


--with=module
Load the modules module in the initial ramdisk image. The module
gets loaded after any SCSI modules which are specified in
/etc/modprobe.conf. This option may be used as many times as
necessary.


FILES
/dev/loop* A block loopback device is used to create the
image, which makes this script useless on systems
without block loopback support available (only used
on kernels < 2.6)

/etc/modprobe.conf Specifies SCSI modules to be loaded and module
options to be used.

/etc/modules.conf Specifies SCSI modules to be loaded and module
options to be used. (only used on kernels < 2.6)


SEE ALSO
fstab(5), insmod(1), kerneld(8), lilo(8)

ja, irgendwie komm ich jetzt nicht weiter, mir ist nicht wirklich klar mit welchen optionen ich nun diesen befehl aufrufen muss, damit was funktionierendes rauskommt........

bin für jeden tip dankbar.......
 
Hallo
Es wäre sehr nützlich, wenn du uns mal sagen würdest welche Linux Distribution du verwendest.
Da gibt es nämlich nicht zu vernachlässigende Unterschiede.

Du brauchst ein Initrd nur, wenn du die wichtigsten Kernelbestandteile nicht fest im Kernel installiert hast.
Wenn z.B. deine zu bootende Partition ext3 ist, dann ist es günstig die Unterstützung für ex3 nicht als Modul, sondern fest einzubauen.

mkinitrd creates an initial image used by the kernel for preloading the
block device modules (such as IDE, SCSI or RAID) which are needed to
access the root filesystem. mkinitrd automatically loads filesystem
modules (such as ext3 and jbd), IDE modules, all scsi_hostadapter
entries in /etc/modprobe.conf, and raid modules if the system’s root
partition is on raid, which makes it simple to build and use kernels
using modular device drivers.
Das sagt doch alles was du wissen musst.

Ob du nun ein initrd brauchst, musst du selbst wissen.
Was genau verstehst du nicht, was du aus der Manpage gepostet hast?

Gruß Wolfgang
 
hi,

Es wäre sehr nützlich, wenn du uns mal sagen würdest welche Linux Distribution du verwendest.

hab ich am anfang des ersten post:

hab mich an das howto von redlabour aus der howto-datenbank gehalten und den 2.6.15 kernel auf FC 4 selber kompiliert.


Ob du nun ein initrd brauchst, musst du selbst wissen.
Was genau verstehst du nicht, was du aus der Manpage gepostet hast?

das war es was ich nicht verstanden hatte, nach paul99 kommentar klang das für mich so als müsste man jedesmal eine initialramdisk erstellen. ich hatte mich dann gewundert, warum dieser punkt in den anderen tutorials die ich über kernel kompilieren gelesen hatte, nie aufgetaucht ist.
und nach dem lesen der man-page ist mir nicht wirklich klar gewesen ob ich das nun brauche oder nicht........
ich hätte einen satz wie:

"wenn filesystem und festplattentreiber fest im kernel eingebaut ist, braucht man keine ramdisk"

oder so ähnlich in der manpage sinnvoll gefunden.
ok, es sollte eigentlich auch so klar sein, aber das dies mein erster versuch einen selbst gebauten kernel zum laufen zu bringen war ich mir halt nicht sicher und wollte nix falsch machen.


Du brauchst ein Initrd nur, wenn du die wichtigsten Kernelbestandteile nicht fest im Kernel installiert hast.
Wenn z.B. deine zu bootende Partition ext3 ist, dann ist es günstig die Unterstützung für ex3 nicht als Modul, sondern fest einzubauen.

ah, ok, sowohl festplattentreiber als auch die dateisysteme hab ich fest in den kernel kompiliert, demzufolge müsste ich mir das mit der ramdisk sparen können, werd ich gleich mal testen ob das jetzt so läuft.....

danke für die hilfe soweit.......
 

Ähnliche Themen

OpenJDK8 unter Debian7.11/sparc64/kernel 3.16 kompilieren

X startet nichtmehr

xrandr: cant open display

Endlosschleife /var/named/chroot

openSUSE 12.2 - Kann Kernel nicht vorbereiten / kompilieren

Zurück
Oben