Omarchy σε Libreboot/Coreboot συστήματα - Πώς το έφτιαξα

Omarchy σε Libreboot/Coreboot συστήματα - Πώς το έφτιαξα

Πολύ καλησπέρα σας,

Θέλω να μοιραστώ την εμπειρία μου στο forum μας, αφού έπρηξα αρκετά κόσμο στο tg, με το πώς κατάφερα να κάνω το Omarchy να τρέχει σε Libreboot/Coreboot συστήματα, καθώς και τη διαδικασία που ακολούθησα.

Το πρόβλημα

Έχω ένα ThinkPad T480 με Libreboot 25.06 Luminus Lemon. Το σύστημα δεν έχει EFI payload, χρησιμοποιεί GRUB payload απευθείας από το Libreboot. Όταν προσπάθησα να εγκαταστήσω το Omarchy, η εγκατάσταση πήγαινε καλά αλλά μετά το reboot το σύστημα δεν έμπαινε. Το installer εγκαθιστούσε το Limine bootloader σε EFI mode, αλλά το Libreboot δεν έχει EFI services, οπότε το Limine δεν μπορούσε να τρέξει.

Η αρχική προσέγγιση

Στην αρχή προσπάθησα να βγάλω άκρη μόνος μου. Έψαξα στο GitHub του Omarchy, διάβασα documentation, δοκίμασα διάφορες λύσεις. Τίποτα δεν δούλεψε. Τότε σκέφτηκα να ρωτήσω τους developers αν μπορούν να βοηθήσουν ή αν μπορώ να κάνω κάτι εγώ.

