lorenzocesana.xyz

Source code of my website, built with HUGO
Log | Files | Refs

libreboot_X220.md (8533B)


      1 ---
      2 title: "Come Installare Libreboot su un Thinkpad X220"
      3 date: 2023-09-28T10:22:33+02:00
      4 tags: ['Tecnologia']
      5 draft: true
      6 ---
      7 
      8 In questa guida mostrerò (e descriverò) il processo di flashing del BIOS Libreboot su un Thinkpad X220!
      9 
     10 
     11 ## Ma prima, cos'è Libreboot e perché usarlo?
     12 
     13 Come suggerisce il nome, Libreboot è un [Libre](https://en.wikipedia.org/wiki/Free_software) [BIOS Firmware](https://en.wikipedia.org/wiki/BIOS) (qualora non l'avessi capito, sto nuovamente parlando del principio [FOSS](https://en.wikibooks.org/wiki/FOSS_A_General_Introduction/Introduction)).
     14 Ti incoraggio a leggere di più sul progetto, perché è molto interessante, e ad istruirti anche su [Coreboot](https://coreboot.org), dato che è "l'originale" ed ha permesso a Libreboot di esistere (non mi addentrerò nelle [recenti controversie](https://odysee.com/@BrodieRobertson:5/gnu-sends-cease-desist-to-libreboot:e), sono consapevole che installare Libreboot su un Thinkpad X220 è praticamente la stessa cosa che installare Coreboot, prendi questa guida per quello che è: solo una guida).  
     15 Quindi, per farla breve, Libreboot è un software che rispetta la nostra privacy e ci permette di sbarazzarci del famigerato [IME](https://en.wikipedia.org/wiki/Intel_Management_Engine), l'Intel Management Engine!
     16 
     17 
     18 ### Perché l'IME è un problema?
     19 
     20 L'Intel Management Engine è un firmware proprietario presente in *virtualmente* qualsiasi processore Intel "serie I" (i3, i5, i7 ecc.) ed è progettato per consentire *[l'accesso remoto alla vostra macchina](https://proprivacy.com/privacy-news/intel-management-engine)* senza che voi lo sappiate o lo approviate.  
     21 Questo è pericoloso su vari livelli:
     22 - Un cospirazionista potrebbe dire che le [Big Tech](https://en.wikipedia.org/wiki/Big_Tech) ci stanno spiando anche in questo preciso momento (ma è questa realtà [davvero così lontana](https://privateisland.tech/dev/spying-by-your-provider)?)
     23 - Se (o per meglio dire, *quando*) un hacker troverà un modo per [sfruttare l'IME](https://www.csoonline.com/article/572885/cybercriminals-look-to-exploit-intel-me-vulnerabilities-for-highly-persistent-implants.html) e prenderti di mira, faresti meglio ad andare a vivere in un bosco senza elettricità.
     24 
     25 L'IME è la definizione letterale di [backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) ed indovina? È abilitato per impostazione predefinita e non dovrebbe essere possibile disabilitarlo.
     26 Chiunque abbia accesso all'IME ha sostanzialmente accesso a tutte le informazioni e le azioni del computer, per un'analisi più approfondita [leggi qui](https://news.ycombinator.com/item?id=15742287).
     27 
     28 P.S.  
     29 Esiste un equivalente AMD dell'IME, quindi non pensare di essere al sicuro semplicemente passando a un processore AMD!
     30 
     31 
     32 ## Ok, voglio eliminare l'IME, di cosa ho bisogno?
     33 
     34 Prima di tutto, devo specificare che Libreboot (o anche Coreboot) **NON** rimuove *completamente* l'IME *dal Thinkpad X220*, il motivo è abbastanza tecnico ma puoi trovare la spiegazione [qui](https://libreboot.org/freedom-status.html) e [qui](https://libreboot.org/docs/hardware/) trovi invece la lista dell'hardware supportato.  
     35 Questo è l'elenco delle cose che ho usato per flashare Libreboot:
     36 
     37 - [Raspberry Pi 3B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/)
     38 - [Clip Pomona 8 PIN](https://www.ebay.it/itm/185435226670) (il numero di pin varia da computer a computer, verificare online ciò che serve per il tuo modello *specifico*)
     39 - [Cavi jumper femmina-femmina](https://www.ebay.it/itm/134415494864?var=433879423725) (ALMENO 6, più corti sono meglio è)
     40 - Thinkpad X220 (duh...)
     41 - Se non hai intenzione di effettuare l'accesso via ssh al raspberry, avrai bisogno di un monitor e di una tastiera per operare su di esso, dal momento che tutto viene fatto sull' SBC.
     42 
     43 
     44 ## La configurazione
     45 
     46 
     47 ### Raspberry
     48 
     49 Iniziamo con il Raspberry; di solito uso [DietPi](https://dietpi.com/) per i miei [SBC](https://en.wikipedia.org/wiki/Single-board_computer), è una distro basata su Debian molto ottimizzata, leggera e veloce e, per quella che è la mia esperienza, funziona molto bene.  
     50 La [guida](https://dietpi.com/docs/) è davvero ben fatta e ti guida passo passo.
     51 
     52 
     53 ### Libreboot
     54 
     55 Dopo l'installazione del sistema operativo inizia a scaricare i componenti di Libreboot:
     56 1. Scarica lbmk (Libreboot make)
     57 > `git clone https://0xacab.org/libreboot/lbmk.git`
     58 
     59 2. Vai nella directory e installa le dependecies richieste
     60 > `cd lbmk`  
     61 > `sudo ./build dependencies debian`
     62 
     63 Nota: se utilizzi una distro diversa, cambia "debian" con "ubuntu2004", "arch" o "void", a seconda del sistema in uso.
     64 
     65 3. Scarica la ROM
     66 > `curl -LO https://mirrors.mit.edu/libreboot/stable/20230625/roms/libreboot-20230625_x220_8mb.tar.xz`  
     67 
     68 4. Inietta i "blob" nella rom (software proprietario **richiesto** per far funzionare il computer)
     69 >  `./vendor inject libreboot-20230625_x220_8mb.tar.xz`
     70 
     71 5. Seleziona la rom corretta
     72 > `cp grub_x220_8mb_libgfxinit_txtmode_itqwerty.rom /home/admin/.X220/lbmk/libreboot.rom`
     73 
     74 Rinomino per semplicita' e questa e' la rom italiana.
     75 
     76 6. Verifica i blob, poiché se non sono inseriti correttamente e flashi la rom **rischi di brickare il computer!**
     77 > `./update trees -b coreboot utils`  
     78 > `./cbutils/default/cbfstool -x libreboot.rom`  
     79 > `hexdump flashregion_2_intel_me.bin`
     80 
     81 Se l'output è tutto `0xFF` o non è un mucchio di codice, i blob non sono stati inseriti.  
     82 In caso contario successo! La rom da flashare è pronta.  
     83 
     84 
     85 ### Il flashing
     86 
     87 Ora che tutto è pronto, è momento di flashare la rom:
     88 
     89 1. Apri il Thinkpad seguendo [questo video](https://support.lenovo.com/us/en/videos/pd022683) e **SCOLLEGA LA BATTERIA**.
     90 
     91 2. Prepara il flasher spegnendo il Pi e collegando la clip, usando i seguenti schemi come riferimento (che sono fantastici e presi dal blog di [Tyler Cipriani](https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/))
     92 
     93 Pinout del chip Bios X220
     94 
     95 ![piedinatura del chip Bios X220](/Libreboot-X220/schema1.webp)
     96 
     97 Pinout chip Raspberry Pi 3B+ (**ATTENZIONE: questo schema è per questo modello specifico che ha 40 pin invece di 26, se il tuo caso è il secondo controlla lo schema corretto per la tua scheda**)
     98 
     99 ![Piedinatura chip Raspberry Pi 3B+](/Libreboot-X220/schema2.webp)
    100 
    101 Questo dovrebbe essere il risultato finale:
    102 
    103 ![Flasher](/Libreboot-X220/libreboot0.webp)
    104 
    105 3. Il chip da flashare si trova in basso a sinistra, sotto la plastica nera.
    106 
    107 ![Questo è il chip](/Libreboot-X220/libreboot1.webp)  
    108 
    109 Collega il flasher al chip **MENTRE TUTTO È SPENTO E SCOLLEGATO**, sia il Raspberry che il thinkpad, **NON** deve esserci elettricità in entrambi, in questo modo non si friggerà l'X220 e non lo si ucciderà.  
    110 Prestare attenzione all'immagine: la clip Pomona rende abbastanza facile vedere se è collegata correttamente, è necessario prestare attenzione agli spazi dorati tra i "dentini" blu e assicurarsi che si allineino con i piedini grigi del chip sottostante
    111 
    112 ![Clip Pomona collegata](/Libreboot-X220/libreboot2.webp)
    113 
    114 A questo punto puoi accendere il raspberry e operare su di esso:
    115 
    116 ![Configurazione del flashing completata](/Libreboot-X220/libreboot3.webp)
    117 
    118 4. Per prima cosa abilita il GPIO nel raspberry
    119 > `raspi-config`
    120 
    121 Vai in "Advanced Options" ed abilita "SPI state", quindi esci ed installa flashrom
    122 
    123 > `dietpi-update`  
    124 > `sudo apt-get update && sudo apt-get install libftdi1 libftdi-dev libusb-dev libpci-dev subversion`  
    125 > `sudo apt-get install build-essential pciutils usbutils libpci-dev libusb-dev libftdi1 libftdi-dev zlib1g-dev`  
    126 > `sudo apt-get install flashrom`
    127 
    128 A questo punto fai *almeno* (**NON OPZIONALE**) due letture dal chip e confronta il loro [hash](https://en.wikipedia.org/wiki/Hash_function), **SOLO se l'hash è lo stesso continuare con il flashing**; qualora non sia così spegni tutto, rimuovi e riattacca la clip.  
    129 
    130 > `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash01.bin`  
    131 > `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash02.bin`  
    132 > `md5sum flash01.bin flash02.bin` <-- Queste due righe **DEVONO essere uguali**
    133 
    134 Ora flasha la rom preparata prima!
    135 
    136 > `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -w lbmk/libreboot.rom`
    137 
    138 Ed hai finito! Hai installato con successo Libreboot sul tuo computer!
    139 Nel caso in cui qualcosa sia andato storto e il thinkpad non si avvii, basta riflashare flash01.bin (la lettura che hai fatto prima di flashare libreboot, l'hai fatta, vero?).
    140 
    141 Se hai bisogno di aiuto o qualcosa non è chiaro, contattami pure!