Closed anonymix007 closed 1 week ago
We never used that module on ARM. Are you allowing people to choose a bootloader?
Well, I don't see why not, however, I only tried systemd-boot since its' configs are a bit easier to write and they're generally not autogenerated (unlike grub).
All Snapdragon X laptops have UEFI, so it's basically the same setup as what x86-64 device would have.
If your kernel is getting removed, it is possible it is incorrectly packaged. kernels should depend on initramfs
on Arch. Sometimes, they are set to depend on mkinitcpio
. That is a problem for us since we use dracut
.
You may need to repackage to fix the dependencies if that is the case.
If there is interest in getting this working and available .. we could start a new repo for it. Mixing x86 and arm is confusing to me.
My kernel package depends on coreutils, kmod, mkinitcpio>=0.7, systemd-ukify and x1e-firmware, so I removed dracut from dependencies. Maybe I should switch to it instead though.
Right, the eos_bootloader removes mkinitcpio
. That is what is causing the kernel to be removed. If it depended on initramfs
, it would support both dracut
and mkinitcpio
If there is interest in getting this working and available .. we could start a new repo for it. Mixing x86 and arm is confusing to me.
From a Calamares perspective, it sounds like these snapdragon machines are more similar to x86 where they are using UEFI.
Thanks, I'll try. Does dracut
use the same preset and config format? Some modules and firmware blobs are required to be in initramfs, so currently I just have a list of them in mkinitcpio
config file.
Does
dracut
use the same preset and config format?
Nope. It is totally different. That being said, dracut is quite a bit better at detecting what it needs to add to the initramfs.
Arch wiki suggests to use force_drivers
option to add drivers, but I can't find anything about the firmware. Actual firmware paths are described in device trees (because some blobs are per-device), so I doubt dracut will be able to find everything.
Okay, there is install_items
. BTW, is it just me or dracut is considerable slower than mkinitcpio and produces much (3.5x) bigger ramdisk?
If it depended on initramfs, it would support both dracut and mkinitcpio
Nope, it wasn't enough. Apparently, it now tries to execute mkinitcpio hook (and obviously fails since mkinitcpio
isn't installed), but never tries to execute dracut and therefore does not create initramfs.
Which packages I would need to install for dracut to actually work? I do have kernel-install-for-dracut
, but it probably doesn't have enough triggers (since kernel is installed as /boot/vmlinux
) or something else. It should also probably override linux-x1e
(which is my custom kernel) mkinitcpio hooks, just like it does that for i.e. linux-eos-arm
ones.
Here is what I used to build the image: https://github.com/anonymix007/arch-image-builder/tree/x1e
Is your feature request related to a problem? Please describe. eos_bootloader module removes the custom kernel needed to boot on Snapdragon X which leads to an unbootable system
Describe the solution you'd like If package is explicitly listed in
netinstall.yaml
, eos_bootloader shouldn't even try to remove itDescribe alternatives you've considered Maybe create a separate ARM config in this repo?
Additional context I was trying to build a more or less generic EndeavourOS ARM image for Snapdragon X laptops. As of now, they require custom kernel and firmware, so here is my repo will all the required packages: x1e-alarm Calamares config (basically, just removed packages missing in aarch64 repos): config.tar.gz Installation logs: endeavouros.log.tar.gz
What could I do to make it work as expected?