Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
A2 Manuelle Konfiguration des Kernels I
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
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Sat May 09, 2020 11:06 am    Post subject: A2 Manuelle Konfiguration des Kernels I Reply with quote

(Dieser Post ist Teil einer Installation-Anleitung. Falls nicht schon geschehen lies bitte: Installation Guide for Paranoid Dummies)



A.2 Manuelle Konfiguration des Kernels I.

Ich habe diesen Teil vom ersten und dritten Teil getrennt, weil er vermutlich der am längsten dauernde Part der Installation sein wird. Gleich vorweg: Versuche nicht im ersten Anlauf einen "perfekten" Kernel zu konfigurieren. Das dürfte kaum möglich sein und ist auch gar nicht notwendig. Das wichtigste für den Anfang ist, dass er überhaupt bootet. Wenn da der Sound noch nicht funktioniert, ist das kein Problem - das kann man alles nachholen (der Sound ist auch das häufigste Problem einer Kernel Konfiguration; wenn der nicht gleich auf Anhieb funktioniert bist Du in bester Gesellschaft und musst nicht gleich frustriert sein; bis jetzt haben wir aber noch jedes exotische Teil zum Laufen gebracht). Je öfter Du die Konfiguration des Kernels "aufsuchst", desto größer wird das Verständnis, wo, welche Teile, wie zusammen gehören.

Für den Anfang musst Du folgendes beachten:

1. Alles was der Kernel benötigt um seine Root-Partition zu finden MUSS fest in den Kernel eingebunden werden; also nicht als Modul ! Was das ist MÜSSEN wir also wissen.
2. Alles wovon wir wissen, dass wir es (immer) benötigen, binden wir nicht als Modul ein, sondern ebenfalls statisch. Das hilft später, die Übersicht nach einem "lsmod" zu bewahren; noch später (in B.2) werden wir das tun um einen monolithischen Kernel zu basteln.
3. Wenn wir nicht wissen, was wir vielleicht zusätzlich benötigen, aktivieren wir alle relevanten Module und prüfen nach einem Neustart welche geladen wurden. Je weniger Module wir aber (unnötigerweise) mitcompilieren, desto schneller wird unser "make all".
4. Wenn wir wissen, das wir etwas nicht brauchen, schmeissen wir es sofort raus.
5. Editiere niemals die .config manuell ! Mache Änderungen an der Kernel-Konfig NUR über "make menuconfig". Du kannst gerne in der .config nach den vorhandenen Einstellungen suchen; manuell ändern darfst Du nichts ! Nur Gucken - nicht anfassen ! Grund: Viele Parameter beeinflussen (=aktivieren) andere Parameter - meist sogar unsichtbare ! Wenn Du neugierig bist kannst Du Dir diese Unsichtbaren anzeigen lassen, indem Du "z" in der "make menuconfig" drückst. Drücke danach nochmal "z" (toggle-funktion) um diese Anzeige wieder auszuschalten. Du brauchst das nicht und sie würden Dich nur verwirren (sie sind bei mir auch ausgeschaltet; das brauchen nur die Kernel-Entwickler oder wenn Du etwas suchst, was bisher unsichtbar ist). Lese dazu auch nochmal den Post Nr. 7 dieses Threads ... ;-)

Wir werden erst in A.3 einen Reboot durchführen. Sollte dann Dein Kernel nicht "durch-booten", führe bitte erneut folgende Schritte aus (oder falls Du jetzt eine Pause machen willst, um morgen weiter zu machen und Du den PC ausschaltest):
Code:
- boot with amd64-minimal CD
# clear
# /etc/init.d/dhcpcd start
# mount /dev/sdXY /mnt/gentoo
# cd /mnt/gentoo
# mount -t proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# mount --bind /run /mnt/gentoo/run
# chroot /mnt/gentoo /bin/bash
# . /etc/profile
# mount /dev/sdXZ /boot

Bevor wir loslegen, sammeln wir einige Daten (EDIT 2020-08-27: Näheres siehe auch im nächsten Post dieses Threads):
Code:
# dmesg | grep "Intel(R)"
-> write family,model,stepping to a paper  :-)
# lspci -k
-> write all "Kernel driver in use: xxxx" to a paper
# lsmod | more
-> write all modules - except above - to a paper

