Καλησπέρα και καλή εβδομάδα στην κοινότητα.
Έχω ξεκινήσει και μαζεύω σημειώσεις όπως και σχετικό hardware για να μπορέσω να flash-άρω custom bios στο Lenovo ThinkPad T480 μου, συγκεκριμένα έχω το i7 variant χωρίς nvidia και ένα δεύτερο i5 variant επίσης χωρίς nVidia του κολλητού μου.
Η διαδικασία απαιτεί raspberry pi pico (μέσο κόστος 7 ευρώ), μια δαγκάνα /clip (μέσο κόστος 8 ευρώ) και πολύ υπομονή και όρεξη μεταξύ άλλων όπως ένα κολλητήρι + καλάϊ.
Το αποτέλεσμα μετά τις κολλήσεις θα είναι σαν τη παρακάτω φωτογραφία :
Σκοπός του άρθρου είναι να το χρησιμοποιήσετε σε χρήση μαζί με το βίντεο παρακάτω για να σας βοηθήσει στη διαδικασία “μιλώντας Ελληνικός” 
Για αρχή ας γράψω τι είναι το Libreboot και το Coreboot και γιατί κάποιος να το θέλει στον υπολογιστή του :
Τι είναι το Libreboot και το Coreboot;
Coreboot είναι ένα ελεύθερο, ανοιχτού κώδικα firmware που μπορεί να αντικαταστήσει το κλειστό BIOS/UEFI που βρίσκεις στους περισσότερους υπολογιστές. Σχεδιάστηκε για να εκκινεί το λειτουργικό σύστημα όσο το δυνατόν πιο γρήγορα και με περισσότερη ασφάλεια, εκτελώντας μόνο τις απολύτως απαραίτητες εργασίες αρχικοποίησης του υλικού (CPU, RAM, chipset), πριν παραδώσει τον έλεγχο στο λειτουργικό σύστημα ή σε έναν εξωτερικό bootloader όπως το GRUB ή το SeaBIOS. Ένα από τα μεγάλα πλεονεκτήματα του coreboot είναι η διαφάνεια, ο έλεγχος του κώδικα και η μείωση των πιθανών κενών ασφαλείας και backdoors που έχει το κλειστό λογισμικό. Ωστόσο, υποστηρίζει συγκεκριμένες μόνο πλακέτες και απαιτεί τεχνικές γνώσεις για εγκατάσταση.
Libreboot είναι μια διανομή του coreboot με στόχο τον μηδενισμό (ή ελαχιστοποίηση) των proprietary blobs, δηλαδή των κλειστού λογισμικού τμημάτων που χρειάζεται κάποια hardware. Εστιάζει ώστε να είναι εντελώς ελεύθερο λογισμικό, πιο εύκολο στην εγκατάσταση για μη τεχνικούς χρήστες, και διαθέτει αυτοματοποιημένο σύστημα build που απλοποιεί τη δημιουργία ROM images. Το Libreboot αποσκοπεί στο να βοηθήσει τους χρήστες να ξεφύγουν από τα κλειστά BIOS/UEFI και να έχουν μεγαλύτερο έλεγχο στο υλικό τους.
Γιατί να το θέλει κάποιος στον υπολογιστή του;
- Περισσότερη ελευθερία και διαφάνεια: Ο χρήστης γνωρίζει τι «τρέχει» στον υπολογιστή του και μπορεί να ελέγξει ή να τροποποιήσει τον κώδικα.
- Βελτιωμένη ασφάλεια: Ελαχιστοποιεί πιθανά backdoors και security holes που μπορεί να ενσωματώνονται στο κλειστό firmware.
- Ταχύτερη εκκίνηση: Το coreboot συνήθως εκκινεί το λειτουργικό πιο γρήγορα σε σχέση με τα παραδοσιακά BIOS/UEFI.
- Εύκολη επαναφορά και ενημέρωση: Ανοιχτή υποστήριξη και συχνές διορθώσεις μέσω κοινότητας, κάτι σπάνιο στα παραδοσιακά BIOS.
- Ιδανικό για ελεύθερα/ανοικτά λειτουργικά: Για όσους επιθυμούν πλήρως ελεύθερο οικοσύστημα (free software) ή θέλουν να αποφύγουν οποιαδήποτε proprietary λύση.
Τώρα πίσω στα δικά μας…
Αυτές είναι σημειώσεις βασισμένες στο Libreboot_Flashing_Tutorial του χρήστη YouTube Device Casting Couch - Tech Podcast βίντεο με τίτλο Libreboot Thinkpad T480 with Raspberry Pi Pico
Ο οδηγός αυτός παρέχεται και στα Αγγλικά, όπου ήταν και οι αρχικές μου σημειώσεις, στον παρακάτω σύνδεσμο lefteros.com/dev/Libreboot_Flashing_Tutorial_Fedora42.md, η Ελληνοποίηση προέκυψε ξεκάθαρα για το Linux-User.gr
Επίσης ο αρχικός οδηγός ήταν για Debian/Ubuntu based συστήματα με Apt, αλλά ο δικός μου οδηγός έχει τροποποιηθεί αναλόγως (και δοκιμασμένα) για Fedora42 σύστημα, όπως είναι αυτή τη περίοδο το Latest Nobara Project ως Fedora Fork.
1. Προετοιμασία του συστήματος
Για αρχή κάνουμε μια πλήρη ενημέρωση του συστήματος
sudo dnf update
Στη συνέχεια εγκαθιστούμε κάποια απαραίτητα πακέτα που δεν αναφέρονται στις αρχικές σημειώσεις/βίντεο
sudo dnf install libtool libtool-ltdl-devel automake autoconf git
Σημείωση
Μπορείτε να παραλείψετε ολόκληρο το κομμάτι του geteltorito και να πάτε στο #3 χρησιμοποιώντας το εξαγόμενο αρχείο εικόνας t480_bios_update.img
2. Λήψη της εικόνας boot
Το αρχικό .iso αρχείο εικόνας που περιέχει το firmware που χρειαζόμαστε να ανέβουμε/κατέβουμε για να ξεκινήσει η διαδικασία, βρίσκεται στο παρακάτω σύνδεσμο
https://download.lenovo.com/pccbbs/mobiles/n24ur39w.iso
Όπου μπορείτε να το κάνετε λήψη με οποιαδήποτε μέθοδο.
Προτείνεται σε αυητό το σημείο να δημιουργήσετε έναν φάκελο με συμβολική ονομασία, π.χ. T480 ώστε να μπορείτε να μαζέψετε όλα τα δεδομένα εκεί μέσα.
Παρακάτω, αν το geteltorito δεν είναι διαθέσιμο στο σύστημα Fedora σας υπάρχουν 2 επιλογές:
-
Ενεργοποίηση του COPR repository για αυτό
sudo dnf copr enable fedora-review/geteltoritoκαι στη συνέχεια εγκατάσταση του πακέτου με
sudo dnf install geteltoritoή
-
Εγκατάσταση μέσω Git source και make για το σύστημά σας. Σημείωση για το nobara δεν είναι διαθέσιμο οπότε χρησιμοποίησα τη δεύτερη (αυτή) μέθοδο
sudo dnf install gcc make autoconf automake libtool git clone https://github.com/rainer042/geteltorito.git cd geteltorito ./autogen.sh ./configure make sudo make installΑυτό θα εγκαταστήσει το δυαδικό
geteltoritoστο σύστημά σας.
Υπάρχουν επίσης εναλλακτικά binaries για χρήση με ίδια διαδικασία όπως το xorriso
3. Το xorriso μπορεί να εξάγει El Torito boot images:
sudo dnf install xorriso
xorriso -osirrox on -indev n24ur39w.iso -extract /boot/boot.img ./t480_bios_update.img
Απλά μια σημείωση, το xorriso δεν δούλεψε στο Nobara για να εξάγει το σωστό boot λόγω του path, οπότε χρησιμοποιήσαμε το ακόλουθο αντί για να εξάγουμε την εικόνα boot:
7z e n24ur39w.iso [BOOT]/Boot-HardDisk.img
mv Boot-HardDesk.img t480_bios_update.img
για να πάρουμε το Boot-HardDesk.img ως το /t480_bios_update.img μας, ναι και το 7zip μπορεί!
Σημείωση
Το compile από source είναι η πιο αξιόπιστη μέθοδος αυτή τη στιγμή αφού το Fedora COPR δεν είναι διαθέσιμο για το πακέτο στο Fedora 42/Nobara. Το πακέτο geteltorito δεν είναι διαθέσιμο στα προεπιλεγμένα Nobara/Fedora repos, και το Fedora Review COPR που δοκιμάσατε επιστρέφει αυτή τη στιγμή 404 errors (δεν βρέθηκε), οπότε κανένα πακέτο δεν είναι διαθέσιμο εκεί.
3. Ρύθμιση git για να κλωνοποιήσουμε & χρησιμοποιήσουμε το lbmk
Αν δεν το έχετε κάνει ήδη, μπορεί να θέλετε να ρυθμίσετε πρώτα τις βασικές μεταβλητές χρήστη git όπως Όνομα και Email:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Και στη συνέχεια να πάρετε το libreboot με
git clone https://codeberg.org/libreboot/lbmk
cd lbmk
export XBMK_THREADS=4
Για τη μεταβλητή XBMK_THREADS μπορεί να θέλετε να χρησιμοποιήσετε τουλάχιστον το μισό των πυρήνων που το σύστημά σας μπορεί να μοιραστεί με τη διαδικασία του compile. Για παράδειγμα αν έχετε 12 πυρήνες και 24 threads μπορείτε να πληκτρολογήσετε την αξία “12” για να χρησιμοποιήσετε 12 από τα συνολικά 24 threads.
Στη συνέχεια τρέχουμε τη διαδικασία dependencies για την εντολή mk
./mk dependencies fedora42
Αυτό θα τρέξει dnf για να εγκαταστήσει τα απαραίτητα πράγματα για την εντολή mk. Υπάρχουν περισσότερες ρυθμίσεις που μπορούν να βρεθούν αν περιηγηθείτε στον κατάλογο /lbmk/config/dependencies/
Μετά την εντολή mk για το coreboot t480:
./mk -b coreboot t480_vfsp_16mb
που θα ρυθμίσει το σύστημά σας για να δημιουργήσει bios images και άλλα σχετικά με τη διαδικασία.
Επόμενο είναι το flashprog που χρειάζεται να δημιουργηθεί, οπότε τρέχουμε
./mk -b flashprog
Δημιουργία του pico-serprog
Το κατεβάζουμε (μέχρι την ημερομηνία του άρθρου υπήρχε το 25.06, μπορεί και να μην είναι διαθέσιμο στο προσεχές μέλλον, οπότε κάτω από τα mirrors.mit.edu/libreboot/stable/ σίγουρα θα βρείτε μεταγενέστερη έκδοση αν όχι την ίδια) και το αποσυμπιέζουμε με
wget https://mirrors.mit.edu/libreboot/stable/25.06/roms/libreboot-25.06_serprog_pico.tar.xz
tar -xvf libreboot-25.06_serprog_pico.tar.xz
και τα inject vendor αρχεία με
wget https://mirrors.mit.edu/libreboot/stable/25.06/roms/libreboot-25.06_t480_vfsp_16mb.tar.xz
./mk inject libreboot-25.06_t480_vfsp_16mb.tar.xz
Μετά θα χρησιμοποιήσουμε τις εντολές flashprog
4. Εντολές Flashing για Thunderbolt Chip
Αυτό το βήμα είναι όλο flashprog για να διαβάσουμε, συγκρίνουμε, αδειάσουμε ή να κάνουμε flash δυαδικά σε chips όπως το thunderbolt chip, που αν δεν γίνει flash σωστά θα παρεμβαίνει με τη λειτουργικότητα usb-c όπως το fast-charing και άλλα, και στη συνέχεια το πραγματικό bios.
Σε αυτό το παράδειγμα πιστεύουμε ότι το pico τρέχει στο /dev/ttyACM0 μπορείτε να το ελέγξετε χρησιμοποιώντας dmesg ενώ απλά έχετε συνδέσει το pico
Το schematic βρίσκεται διαθέσιμο στο βίντεο αλλά το αφήνω και εδώ για χρήση.
Πρώτα συνδέουμε το clip στο thunderbolt chip
Εικόνα του πραγματικού chip

