Ο σημερινός οδηγός, απευθύνεται στους κατόχους του Lenovo Thinkpad X200 οι οποίοι θα θέλουν να αντικαταστήσουν (flash) το BIOS τους με το ελεύθερο και ανοιχτού κώδικα Libreboot
Λίγα λόγια για το Libreboot και το Lenovo Thinkpad X200
Το Libreboot είναι μια ελεύθερη και ανοιχτή υλοποίηση τύπου BIOS ή UEFI, το οποίο όπως τα προαναφερθέντα εκκινεί τις συσκευές (Hardware) του υλικού και το λειτουργικό σύστημα.
Όλοι σχεδόν οι υπολογιστές χρησιμοποιούν μη ελεύθερο ιδιόκτητο firmware εκκίνησης, ακόμα κι αν χρησιμοποιούν το Linux λειτουργικό σύστημα. Το μη-ελεύθερο firmware BIOS / UEFI περιέχει συχνά backdoors, μπορεί να είναι αργή, να κλειδώνουν την δυνατότητα εγκατάστασης άλλων λειτουργικών συστημάτων και να έχει σοβαρά σφάλματα, με αποτέλεσμα συχνά οι χρήστες να παραμένουν αβοήθητοι και έλεος της εταιρίας. Αντίθετα, το Libreboot το οποίο βασίζεται στο Coreboot είναι πλήρως ελεύθερο λογισμικό, όπου ο καθένας μπορεί να συνεισφέρει ή να επιθεωρήσει τον κώδικα του και ενημερώνεται διαρκώς. Επίσης το Libreboot είναι πιο γρήγορο, πιο ασφαλές και πιο αξιόπιστο από το μη-ελεύθερο firmware και μπορεί να προσφέρει πολλά προηγμένα χαρακτηριστικά, όπως κρυπτογραφημένο /boot
, έλεγχο με GPG υπογραφών πριν από την εκκίνηση του πυρήνα σας, δυνατότητα φόρτωσης λειτουργικού συστήματος από το Flash chip και πολλά άλλα.