Es gibt verschiedene Empfehlungen, von welcher Grundkonfiguration aus gestartet werden sollte. Meiner Meinung ist das einfachste, mit der mitgelieferten .config zu beginnen und kein "allmodconfig" oder anderes zu verwenden. Verwende auch oft die Hilfe. Meistens gibt es neben einer guten Erläuterung auch eine Empfehlung der Kernel-Entwickler. Wenn diese nicht ausreicht, kannst Du in der Linux Kernel Dokumentation weiterlesen: https://www.kernel.org/doc/html/latest/

Noch ein Wort zur Sicherheit: Je weniger Software Du nutzt, desto weniger potentielle Angriffsflächen bietet ein System. Das gilt auch für den Kernel, den wir deshalb so schlank wie möglich halten wollen. Das bedeutet: Wenn Du Dir unsicher bist, ob Du einen Parameter benötigst, dann lass es lieber weg. Wenn etwas fehlt, merkst Du das sofort - weil irgend etwas nicht funktionieren wird. ;-) Wenn Du aber etwas einbindest, was nie mehr benötigt wird, merkst Du das leider gar nicht mehr. Also: Im Zweifelsfall erstmal weg lassen oder nur als Modul <M> konfigurieren (wenn dies möglich ist).

Ein letztes Wort zum Aufwand einer manuellen Konfiguration: Ja, er ist - einmalig - sehr hoch ! Aber - Du sparst Dir in Zukunft sehr viel Ärger und Zeit, denn für alles was auch nur entfernt mit Sicherheit zu tun hat, musst Du doch wieder etwas im Kernel manuell konfigurieren (firewall, verschlüsselung, raid, ima, evm, u.v.w.m.). Die Vermutung mit der Verwendung von "genkernel" wäre man alle Sorgen los, ist leider (momentan) ein Trugschluß.

Es wird zwar empfohlen stable und unstable nicht zu mischen, es gibt aber Ausnahmen, z.B. sind alle Spiele unstable. Und es ist möglich den neuesten Kernel in einer stable Installation zu verwenden. Falls Du das nicht willst, musst Du nur das "ACCEPT-KEYWORDS..." weglassen (wir editieren später noch die /etc/portage/package.accept_keywords).

Edit 2021-03-02: Lies diesen Thread komplett durch und mache dann GEGEBENENFALLS JETZT gleich das was ich in Post Nr. 5 beschrieben habe.
Edit 2021-04-04: Der stable Kernel ist bei Gentoo nun auch von 5.4 auf 5.10 gehoben worden. Damit ist weder das ACCEPT_KEYWORDS noch Post Nr. 5 nötig, falls Du auf dem 5.10er bleiben willst (=meine Empfehlung). Nur wenn Du den allerneuesten haben willst, machst Du es wie hier beschrieben (ich lasse deshalb mal die Beschreibung unverändert).
Edit 2022-01-04: Der stable Kernel ist nun von 5.10 auf 5.15 gehoben worden und natürlich empfehle ich immer den neuesten stable, auch wenn ich selbst die zwei wichtigsten Neuerungen - ein Samba-Server im Kernel und ein neues NTFS - gar nicht benötige (bedeutet: wenn Du noch auf 5.10 bist, sollte ein Upgrade nicht so dringend sein).

Eine schöne Übersicht der derzeit verfügbaren Kernel Versionen liefert:
Code:
# eix gentoo-sources


Jetzt gehts aber wirklich weiter:
Code:
# ACCEPT_KEYWORDS="~amd64" emerge -pv gentoo-sources
# ACCEPT_KEYWORDS="~amd64" emerge -pv intel-microcode
# emerge -pv linux-firmware
# cd /usr/src/linux-5.xx.yy-gentoo
# make menuconfig

1. Als erstes müssen alle Teile die ein MUSS sind rein (siehe oben Punkt 1). Lies dazu:
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel
(nur lesen - nicht machen; einiges ist nicht mehr aktuell - anderes fehlt; z.B. findest Du die Option "IA32 Emulation" jetzt woanders -> siehe meine folgende Zusammenfassung)

Lass die vorhandene Default-Konfiguration unverändert, wenn nicht explizit in diesem Guide etwas anderes konfiguriert werden soll (also disable nichts, wenn es hier nicht steht; und enable nichts, wenn es hier nicht steht). Es kann sein, dass einiges bereits so konfiguriert ist, wie hier (oder den anderen Artikeln) beschrieben. Dann sehe das als Überprüfung an.