Έκανα ένα post στο GitHub discussions ( Boot fails on first boot with Libreboot/Coreboot (no EFI payload) — installer should detect non‑EFI and offer legacy/BIOS install · basecamp/omarchy · Discussion #4209 · GitHub ) και ο dhh (ο δημιουργός του Omarchy) μου έδωσε το οκ να προχωρήσω. Μετά από λιγότερο από 24 ώρες κατάφερα να βγάλω άκρη και να το κάνω να δουλεύει.

Τι δοκίμασα

Αρχικές προσπάθειες

Πρώτα προσπάθησα να κάνω chainloading από το Libreboot GRUB στο Limine. Το Libreboot GRUB payload δεν έχει την εντολή chainloader, οπότε αυτό δεν πήγε πουθενά. Μετά σκέφτηκα να εγκαταστήσω GRUB modules για Libreboot, αλλά αυτό απαιτούσε να χτίσω modules με το Libreboot build system (lbmk), που ήταν πολύπλοκο και αποδείχτηκε ότι δεν χρειαζόταν, θα δείτε παρακάτω.

Η έρευνα

Έψαξα πώς το CachyOS (που επίσης χρησιμοποιεί Limine) το χειρίζεται. Έκανα mount το CachyOS ISO, έψαξα τα scripts τους, διάβασα documentation. Ανακάλυψα ότι το CachyOS εγκαθιστά GRUB με i386-pc modules για Libreboot συστήματα.

Με έριξε πάρα πολλές φορές σε emergency shell αλλά κατάφερα και από εκεί να ξεκαθαρίσω τον λόγο που έγινε αυτό, τα λάθος UUID σε ρυθμισμένο grub.cfg

Η δοκιμή

Έκανα reinstall το CachyOS στο T480 με GRUB bootloader για να δω πώς δουλεύει. Το CachyOS εγκατέστησε GRUB με i386-pc modules και το σύστημα μπήκε. Αυτό ήταν το κλειδί - τα standard GRUB modules (i386-pc) δουλεύουν με το Libreboot GRUB payload. Δεν χρειάζονται i386-coreboot modules. Να σημειωθεί ότι γενικά limine bootloader σε libreboot/coreboot συστήματα, δεν ξεκινάει.

Η λύση

Έγραψα scripts που:

  1. Ανιχνεύουν αυτόματα Libreboot/Coreboot συστήματα - Ελέγχουν αν υπάρχει EFI, ψάχνουν στο dmesg, ελέγχουν BIOS vendor, hardware model.

  2. Εγκαθιστούν GRUB - Όταν ανιχνευτεί Libreboot, το installer εγκαθιστά GRUB με i386-pc target αντί για Limine.

  3. Διορθώνουν UUIDs αυτόματα - Το grub-mkconfig μερικές φορές παίρνει το UUID από το USB stick αντί για το internal disk. Το script το εντοπίζει και το διορθώνει αυτόματα.

  4. Προσθέτουν cryptdevice parameter - Για LUKS encrypted root, το script προσθέτει αυτόματα το cryptdevice parameter στο grub.cfg αν το grub-mkconfig δεν το κάνει.

  5. Αποθηκεύουν logs - Το installer log αποθηκεύεται στο /root/omarchy-install.log για debugging.

Έβαλα μερικά έξτρα flags για να καθυστερεί 10 δευτερόλεπτα κατά την εγκατάσταση για να μπορέσω να βλέπω real-time τι συμβαίνει και αφού ολοκληρωθεί μετά έπαιρνα το omarchy-install.log από το εγκατεστημένο σύστημα και κοιτούσα τα λάθη.

Τεχνικές λεπτομέρειες

Το κύριο script είναι το install/login/limine-snapper.sh που:

  • Ελέγχει αν έχει ανιχνευτεί Libreboot (από marker file που δημιουργείται στο preflight)

  • Αν ναι, εγκαθιστά GRUB με grub-install --target=i386-pc

  • Παίρνει τα UUIDs από το installed disk (όχι από το USB λέμε που μου έβγαλε την πίστη)

  • Ελέγχει το grub.cfg μετά το grub-mkconfig και διορθώνει λάθος UUIDs

  • Προσθέτει cryptdevice parameter αν λείπει

Το detection script (install/preflight/detect-libreboot.sh) χρησιμοποιεί πολλαπλές μεθόδους:

  • Έλεγχος για απουσία EFI

  • Αναζήτηση στο dmesg για coreboot/libreboot markers

  • Έλεγχος BIOS vendor

  • Hardware model detection (ThinkPad, κλπ)

Τα αποτελέσματα

Μετά από αρκετές δοκιμές και debugging, το σύστημα τώρα:

  • Ανιχνεύει αυτόματα Libreboot/Coreboot

  • Εγκαθιστά το σωστό bootloader

  • Μπαίνει κανονικά στο desktop

  • Το LUKS encryption δουλεύει

  • Όλα τα UUIDs είναι σωστά

Pull Request

Έκανα pull request στο Omarchy repository με όλες τις αλλαγές:

Οι αλλαγές είναι backward compatible - δεν επηρεάζουν EFI συστήματα ή άλλα non-EFI συστήματα. Μόνο Libreboot/Coreboot συστήματα επηρεάζονται (θετικά).

Εργαλεία που χρησιμοποίησα

Συμπεράσματα

Το κύριο discovery ήταν ότι τα standard GRUB modules (i386-pc) δουλεύουν με το Libreboot GRUB payload. Δεν χρειάζεται να χτίσεις i386-coreboot modules. Το πρόβλημα ήταν κυρίως ότι το installer δεν ανιχνευε Libreboot συστήματα και εγκαθιστούσε Limine που δεν μπορούσε να τρέξει.

Αν έχετε Libreboot/Coreboot σύστημα και θέλετε να τρέξετε Omarchy, το PR θα πρέπει να γίνει merge σύντομα και θα λειτουργεί out of the box. Αν θέλετε να το δοκιμάσετε τώρα, μπορείτε να build-άρετε το ISO από το fork μου ή να περιμένετε το official release.

Όσοι επιθυμείτε έτοιμο ISO για δοκιμή, ελάτε σε επικοινωνία μαζί μου.


GitHub Discussion: Boot fails on first boot with Libreboot/Coreboot (no EFI payload) — installer should detect non‑EFI and offer legacy/BIOS install · basecamp/omarchy · Discussion #4209 · GitHub

Pull Request: Libreboot coreboot support by Somnius · Pull Request #4230 · basecamp/omarchy · GitHub

Επειδή πήρα φόρα έδωσα και ένα PR στο omarchy-iso ( GitHub - omacom-io/omarchy-iso ) repo γιατί έτσι όπως το είχαν θα μπορούσε να σβήσει κι άλλα docker containers χωρίς να κοιτάζει, συν μερικές ακόμα προσθήκες/αλλαγές μου.. :P

Αν και είχα full guidance από DHH + AndyBodnar

βλέπε


https://github.com/basecamp/omarchy/discussions/4209#discussioncomment-15460980

και


https://github.com/basecamp/omarchy/discussions/4209#discussioncomment-15465173

του πως να κινηθώ…

πριν 8 ώρες ο ίδιος ο DHH μου έριξε άκυρο


https://github.com/basecamp/omarchy/pull/4230#issuecomment-3737757155

Αναφέρω ότι κύριοι, εσείς μου είπατε να το γυρίσω τσάμικο..

Τέσπ, ρωτάω γιατί δεν είναι ξεκάθαρο αυτό που ρωτάει, και το πιο πιθανό θα συμφωνήσει μετά την ολοκλήρωση της εγκατάστασης να πέσω σε TTY και να τρέξω ένα script εάν και εφόσον το μηχάνημα έχει δίκτυο.

Μαλακίες, νευρίασα..

Edit: αλλιώς κι αν θέλει isntaller που να παράγει iso, και παλι μαλακίες..

Σε συνέχεια του θέματος με το Custom Omarchy ISO για Libreboot / Coreboot BIOS’…

..το ανεβάζω Archive.org το iso και όποιος θέλει το κάνει μετά update, ίσα να μην πάει χαμένη η δουλειά..

tech savy people will figure it out.,


SourceForge net Mirror


Archive org Link