Una de les optimitzacions que es recomanen per a millorar el rendiment de les #RaspberryPi és moure el sistema operatiu a un disc dur conectat per USB3. Amb les "noves" Raspberries aquest procès és encara més fàcil.

Buscant millorar l'estabilitat de LaDragonera, he volgut aplicar-ho a la Rasbperry Pi que la mou i ha estat més fàcil del que m'esperava!

0. A grans trets

En aquest article explico com moure un Raspberry Pi OS que actualment està funcionant en una Raspberry Pi 4 des d'una Micro-SD a un disc dur SSD conectat via un adaptador SATA III a USB3. De fet, tot el procès es podria reduir a tres passes:

  1. Actualitzar la EEPROM
  2. Definir l'arrancada per USB
  3. Conectar un USB que contingui un Raspberry Pi OS.

Per al tercer pas jo he clonat el sistema que ja tenia funcionant, però també serveix fer servir el Raspberry Pi Imager i instalar el sistema operatiu en un disc USB en comptes d'en una tarja Micro-SD.

He dividit aquest article en les següents seccions:

  1. A grans trets
  2. Actualitzar la EEPROM
  3. Canviem la sequència d'arrancada
  4. Clonem la tarja Micro-SD a un USB
  5. Arranquem de nou la Raspberry Pi
  6. Cloenda
  7. Referències

0.1. Un procediment diferent per a les Raspberries Pi noves.

