Reinstall-kernels command not found

I messed up my install and have no boot options.

I have

  • Booted onto live USB
  • Recreated the efi partition
  • Reinstalled systemd boot
  • Updated the system

I still have no boot options, so I read here: How to rescue systemd-boot: missing UEFI entry

to use reinstall-kernels after chrooting into my install.

The guys says it works, all I get is reinstall-kernels: command not found

Super unhelpful, and the thread is locked…

That probably means either you are using grub or you have uninstalled an important package.

Can you share the output of pacman -Q | grep -E "(grub|mkinitcpio|dracut)"

[root@EndeavourOS /]# pacman -Q | grep -E "(grub|mkinitcpio|dracut)"
mkinitcpio 36-1
mkinitcpio-busybox 1.36.1-1

Is that from the chroot or the ISO?

This is from chroot.

Did you try to convert your system to mkinitcpio? Can you explain what you did to break the system?

I had updated my system which logged me out. I logged back in to continue the updates and there was a lock file which did not go away no matter how long I waited, so I rebooted.

This is how I am unable to boot. I don’t know what mkinitcpio is or how to convert to it, though.

It is exceptionally strange to have neither grub nor dracut. We have never shipped an install like that.

Do you know when you installed your system approximately?

Your system is missing things to the point where I am not sure exactly what direction to take to fix it.

I installed it maybe two or three months ago. I selected systemd-boot and not grub for the bootloader. I think rebooting while the updates were taking place could be an issue.

That may be part of the issue but you also have packages missing and packages you should not have.

I would do this from the chroot:

pacman -Rdd mkinitcpio mkinitcpio-busybox
pacman -Syu dracut kernel-install-for-dracut
pacman -S linux linux-headers

Please make sure you mounted your EFI partition in the chroot before running those commands.

I ran the first one before your edits came through.

I mounted my efi partition in /boot and ran them all again. The last one ran successfully but pacman could not find a package called kernel-install-for-dracut.

Your EFI partition needs to be mounted at /efi

Can you share the contents of /etc/pacman.conf

It seems I don’t have an /efi

Here is my pacman.conf:

#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
#HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =

#NoUpgrade   =
#NoExtract   =

# Misc options
#UseSyslog
#Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
#ParallelDownloads = 5

# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.

#
# REPOSITORIES
#   - can be defined here or included from another file
#   - pacman will search repositories in the order defined here
#   - local/custom mirrors can be added here or in separate files
#   - repositories listed first will take precedence when packages
#     have identical names, regardless of version number
#   - URLs will have $repo replaced by the name of the current repo
#   - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
#       [repo-name]
#       Server = ServerName
#       Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#

# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.

#[core-testing]
#Include = /etc/pacman.d/mirrorlist

[core]
Include = /etc/pacman.d/mirrorlist

#[extra-testing]
#Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist

#[multilib]
#Include = /etc/pacman.d/mirrorlist

# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

You don’t appear to be running Endeavouros.

Why?

Because you don’t have /efi or the EdeavourOS repo in /etc/pacman.conf

I swear I’m running it. Idk why I don’t have those.

If you are really running EndeavourOS, we can help you put it back but if you are not, you are just creating a mess.

I wouldn’t have spent the time to create my account. I’m running it. Worst case is my stuff is backed up and I can reinstall but I really don’t want to re download all my packages and reconfigure everything.

OK, exit the chroot.

Then:

sudo umount /mnt/boot
sudo mkdir /mnt/efi

Then mount your ESP at /mnt/efi

sudo arch-choot /mnt
wget https://raw.githubusercontent.com/endeavouros-team/EndeavourOS-ISO/main/airootfs/etc/pacman.conf -o /etc/pacman.conf
pacman -Syu dracut kernel-install-for-dracut
pacman -S linux linux-headers