Edit 2021-09-24: Falls Du meinst auch den systemd support enabeln zu wollen (weil im AMD64-Handbuch steht: "It does not hurt to have support for both init systems enabled."), dann studiere vorher die Datei: /usr/src/linux/distro/Kconfig ... Du wirst dann feststellen, dass Du dann nicht mehr in der Lage sein wirst IPv6 disablen zu können, weil es nun hart aktiviert wurde. Glaub mir: Wir brauchen das nicht; Lass es einfach ...

Es gibt noch einen Vorteil wenn Du gleich immer in die Hilfe schaust: Du siehst den Namen des Moduls und kannst gleich beginnen in Deinen Listen (s.o. "Daten sammeln") diese wegzustreichen; dann hast Du später weniger zu tun ... ;-)

Wir haben keine 32-bit-Unterstützung oder Hibernation; also raus damit. Wir haben nur EXT4. Das folgende sollte deshalb genügen:
Code:
Gentoo Linux --->
[*] Gentoo Linux support
[*]   Linux dynamic and persistent device naming (userspace devfs) support
[*]   Select options required by Portage features
Support for init systems, system and service managers  --->
   [*] OpenRC, runit and other script based systems and managers
   [ ] systemd

General setup  --->
[*] Checkpoint/restore support
[*] Configure standard kernel features (expert users)

Processor type and features  --->
[*] Symmetric multi-processing support
[*] Machine Check / overheating reporting
[*]   Intel MCE Features
[ ]   AMD MCE Features
[*] EFI runtime service support
[*]   EFI stub support
[ ]     EFI mixed-mode support

Power management and ACPI options  --->
[ ] Hibernation (aka 'suspend to disk')
[*] ACPI (Advanced Configuration and Power Interface) Support

Binary Emulations  --->
[ ] IA32 Emulation
[ ] x32 ABI for 64-bit mode

Firmware Drivers  --->
EFI (Extensible Firmware Interface) Support  --->
   [*] EFI Variable Support via sysfs

[*] Enable the block layer --->
Partition Types --->
   [*] Advanced partition selection
   [*] EFI GUID Partition support

Device Drivers --->
Generic Driver Options --->
   [*] Maintain a devtmpfs filesystem to mount at /dev
   [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
SCSI device support  --->
   [*] SCSI disk support
HID support  --->
   -*- HID bus support
   <*>   Generic HID driver
   [*]   Battery level reporting for HID devices
   USB HID support  --->
         <*> USB HID transport layer
[*] USB support  --->
   [*]     xHCI HCD (USB 3.0) support
   [*]     EHCI HCD (USB 2.0) support
   [ ]     OHCI HCD (USB 1.1) support
   [*]     USB Mass Storage support

File systems --->
[ ] Second extended fs support
[ ] The Extended 3 (ext3) filesystem
[*] The Extended 4 (ext4) filesystem
[*]   Use ext4 for ext2 file systems
[*]   Ext4 POSIX Access Control Lists
[*]   Ext4 Security Labels
[ ] JBD2 (ext4) debugging support
[ ] Reiserfs support
[ ] JFS filesystem support
[ ] XFS filesystem support
[ ] GFS2 file system support
[ ] Btrfs filesystem support
DOS/FAT/NT Filesystems  --->
   [*] MSDOS fs support
   [*] VFAT (Windows-95) fs support
Pseudo Filesystems --->
   [*] /proc file system support
   [*] Tmpfs virtual memory file system support (former shm fs)
Native Language support --->
   (utf8) Default NLS Option
   [*]   Codepage 437 (United States, Canada)
   [*]   Codepage 850 (Europe)
   [*]   ASCII (United States)
   [*]   NLS ISO 8859-1  (Latin 1; Western European Languages)
   [*]   NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
   [*]   NLS UTF-8

In allen Links die ich Dir jetzt gebe ist nur der Teil für die Kernel Konfiguration wichtig (aber natürlich kannst Du gleich alles lesen ... für später).

Für Deine Festplatte (auch SSD) lies dies und konfiguriere so:
https://wiki.gentoo.org/wiki/HDD

Wenn Du eine NVMe-"Platte" hast, lies dies und konfiguriere so:
https://wiki.gentoo.org/wiki/NVMe

Falls Du KEINE heutzutage gebräuchliche SATA Festplatte hast (also z.B. PATA oder schlimmer), lies dies und konfiguriere so:
https://wiki.gentoo.org/wiki/Kernel/Gentoo_Kernel_Configuration_Guide#IDE_chipsets_and_DMA

Was man auch noch lesen kann (aber nicht unbedingt notwendig ist):
https://wiki.gentoo.org/wiki/Kernel/Gentoo_Kernel_Configuration_Guide

Speichere jetzt gleich die Konfiguration, damit Du einen definierten Stand hast, falls Du Dich später irgendwo vertust. Dann kannst Du nämlich die Konfiguration OHNE Sichern verlassen und von diesem Punkt aus neu starten (mit "make menuconfig").

Hast Du schon selbst den Unterschied zwischen [*] und -*- herausgefunden ? Falls nicht, lies das:
https://wiki.gentoo.org/wiki/Kernel/Configuration#Usage

Edit 2022-01-14: Hier hat @NeddySeagon kurz erläutert wie die Kernel-Module zur Ansteuerung der Festplatte aufeinander aufbauen:
https://forums.gentoo.org/viewtopic-p-8688524.html#8688524

2. MUSS: Konfiguriere Deine Grafikkarte anhand dieser Links (Hier findest Du auch die Werte für VIDEO_CARDS für Deine make.conf):
https://wiki.gentoo.org/wiki/Framebuffer
https://wiki.gentoo.org/wiki/Intel
- oder -
https://wiki.gentoo.org/wiki/Nouveau
- oder -
https://wiki.gentoo.org/wiki/AMDGPU
... und speichere ... :-)

