Kernel kompilieren Vorgang Fedora: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
* | =Benötigte Pakete= | ||
*dnf groupinstall "Development Tools" | |||
*dnf install bc dwarves rsync kmod zstd elfutils-libelf-devel ncurses-devel openssl-devel | |||
<code>bc</code> und <code>dwarves</code> fehlen in den Entwicklungswerkzeugen und werden vom Bau gebraucht. | |||
=Vorbereitungen= | |||
*sudo -i | |||
*cd /usr/src | *cd /usr/src | ||
*wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6. | |||
*tar - | ==Quellcode herunterladen== | ||
*cd linux-6. | Aktuelle longterm-Versionen stehen auf https://www.kernel.org/ – zurzeit die Reihen 6.18, 6.12, 6.6 und 6.1. | ||
== Alte Konfiguration | |||
* | *wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.18.38.tar.xz | ||
* '' | *tar -xJf linux-6.18*.tar.xz | ||
= | *cd linux-6.18*/ | ||
* | |||
= Kernel und Module | ==Alte Konfiguration übernehmen== | ||
* | *cp /boot/config-$(uname -r) .config | ||
* ''' | *make olddefconfig | ||
= | |||
* '''make | ==Die Rocky-Besonderheiten abschalten== | ||
Die Konfiguration von Rocky verweist auf Zertifikatsdateien, die nur im RHEL-Paketbau existieren. Ohne diese Änderung bricht der Bau ab: | |||
*scripts/config --set-str SYSTEM_TRUSTED_KEYS "" | |||
*scripts/config --set-str MODULE_SIG_KEY "" | |||
Debug-Informationen abschalten – das ist der Unterschied zwischen rund 50 und rund 3 GByte Platzbedarf. <code>DEBUG_INFO</code> gehört zu einer Auswahlgruppe, in der genau ein Eintrag aktiv ist; der bisherige muss deshalb ausdrücklich mit deaktiviert werden: | |||
*scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT | |||
*scripts/config --enable DEBUG_INFO_NONE | |||
*make olddefconfig | |||
Kontrolle – es darf nur <code>CONFIG_DEBUG_INFO_NONE=y</code> übrig bleiben: | |||
*grep -E 'DEBUG_INFO' .config | grep -v '^#' | |||
==Einen eigenen Namen vergeben== | |||
*scripts/config --set-str LOCALVERSION "-xinux" | |||
=Kernel konfigurieren= | |||
*make menuconfig | |||
=Kernel und Module übersetzen= | |||
*make -j$(nproc) | |||
=Installieren= | |||
*make modules_install install | |||
Rocky legt die Bootmenü-Einträge einzeln unter <code>/boot/loader/entries/</code> ab. <code>make install</code> erzeugt sie zusammen mit der Initramfs selbst; ein Aufruf von <code>grub2-mkconfig</code> ist dafür nicht nötig. | |||
Kontrolle: | |||
*ls -l /boot/vmlinuz-* /boot/initramfs-* | |||
*ls -l /boot/loader/entries/ | |||
Fehlt die Initramfs, von Hand nachziehen: | |||
*dracut --force /boot/initramfs-6.18.38-xinux.img 6.18.38-xinux | |||
SELinux-Kontexte der neuen Dateien richtigstellen: | |||
*restorecon -Rv /boot /lib/modules/6.18.38-xinux | |||
=Neu starten und prüfen= | |||
*reboot | |||
*uname -r | |||
6.18.38-xinux | |||
Startet der neue Kernel nicht, wählt man im Bootmenü den alten Eintrag. Der bisherige Kernel bleibt vollständig erhalten. | |||
=Wieder entfernen= | |||
*rm -rf /lib/modules/6.18.38-xinux | |||
*rm -f /boot/vmlinuz-6.18.38-xinux /boot/initramfs-6.18.38-xinux.img /boot/System.map-6.18.38-xinux /boot/config-6.18.38-xinux | |||
*rm -f /boot/loader/entries/*6.18.38-xinux* | |||
'''Nur einen Kernel entfernen, unter dem man nicht gerade läuft''' – vorher mit <code>uname -r</code> prüfen. | |||
=Troubleshooting= | |||
;Fehler mit certs/rhel.pem oder ähnlichem | |||
Die Zertifikatsoptionen wurden nicht geleert: | |||
*scripts/config --set-str SYSTEM_TRUSTED_KEYS "" | |||
*scripts/config --set-str MODULE_SIG_KEY "" | |||
;Die Platte läuft voll | |||
*grep -E 'DEBUG_INFO' .config | grep -v '^#' | |||
Steht dort <code>CONFIG_DEBUG_INFO=y</code>, ist noch ein anderer Eintrag der Auswahlgruppe aktiv: | |||
*scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT | |||
*scripts/config --enable DEBUG_INFO_NONE | |||
*make olddefconfig | |||
;Der neue Kernel startet nicht | |||
Ist Secure Boot aktiv, lehnt die Firmware einen selbstgebauten, unsignierten Kernel ab. Prüfen: | |||
*mokutil --sb-state | |||
[[Kategorie:Systemanpassung]] | |||
Aktuelle Version vom 24. August 2026, 17:17 Uhr
Benötigte Pakete
- dnf groupinstall "Development Tools"
- dnf install bc dwarves rsync kmod zstd elfutils-libelf-devel ncurses-devel openssl-devel
bc und dwarves fehlen in den Entwicklungswerkzeugen und werden vom Bau gebraucht.
Vorbereitungen
- sudo -i
- cd /usr/src
Quellcode herunterladen
Aktuelle longterm-Versionen stehen auf https://www.kernel.org/ – zurzeit die Reihen 6.18, 6.12, 6.6 und 6.1.
- wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.18.38.tar.xz
- tar -xJf linux-6.18*.tar.xz
- cd linux-6.18*/
Alte Konfiguration übernehmen
- cp /boot/config-$(uname -r) .config
- make olddefconfig
Die Rocky-Besonderheiten abschalten
Die Konfiguration von Rocky verweist auf Zertifikatsdateien, die nur im RHEL-Paketbau existieren. Ohne diese Änderung bricht der Bau ab:
- scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
- scripts/config --set-str MODULE_SIG_KEY ""
Debug-Informationen abschalten – das ist der Unterschied zwischen rund 50 und rund 3 GByte Platzbedarf. DEBUG_INFO gehört zu einer Auswahlgruppe, in der genau ein Eintrag aktiv ist; der bisherige muss deshalb ausdrücklich mit deaktiviert werden:
- scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
- scripts/config --enable DEBUG_INFO_NONE
- make olddefconfig
Kontrolle – es darf nur CONFIG_DEBUG_INFO_NONE=y übrig bleiben:
- grep -E 'DEBUG_INFO' .config | grep -v '^#'
Einen eigenen Namen vergeben
- scripts/config --set-str LOCALVERSION "-xinux"
Kernel konfigurieren
- make menuconfig
Kernel und Module übersetzen
- make -j$(nproc)
Installieren
- make modules_install install
Rocky legt die Bootmenü-Einträge einzeln unter /boot/loader/entries/ ab. make install erzeugt sie zusammen mit der Initramfs selbst; ein Aufruf von grub2-mkconfig ist dafür nicht nötig.
Kontrolle:
- ls -l /boot/vmlinuz-* /boot/initramfs-*
- ls -l /boot/loader/entries/
Fehlt die Initramfs, von Hand nachziehen:
- dracut --force /boot/initramfs-6.18.38-xinux.img 6.18.38-xinux
SELinux-Kontexte der neuen Dateien richtigstellen:
- restorecon -Rv /boot /lib/modules/6.18.38-xinux
Neu starten und prüfen
- reboot
- uname -r
6.18.38-xinux
Startet der neue Kernel nicht, wählt man im Bootmenü den alten Eintrag. Der bisherige Kernel bleibt vollständig erhalten.
Wieder entfernen
- rm -rf /lib/modules/6.18.38-xinux
- rm -f /boot/vmlinuz-6.18.38-xinux /boot/initramfs-6.18.38-xinux.img /boot/System.map-6.18.38-xinux /boot/config-6.18.38-xinux
- rm -f /boot/loader/entries/*6.18.38-xinux*
Nur einen Kernel entfernen, unter dem man nicht gerade läuft – vorher mit uname -r prüfen.
Troubleshooting
- Fehler mit certs/rhel.pem oder ähnlichem
Die Zertifikatsoptionen wurden nicht geleert:
- scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
- scripts/config --set-str MODULE_SIG_KEY ""
- Die Platte läuft voll
- grep -E 'DEBUG_INFO' .config | grep -v '^#'
Steht dort CONFIG_DEBUG_INFO=y, ist noch ein anderer Eintrag der Auswahlgruppe aktiv:
- scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
- scripts/config --enable DEBUG_INFO_NONE
- make olddefconfig
- Der neue Kernel startet nicht
Ist Secure Boot aktiv, lehnt die Firmware einen selbstgebauten, unsignierten Kernel ab. Prüfen:
- mokutil --sb-state