A partir de la Raspberry Pi 4 (incoent la 400 i la CM4), hi ha una EEPROM encarregada (entre d'altres) de manejar la seqüencia d'arrancada.

Fins a aquesta, l'única opció que teníem era moure el sistema d'arxius root / al disc USB i deixar el sistema d'arxius d'arranque /boot a la tarja Micro-SD, de forma que la màquina arranca amb la tarja i seguidament va al USB a buscar el sistema operatiu.

Amb la nova estratègia, la Raspberry Pi directament va a buscar l'arranque al disc USB, permetent-nos retirar definitivament la tarja Micro-SD.

En aquest article em centraré en aquesta nova estratègia, ja que l'acció és sobre una Raspberry Pi 4.

0.2. Què és la EEPROM?

Tal com diu la Wikipèdia, la EEPROM és una memòria ROM reprogramable i de només-lectura instal.lada en un xip, que té l'objectiu de mantenir certes configuracions de la màquina independentment del sistema operatiu que se li instal.li.

El sistema d'actualització de la Raspberry Pi OS manté també actualitzada la EEPROM, i amb l'aplicació de configuració de la Raspberry Pi raspi-config podem també interactuar amb la configuració de la seqüencia d'arrancada.

Hi han diversos paràmetres que es poden configurar a la EEPROM, i per això també té la seva pròpia èina de configuració rpi-eeprom-config.

Llegiu més sobre els paràmetres de configuració i com interactuar amb la EEPROM en la documentació oficial: Bootloader Configuration - Raspberry Pi Documentation - Raspberry Pi hardware.

0.3. Assumint

Per a aquest article estic assumint el següent:

  • Com a ordinador secundari on executo la clonació dels discs i des d'on em conecto a les Raspberries via SSH és un Mac relativament modern.

  • El programa que faig servir per clonar la tarja al disc USB és el balena Etcher. També es pot fer amb la comanda dd, compatible amb Mac i Linux.

  • La tarja Micro-SD d'origen és una SanDisk Extreme A2 U3 V30 XC I de 64 GB. També he probat el procediment amb una SanDisk Extreme A1 U3 V30 HC I de 32 GB amb molt millors temps de còpia.

  • El disc dur és un DOGFiSH SSD 64 GB SATA III que m'ha costat 18 euros, juntament amb un conversor SATA III a USB3 que m'ha costat 6,50 euros. Cal tenir en compte que el disc SSD ha de ser igual o superior en capacitat a la tarja Micro-SD!

  • El meu Mac funciona només amb USB-C, així que cal un adaptador USB-A a USB-C, ja que la Raspberry és USB-A i el cable el volem per a ella.

  • El meu Mac té entrada de SD, així que simplement he usat un adaptador SD a Micro-SD d'aquests que fiques una tarja dins d'una altra.

1. Actualitzar la EEPROM

Abans de fer res, ens hem d'assegurar que tenim instal.lada l'última versió de la EEPROM.

  1. Actualitzar el sistema

    sudo apt update
    sudo apt full-upgrade
  2. Entrar a la app de configuració de la Raspberry

    sudo raspi-config
  3. Sel.leccionar 6 Advanced Options > A7 Bootloader Version

  4. Sel.leccionar E1 Latest per instal.lar l'última versió estable.

  5. Sel.lecciona <Ok>.

  6. Apareix una pantalla dient que la ROM s'instal.larà al proper reinici i si volem tornar a la ROM per defecte. Sel.leccionem <Yes>.

  7. Tornarem a la pantalla principal de l'app de configuració de la Raspberry. Sel.leccionem <Finish>.

  8. Apareix una pantalla preguntant si volem reiniciar ara. Sel.leccionem <Yes>.

El sistema es reiniciarà.

Actualització de la eeprom

2. Canviem la sequència d'arrancada

  1. Entrar a la app de configuració de la Raspberry

    sudo raspi-config
  2. Sel.leccionar 6 Advanced Options > A6 Boot Order

  3. Sel.leccionar B2 USB Boot.

  4. Sel.lecciona <Ok>.

  5. Apareix una pantalla confirmant que USB is default boot device. Sel.lecciona <Ok>.

  6. Tornarem a la pantalla principal de l'app de configuració de la Raspberry. Sel.leccionem <Finish>.

  7. Apareix una pantalla preguntant si volem reiniciar ara. Sel.leccionem <Yes>.

El sistema es reiniciarà.

Configurant la eeprom per a que arranqui per USB

3. Clonem la tarja Micro-SD a un USB

Aquí és quan copiem el sistema de la tarja Micro-SD al disc USB. No té molta complicació, només fixar-se en extreure correctament els discs i apagant la Raspberry Pi completament abans de desconectar res.

3.1. Apaguem la Raspberry PI

  1. Apaguem la Raspberry Pi:

    sudo shutdown -h now
  2. Extraiem la tarja Micro-SD de la Raspberry

3.2. Clonem la tarja

  1. Introduim la tarja a l'adaptador i aquest a l'ordinador

  2. Conectem el SSD al cable SATA-USB, el conversor a USB-C i finalment a l'ordinador.

  3. Executem el programa balena Etcher.

  4. Apareixerà la seva típica pantalla en 3 pasos. Clickem a Clone drive.

  5. Apareixerà una pantalla per sel.leccionar una unitat. Sel.leccionem Apple SDXC Reader Media, és el lector integrat de targes del mac.

  6. Clickem a Select 1

  7. Tornarem a la pantalla principal. Clickem a Select Target.

  8. Apareixerà una pantalla similar a l'anterior per sel.leccionar una unitat. Sel.leccionem la unitat USB que tenim conectada.

  9. Clickem a Select 1

  10. Tornarem a la pantalla principal. Clickem a Flash.

  11. Ens demanarà la contrasenya del nostre usuari. La introduim.

  12. Començarà a clonar. Primer ve la fase de Flashing i després Verifying.

  13. Al acabar, tanqueu el programa i desconecteu el SSD. Recordeu d'ejectar primer la Micro-SD abans de desconectar-la!

balenaEtcher amb les unitats sel.leccionades

4. Arranquem de nou la Raspberry Pi

  1. Conectem el SSD amb el seu cable SATA-USB a la Raspberry Pi, en un dels conectors USB3 blaus. Atenció, no introduirem la tarja Micro-SD!

  2. Conectem el cable de corrent

La Raspberry Pi arrancarà, i en menys d'un minut podrem accedir via SSH.

5. Cloenda

M'esperava un procès més farragós, i que al final alguna cosa no funcionés. Però ha estat tot el contrari. Apagar la Raspberry, clonar la tarja, conectar el disc USB i tornar a arrancar la Raspberry. I tots els serveis funcionant altra cop, com si res hagués passat.

Ara a veure els propers dies si el rendiment es nota. Una de les millores que busco és la fiabilitat de del sistema amb una swap al disc, que sobre una tarja SD no es recomana i ja n'ha matat algunes.

6. Referencies

Previous Post Next Post