source link (μερικά μπορεί να διαφέρουν)
και κάνουμε ένα dump αυτού του chip 2x φορές για να τα συγκρίνουμε
flashprog -p serprog:dev=/dev/ttyACM0 -r ../../../t480tb1.bin
flashprog -p serprog:dev=/dev/ttyACM0 -r ../../../t480tb2.bin
(προσοχή στα paths)
Στη συνέχεια τρέχουμε ένα checksum χρησιμοποιώντας sha512sum και στα δύο χρησιμοποιώντας
sha512sum ../../../t480tb*.bin
και ΒΕΒΑΙΩΣΤΕ ΟΤΙ ΚΑΙ ΤΑ ΔΥΟ HASHES ΤΑΙΡΙΑΖΟΥΝ, αυτό σημαίνει ότι πήραμε 2 αναγνώσεις/dump του thunderbolt chip που είναι πανομοιότυπες οπότε το dump ήταν επιτυχές.
Στη συνέχεια χρειάζεται να τρέξουμε μια συγκεκριμένη εντολή για να σβήσουμε το chip, χρησιμοποιώντας
flashprog -p serprog:dev=/dev/ttyACM0 -E
Στη συνέχεια το πραγματικό flashing θα γίνει δημιουργώντας ένα άδειο αρχείο null.bin για να κάνουμε flash πάνω από τα δεδομένα του chip, οπότε χρησιμοποιούμε την εντολή
dd if=/dev/zero of=null.bin bs=1M count=1
Και στη συνέχεια το γράφουμε στο Thunderbolt chip χρησιμοποιώντας την εντολή
flashprog -p serprog:dev=/dev/ttyACM0 -w null.bin
Το κομμάτι της εγγραφής παίρνει αρκετά περισσότερο από το να το διαβάσουμε ή να το αδειάσουμε, οπότε κάντε υπομονή.
Μετά,
- Πρώτα κόβουμε την τροφοδοσία στο PICO
- Στη συνέχεια αφαιρούμε το clip από το thunderbolt chip
Επανασυνδέουμε την coin-cell μπαταρία και την εσωτερική μπαταρία και στη συνέχεια βάζουμε το πίσω κάλυμμα χωρίς να είναι πολύ σφιγμένο γιατί χρειαζόμαστε μόνο να επανασυνδέσουμε την κύρια μπαταρία.
Συνδέουμε το φορτιστή και θα πρέπει να ανάψει αυτόματα και να πάρει λίγο για να boot-άρει. Μόλις το κάνει, μπαίνουμε στο bios και επαληθεύουμε ότι είναι προσβάσιμο. Μπορεί να πάρει και ένα λεπτό μέχρι να καταφέρει να μπει στο bios.
Στη συνέχεια κλείνουμε το laptop, και αφαιρούμε το καλώδιο φόρτισης και αφαιρούμε το πίσω κάλυμμα για άλλη μια φορά, αποσυνδέουμε την κύρια μπαταρία και την coin-cell μπαταρία και επανασυνδέουμε το flasher clip σωστά για άλλη μια φορά στο thunderbolt chip και συνδέουμε το usb καλώδιο στο pico.
Τώρα είναι ώρα να κάνουμε flash νέο firmware στο thunderbolt chip, χρησιμοποιώντας την ακόλουθη εντολή συμπεριλαμβανομένου του tb.bin από τον κατάλογο vendorfiles χρησιμοποιώντας την εντολή
flashprog -p serprog:dev=/dev/ttyACM0 -w ../../vendorfiles/t480/tb.bin
Θα προχωρήσει και θα κάνει flash το thunderbolt chip και θα πάρει λίγο, γύρω από το μήνυμα επιστροφής Verifying flash.. VERFIFIED.
Μόλις τελειώσουμε με αυτό, αποσυνδέουμε το usb του pico και στη συνέχεια αφαιρούμε το flashing clip από το thunderbolt chip και όπως πριν συνδέουμε πίσω την coin-cell μπαταρία και την εσωτερική μπαταρία και βάζουμε πίσω το πίσω κάλυμμα, για άλλη μια φορά χαλαρά ώστε να μπορούμε να το αφαιρέσουμε ξανά αργότερα.
Μετά το παραπάνω συνδέουμε το φορτιστή. Θα ανάψει και θα κάνει reset μερικές φορές. Αυτή η διαδικασία μπορεί να πάρει μέχρι ~3’ λεπτά αλλά μόλις μπείτε στο lenovo stock bios χρησιμοποιώντας το πλήκτρο F1 θα πρέπει να είστε έτοιμοι να συνεχίσετε.
Στη συνέχεια επαληθεύουμε ότι το bios είναι εντάξει και στη συνέχεια κλείνουμε το laptop και αφαιρούμε το φορτιστή. Μετά από όλα αυτά θα μπορούμε να είμαστε έτοιμοι και να κάνουμε flash το Libreboot bios.
5. Εντολές Flashing για το Bios Chip
Εικόνα του πραγματικού chip

Bios Chip (μερικά μπορεί να διαφέρουν)
Αυτή τη φορά το PCB μπορεί να μην εμφανίζει την αρίθμηση γι’ αυτό χρειάζεται να είμαστε ιδιαίτερα προσεκτικοί στο πώς να συνδέσουμε το clip, επίσης θεωρείται σωστό να διαχωρίσουμε το πραγματικό κρεμαστό pico micro-controller με κάτι π.χ. πλαστικό anti-static packaging ώστε να μην ακουμπάει κανένα από τα PCB μέρη και να προκαλέσει βραχυκύκλωμα.
Συνδέουμε το Clip, και στη συνέχεια το usb στο pico
Στη συνέχεια χρειάζεται να επιστρέψουμε στον κατάλογο lbmk και να εξάγουμε το αρχείο libreboot-25.06_t480_vfsp_16mb.tar.xz θα εξαχθεί με έναν κατάλογο bin που χρειάζεται να χρησιμοποιήσουμε στο επόμενο βήμα. Αλλά πρώτα cd μπαίνουμε στον κατάλογο elf/flashprog χρησιμοποιώντας
cd elf/flashprog
και στη συνέχεια τρέχουμε το flashprog για να πάρουμε 2 flash dumps του bios chip, ακριβώς όπως κάναμε πριν με το thunderbolt chip.
sudo ./flashprog -p serprog:dev=/dev/ttyACM0 -r ../../../t480bios1.rom
sudo ./flashprog -p serprog:dev=/dev/ttyACM0 -r ../../../t480bios2.rom
Και επαληθεύουμε ότι και τα δύο έχουν το ίδιο sha512sum checksum τρέχοντας την εντολή
sha512sum ../../../t480bios*.rom
βεβαιωθείτε ότι και τα δύο hashes ταιριάζουν πριν συνεχίσετε. Αν όχι ξανα-κάντε τη διαδικασία και επανα-επαληθεύστε χρησιμοποιώντας sha512sum.
Σημείωση
Είναι σοφό να κρατάτε αυτά τα bios flash dumps στο χέρι αν ποτέ θέλετε να πουλήσετε το laptop ή να το πάτε για service, μπορείτε τότε να κάνετε re-flash το stock bios πίσω με αυτά ![]()
Τώρα είναι ώρα να κάνουμε flash το Libreboot bios, γράφοντας στο bios chip χρησιμοποιώντας την ακόλουθη εντολή
sudo ./flashprog -p serprog:dev=/dev/ttyACM0 -w ../../bin/t480_vfsp_16mb/seagrub_t480_vfsp_16mb_libgfxinit_corebootfb_usqwerty.rom
ΑΥΤΟ ΘΑ ΠΑΡΕΙ ΠΟΛΥ ΧΡΟΝΟ.. ίσως μερικά λεπτά.
Όταν τελειώσει θα εμφανίσει Verifying flash... VERIFIED. Αυτό σηματοδοτεί ότι το flashing ολοκληρώθηκε.
Όπως πριν, αφαιρούμε το usb από το pico, ξε-κάνουμε το clip από το PCB bios chip, στη συνέχεια συνδέουμε τη coin-cell μπαταρία και την εσωτερική μπαταρία πίσω και βάζουμε πίσω το πίσω κάλυμμα για να συνδέσουμε την κύρια μπαταρία γιατί πραγματικά χρειαζόμαστε να το δοκιμάσουμε πρώτα.
Το laptop θα πάρει λίγο περισσότερο από ένα λεπτό ή δύο για να boot. Αλλά σε επόμενα boot και μετά από reset θα δούμε το “Seabios” payload και στη συνέχεια θα μπούμε στο Libreboot grub interface.
Αν όλα πήγαν εντάξει, τότε θα χρειαστεί να ξανα-βιδώσουμε το πίσω κάλυμμα σωστά και να δοκιμάσουμε τα πράγματα.
Μετά θα σας παρουσιάσει την νέα εικόνα του Libreboot όπως στη παρακάτω φωτογραφία :
Εύχομαι να πήγαν όλα καλά!