Δυστυχώς όμως, λόγο κατασκευής των διαφόρων υπολογιστών, δεν υποστηρίζονται όλες οι υλοποιήσεις για αντικατάσταση με flash του BIOS/UEFI με το Libreboot. Συνήθως όμως, μια σειρά απο Lenovo υποστηρίζονται όπως π.χ. το Lenovo Thinkpad X200. Το συγκεκριμένο Laptop κυκλοφόρησε το 2008 με Intel Core 2 Duo επεξεργαστή και 2GB RAM. Η κατασκευή τους είναι αρκετά στιβαρή και για την εποχή του ήταν ένα business class laptop. Πολύ πιθανό να το βρείτε σε καταστήματα που πουλάνε ανακατασκευασμένoυς υπολογιστές ή να το έχετε ήδη και να το χρησιμοποιείτε αυτή την στιγμή.
Ας δούμε όμως πως μπορούμε να flash’άρουμε το Libreboot στο Lenovo Thinkpad X200.
Προαπαιτούμενα για το flash’αρισμα
Αυτός ο οδηγός χρησιμοποιεί το BeagleBone Black(BBB) και τα βήματα είναι πάνω σε Λειτουργικό Linux και οι εντολές βασίζονται στον επίσημο οδηγό του Libreboot.org. Ο οδηγός απευθύνεται σε έμπειρους χρήστες οπότε δεν φέρουμε καμία ευθύνη για την οποιαδήποτε βλάβη του Thinkpad σας.
Τα απαραίτητα λοιπόν εργαλεία είναι:
- Thinkpad X200 (προφανώς).
- ένα BeagleBone Black.
- USB αντάπτορας για τροφοδότηση του BBB.
- μια 4GB microSD κάρτα.
- ένα ATX power supply (Τροφοδοτικό) η άλλη πηγή από 3.3V DC.
- Ανάλογα το chip ένα Pomona 5250 η Pomona 5252 clip (Εξαρτάται από το μέγεθος του chip).
- 1 male-to-male και 7 male-to-female jumper wires.
μια σύνδεση στο Διαδίκτυο (Internet).
Προετοιμάζοντας το BeagleBone Black (ΒΒΒ)
Πρώτα, πρέπει να γίνει το BBB setup, για να μπορεί να κάνει flashing. Για να αρχίσουμε, το onboard eMMC flash storage θα αναβαθμιστεί με Debian 7.
Πάμε στην σελίδα : http://beagleboard.org/latest-images απο όπου κάνουμε λήψη το σχετικό image. Προτιμήστε αυτήν ( Debian-7.8-lxde-4gb-armh-2015-03-01.img.xz).
Αποσυμπίεσε το image χρησιμοποιώντας την παρακάτω εντολή (Το όνομα του φακέλου μπορεί να έχει αλλάξει από τότε που γράφτηκε ο οδηγός):
unxz bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz
Τώρα γράφουμε το image στην microSD card χρησιμοποιώντας :
sudo dd bs=4M if=bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img of=/dev/mmcblk0; sync
Το όνομα mmcblk0 μπορεί να διαφέρει στο δικό σας. Μόλις ολοκληρωθεί , αλλάξτε το /boot/uEnv.txt
αρχείο στην microSD και διέγραψε το #
σε αυτή την σειρά:
cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh
Αφού αποθηκεύσετε βάλτε την microSD στο BeagleBone Black, συνδέστε την τροφοδοσία και το ethernet καλώδιο για να συνδεθεί στο δίκτυο και άνοιξε το. Όταν ανάψει, θα ξεκινήσει να γράφει το Debian από την microSD στο eMMC storage. Τα φώτα του BBB θα ξεκινήσουν να αναβοσβήνουν και όταν τελειώσει διαδικασία η συσκευή θα σβήσει μόνη της. Μόλις γίνει αυτό αφαιρέστε την SD και ξανά άναψε το.
Σε αυτό σημείο θα χρειαστείς να κάνεις SSH στο BBB. Αφού βρεις την IP που έχει λάβει τότε δίνεις στον υπολογιστή σου:
ssh root@192.168.7.2
όπου το default username είναι debian
το password είναι temppwd
. Όταν συνδεθείς, τρέξε apt-get update
και apt-get upgrade
για να κάνεις update όλο το λειτουργικό.
Στην συνέχεια χρειάζεται να επιτρέπεις το spidev στο BBB. Κατεβάζουμε το αρχείο BB-SPI0-01-00A0.dts:
wget https://raw.githubusercontent.com/CerebruxCode/Flash-Libreboot-thinkpad-X200-Beaglebone-black/master/BB-SPI0-01-00A0.dts
Τώρα χρειάζεται να γίνει compile και εγκατάσταση:
dtc -O dtb -o BB-SPI0-01-00A0.dtbo -b 0 -@ BB-SPI0-01-00A0.dts cp BB-SPI0-01-00A0.dtbo /lib/firmware/ echo BB-SPI0-01 > /sys/devices/bone_capemgr.*/slots
Για να δεις ότι η εγκατάσταση πήγε καλά, τρέξε την σειρά:
cat /sys/devices/bone_capemgr.*/slots
Η έξοδος που θα λάβεις πρέπει να είναι παρόμοιο στην τελευταία σειρά και να ταιριάζει:
1: 55:PF--- 2: 56:PF--- 3: 57:PF--- 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI 7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-SPI0-01
Τώρα επαλήθευσε ότι το spidev υπάρχει:
ls -al /dev/spid* crw-rw---T 1 root spi 153, 0 Feb 29 05:39 /dev/spidev1.0
Τέλος για να ολοκληρωθεί το setup, πρέπει το ΒΒΒ να έχει τις αλλαγές μετά το restart. Αλλάζουμε την τελευταία σειρά από το /etc/default/capemgr
να ταιριάζει με την παρακάτω:
CAPE=BB-SPI0-01
Πρόσβαση στο Flash Chip του Lenovo Thinkpad X200
Για πρόσβαση στο flash chip, πρώτα ξεβίδωσε όλες τις βίδες από την βάση οι όποιες είναι μαρκαρισμένες με κόκκινο στην παρακάτω φωτογραφία.
Αντέγραψε την Mac address σε ένα χαρτί. Υπάρχει γραμμένη σε αυτοκόλλητο από την πίσω μεριά. Αν δεν είναι εκεί τότε αφαιρείς της ram και εκεί έχει ένα ακόμα.
Τώρα με όλα ξεβιδωμένα, γύρνα το λάπτοπ ανάποδα προς το πληκτρολόγιο. Πίεσε το πληκτρολόγιο μαλακά προς τα μέσα και μετά σπρώξε προς την οθόνη. Μετά σήκωσε το με προσοχή. Από κάτω έχει μια ταινία όπως την φωτογραφία.
Για να βγάλεις την ταινία, τράβα την ακριβώς από τον συνδέτη όπως βλέπεις στην φωτογραφία. Εάν το λάπτοπ έχει ανάγνωση δαχτυλικού αποτυπώματος τράβα την ταινία και από αυτό.
Με τα καλώδια αποσυνδεδεμένα, «ευγενικά» σήκωσε το πλαστικό που ξεκουράζεις τους αντίχειρες προς τα πάνω μέχρι να βγει. Μόλις βγει, πρέπει να μοιάζει ίδιο με την παρακάτω φωτογραφία. Κοίτα για το chip μέσα στο κόκκινο τετράγωνο.
Το chip μπορεί να είναι 4MB η 8MB chip. Ενδεικτικά το μικρότερο είναι με 8 pin=4mb και το μεγαλύτερο 16 pin=8mb. Στην φωτογραφία παρακάτω βλέπεις την διαφορά. Το 4MB χρειάζεται Pomona 5250 και το 8MB χρειάζεται Ponoma 5252 clip.
Σύνδεση του Beaglebone Black στο flash chip του Lenovo thinkpad X200
Για να αποκτήσεις πρόσβαση στο chip,το επόμενο βήμα είναι να συνδέσεις το BBB στο flash chip. Σύνδεσε το σωστό μέγεθος Pomona για το flash drive το οποίο να είναι ασφαλές τοποθετημένο με τα pins.
Το επόμενο βήμα είναι να συνδέσεις το BBB και την πηγή ενέργειας του. Ξεκίνα την σύνδεση με male-to-female jumper καλώδια από το clip στο BBB σε σχέση με το παρακάτω διάγραμμα. Μην συνδέσεις το 3.3V power ακόμα. Η πάνω μεριά από την φωτογραφία είναι προς την οθόνη.
nc(no conection) 4m chip === Απο την δεξία μεριά (εκεί που είναι η VGA είσοδος) ==== 18 - - 1 22 - - NC NC - - 21 3.3V (PSU) - - 17 8m chip === Απο την μεριά τις οθόνης ==== NC - - 21 1 - - 17 NC - - NC NC - - NC NC - - NC NC - - NC 18 - - 3.3V (PSU) 22 - - NC
Απλά αντιστοιχίστε τους αριθμούς με το αντίστοιχο pin πάνω στο κλιπ στην αντίστοιχη υποδοχή του BeagleBone. Η παρακάτω εικόνα δείχνει τον τρόπο προσανατολισμού της συσκευής. Οι χαμηλότεροι αριθμοί αρχίζουν κοντά στο barrel connector.
Βεβαιωθείτε ότι κανένα τμήμα του BeagleBone δεν αγγίζει οτιδήποτε. Αυτό μπορεί εύκολα να αποφευχθεί τοποθετώντας κάτι μη αγώγιμο κάτω από αυτό πχ.(κόλα χαρτί).
Εάν χρησιμοποιείς ATX power ( τροφοδοτικό ) για πηγή , τότε σύνδεσε από το τροφοδοτικό πορτοκαλί(3.3V) στο Pomona 3.3v. Μετά σύνδεσε από το τροφοδοτικό Μαύρο(ground) με το BBB στην θέση #2 . Ασφάλισε τις συνδέσεις με μονωτική ταινία. Το διάγραμμα του (Wikipedia) μπορεί να βοηθήσει για τα socket. Για να ανάψεις το τροφοδοτικό συνδέεις ένα πράσινο με ένα μαύρο και συνδέεις το τροφοδοτικό στην πρίζα.
Εάν χρησιμοποιείς άλλου τύπου τροφοδοσίας, σιγούρεψε ότι το ground από την πηγή είναι συνδεμένο στο socket #2 πάνω στο ΒΒΒ και 3.3V στο Pomona.
Με όλες τις συνδέσεις έτοιμες , είναι ώρα να κατεβάσεις το Libreboot ROM και utilities.
Συνδεμένος με SSH, κατέβασε το τελευταίο utility archive και το αντίστοιχο ROM image για το μέγεθος του flash chip από το website του Libreboot χρησιμοποιώντας wget και έπειτα αποσυμπίεσε τα. (Σημείωση: το URLs στο παράδειγμα μπορεί να έχει αλλάξει από τότε που γράφτηκε ο οδηγός.)
Παράδειγμα:
wget https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/libreboot_r20160907_util.tar.xz wget https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/rom/grub/libreboot_x200_8mb.tar.xz tar xf libreboot_r20160907_util.tar.xz tar xf libreboot_x200_8mb.tar.xz chmod u+x libreboot_r20160907_util/ich9deblob/armv7l/ich9gen chmod u+x libreboot_r20160907_util/flashrom/armv7l/flashro
Για να ελέγξεις αν το setup είναι συνδεμένο ακριβώς τρέξε την εντολή:
./libreboot_r20160907_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512
Εάν όλα δουλεύουν σωστά, τότε το output πρέπει να είναι έτσι :
flashrom v0.9.8-unknown on Linux 3.8.13-bone79 (armv7l) flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. Found Macronix flash chip "MX25L3205D/MX25L3208D" (4096 kB, SPI) on linux_spi. No operations were specified.
Τώρα αν όλα δουλεύουνε καλά, πρέπει να κάνεις backup το παρόν firmware. Αυτά τα 3 backups θα γίνουν για να σιγουρέψουμε ότι δεν θα έχει κανένα error όταν διαβάζει το chip.
./libreboot_r20160907_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r factory1.rom ./libreboot_r20160907_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r factory2.rom ./libreboot_r20160907_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r factory3.rom
Σύγκρινε κάθε firmware dump συγκρίνοντας τα hashes, χρησιμοποιώντας την παρακάτω εντολή:
sha512sum factory*.rom
Εάν και τα 3 hashes είναι διαφορετικά, έλεγξε την καλωδίωση και τις συνδέσεις, και σιγούρεψε τα βήματα που προσπέρασες ή εκτέλεσες λάθος. Τότε ξανά τρέξε την πάνω εντολή. Όταν σιγουρευτείς ότι έκανες σωστό backup ,αποθήκευσε ένα από τα τρία αρχεία σε μια ασφαλή περιοχή.
Το παρακάτω μπορεί να προσπεραστεί αλλά καλό είναι να εκτελεστεί.
Το τελικό στάδιο πριν να το flash είναι να προσθέσεις την τωρινή MAC address. Αυτό μπορεί να επιτευχθεί με την ich9gen υπηρεσία. Αντικατέστησε τα Χ στην εντολή παρακάτω με την MAC address που έγραψες πιο πριν.
./libreboot_r20160907_util/ich9deblob/armv7l/ich9gen --macaddress XX:XX:XX:XX:XX:XX
Η εντολή θα δημιουργήσει 2 bin files, ένα εκ των οποίων θα χρειαστεί να προστεθεί στο ROM image το οποίο εξαρτάται από το μέγεθος του flash chip. Η παρακάτω εντολή θα αντιγράψει από το Libreboot αρχείο χρησιμοποιώντας dd.
Για 4MB flash chips:
cp Libreboot_x200_4mb/x200_4mb_usqwerty_vesafb.rom . dd if=ich9fdgbe_4m.bin of=x200_4mb_usqwerty_vesafb.rom bs=1 count=12k conv=notrunc
Για 8MB flash chips:
cp Libreboot_x200_8mb/x200_8mb_usqwerty_vesafb.rom . dd if=ich9fdgbe_8m.bin of=x200_8mb_usqwerty_vesafb.rom bs=1 count=12k conv=notrunc
Τώρα ήρθε η ώρα να γράψεις το νέο image στο chip χρησιμοποιώντας την παρακάτω εντολή . Σιγούρεψε ότι το όνομα του φακέλου ταιριάζει με το μέγεθος του chip. Εάν το flash είναι επιτυχημένο , θα πρέπει να λέει στο τέλος “verified” η κάτι παρόμοιο. Εάν σε βγάλει error ότι το flash δεν επετεύχθη , τότε έλεγξε τις συνδέσεις και ξανά τρέξε την εντολή. Εάν το μήνυμα λέει «the current image on the chip being exactly the same as the image about to be flashed » τότε ξανά τρέξε την εντολή, σιγούρεψε ότι θα ξαναπάρεις το ίδιο μήνυμα. Αυτό σημαίνει ότι πέτυχε.
./libreboot_r20160907_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w x200_8mb_usqwerty_vesafb.rom
Μετά το flash, αποσύνδεσε τα και συναρμολόγησε το. Μετά κάνε boot το λάπτοπ και το GRUB menu πρέπει να εμφανιστεί.
Αναφορές : https://libreboot.org/docs/install/x200_external.html
Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα: