English Spanish
Add `initcall_debug` parameter, which traces the initcalls as they are executed.
`alsa-info.sh` provides information about both kernel and userspace components. If you have a working and non-working kernel, you should provide `alsa-info.sh` for both cases.
Bisecting is a time-consuming task, but it's very straightforward and is often the best way to find the cause of a problem. If you're really interested in getting the problem you're seeing fixed, bisecting will speed up the process considerably in most cases.
Bisecting the kernel
Boot failures
Booting with vga=791 (or even just vga=1 if the video card won't support 791) will put the framebuffer into high resolution mode to get more lines of text on screen, allowing more context for bug analysis.
Checking whether or not the CapsLock key (or NumLock or ScrollLock) causes
Find the newest version you can that works. This will be the initial "good" version. The first version you find that doesn't work will be the initial "bad" version.
Hangs and freezes
If the new kernel works, mark it as good with `git bisect good`. Otherwise, mark it as bad with `git bisect bad`.
If the problem you've encountered isn't present in older versions of the kernel, it is very helpful to use `git-bisect` to find the commit that introduced the problem. For a general overview of `git-bisect`, see its https://git-scm.com/docs/git-bisect[documentation]. An outline on how to bisect the kernel is included in the https://www.kernel.org/doc/html/latest/admin-guide/bug-bisect.html[kernel documentation]. This guide contains Fedora-specific details.
If you get no output at all from the kernel, booting with `earlyprintk=vga` can sometimes yield something of interest.
Information for collecting logs is documented at the https://wayland.freedesktop.org/libinput/doc/latest/reporting-bugs.html[libinput website].
Input issues (touchpad etc.)
Install the xref:kernel/build-custom-kernel.adoc#_get_the_dependencies[dependencies] required to build the kernel.
Logs to collect
Mark the first version that does not work as "bad" with `git bisect bad <tag>`. For example: `git bisect bad v4.17`.
Mark the newest version that works as "good" with `git bisect good <tag>`. For example: `git bisect good v4.16.8`.
Next, xref:kernel/build-custom-kernel.adoc#_getting_the_sources[get the source code].
Prepare a `.config` file. Assuming you've got both the good and bad kernel installed, the config for both will be in `/boot/`.footnote:[When bisecting between major versions (e.g. `v4.16` and `v4.15`) new configuration options will be added and removed as you bisect. It's _usually_ safe to select the default.]