View previous topic :: View next topic |
Author |
Message |
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Sat May 09, 2020 11:06 am Post subject: A2 Manuelle Konfiguration des Kernels I |
|
|
(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 statisch = 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 ebenso nicht als Modul ein, sondern 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 ...
Edit 2022-03-28: In diesem kurzen Artikel beschreibt @NeddySeagoon den Boot-Prozess einfach und verständlich. Lese es wenn Du noch nie einen Kernel konfiguriert hast:
https://wiki.gentoo.org/wiki/User:NeddySeagoon/PC_Boot_Process
(Wir benötigen kein initrd/initramfs weil wir unserem Kernel alles mitgeben, was er benötigt um seine Root-Partition zu finden)
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
# 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 :-)
# dmesg | grep firmware
-> notice all firmware files
# 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ß.
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 Kernel aus der neuesten LTS-Serie, 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).
Edit 2023-02-23: Der stable Kernel ist vor einigen Tagen von 5.15 auf 6.1 gehoben worden. Mein Update findest Du im 11. Post dieses Threads. Du kannst alle hier unten aufgeführten Einstellungen des 5.15er benutzen, mit einer Ausnahme: "Choose SLAB allocator" wurde verschoben von "General Setup" nach "Memory Management options"; ist aber auch nochmal beschrieben.
Eine schöne Übersicht der derzeit verfügbaren Kernel Versionen liefert (die stable Versionen sind Grün):
Code: | # eix gentoo-sources |
Es wird zwar empfohlen stable und unstable nicht zu mischen, es gibt aber Ausnahmen, z.B. sind eh' alle Spiele unstable. Und es ist möglich den neuesten Kernel in einer stable Installation zu verwenden. Wir installieren aber erstmal den stable Kernel.
Jetzt gehts aber wirklich weiter:
Code: | # 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 |
Edit 2023-02-19: Bis gestern war die "Manuelle Installation" des Kernels die Default Methode im AMD64 Handbuch. Jetzt ist es "nur noch" eine alternative Methode. Unten stehender Link müsste also jetzt angepasst werden, auf: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel#Alternative:_Manual_configuration
Weil Du es aber sowieso nur lesen sollst, habe ich es unverändert gelassen:
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 -> 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. Sobald Du mehr Erfahrung bei der Konfiguration Deines Kernels hast und dann weißt was Du tust, wirst Du diese Anweisung erfolgreich ignorieren, und dann auch Dinge wie z.B. I2C und GPIO disabeln, wenn Du diese gar nicht benötigst. Erfahrung benötigt halt seine Zeit; den "perfekten" Kernel wirst Du dann aber irgendwann sicher haben.
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 ...
Edit 2023-03-25: Ich habe das unten stehende komplett überarbeitet. Lese es nur und gehe dann in diese Wiki Seite:
https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Manual_kernel_configuration
-------------------------------------------
Edit 2023-02-23: Hier findest Du für den Kernel Version 6.1.x den SLAB allocator:
Code: | Memory Management options --->
SLAB allocator options --->
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->
(X) SLUB (Unqueued Allocator)
[*] SLUB per cpu partial cache |
Edit 2023-03-12: Außerdem ist in 6.1 dies eine Ebene tiefer verschoben worden: Wenn Du eine einigermaßen moderne CPU hast ("lscpu" zeigt Dir "pclmulqdq" and "sse4_2") enable das:
Code: | Cryptographic API --->
Accelerated Cryptographic Algorithms for CPU (x86) --->
[*] CRC32c (SSE4.2/PCLMULQDQ)
[*] CRC32 (PCLMULQDQ) |
Folgendes kannst Du für 5.15.x und 6.1.x verwenden:
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
[ ] Kernel Self Protection Project --->
[*] Print firmware information that the kernel attempts to load
General setup --->
[*] Compile the kernel with warnings as errors
Checkpoint/restore ist inzwischen nicht mehr zwingend nötig; es ist aber nicht verkehrt es zu enabeln
[*] Checkpoint/restore support
[ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support
[*] Configure standard kernel features (expert users)
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->
(X) SLUB (Unqueued Allocator)
Processor type and features --->
[*] Symmetric multi-processing support
If you have an AMD or INTEL NOTEBOOK; dont enable for a desktop mainboard (only one of them)
[?] Intel Low Power Subsystem Support
[?] AMD ACPI2Platform devices support
Enable this in every case for a INTEL or AMD system (only one of them)
[*] Supported processor vendors --->
[?] Support Intel processor
[?] Support AMD processors
[*] Machine Check / overheating reporting
Enable this in every case for an INTEL or AMD system (only one of them)
[?] Intel MCE Features
[?] AMD MCE Features
[ ] Enable 5-level page tables support
[*] EFI runtime service support
[*] EFI stub support
[ ] EFI mixed-mode support
vsyscall table for legacy applications (None) --->
[ ] Enable the LDT (local descriptor table)
Bus options (PCI etc.) --->
[*] Support mmconfig PCI config space access
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
[*] Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
[*] PC BIOS (MSDOS partition tables) support
[*] 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
Firmware Drivers --->
EFI (Extensible Firmware Interface) Support --->
[*] EFI Variable Support via sysfs
SCSI device support --->
[*] legacy /proc/scsi/ support
[*] SCSI disk support
This is for my Intel CPU:
[*] Hardware Monitoring support --->
[*] Intel Core/Core2/Atom temperature sensor
Graphics support --->
Console display driver support --->
[*] Framebuffer Console support
HID support --->
-*- HID bus support
[*] Battery level reporting for HID devices
[*] /dev/hidraw raw HID device support
[*] Generic HID driver
USB HID support --->
[*] USB HID transport layer
[*] /dev/hiddev raw HID device support
[*] USB support --->
[*] Support for Host-side USB
[*] PCI based USB host interface
[*] USB announce new devices
[*] Enable USB persist by default
[*] USB Monitor
[*] xHCI HCD (USB 3.0) support
If you have an old USB 2.0 or 1.1; look into your list from: "lspci -k"; if you dont find any module named ehci, ohci or uhci you dont have it !
[?] EHCI HCD (USB 2.0) support
[?] OHCI HCD (USB 1.1) support
[?] UHCI HCD (most Intel and VIA) support
[*] USB Mass Storage support
[*] USB Attached SCSI
This is for my Intel CPU; choose AMD IOMMU support for an AMD CPU:
[*] IOMMU Hardware Support --->
IOMMU default domain type (Translated - Strict) --->
[ ] AMD IOMMU support
[*] Support for Intel IOMMU using DMA Remapping Devices
[*] Support for Shared Virtual Memory with Intel IOMMU
[*] Enable Intel DMA Remapping Devices by default
[*] Enable Intel IOMMU scalable mode by default
[*] Support for Interrupt Remapping
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 @NeddySeagoon 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 beiden Links:
2.a. https://wiki.gentoo.org/wiki/Framebuffer UND einen dieser folgenden Links:
Falls Du noch nie eine Kernel konfiguriert hast, lies VORHER dieses kurze Kapitel zum Verständnis (auf englisch):
https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Manual_kernel_configuration#Driver_needs_Firmware
2.b. Hier findest Du auch die Werte für VIDEO_CARDS für Deine make.conf.
https://wiki.gentoo.org/wiki/Intel
- oder -
https://wiki.gentoo.org/wiki/Nouveau
- oder -
https://wiki.gentoo.org/wiki/Radeon
- 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: Tastatur und Maus:
https://wiki.gentoo.org/wiki/Libinput
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 ... - zumindest für alle Module die der Kernel unbedingt benötigt um seine Root Partition zu finden (Sound ist jetzt noch nicht so wichtig ). Falls Du z.B. das Modul "vmd" findest, dann musst Du das unbedingt enabeln:
Code: | Device Drivers --->
[*] PCI support --->
PCI controller drivers --->
[*] Intel Volume Management Device Driver |
(war hier ein Problem: https://forums.gentoo.org/viewtopic-t-1156306-highlight-.html )
Falls das Modul thunderbolt in Deiner lspci-Abfrage auftaucht (weil Du einen USB-C hast) und Du dieses mit / suchst, wirst Du leider nur "INTEL_WMI_THUNDERBOLT" finden. Dies ist aber das falsche; das Modul thunderbolt ist hier versteckt:
Code: | Device Drivers --->
[*] Unified support for USB4 and Thunderbolt ---> |
Enable bitte nur das und enable auf keinen Fall "write by debugfs" in diesem Submenu !
Bezüglich der Sicherheit lies das hier: https://docs.kernel.org/admin-guide/thunderbolt.html
7. Kein MUSS - aber mehr als nur sinnvoll: Falls Du eine "High-end-CPU" mit vielen logischen Kernen hast, überprüfe diese Einstellung und ändere es ab auf die Anzahl Deiner logische Kerne. Wenn Du "nur" eine CPU mit 8 Kernen hast, ist eine Anpassung ebenfalls sinnvoll, WEIL es dem Kernel Hauptspeicher (RAM) spart (bei mir steht da also eine 8 drin für meinen Intel i7).
Code: | Processor type and features --->
[ ] Enable Maximum number of SMP Processors and NUMA Nodes
(15) Maximum number of CPUs |
(wurde hier gefunden: https://forums.gentoo.org/viewtopic-p-8744767.html#8744767 )
8. Kein MUSS - nur ein Hinweis: Falls Du ein hypermodernes Notebook haben solltest mit Gemeinheiten wie z.B. Touchpad-Anbindung über I2C, dann lese doch auch gleich Post Nr. 9 dieses Threads; lies dann auch gleich hier weiter und kombiniere das mit dem Schritt (Y) !
Das sollte vorerst genügen und Du kannst den Kernel jetzt gleich compilieren. Wenn Du dann 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 )
(Y) Mache Schritt Nr. 5 für alle Module aus Deiner Abfrage mit lsmod ... (die meisten dürften jedoch schon aktiviert sein).
(Z) wie: 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 Es gibt inzwischen einige Notebooks die (leider) INTEL_MEI zwingend benötigen damit der Sound und/oder das Touchpad funktioniert. Wenn Du also ein Noetbook hast, lass' es erstmal drin und mache alles für Deinen Sound und Touchpad (Post Nr. 9 von hier). Danach kannst Du es testweise disabeln und prüfen ob Dein Sound und das Touchpad immer noch funktioniert. Ich habe an meinem Desktop-Rechner ebenso verzichtet (weil unbenutzt) auf PCH LPC, GPIO, i2C, pinctrl und SMBUS.
Falls Du einen hochauflösenden Monitor (4K) hast und Dir die Ausgabe im Terminal zu klein ist, kannst Du einen größeren Font wählen:
Code: | Library routines --->
[*] Select compiled-in fonts
[*] Terminus 16x32 font (not supported by all drivers) |
-------------------------------------------
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 _________________ https://wiki.gentoo.org/wiki/User:Pietinger
Last edited by pietinger on Tue Sep 10, 2024 12:25 pm; edited 155 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Thu Aug 27, 2020 11:27 am Post subject: Google Deine Hardware |
|
|
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):
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 |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Tue Oct 20, 2020 11:59 am Post subject: Check neue Kernel Version |
|
|
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.
2023-04-24: Du kannst "Kompare" auch für einen Vergleich von zwei verschiedenen .config-Dateien verwenden. Oder Du nimmst ein noch komfortableres Script von @Goverp, welches Du hier findest:
https://forums.gentoo.org/viewtopic-t-1163063-highlight-.html
Habe ich eigentlich schon mal irgendwo erwähnt, dass man ruhig öfter mal in seine /var/log/messages schauen sollte ...
Last edited by pietinger on Mon Apr 24, 2023 7:18 pm; edited 1 time in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Fri Feb 26, 2021 11:22 am Post subject: |
|
|
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 |
Edit 2022-03-24: Ich habe das noch übersichtlicher (in englisch) hier beschrieben: https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Selecting_a_convenient_kernel_version
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).
Edit 2023-03-14: Hier wurde über die Verwendung der Linux-Headers gesprochen, die nicht unbedingt mit der Version des Kernels übereinstimmen müssen:
https://forums.gentoo.org/viewtopic-p-8597427.html#8597427
.
Last edited by pietinger on Tue Mar 14, 2023 10:06 am; edited 4 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Wed Mar 24, 2021 1:19 am Post subject: |
|
|
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 ! Außerdem darfst Du LOCKDOWN erst enablen sobald Du entweder einen monolithischen Kernel hast, oder Du Deine Module signierst.
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 ...
.
Last edited by pietinger on Mon Jan 23, 2023 9:05 pm; edited 2 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Mon Dec 27, 2021 7:30 pm Post subject: Never edit .config |
|
|
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 |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Wed Jan 19, 2022 4:31 pm Post subject: Update von 5.10.x auf 5.15.x |
|
|
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.)
Edit 2022-03-30: Siehe mehr im heutigen Post: "Neue Empfehlungen in KSPP" in B.2
Last edited by pietinger on Wed Mar 30, 2022 11:24 pm; edited 1 time in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Thu Feb 17, 2022 8:07 pm Post subject: Moderne Notebooks und ein i2c-Touchpad |
|
|
Moderne Notebooks und ein Touchpad ...
... welches über i2c angesteuert wird kann zu Problemen führen. Falls es für Dein Notebook bereits eine Beschreibung gibt welche Kernel Module benötigt werden, lass' Dich davon leiten. Suche am besten erstmal in unserem Gentoo Wiki:
https://wiki.gentoo.org/wiki/Category:Laptops
Gerade die Thinkpads benötigen manchmal sehr ungewöhnliche Kernel Optionen; Beispiel: https://wiki.gentoo.org/wiki/Lenovo_ThinkPad_X1_Carbon_7th_generation
Während manche Intel Systeme sehr genügsam sind; Beispiel: https://wiki.gentoo.org/wiki/Dell_Latitude_5491#Touchpad
Ein weiteres Beispiel für ein AMD System: https://wiki.gentoo.org/wiki/Asus_Tuf_Gaming_fx505dy#Touchpad
Ein Dell XPS 9520 war sehr gemein: Wir dachten er benötigt PINCTR_ALDERLAKE, es war aber PINCTRL_TIGERLAKE. Was er sonst noch benötigt findest Du hier: https://forums.gentoo.org/viewtopic-p-8737053.html#8737053 (Wo Du diese Optionen einstellst findest Du hier weiter unten).
Das gleiche erneut bei einem System76 Darter Pro 8: https://forums.gentoo.org/viewtopic-t-1157071-highlight-.html
Und schon wieder bei einem MSI Katana GF66: https://forums.gentoo.org/viewtopic-t-1167454-highlight-.html
Wenn es keine Beschreibung für Dein Notebook gibt bleibt meist nur ein Suchen der benötigten Module. Hier kann folgendes helfen: Boote mit einer LiveCD von Ubuntu, oder der SystemRescueCD; prüfe dann aber in jedem Fall ob dort Dein Touchpad richtig erkannt wird; falls ja mache dann folgende Abfragen:
Code: | # lspci -k
# lsmod | more
# dmesg | grep input |
Vergleiche dies nun mit Deinen Listen aus dem 1.Post von hier. Das sollte helfen die benötigten Kernel-Module zu finden. In den meisten Fällen benötigst Du alles folgende:
(Ich versuche hier alle bisherigen Erkenntnisse zusammen zu fassen. Diese stützen sich aber nur auf Erkenntnisse in diversen Threads, da ich selbst keines dieser modernen Notebooks habe. Meine Erfahrung beruht also nur auf die Rückmeldungen vieler User hier.)
Ich fange mal (wieder) von hinten an: Wenn Dein Touchpad zwar erkannt wird und nur die Gesten-Steuerung nicht funktioniert, liegt es meist daran, dass nur das hier fehlt:
Code: | Device Drivers --->
HID support --->
Special HID drivers --->
<*> HID Multitouch panels |
Wenn es gar nicht (oder nicht richtig) erkannt wird, fehlt meist eine Konfiguration im Kernel. Was (fast) immer benötigt wird:
1) Low Power System (weil Notebook)
2) i2c
3) gpio
4) pinctrl
5) hid support
6) input
Diese unterscheiden sich zwischen a) INTEL und b) AMD Systemen:
1a) Intel Low Power System
Code: | Processor type and features --->
[*] Intel Low Power Subsystem Support
Device Drivers --->
Multifunction device drivers --->
[*] Intel ICH LPC
[*] Intel Low Power Subsystem support in PCI mode
[*] Intel Low Power Subsystem support in ACPI mode |
1b) AMD Low Power System
Code: | Processor type and features --->
[*] AMD ACPI2Platform devices support |
2) Siehe: https://wiki.gentoo.org/wiki/I2C
Intel-Systeme benötigen fast immer nur den Intel 82801; siehe: https://www.kernel.org/doc/html/latest/i2c/busses/i2c-i801.html
Wähle unter diesen Modulen (für Synopsys nimm beide):
Code: | Device Drivers --->
I2C support --->
i2C Hardware Bus support --->
[?] AMD 8111
[?] AMD MP2 PCIe
[?] Intel 82801 (ICH/PCH)
[?] SMBus Control Method Interface
[?] Synopsys DesignWare Platform
[?] Intel Baytrail I2C semaphore support
[?] Synopsys DesignWare PCI |
3a) Intel gpio (damit dieser ausgewählt werden kann, muss vorher in 1a der "Intel ICH LPC" enabled worden sein; sonst siehst Du den gar nicht)
Code: | Device Drivers --->
[*] GPIO Support --->
[*] Character device (/dev/gpiochipN) support
Memory mapped GPIO drivers --->
[*] Intel ICH GPIO |
3b) AMD gpio. Meistens genügt das folgende (4b) und es muss hier garnichts gemacht werden, außer Du hast wirklich ein sehr spezielles Teil. Schau' deswegen in Deiner Liste nach.
Code: | Device Drivers --->
[*] GPIO Support --->
[*] Character device (/dev/gpiochipN) support
Memory mapped GPIO drivers --->
(see your output of "lsmod") |
4a) Intel pinctrl. Suche hier nach dem Codenamen Deiner CPU und dem Codenamen des Chipsatzes, bzw. Platform Controller Hubs (PCH):
https://en.wikipedia.org/wiki/List_of_Intel_microprocessors
https://en.wikipedia.org/wiki/Platform_Controller_Hub
https://en.wikipedia.org/wiki/List_of_Intel_chipsets
Diese Codenamen werden nämlich in folgender Sektion verwendet. Wenn keiner Deiner Codenamen dabei ist, dann verwende einen älteren, weil einige aufwärtskompatibel sind und gleich für mehrere Generationen verwendet werden. (Beispiel: Mein Intel i7-6700 ist ein "Skylake" auf einem Gigabyte Z270 Mainboard, also "Union Point". Allerdings gibt es diesen Menupunkt nicht, weil der ältere PCH kompatibel ist. Deshalb verwende ich den "Sunrise Point".)
Code: | Device Drivers --->
Pin controllers --->
One of these Intel Modules; see codenames |
4b) AMD pinctrl
Code: | Device Drivers --->
Pin controllers --->
[*] AMD GPIO pin control |
Edit 2022-12-09: Auch wenn ich es nicht verstehe, aber es war (manchmal?) notwendig pinctrl statisch <*> zu konfigurieren, statt als <M>odul !
5) hid support
Code: | Device Drivers --->
HID support --->
[*] /dev/hidraw raw HID device support
[*] Generic HID driver
I2C HID support --->
[*] HID over I2C transport layer |
6) input. Für die meisten Touchpads genügt bereits das "Event interface" (welches wir ja schon enabled haben; siehe "Libinput"). Für ein i2c-ELAN touchpad nimm alle diese Module hinzu:
Code: | Device Drivers --->
Input device support --->
Mice --->
[*] ELAN I2C Touchpad support
[*] Enable I2C support
[*] Enable SMbus support |
Falls Dein Notebook einen Synopsis Designware PCIe Controller hat, kann es notwendig sein folgendes zu aktivieren:
Code: | Device Drivers --->
[*] PCI support --->
PCI controller drivers --->
DesignWare PCI Core Support --->
[*] Platform bus based DesignWare PCIe Controller - Host mode
[*] Platform bus based DesignWare PCIe controller (endpoint mode) |
Viel Erfolg ! Rückmeldungen nehme ich immer gerne entgegen ...
Edit 2022-06-06: Lenovo X12 benötigt mindestens Kernel 5.15.45 (oder äquivalente Version der anderen Kernel Serien). Details: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=12b635b4e349e6d03a2ec698f946073f62770892
Edit 2022-09-05: ThinkPad C13 Yoga (oder Chromebook) benötigt mindesten Kernel 5.15.65 (-""-). Details: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=d74ce3ece4028a85aacf0d26a5ce13c872fcb949
.
Last edited by pietinger on Mon May 13, 2024 12:57 pm; edited 5 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Fri Nov 18, 2022 9:49 pm Post subject: |
|
|
Kernel Command Line Paramter: earlycon=efifb
Falls Du mal in die Verlegenheit kommen solltest, dass ein Kernel Developer Dir sagt Du sollst obigen Parameter aktivieren, dann könnte es Dir wie mir gehen: Es bewirkt NICHTS und Du hast im Systemlog:
Code: | localhost kernel: Kernel command line: root=PARTUUID=99beb5b2-b529-40fb-b0bc-3250a5237491 ro loglevel=8 lsm.debug ima_appraise=enforce earlycon=efifb
localhost kernel: Unknown kernel command line parameters "earlycon=efifb", will be passed to user space. |
Eine Suche im Internet ergibt:
Quote: | Early boot messages on UEFI systems with grub
Geschrieben von Polynomial-C am Donnerstag, Mai 20. 2021
For quite a while I had the problem on UEFI systems that after grub had loaded the kernel there were no boot messages shown until KMS kicked in and switched to the final framebuffer driver. Finally slashbeast, a fellow Gentoo dev, told me the correct kernel cmdline to make early boot messages appear:
CODE:
earlycon=efifb
As prerequisite, the kernel needs to have CONFIG_FB_EFI compiled in and CONFIG_X86_SYSFB disabled. |
( https://www.gentoofan.org/blog/index.php?/archives/24-Early-boot-messages-on-UEFI-systems-with-grub.html )
Naja, den CONFIG_FB_EFI haben wir eh' schon hier im 1. Post von A.2 enabled, den CONFIG_X86_SYSFB gibts nicht mehr, und die neuen stören überhaupt nicht - sind bei mir sogar enabled:
Code: | CONFIG_SYSFB=y
CONFIG_SYSFB_SIMPLEFB=y |
Daran liegts also nicht. Eine Suche mit / in "make menuconfig" nach EFI_EARLYCON (den findest Du nicht mit "z" weil er nur generiert wird aber nicht selektierbar ist) hilft weiter, denn es sagt ganz deutlich was fehlt: SERIAL_EARLYCON (der wird auch nur generiert). Und SERIAL_EARLYCON wiederum benötigt SERIAL_CORE; und dieses bekommen wir mit SERIAL_8250_CONSOLE ...
... Lange Rede - kurzer Sinn: Es fehlten zwei Kernel Optionen. Zuerst musst Du das aktivieren:
Code: | Device Drivers --->
Character devices --->
Serial drivers --->
[*] 8250/16550 and compatible serial support |
danach klappt einiges auf, wo schon einiges enabled ist. ZUSÄTZLICH enable den hier:
Code: | [*] Console on 8250/16550 and compatible serial port |
Es ist schon witzig, dass wir serielle Unterstützung benötigen um frühe Ausgaben auf den Bilschirm zu bekommen. Erschrick nicht wenn Du das auf einen 4k Monitor siehst ... ja, es erschlägt einen. Ach ja nochwas: Die Bootzeiten erhöhen sich grausam. Bei mir dauert ein normaler Boot ca. 2,6 Sekunden. Mit diesem Paramter waren es ca. 5,5 Sekunden. Ist normal - ist aber auch nur für die Fehlersuche nötig.
Edit 2022-11-25: Falls Deine Kiste bei einem Kernel PANIC sofort rebootet hast Du eine "-1" in dieser Kernel-Option:
Code: | Kernel hacking --->
Debug Oops, Lockups and Hangs --->
(0) panic timeout |
Ändere es auf 0 oder einen größeren positiven Wert (schau' einfach in die Hilfe).
Wenn Du noch mehr über den Boot-Vorgang Deines Kernel wissen möchtest kannst Du zusätzlich noch zwei Parameter setzen:
Quote: | initcall_debug ignore_loglevel earlycon=efifb |
. |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Wed Dec 28, 2022 3:24 pm Post subject: Update auf 6.1 |
|
|
Update auf 6.1
Die Version 6.1 soll der nächste LTS Kernel werden, auch wenn es hier noch nicht gelistet ist (Stand:heute):
Edit 2023-02-07: Version 6.1 ist seit heute der neueste LTS Kernel:
https://www.kernel.org/category/releases.html
Mehr Infos dazu hier: https://www.phoronix.com/news/Linux-6.1-LTS-Official
Normalerweise würde ich mehrere (4,5,6,?) Minor-Versionen warten, bevor ich auf eine neue Major-Version wechsle. Das empfehle ich auch sonst immer jedem ! Gentoo macht das auch für stable Diesmal war ich aber ein wenig ungeduldiger, weil ich neugierig auf die neuen Security Optionen war. Außerdem habe ich mir die in 6.1.1 enthaltenen Patches angesehen und mit Freude festgestellt, dass keine - für mich - relevanten Patches enthalten sind. Auch die Anzahl der Patches war/ist erstaunlich klein. Tja ...
Meine erste Umstellung von 5.15.82 auf 6.1.1 war enttäuschend. Kein Sound mehr (der bei mir per DisplayPort direkt an den Monitor geht) ! Und das mit einer puren ALSA Konfiguration (= kein pulseaudio oder pipewire). Ich suchte nach der Ursache und dachte ich wäre von diesem Bug betroffen:
https://bugzilla.kernel.org/show_bug.cgi?id=216836
Nun ja, indirekt war ich schon betroffen von diesem Patch:
https://github.com/torvalds/linux/commit/ef6f5494faf6a37c74990689a3bb3cee76d2544c
Denn mein erster Boot mit 6.1 brachte mir vom ALSA RC-Script (alsasound) mehrere Fehler: [...] failed to obtain info for control #65 (No such file or directory)
Ursache war dann, dass tatsächlich einige Devices dank diesem Patch weggefallen sind und ich meine /etc/asound.conf anpassen musste: Statt 7 war mein HDMI-Ausgang nun 3:
Code: | defaults.pcm.!device 3 |
Dank der Information in o.g. Bugreport habe ich das alles umschifft und nun endgültig auf 6.1 umgestellt. Ich schreibe das hier nur, falls Du auch betroffen sein solltest.
Edit 2022-12-29: Näheres auch in diesem Link: https://www.phoronix.com/news/AMD-HDMI-Audio-Linux-6.1-Fix
Edit 2022-01-04: Ist für AMD wohl in 6.1.3 mit diesem Patch bereinigt: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.1.y&id=f9aafff5448b1d8d457052271cd9a11b24e4d0bd
Natürlich habe ich vorher meine beiden vorhandenen Einträge in der package.mask geändert. Danach wie üblich vorgehen.
Code: | # nano -w /etc/portage/package.mask
=>
>=sys-kernel/gentoo-sources-6.2.0
>=sys-kernel/linux-headers-6.2 |
make oldconfig
Es ist immer empfehlenswert sich in neue Optionen einzulesen, denn eine Abweichung von der default Vorgabe sollte nur dann erfolgen, wenn man wirklich weiß was man tut - zumindest dann, wenn man eine Option disablen will, die defaultmäßig mit "y" vorbelegt ist. (Aber wir wollen ja auch einen schlanken Kernel). Die Übernahme eines Defaults mit <return> ist meist richtig und gut. Im folgenden werde ich (in der Reihenfolge wie es beim "make oldconfig" auftritt/abgefragt wird) nur die Optionen beschreiben ... :
a) wo ich vom Default abgewichen bin (3, 4, 5, 6, 7, 9, 10, 11), oder
b) die nur für Dich interessant sein könnten (1, 7, 8 ), oder
c) aus einem sonstigen Grund (2, 10).
Gleich vorweg: Es sind erstaunlich viele neue Module für Notebooks dazu gekommen. Sobald also beim "make oldconfig" die Driver-Sektion startet, solltest Du etwas genauer hinschauen, wenn irgendwo etwas mit "Asus", "Dell", "Fujitsu" oder ... abgefragt wird (und Du dieses Teil hast).
1. Falls Du einen AMD-Prozessor hast, könnte das höchst interessant sein (Ich kann es mangels AMD Prozessor leider nicht testen).
Edit 2023-01-30: Möglicherweise benötigst Du noch einen Command-Line-Parameter. Siehe hier: https://forums.gentoo.org/viewtopic-p-8772879.html#8772879
Quote: | AMD Processor P-State driver (X86_AMD_PSTATE) [N/y/?] (NEW) |
2. Ich finde es toll wenn Security Optionen schon mal defaultmäßig enabled sind. Es könnte sein, dass im nächsten Update von KSPP diese Option deshalb nicht mehr extra erwähnt wird. Natürlich übernehmen wir den Default mit <return> !
Quote: | Support for randomizing kernel stack offset on syscall entry (RANDOMIZE_KSTACK_OFFSET) [Y/n/?] (NEW) |
3. Das brauche ich nicht für meinen monolithischen Kernel und habe ich deshalb disabled.
Quote: | Legacy autoloading support (BLOCK_LEGACY_AUTOLOAD) [Y/n/?] (NEW) n |
4. Jetzt kommt etwas Interessantes: "multi-generational LRU". In diversen Beschreibungen wurde vermutet, dass es defaultmäßig enabled sein soll. Das ist aber nicht der Fall. Ich habe es aber schon aktiviert, weil es performanter sein soll. Natürlich kann ich jetzt noch nicht sagen, wie die Stabilität sein wird. Wenn Du auf Nummer Sicher gehen willst, lass es disabled und schau' in ca. 4 Wochen nochmal in diesen Post. Falls ich diesen Post bis dahin nicht editiert habe, sollte es sich bewährt haben.
Edit 2023-01-30: Keine Probleme bis jetzt; ich werde es deshalb enabled lassen.
Nähere Informationen findest Du im Kapitel "Core kernel" von:
https://lwn.net/Articles/910608/
Hier sind dann auch alle weiteren Links, wie z.B.:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=07017acb0601
Edit 2023-02-04: Siehe auch hier:
https://kernelnewbies.org/LinuxChanges#Linux_6.1.Multi-generational_LRU_for_better_memory_management
Quote: | Multi-Gen LRU (LRU_GEN) [N/y/?] (NEW) y
Enable by default (LRU_GEN_ENABLED) [N/y/?] (NEW) y
Full stats for debugging (LRU_GEN_STATS) [N/y/?] (NEW) n |
5. Das brauche ich für meine Firewall nicht. Wenn Du B.1 fast identisch hast, brauchst Du es auch nicht.
Quote: | Netfilter egress support (NETFILTER_EGRESS) [Y/n/?] (NEW) n |
6. Natürlich bin ich paranoid und will alles so sicher wie möglich haben ! Ich habe natürlich keine Ahnung ob systemd (oder ein sonstiges, von mir nicht genutztes Modul) damit glücklich ist.
Quote: | Use nosuid,noexec mount options on devtmpfs (DEVTMPFS_SAFE) [N/y/?] (NEW) y |
7. Das brauche ich auch nicht - aber vielleicht Du ?
Quote: | WMI embedded Binary MOF driver (WMI_BMOF) [Y/n/?] (NEW) n |
8. Folgende habe ich einfach mit <return> übernommen und nicht enabled, könnten aber für Dich interessant sein:
Quote: | Intel PMC Core driver (INTEL_PMC_CORE) [N/y/?] (NEW)
Intel Uncore frequency control driver (INTEL_UNCORE_FREQ_CONTROL) [N/y/?] (NEW)
Intel HID Event (INTEL_HID_EVENT) [N/y/?] (NEW) |
9. Das brauchen wir für unser AppArmor nicht.
Quote: | Allow loaded policy to be introspected (SECURITY_APPARMOR_INTROSPECT_POLICY) [Y/n/?] (NEW) n
Perform full verification of loaded policy (SECURITY_APPARMOR_PARANOID_LOAD) [Y/n/?] (NEW) n |
10. Das folgende ist seehr wichtig. Es muß Option "3" sein, sonst hast Du kein Gentoo KSPP mehr (siehe B.2). Ich hatte hier natürlich zuerst gleich mal das Maximale gesetzt (2) um dann danach feststellen zu müssen, dass die neue /usr/src/linux/distro/Kconfig (*) das hier abfragt ... und dann alle KSPP Optionen verwirft !
Quote: | Randomize layout of sensitive kernel structures
3. Limit randomization of structure layout to cache-lines (RANDSTRUCT_PERFORMANCE) (NEW)
choice[1-3?]: 3 |
11. Diese Security Option habe ich bereits heute enabled. Da warte ich nicht auf eine Empfehlung von KSPP (**).
Quote: | Check for invalid mappings in user page tables (PAGE_TABLE_CHECK) [N/y/?] (NEW) y
Enforce the page table checking by default (PAGE_TABLE_CHECK_ENFORCED) [N/y/?] (NEW) y |
*) Die zweite Änderung in der ../distro/Kconfig ist (leider) nur das Enabeln von LANDLOCK ... alle weiteren neuen KSPP Optionen (die ich bereits in B.2 beschrieben habe) fehlen noch
**) Während ich bei anderen noch auf Empfehlung in KSPP warte; z.B. Indirect Branch Tracking (X86_KERNEL_IBT).
. |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Tue Nov 21, 2023 4:05 pm Post subject: Update auf 6.6 |
|
|
Update auf 6.6
Da bereits feststeht dass Version 6.6 ein LTS Kernel ist, habe ich wieder sehr früh auf diesen geupdated ... weil hier wieder neue Security Optionen verfügbar sind. Die Änderungen in der Kernel Konfiguration im Vergleich zum 6.1-er sind ziemlich überschaubar:
Der KEXEC ist von "Processor type and features" nach "General setup -> Kexec and crash features" gewandert. Man kann keinen Microcode mehr enablen ... weil er standardmäßig bereits (unsichtbar) enabled ist. Und das Menu "Framebuffer" ist umgeschichtet worden.
make oldconfig
Im folgenden werde ich wieder nur die Optionen beschreiben (in der Reihenfolge wie es beim "make oldconfig" auftritt/abgefragt wird):
a) wo ich vom Default abgewichen bin, oder
b) wo Du den Default unbedingt übernehmen solltest, oder
c) die nur für Dich interessant sein könnten, oder
d) aus einem sonstigen Grund.
Wieder gilt: Es sind einige neue Module für Notebooks dazu gekommen. Sobald also beim "make oldconfig" die Driver-Sektion startet, solltest Du etwas genauer hinschauen, wenn irgendwo etwas mit "MSI" oder anderen abgefragt wird (und Du dieses Teil hast).
Quote: | 1 b)
Enable cachestat() system call (CACHESTAT_SYSCALL) [Y/n/?] (NEW)
2 a)
X86 userspace shadow stack (X86_USER_SHADOW_STACK) [N/y/?] (NEW) y
3 d)
EFI handover protocol (DEPRECATED) (EFI_HANDOVER_PROTOCOL) [Y/n/?] (NEW)
4 c)
Linear Address Masking support (ADDRESS_MASKING) [N/y/?] (NEW)
5 b)
Configure SLUB for minimal memory footprint (SLUB_TINY) [N/y/?] (NEW)
6 a)
Randomize slab caches for normal kmalloc (RANDOM_KMALLOC_CACHES) [N/y/?] (NEW) y
7 d)
Enable per-vma locking during page fault handling. (PER_VMA_LOCK) [N/y/?] (NEW)
8 a)
Allow legacy TIOCSTI usage (LEGACY_TIOCSTI) [Y/n/?] (NEW) n
9 d)
Provide legacy /dev/fb* device (FB_DEVICE) [Y/n/?] (NEW)
10 c)
Compute Acceleration Framework (DRM_ACCEL) [N/y/?] (NEW)
11 b)
HID bus support (HID_SUPPORT) [Y/n/?] (NEW)
I2C HID support (I2C_HID) [Y/n/?] (NEW)
12 c)
Intel In Field Scan (INTEL_IFS) [N/y/?] (NEW)
Intel Topology Aware Register and PM Capsule Interface (TPMI) (INTEL_TPMI) [N/y/?] (NEW)
MSI EC Extras (MSI_EC) [N/y/?] (NEW)
13 b)
Intel IOMMU performance events (INTEL_IOMMU_PERF_EVENTS) [Y/n/?] (NEW)
14 c)
Intel RAPL Support via MSR Interface (INTEL_RAPL) [N/y/?] (NEW) |
1 b) Übernehme den Default !
2 a) Siehe: https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Kernel_Hardening_with_KSPP#More_Hardening_Options
3 d) Ich habe den Default übernommen und mir diese Option nur vorgemerkt ... weil man es möglicherweise gar nicht braucht. Du kannst es natürlich ausprobieren
4 c) Wenn eine Abfrage mit "cpuid" ein: "LAM: linear address masking = false" gibt, kannst Du den Default N bedenkenlos übernehmen (war bei mir der Fall). Auch ansonsten ist es fraglich ob man das braucht.
5 b) Übernehme den Default ! Falls Du meinst es wäre eine gute Idee um zu sparen, dann lies einfach die Hilfe für diese Option.
6 a) Siehe wieder: https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Kernel_Hardening_with_KSPP#More_Hardening_Options
7 d) Ich habe den Default zwar übernommen, mir aber diese Option stark vorgemerkt. Könnte zukünftig sinnvoll sein. Aber wurde hier defaultmäßig deaktiviert:
https://lore.kernel.org/linux-mm/CAJuCfpH4HyAVO0fVYKGR9xhZJu19Ek_dTMEBiCCSbOjkDxXD=w@mail.gmail.com/T/
Ein Bericht von LWN: https://lwn.net/Articles/924572/
8 a) Dies ist eine KSPP-Empfehlung. Ich habe es beruhigt disabled weil ich bereits vorher in meiner SYSCTLS "dev.tty.legacy_tiocsti = 0" drin hatte und so wusste, daß es bei mir keine Probleme macht.
9 d) Ich habe den Default Y übernommen weil ich auch früher ein /dev/fb0 hatte. Interessanterweise wird in der Hilfe das Gegenteil empfohlen: "If unsure, say N." ... müsste vielleicht genauer untersucht werden ...
10 c) Siehe; https://wiki.gentoo.org/wiki/User:Pietinger/Tutorials/Manual_Configuring_Kernel_Version_6.6#Part_4_-_My_recommendations
11 b) Übernehme den Default !
12 c) Enable hier falls Du das benötigst.
13 b) Übernehme den Default !
14 c) Enable hier falls Du das benötigst.
Da ich jedesmal wenn eine neue Major Version kommt auch ein "make defconfig" mache um mir die default Konfiguration anzusehen, ist mir aufgefallen dass eine Option nun nicht mehr enabled wird die bei 6.1 enabled war. Ich habe sie deswegen auch wieder disabled:
Code: | Kernel hacking --->
[ ] Debug preemptible kernel |
Zusätzlich habe ich das ausgeschaltet (weil ich es nicht brauche):
Code: | Kernel hacking --->
Memory Debugging --->
[ ] Stack utilization instrumentation |
.
Weil mit 6.6 ein neuer Systemaufruf (1b) hinzukam, habe ich danach auch noch die "glibc" re-emerged. _________________ https://wiki.gentoo.org/wiki/User:Pietinger |
|
Back to top |
|
|
mortonP Tux's lil' helper
Joined: 22 Dec 2015 Posts: 89
|
Posted: Sat Dec 23, 2023 12:03 am Post subject: Re: Moderne Notebooks und ein i2c-Touchpad |
|
|
pietinger wrote: | Moderne Notebooks und ein Touchpad ...
Viel Erfolg ! Rückmeldungen nehme ich immer gerne entgegen ... ;-)
|
Man...
I just spent the whole &§%$ day trying to get my I2C Elan Touchpad working on my shiny new Thinkpad (Christmas present...).
It just didn't work on my own kernel.
...until I found your posting by chance and systematically checked again every kernel option.
...and now it works!
Thank you very... VERY much! |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5128 Location: Bavaria
|
Posted: Sat Dec 23, 2023 1:37 am Post subject: Re: Moderne Notebooks und ein i2c-Touchpad |
|
|
mortonP wrote: | Thank you very... VERY much! |
You are very Welcome !
Have fun with Gentoo !
(Normally this is a german subforum ... but saying thank you is allowed in any language ... besides, most users also understand english) _________________ https://wiki.gentoo.org/wiki/User:Pietinger |
|
Back to top |
|
|
|
|
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
|
|