3. MUSS: Konfiguriere als nächstes den Microcode anhand dieser Links und Deiner Daten auf Deinem ersten Blatt Papier:
https://forums.gentoo.org/viewtopic-t-1065464.html
(Das gleiche wird hier - aber natürlich viel verwirrender ;-) - auch erklärt: https://wiki.gentoo.org/wiki/Intel_microcode -> chapter: "NEW method without initram-fs/disk")
- oder-
https://wiki.gentoo.org/wiki/AMD_microcode
... und speichere ... :-)

4. MUSS:
a. Tastatur und Maus:
https://wiki.gentoo.org/wiki/Libinput
4b: Falls Du eine USB-Tastatur und/oder Maus hast, MUSST Du folgendes konfigurieren:
https://wiki.gentoo.org/wiki/USB/Guide
Hier aktivierst Du dann auch gleich "USB Mass Storage support" und ggf. "USB Printer support"

5. MUSS: Suche Deinen Ethernet-Treiber indem Du ein / im Hauptmenü eingibst. Danach gib den Modul-Namen aus Deinen Notizen von oben ein. Du erhältst ein "Defined at drivers/net/ethernet/....". Genau da gehst Du rein, aktivierst Dein Ethernet-Modul statisch mit [*] und löscht bei allen anderen Ethernet-Modulen das <M> raus (sofern vorhanden), da wir sonst keine anderen Ethernet-Module unnötigerweise mitcompilieren wollen.

6. MUSS: Mache Schritt Nr. 5 für alle übrig geblienen Module aus Deiner Abfrage mit "lspci -k" (einige hast Du ja vermutlich bereits gesetzt, wie z.B. vermutlich ahci) ... und speichere ... :-)

Falls Du ein hypermodernes Notebook haben solltest mit Gemeinheiten wie z.B. Tastatur-Anbindung über I2C, dann musst du gleich das noch machen (ansonsten kannst Du das auch später tun):

7. Mache Schritt Nr. 5 für alle Module aus Deiner "lsmod"-Abfrage (oder nur die, die nach I2C "riechen").

Das sollte vorerst genügen und Du kannst den Kernel gleich compilieren. Wenn Du in A.3 einen Neustart gemacht hast und somit weißt, dass dieser Kernel bootet, kannst Du in aller Ruhe weiter konfigurieren.

