Changing kernel guide

Personally, I would find quite necessary a little guide for installing/change kernel. I tried months ago but I switched a lot of time from the arch wiki to other sites to understand how get the packaging of a custom kernel. What gave me problems was the creation of the initramfs, so, I was stucked into this passage because it raised me an error.
As an ignorant, I suggest to get a little wiki on the endeavourOS site.
In my personal case, I need to install a real-time kernel (yes, I already tried to install it from the AUR repo but it takes too much time to compile it) for audio recording experiments, but I noticed that is faster to download a kernel and patching it. The problem is how to make it start for booting.
It could be interesting for everybody, but this is only a personal suggestion/opinion.

1 Like

Which kernel? linux-rt is available in extra?

Well, you can use our very own akm tool.


Using this you can install almost all the kernels in the Arch repo.

To boot from the kernel you can use this. If you’re using systemd-boot. If you’re using GRUB then you have to edit /etc/default/grub.

Use sudo nano /etc/default/grub and change GRUB_DEFAULT=0 to GRUB_DEFAULT="1>2" So if the linux-rt is the first in the sub-menu it’ll make it boot. If you want more clarification on this use this post in StackExchange. Or you can just replace the number in front of GRUB_DEFAULT= and see what works (I can’t remember how to find the correct number).

After editing the GRUB config you need to recreate the actual grub.cfg file to do this you just have to run sudo dracut-rebuild. Now reboot to test.

EDIT: Remembered how to find the kernel ID.

  • To find $menuentry_id_option use:
$ sudo grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
  • To find $menuentry_id_option for the ernel you want to use:
menuentry 'EndeavourOS, on linux-lts' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-f2f94842-8952-4808-9752-1a9608e5af53' {
menuentry 'EndeavourOS, on linux-lts (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-f2f94842-8952-4808-9752-1a9608e5af53' {
menuentry 'EndeavourOS, on linux' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-f2f94842-8952-4808-9752-1a9608e5af53' {
menuentry 'EndeavourOS, on linux (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-f2f94842-8952-4808-9752-1a9608e5af53' {

Above 4 entries are numbered 0, 1, 2, and 3. So when you are counting you should count it like below.

0 ---- menuentry 'EndeavourOS, on linux-lts' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-f2f94842-8952-4808-9752-1a9608e5af53' {
1 ---- menuentry 'EndeavourOS, on linux-lts (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-f2f94842-8952-4808-9752-1a9608e5af53' {
2 ---- menuentry 'EndeavourOS, on linux' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-f2f94842-8952-4808-9752-1a9608e5af53' {
3 ---- menuentry 'EndeavourOS, on linux (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-f2f94842-8952-4808-9752-1a9608e5af53' {

From the list, you can just select the one you want to use and then change GRUB_DEFAULT= to the number. If you want to use the normal kernel from the above list then change GRUB_DEFAULT=0 to GRUB_DEFAULT=2. Save the file and then sudo dracut-rebuild.

Then reboot and use uname -a to double-check what kernel you have been booted into.

5 Likes

I already installed akm, but I missed the passages that you had explained because the problem described in the post above (initramfs cannot be created… so, no grub config).
Anyway, I will try again.
Thanks for your post.

You can also use sudo grub-mkconfig -o /boot/grub/grub.cfg to generate the .cfg file. But only if you have GRUB installed.

1 Like

Creating initramfs when using grub:

sudo mkinitcpio -P

About grub menus: you can write grub menu entries into file
/etc/grub/custom.cfg with which you can experiment a bit.

To write that file, you can copy a menuentry from the existing
/boot/grub/grub.cfg and change some obvious details.

And you do not have to run grub-mkconfig to make it work!
Simply reboot and test if your definitions work. If not, boot with a working entry and make the required changes to custom.cfg.

Really wish we had this tool/option during the EndeavourOS install.

1 Like

You can change these if you used the online installer. If you used the offline one then it’s more of a standard install.

What are the commands to install/ remove specific kernel ? On Akm you can install only latest kernel plus lts

If you mean downgrading, the command is

downgrade <package(s)>

Otherwise normal pacman commands like

sudo pacman -S <kernel> <kernel>-headers   # install
sudo pacman -R <package-name>              # remove
2 Likes

Sorry to necro this thread, I found it via a quick search in the forums and it fits perfectly to my current situation.

TLDR: Booting into linux after changing from linux-lts to linux does not work as expected.

I had LTS with headers installed as only Kernel and wanted to revert back to non-LTS, but keep the LTS ones. So I fired up eos’ own AKM, installed core/linux and core/linux-headers alongside the LTS ones:


and checked my config in /boot/grub/grub.cfg:

submenu 'Advanced options for EndeavourOS Linux' $menuentry_id_option 'gnulinux-advanced-178ba18b-3faa-4b38-b7e5-5b0f5d2f285c' {
        menuentry 'EndeavourOS Linux, with Linux linux-lts' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-178ba18b-3faa-4b38-b7e5-5b0f5d2f285c' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod part_gpt
                insmod btrfs
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root   178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                else
                  search --no-floppy --fs-uuid --set=root 178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                fi
                echo    'Loading Linux linux-lts ...'
                linux   /@/boot/vmlinuz-linux-lts root=UUID=178ba18b-3faa-4b38-b7e5-5b0f5d2f285c rw rootflags=subvol=@  nowatchdog nvme_load=YES loglevel=3 zswap.enabled=0 amd-pstate=active
                echo    'Loading initial ramdisk ...'
                initrd  /@/boot/amd-ucode.img /@/boot/initramfs-linux-lts.img
        }
        menuentry 'EndeavourOS Linux, with Linux linux-lts (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-178ba18b-3faa-4b38-b7e5-5b0f5d2f285c' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod part_gpt
                insmod btrfs
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root   178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                else
                  search --no-floppy --fs-uuid --set=root 178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                fi
                echo    'Loading Linux linux-lts ...'
                linux   /@/boot/vmlinuz-linux-lts root=UUID=178ba18b-3faa-4b38-b7e5-5b0f5d2f285c rw rootflags=subvol=@  nowatchdog nvme_load=YES loglevel=3 zswap.enabled=0 amd-pstate=active
                echo    'Loading initial ramdisk ...'
                initrd  /@/boot/amd-ucode.img /@/boot/initramfs-linux-lts-fallback.img
        }
        menuentry 'EndeavourOS Linux, with Linux linux' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-178ba18b-3faa-4b38-b7e5-5b0f5d2f285c' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod part_gpt
                insmod btrfs
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root   178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                else
                  search --no-floppy --fs-uuid --set=root 178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                fi
                echo    'Loading Linux linux ...'
                linux   /@/boot/vmlinuz-linux root=UUID=178ba18b-3faa-4b38-b7e5-5b0f5d2f285c rw rootflags=subvol=@  nowatchdog nvme_load=YES loglevel=3 zswap.enabled=0 amd-pstate=active
                echo    'Loading initial ramdisk ...'
                initrd  /@/boot/amd-ucode.img /@/boot/initramfs-linux.img
        }
        menuentry 'EndeavourOS Linux, with Linux linux (fallback initramfs)' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-178ba18b-3faa-4b38-b7e5-5b0f5d2f285c' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod part_gpt
                insmod btrfs
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root   178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                else
                  search --no-floppy --fs-uuid --set=root 178ba18b-3faa-4b38-b7e5-5b0f5d2f285c
                fi
                echo    'Loading Linux linux ...'
                linux   /@/boot/vmlinuz-linux root=UUID=178ba18b-3faa-4b38-b7e5-5b0f5d2f285c rw rootflags=subvol=@  nowatchdog nvme_load=YES loglevel=3 zswap.enabled=0 amd-pstate=active
                echo    'Loading initial ramdisk ...'
                initrd  /@/boot/amd-ucode.img /@/boot/initramfs-linux-fallback.img
        }
}

So we got here 0,1,2,3 as expected, 0 being LTS, 2 being non-LTS. I then went to
/etc/default/grub
and changed it to

GRUB_DEFAULT='2'

To finalize it I did a
sudo dracut-rebuild
and rebooted. Into a frozen plasma6 desktop. I waited some more minutes because there was life in my machine (HardDisk had some access sounds, temperature widget had changes), but no reaction to mouse and/or keyboard whatsorever. So I did a ATX-reset and this time I am up and running. Was my first screen freeze in this installation of eOS - strange. Stranger even more so: Booted into LTS! What is this trickery, what did I do wrong?

inxi -F
System:
  Host: neuromancer Kernel: 6.6.23-1-lts arch: x86_64 bits: 64
  Desktop: KDE Plasma v: 6.0.2 Distro: EndeavourOS
Machine:
  Type: Desktop Mobo: Micro-Star model: MAG X570 TOMAHAWK WIFI (MS-7C84)
    v: 1.0 serial: 07C8413_K91E763445 UEFI: American Megatrends LLC. v: 1.F0
    date: 10/12/2023
CPU:
  Info: 16-core model: AMD Ryzen 9 5950X bits: 64 type: MT MCP cache:
    L2: 8 MiB
  Speed (MHz): avg: 841 min/max: 550/5084 cores: 1: 550 2: 3618 3: 550
    4: 3600 5: 550 6: 550 7: 550 8: 550 9: 550 10: 550 11: 550 12: 550 13: 550
    14: 550 15: 550 16: 3764 17: 550 18: 550 19: 550 20: 550 21: 550 22: 550
    23: 550 24: 550 25: 550 26: 550 27: 550 28: 550 29: 550 30: 550 31: 550
    32: 550
Graphics:
  Device-1: AMD Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] driver: amdgpu
    v: kernel
  Display: server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4 driver: X:
    loaded: amdgpu unloaded: modesetting,radeon dri: radeonsi gpu: amdgpu
    resolution: 1: 2560x1440 2: 2560x1440
  API: EGL v: 1.5 drivers: radeonsi,swrast platforms: x11,surfaceless,device
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.0.3-arch1.2
    renderer: AMD Radeon RX 6800 XT (radeonsi navi21 LLVM 17.0.6 DRM 3.54
    6.6.23-1-lts)
  API: Vulkan v: 1.3.279 drivers: radv surfaces: xcb,xlib
Audio:
  Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel
  Device-2: Thesycon System & Consulting GmbH DX3 Pro+ driver: snd-usb-audio
    type: USB
  API: ALSA v: k6.6.23-1-lts status: kernel-api
Network:
  Device-1: Mellanox MT27500 Family [ConnectX-3] driver: mlx4_core
  IF: enp36s0 state: up speed: 10000 Mbps duplex: full
    mac: 00:02:c9:00:00:01
  Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi
  IF: wlan0 state: down mac: a6:60:95:16:d2:77
Bluetooth:
  Device-1: Intel AX200 Bluetooth driver: btusb type: USB
  Report: btmgmt ID: hci0 rfk-id: 0 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: 3C:9C:0F:87:ED:0C bt-v: 5.2
Drives:
  Local Storage: total: 18.66 TiB used: 8.77 TiB (47.0%)
  ID-1: /dev/nvme0n1 vendor: Seagate model: FireCuda 530 ZP2000GM30013
    size: 1.82 TiB
  ID-2: /dev/nvme1n1 vendor: Seagate model: FireCuda 530 ZP2000GM30013
    size: 1.82 TiB
  ID-3: /dev/sda vendor: Samsung model: SSD 860 PRO 512GB size: 476.94 GiB
  ID-4: /dev/sdb vendor: Seagate model: ST16000NM001G-2KK103 size: 14.55 TiB
Partition:
  ID-1: / size: 1.82 TiB used: 1010.62 GiB (54.3%) fs: btrfs
    dev: /dev/nvme0n1p2
  ID-2: /boot/efi size: 998 MiB used: 576 KiB (0.1%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-3: /home size: 1.82 TiB used: 1010.62 GiB (54.3%) fs: btrfs
    dev: /dev/nvme0n1p2
  ID-4: /var/log size: 1.82 TiB used: 1010.62 GiB (54.3%) fs: btrfs
    dev: /dev/nvme0n1p2
Swap:
  ID-1: swap-1 type: zram size: 16 GiB used: 8.2 MiB (0.1%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 48.9 C mobo: 36.0 C gpu: amdgpu temp: 65.0 C
  Fan Speeds (rpm): fan-1: 0 fan-2: 393 fan-3: 354 fan-4: 0 fan-5: 0
    fan-6: 0 fan-7: 0 gpu: amdgpu fan: 0
Info:
  Memory: total: 64 GiB available: 62.72 GiB used: 7.5 GiB (12.0%)
  Processes: 544 Uptime: 11m Shell: Sudo inxi: 3.3.33

PS.

You could also create a new thread and link to other long fallen to oblivion threads like this one.
Just mis dos pesos :innocent:

PPS.

You may want to use -z flag with inxi when posting on forum:

-z, --filter Adds security filters for IP/MAC addresses, serial numbers,
location (-w), user home directory name, host name.

2 Likes

You are loading the microcode twice. Isn’t there are an issue with the current AMD ucode and current kernel where it causes problems when double loaded?

1 Like

So, reading carefully and finding the correct threads is something I have to improve on… the daily struggle in learning linux :smiley: Thx @pebcak - that did the trick. Loading non-lts now per default, but had a second hanger, which brings me to what @dalto has mentioned:
WHY I am loading it twice? I cannot remember doing anything microcoderelated on purpose - where could that have come from?
And, fast edit, more important: how to get rid of it?

1 Like

You can set set GRUB_EARLY_INITRD_LINUX_STOCK='' in /etc/default/grub