Πώς flashάρουμε το Lenovo Thinkpad X200 με Libreboot


Ο σημερινός οδηγός, απευθύνεται στους κατόχους του 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 και πολλά άλλα.

lenovo-thinkpad-x200-libreboot
Τα χαρακτηριστικά του Lenovo Thinkpad X200

Δυστυχώς όμως, λόγο κατασκευής των διαφόρων υπολογιστών, δεν υποστηρίζονται όλες οι υλοποιήσεις για αντικατάσταση με 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 σας.

Τα απαραίτητα λοιπόν εργαλεία είναι:

Προετοιμάζοντας το 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, πρώτα ξεβίδωσε όλες τις βίδες από την βάση οι όποιες είναι μαρκαρισμένες με κόκκινο στην παρακάτω φωτογραφία.

lenovo-thinkpad-x200-libreboot1

Αντέγραψε την Mac address σε ένα χαρτί. Υπάρχει γραμμένη σε αυτοκόλλητο από την πίσω μεριά. Αν δεν είναι εκεί τότε αφαιρείς της ram και εκεί έχει ένα ακόμα.

Τώρα με όλα ξεβιδωμένα, γύρνα το λάπτοπ ανάποδα προς το πληκτρολόγιο. Πίεσε το πληκτρολόγιο μαλακά προς τα μέσα και μετά σπρώξε προς την οθόνη. Μετά σήκωσε το με προσοχή. Από κάτω έχει μια ταινία όπως την φωτογραφία.

lenovo-thinkpad-x200-libreboot2

Για να βγάλεις την ταινία, τράβα την ακριβώς από τον συνδέτη όπως βλέπεις στην φωτογραφία. Εάν το λάπτοπ έχει ανάγνωση δαχτυλικού αποτυπώματος τράβα την ταινία και από αυτό.

lenovo-thinkpad-x200-libreboot3

Με τα καλώδια αποσυνδεδεμένα, «ευγενικά» σήκωσε το πλαστικό που ξεκουράζεις τους αντίχειρες προς τα πάνω μέχρι να βγει. Μόλις βγει, πρέπει να μοιάζει ίδιο με την παρακάτω φωτογραφία. Κοίτα για το chip μέσα στο κόκκινο τετράγωνο.

lenovo-thinkpad-x200-libreboot4

Το chip μπορεί να είναι 4MB η 8MB chip. Ενδεικτικά το μικρότερο είναι με 8 pin=4mb και το μεγαλύτερο 16 pin=8mb. Στην φωτογραφία παρακάτω βλέπεις την διαφορά. Το 4MB χρειάζεται Pomona 5250 και το 8MB χρειάζεται Ponoma 5252 clip.

lenovo-thinkpad-x200-libreboot5

Σύνδεση του 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 ακόμα. Η πάνω μεριά από την φωτογραφία είναι προς την οθόνη.

lenovo-thinkpad-x200-libreboot6

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 δεν αγγίζει οτιδήποτε. Αυτό μπορεί εύκολα να αποφευχθεί τοποθετώντας κάτι μη αγώγιμο κάτω από αυτό πχ.(κόλα χαρτί).

lenovo-thinkpad-x200-libreboot7

Εάν χρησιμοποιείς 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 πρέπει να εμφανιστεί.

lenovo-thinkpad-x200-libreboot8


Αναφορές : https://libreboot.org/docs/install/x200_external.html

Advertisements

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s