Folgendes gilt es - jetzt oder später - "abzuarbeiten":
------
- https://wiki.gentoo.org/wiki/ALSA (Hier findest Du auch die Werte für ALSA_CARDS für Deine make.conf)
- https://wiki.gentoo.org/wiki/Power_management/Processor Hier aktivierst Du: High Resolution Timer Support, Idle dynticks system und HPET Timer Support. Für neuere Intel-Prozessoren sollte ausschließlich P-State benutzt werden; für Desktops dann: Performance; für Notebooks: Powersave. Siehe auch ->
- https://wiki.gentoo.org/wiki/Power_management/Guide
- https://wiki.gentoo.org/wiki/System_time
- Für KDE Vaults (meine Empfehlung) benötigen wir: https://wiki.gentoo.org/wiki/Encfs
- Optional: https://wiki.gentoo.org/wiki/CDROM
- Optional: https://wiki.gentoo.org/wiki/Webcams und/oder https://wiki.gentoo.org/wiki/Motion
- Optional: Nur wenn Du mal einen unter Windows mit NTFS formattierten USB-Stick lesen möchtest: https://wiki.gentoo.org/wiki/NTFS
- (Höchst optional: https://wiki.gentoo.org/wiki/ECryptfs )

- Mache Schritt Nr. 5 für alle Module aus Deiner "lsmod"-Abfrage ... (die meisten dürften jedoch schon aktiviert sein).

- Zuletzt entferne alles, was definitiv nicht gebraucht wird. Bei mir z.B.: Alles mit IPv6, initramfs, serielle und paralelle Treiber, und alle INTEL_MEI-Module (lies in der Hilfe was das ist und ob Du das wirklich willst/brauchst ;-) ).
------

Nun compilieren wir den Kernel und installieren ihn automatisch nach /boot mittels "make install". Benutze beim Paramter "-j" die Anzahl der Kerne Deiner CPU (ich habe 8 ). Aufgrund meines Backup-Konzepts erstelle ich ein Verzeichnis in /etc und kopiere dort die Kernel-Konfiguration rein. Der "eselect kernel" verwaltet lediglich den soft-link von /usr/src/linux. (Du kannst das gerne immer überprüfen mit "ls -l /usr/src" )
Code:
# make -j 8
# make install
# make modules_install
# mkdir /etc/MY
# cp .config /etc/MY/config-X-Y-Z
# eselect kernel list
# eselect kernel set 1

Ausblick: Im zweiten Teil der manuellen Konfiguration des Kernels werden wir u.a. das umsetzen:
https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings

Vorläufiges Cheat Sheet - gültig ab erfolgreichen Reboot in A.3:
Code:
Neue Kernel-Version:
--------------------
# emerge -1uvDp gentoo-sources
# mount /boot
# cd /usr/src/linux-X.Y.Z-gentoo
# cp /usr/src/linux/.config .
# make oldconfig
# make -j 8
# make install
# make modules_install
# cp .config /etc/MY/config-X-Y-Z
# grub-mkconfig -o /boot/grub/grub.cfg
# eselect kernel list
# eselect kernel set
# umount /boot

Änderung der Konfiguration des bestehenden Kernels:
---------------------------------------------------
# mount /boot
# cd /usr/src/linux
# make menuconfig
# make -j 8
# make install
# make modules_install
# cp .config /etc/MY/config-X-Y-Z-revA
# grub-mkconfig -o /boot/grub/grub.cfg
# umount /boot


Edit 2021-11-14 aus aktuellem Anlass: Falls Du mal eine neue Version einspielen willst UND gleichzeitig die Konfiguration ändern willst, dann empfehle ich dringend das hintereinander zu machen (also zweimal reboot). Sollte es ein Problem geben, weißt Du sonst nicht, ob es an der neuen Version oder Deiner neuen Konfiguration liegt. Wenn Du es aber unbedingt gleichzeitig machen willst, dann gilt: Ein "make menuconfig" ersetzt NICHT ein "make oldconfig" ! (Es würden dann automatisch alle Defaults übernommen = nicht gut.) Das bedeutet, Du musst dann wirklich erst ein "make oldconfig" machen, bevor Du gleich danach über "make menuconfig" Deine Konfiguration änderst. (Oder umgekehrt: Du änderst in der alten Version die Konfig, kopierst die .config in die neue Version und machst dort dann Dein "make oldconfig")

P.S.: @Josef.95 hat in diesem Thread https://forums.gentoo.org/viewtopic-t-1133013-highlight-.html darauf hingewiesen, dass man sich das Umkopieren der alten .config sparen kann, wenn man ein "make oldconfig" macht. @mike155 meinte im gleichen Thread, dass das aber nicht immer funktionieren muss. Das ist ein Grund warum ich das Umkopieren der .config in diesem Cheat Sheet aufgeführt habe. Der zweite Grund ist: Wenn Du einen stub kernel (nach B.2) machst, wird es dann kein "make install" mehr geben. Dann MUSS eh wieder die .config manuell umkopiert werden (Du bekommst in B.2 aber eh wieder ein passendes Cheat Sheet).

P.P.S.: Es gibt einige Anleitungen, die zuerst den Soft-Link per "eselect kernel set X" umbiegen, dann in /usr/src/linux wechseln und dort alles nötige machen. Jetzt könnte man meinen, es ist doch egal wie ich vorgehe, hauptsache ich gehe in das richtige Verzeichnis und kopiere die alte .config vom richtigen Verzeichnis in das richtige. Warum gehe ich so vor, dass ich erst nach dem Erstellen des neuen Kernels den Soft-Link umbiege ? Weil es seltene Momente gibt, wo der neue Kernel nicht compiliert wird und der "make" abbricht ... denkst Du dann wirklich daran, dass Du in so einem Fall den Soft-Link wieder zurück biegen musst ? Wenn man wirklich sehr penibel sein will, dürfte man den Soft-Link eigentlich erst dann umbiegen, wenn der neue Kernel auch erfolgreich gebootet hat.


Weiter geht es in A.3


Last edited by pietinger on Wed Jan 26, 2022 9:49 am; edited 95 times in total
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Thu Aug 27, 2020 11:27 am    Post subject: Google Deine Hardware Reply with quote

Google Deine Hardware

1. Jeder Hersteller Deines Motherboards gibt Dir exakte Informationen über die verwendeten Chipsätze. Diese benötigst Du mindestens für Deine Soundkarte, da Du im Kernel den notwendigen Codec enabeln musst, Du diesen aber in keiner lspci-Abfrage siehst. Wenn Du für Deine Soundkarte vom Hersteller die Information "ALCxxxx" bekommst, weisst Du sofort, dass Du die "Realtek-Codecs" enabeln musst.

2. Die zweite Anlaufstelle ist "cateee.net". Mache diese Abfrage (das "n" ist wichtig):
Code:
# lspci -vn

und google dann nach "cateee" gefolgt von der achtstelligen ID-Nr. Beispiel von meiner Kiste:
Code:
[...]
00:1f.3 0403: 8086:a2f0
        Subsystem: 1458:a0b6
        Flags: bus master, fast devsel, latency 32, IRQ 138
        Memory at ef220000 (64-bit, non-prefetchable) [size=16K]
        Memory at ef200000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [50] Power Management version 3
        Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Kernel driver in use: snd_hda_intel
[...]

Meine Suche war dann nach: "cateee 8086:a2f0" ! Dort findest Du das benötigte Kernel-Modul.
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Tue Oct 20, 2020 11:59 am    Post subject: Check neue Kernel Version Reply with quote

Vielen Dank an @mike155 der hier https://forums.gentoo.org/viewtopic-p-8517143.html#8517143 diesen einfachen und genialen Tip gab, den ich einfach 1zu1 hier reinkopiere:

mike155 wrote:
In order to avoid mistakes building the kernel, I run
Code:
dmesg -t >dmesg-$(uname -r)

whenever I compile and boot a new kernel. After that, I compare the newly created dmesg file with the dmesg file of the previous kernel (diff). The diff quickly shows missing drivers, different setting or other issues. If I had modules enabled, I would probably also run 'lsmod >modules-$(uname -r)' whenever I compile and boot a new kernel - and compare the modules-files.

Ja, der Trick mit dem Parameter "-t" für dmesg war mir auch neu (man lernt nie aus).

Als KDE-User empfehle ich "Kompare" um die beiden Dateien zu vergleichen.

Habe ich eigentlich schon mal irgendwo erwähnt, dass man ruhig öfter mal in seine /var/log/messages schauen sollte ... ;-)
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Tue Nov 10, 2020 10:08 pm    Post subject: Schlanker Kernel ! Reply with quote

Aus aktuellem Anlass möchte ich noch einmal darauf hinweisen, warum es unter dem Gesichtspunkt der Sicherheit so wichtig ist, einen möglichst schlanken Kernel zu haben ... RAPL braucht kein privater User mit einem Desktop, sondern nur Server oder Mainframes - wenn überhaupt ...
Siehe aktuell: https://www.heise.de/news/Platypus-Sicherheitsluecke-missbraucht-Messfunktion-von-Intel-Prozessoren-4953484.html

Gerade kam ein Kernel-Update von 5.9.7 auf 5.9.8 herein, welches nur aus einem einzigen Patch besteht:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.9.y&id=b72aaa9506b38e68f3476a642d0e42b3071f82bb

Für mich kein Grund den sofort einzuarbeiten, denn ich habe:

# CONFIG_PERF_EVENTS_INTEL_RAPL is not set

... ich schreibe das einfach nur, weil es leider so oft die Meinung gibt, so viel wie möglich enabeln zu müssen ...

:-)
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Fri Feb 26, 2021 11:22 am    Post subject: Reply with quote

Warum habe ich einen Unstable-Kernel mit Dir installiert ?

Zu dem Zeitpunkt der Erstellung dieser Doku-Reihe waren im damaligen stable Kernel noch nicht alle benötigten Features. Diese haben wir jetzt aber in allen 5.9er und dem jetzigen 5.10er. Ich werde weiterhin zu Testzwecken den neuesten Kernel installieren, doch möglicherweise ist es für Dich sinnvoll auf einen LTS kernel zu gehen. Hier findest Du eine Übersicht der derzeitigen long term support kernels:
https://www.kernel.org/category/releases.html

Wenn Du also auf dem jetzigen 5.10.x bleiben willst, musst Du nur alle neueren Kernels maskieren:
Code:
# nano /etc/portage/package.mask

und dies ergänzen:
Code:
>=sys-kernel/gentoo-sources-5.11.0
>=sys-kernel/linux-headers-5.11


Bei der Gelegenheit möchte ich Dir auch noch zwei sehr nützliche Links mitgeben. Hier siehst Du was sich in den jeweiligen Hauptversionen ändert:
https://kernelnewbies.org/LinuxChanges

Und diesen Link besuche ich immer um zu prüfen ob ich wirklich jede Minor Version sofort installieren sollte (was nicht der Fall ist und ich deswegen schon mal eine oder zwei Minor Versionen überspringe):
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
(Klicke einfach auf die jeweilige "Branch" und Du bekommst eine Liste mit allen Patches; ich lese mir meist nur die Überschriften durch).


P.S.: Wenn Du Dir unsicher bist ob Du auf 5.10.x bleiben solltest, ein Hinweis von mir: Upgraden ist immer kein Problem. Wenn Du aber zurück willst und Du hast schon die Linux-Headers für beispielsweise 5.13 installiert UND einige Programme gegen diese Header-Dateien compiliert, dann ist der Weg zurück zu 5.10.x schon sehr mühselig, da Du dann alle diese Programme erneut gegen die Linux-Headers von 5.10 compilieren solltest/müsstest.

Lange Rede - kurzer Sinn: Ein Upgrade auf neuere Kernels ist immer problemlos möglich; ein Downgrade aber nicht so ohne weiteres !


Last edited by pietinger on Fri Apr 09, 2021 11:03 pm; edited 1 time in total
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Wed Mar 24, 2021 1:19 am    Post subject: Reply with quote

I want it all, I want it all, and I want it now
[(c) by Queen]

Du hast schon viel Erfahrung in der Konfiguration eines Kernels und willst auch alles aus diesem Guide umsetzen. Weil Du aber nicht X-mal in die Kernel Konfiguration rein willst, möchtest Du deswegen gleich mal alles auf einmal im Kernel konfigurieren.

Das wäre theoretisch möglich wenn Du wüsstest welche Netfilter-Module Du für Deine FireWall-Konfiguration brauchst (Du weisst ja sicherlich, dass je nach FW-Konfiguration unterschiedliche Netfilter-Module benötigt werden). Ehrlich - ich weiß selbst nicht auswendig welche benötigt/angezogen werden. Deshalb habe ich es auch tatsächlich so gemacht, dass ich erstmal alle mit [M] reingenommen habe, und nach dem Abarbeiten von B.1 mit "lsmod" geprüft habe, welche angezogen wurden. Meiner Meinung nach ist es deswegen nötig, dass Du mindestens zweimal in die Kernel Konfiguration rein gehst/musst ... Wie könnte man dabei vorgehen ?

Beim ersten Mal (also hier/jetzt bei der Initialen Kernel Konfig) kannst Du auf einen Schlag folgendes konfigurieren:

1. Alles von A.2 (= hier 1.Post)
2. Alle Netfilter-Module mit [M] reinnehmen (wie in B.1 beschrieben)
3. Falls Du für Dein Notebook B.4 machen möchtest, gleich die dortig beschriebene Kernel-Konfig
4. Das 1. Kapitel von C.2 (hilft auch gleich für B.2 und D.2)
5. Alles von B.2 ausser das Disabeln des Modules-Support. Der bleibt erstmal drin !
6. D.2 komplett (*)

Danach machst Du einfach Deine Grundinstallation nach A.3 weiter. Danach erledigst Du B.1 und weißt jetzt welche Netfilter-Module Du brauchst.

Zweiter Run: ;-)

1. Diese Netfilter-Module nimmst Du fest in den Kernel rein (und schmeißt die anderen unbenötigten raus).
2. Du disablest den Module Support und hast nun einen monolithischen Kernel
3. Den Rest von C.2


Als Experte erkennst Du sicherlich, dass einiges vom 1. Run in den 2. verschoben werden kann.

Minimum für den ersten wäre somit:

1. Die "MUSS" aus A.2
2. Alle Netfilter-Module mit [M] reinnehmen (wie in B.1 beschrieben)
3. Falls Du für Dein Notebook B.4 machen möchtest, gleich die dortig beschriebene Kernel-Konfig

Den Rest dann im zweiten Durchlauf ...


* Rückblickend muss ich feststellen, dass es einfacher (und damit sinnvoller) ist, zuerst D.AppArmor zu installieren und danach erst C.IMA zu machen. Das will ich Dir deshalb jetzt gleich empfehlen.



Ja ... für C.3 musst Du leider wirklich noch zweimal in die ... geht leider nicht anders ... Minimum ist deshalb 4 mal ...

.
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Mon Dec 27, 2021 7:30 pm    Post subject: Never edit .config Reply with quote

Folgendes muss ich einfach hier rüber kopieren, da ich es niemals so perfekt ausdrücken könnte wie unser @NeddySeagon:

Quote:
Horrible things happen if you use a text editor on the kernel .config file.
If you are lucky, you will get a kernel that won't build. If not, it may be broken in ways that nobody has ever seen before.

Use menuconfig and its search. Press /
If the symbol you want is not found, press the 'z' key to toggle the display of hidden symbols.
Search again.

The search will find it but you still can't select it. Read the help on the menu option.
Pay attention to the Depends on: That boolean expression must be true before the item can be selected.
Select other things so that your symbol can be selected.

Read the Selects: too. Now ask yourself if you would have got that right with your text editor?

The usual advice to someone who has used a text editor on the .config file is to throw it away and start it again.



(aus: https://forums.gentoo.org/viewtopic-p-8686380.html#8686380 )
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 1195
Location: Bavaria

PostPosted: Wed Jan 19, 2022 4:31 pm    Post subject: Update von 5.10.x auf 5.15.x Reply with quote

Update von 5.10.x auf 5.15.x

Heute hatte ich endlich mal Zeit dieses Update vorzunehmen. Die meisten neuen Optionen die beim "make oldconfig" abgefragt werden, sind mit "N" vorbelegt und können einfach mit <return> übernommen werden. Interessanterweise gab es zwei neue Optionen, die (im Hilfetext) von den Kernel Entwicklern empfohlen werden, als Default aber auch mit "N" vorbelegt sind. Ich bin dieser Empfehlung gefolgt und habe abweichend vom Default diese beiden enabled (den SimpleFB sollte man sowieso immer haben):
Code:
CONFIG_WERROR=y
CONFIG_SYSFB_SIMPLEFB=y


Daneben gibt es einige neue sicherheitsrelevante Optionen (mit Auswirkung auf die Performance). Bei zwei dieser Neuen möchte ich auf die Empfehlungen von KSPP warten und habe sie vorerst noch nicht enabled (also den Default "N" übernommen). Ich vermute aber stark, dass wir diese noch benötigen:
Code:
# CONFIG_SCHED_CORE is not set
# CONFIG_KFENCE is not set


Diese Optionen habe ich im Vorgriff auf zu erwartende KSPP-Empfehlungen jedoch schon heute aktiviert (da es dazu bereits Infos gibt):
Code:
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
CONFIG_ZERO_CALL_USED_REGS=y



(Der letzte Absschnitt müsste eigentlich nach B.2 da es das Thema "Hardening the Kernel" betrifft. Ich wollte es aber nicht auseinanderreißen.)
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