Differences

This shows you the differences between two versions of the page.

Link to this comparison view

si:laboratoare:2025:07 [2025/11/16 20:20]
florin.stancu created
si:laboratoare:2025:07 [2025/11/17 16:17] (current)
farhad_ali.gul [Exerciții]
Line 64: Line 64:
  
 <​note>​ <​note>​
-**În laborator, vom folosi echipamente Raspberry PI 4!** conectate prin USB Type-C și un adaptor UART la USB pentru vizualizarea consolei dispozitivului (din păcate, nu dispunem de suficiente monitoare HDMI în laborator + cabluri adaptoare).+**În acest laborator, vom folosi echipamente Raspberry PI 4!** conectate prin USB Type-C și un adaptor UART la USB pentru vizualizarea consolei dispozitivului (din păcate, nu dispunem de suficiente monitoare HDMI în laborator + cabluri adaptoare).
  
 Înainte de a începe exercițiile,​ asigurați-vă că aveți cel puțin 10GB de storage disponibili în mașină virtuala de laborator. Înainte de a începe exercițiile,​ asigurați-vă că aveți cel puțin 10GB de storage disponibili în mașină virtuala de laborator.
 </​note>​ </​note>​
  
-**0.** Descărcați [[https://​github.com/​cs-pub-ro/​SI-rpi-debian-scripts/​releases|de aici o arhivă unui sistem ​de fișiere folosit ca referință laborator]] pentru RPI4 + imaginea partiției ''​rpi-boot.img''​ (utilă în caz că se strică bootloaderul).+**0.** Descărcați [[https://​github.com/​cs-pub-ro/​SI-rpi-debian-scripts/​releases|de aici arhiva sistemului ​de fișiere folosit ca referință laborator]] ​(''​rootfs.tar.xz''​) ​pentru RPI4 + imaginea partiției ​de boot, ''​rpi-boot.img''​ (ce va trebui burn-uită inițial pe cardurile SD).
  
-  * Dezarhivați arhiva într-un subdirector (prin ''​tar'',​ folosiți argumentul ''​-C''​ pentru a preciza directorul destinație,​ însă va trebui să îl creați înainte). **Atenție**:​ folosiți contul de ''​root'',​ deoarece dorim să dezarhivăm fișierele și să păstrăm permisiunile originale (imaginea este un root filesystem de Linux pre-instalat!);​+  * Folosind SD card reader-ul extern, scrieți imaginea ''​rpi-boot.img''​ pe un MicroSD folosind utilitarul ''​dd''​ (pe Linux nativ sau VM, însă nu uitați să faceți USB passthrough!) sau [[https://​etcher.balena.io/​|Balena Etcher]] (pentru Windows, GUI):<​code bash> 
 +# prima dată, căutați denumirea dispozitivului SD cu lsblk (după capacitate, 8 sau 15GB, depinde de card): 
 +lsblk  # ar trebui să fie ceva cu /dev/sdX 
 +sudo dd if=~/​Downloads/​rpi-boot.img.bin of=/​dev/​sd<​x>​ bs=4k status=progress 
 +# așteptați să se termine, apoi: 
 +sudo sync 
 +# și așteptați din nou ;)) 
 +</​code>​ 
 +  * Apoi, dezarhivați arhiva într-un subdirector (prin ''​tar'',​ folosiți argumentul ''​-C''​ pentru a preciza directorul destinație,​ însă va trebui să îl creați înainte). **Atenție**:​ folosiți contul de ''​root'',​ deoarece dorim să dezarhivăm fișierele și să păstrăm permisiunile originale (imaginea este un root filesystem de Linux pre-instalat!);​
   * Inspectați căile ''/​boot''​ (rețineți / copiați într-un fișier text output-ul, e util de comparat mai încolo).   * Inspectați căile ''/​boot''​ (rețineți / copiați într-un fișier text output-ul, e util de comparat mai încolo).
-  * Apoi, ne vom pregăti să pornim Raspberry PI 4! +  * Apoi, ne vom pregăti să pornim Raspberry PI 4! Introduceți cardurile SD scrise mai sus... 
-  ​* ​Asigurați-vă că firele ​ce conectează ​Raspberry ​PI-ul la adaptorul ​de serială nu sunt ieșite. Dacă da, [[https://​pinout.xyz/​|conectați-le corespunzător]] (UART RX (alb) / TX (verde) la TX (pin 8)/RX (pin 10) al RPI-ului!+ chemați asistentul să verifice+Asigurați-vă că firele ​dintre ​Raspberry ​Pi și adaptorul ​USB–Serial ​sunt bine conectate. Dacă vreun fir a ieșitreconectați-l astfel: 
-  * TLDR: începeți ​cu negru (GND) la pin (al treilea de pe margine)apoi imediat lângă ​(pe același rând), firele ​alb verde (în această ordine); **firul roșu SĂ RĂMÂNĂ NECONECTAT**! ​+ 
 +  * Raspberry Pi 4 Pinout: ​[[https://​pinout.xyz/​|conectați-le corespunzător]] 
 +  * Conexiuni corecte ​(USB–Serial → Raspberry Pi GPIO)  
 + 
 +    * GND (negru) → Pin 6 de pe Raspberry Pi 
 +(este pinul de masă, al treilea pin de pe marginea exterioară) 
 + 
 +    * RX (alb) → Pin 8 (GPIO14 / TXDal Raspberry Pi 
 +(RX de la adaptor se conectează ​la TX al Raspberry Pi) 
 + 
 +    * TX (verde) → Pin 10 (GPIO15 / RXD) al Raspberry Pi 
 +(TX de la adaptor se conectează la RX al Raspberry Pi) 
 + 
 +    * VCC / 5V (roșu) → NU se conectează! Raspberry Pi este alimentat separat. 
 + 
 +  * Pornește ​cu negru (GND) la pinul 6, iar imediat lângă pe același rând conectează ​alb (RX) apoi verde (TX). Roșu rămâne neconectat. După conectare, chemați asistentul să verifice.
  
 <note warning> <note warning>
Line 108: Line 131:
   * Aveți nevoie de toolchain-ul pentru Aarch64 să fie în ''​$PATH''​ (lucru adevărat pe VM-ul de la laborator);   * Aveți nevoie de toolchain-ul pentru Aarch64 să fie în ''​$PATH''​ (lucru adevărat pe VM-ul de la laborator);
   * Urmați pașii: <​code>​   * Urmați pașii: <​code>​
-# pe Lab VM 2023 lipsește acest pachet, instalați-l+# pe Lab VM posibil să lipsească aceste pachete, instalați-le
-sudo apt install libssl-dev+sudo apt install libssl-dev gnutls-dev
 git clone --branch=v2023.07.02 https://​github.com/​u-boot/​u-boot.git git clone --branch=v2023.07.02 https://​github.com/​u-boot/​u-boot.git
 cd u-boot cd u-boot
Line 139: Line 162:
   * Acum directorul ''​rpi-boot-firmware''​ ar trebui să fie identic ca imaginea referință din laborator!   * Acum directorul ''​rpi-boot-firmware''​ ar trebui să fie identic ca imaginea referință din laborator!
   * //Notă: Pentru a boota Linux, este necesar și ''​cmdline.txt''​ (folosiți-l pe cel din imaginea referință de bootloader);//​   * //Notă: Pentru a boota Linux, este necesar și ''​cmdline.txt''​ (folosiți-l pe cel din imaginea referință de bootloader);//​
- 
-<note important>​ 
-Dacă doriți să testați noua imagine, ar trebui să copiați aceste fișiere pe partiția FAT32 a Raspberry PI-ului. 
-Însă faceți asta doar dacă aveți încredere că nu stricați bootloaderul existent! 
-Dacă ați pățit totuși asta și doriți să refaceți, există mai multe tehnici de recuperat, cea mai simplă fiind folosirea unui SD card reader extern și scrierea imaginii ''​rpi-boot.img''​ descărcate la ex. 0. Alternativ, puteți scrie imaginea pe un stick USB și introduce în RPI, apoi folosiți comanda ''​ums''​ pentru a scrie cardul SD introdus în dispozitiv și apoi ''​dd''​ pentru a scrie bootloaderul referință:<​code>​ 
-sudo dd if=~/​Downloads/​rpi-boot.img.bin of=/​dev/​sd<​x>​ bs=4k status=progress && sudo sync 
-</​code>​ 
-</​note>​ 
  
 **3.** Ne dorim să instalăm sistemul de fișiere Linux referință pe cardul SD din Raspberry PI (folosind USB Mass Storage-ul prin USB Type-C). **3.** Ne dorim să instalăm sistemul de fișiere Linux referință pe cardul SD din Raspberry PI (folosind USB Mass Storage-ul prin USB Type-C).
Line 153: Line 168:
   * Primul lucru, va trebui să creați o partiție ''​ext4''​ pe cardul SD, **după cea de boot, FAT32 (NU O ȘTERGEȚI)!**. Putem folosi ''​fdisk''​ sau utilitarul mai modern, ''​parted''​ (tot în linia de comandă :D ):   * Primul lucru, va trebui să creați o partiție ''​ext4''​ pe cardul SD, **după cea de boot, FAT32 (NU O ȘTERGEȚI)!**. Putem folosi ''​fdisk''​ sau utilitarul mai modern, ''​parted''​ (tot în linia de comandă :D ):
 <​code>​ <​code>​
-lsblk  # NOTAȚI CU ATENȚIE CARE E CARDUL SD DE ~16GB !!!!+lsblk  # POSIBIL SĂ SE SCHIMBAT, CĂUTAȚI DISPOZITIVUL ​CU ~8-16GB !!!!
 # probabil SDB/SDC..., poate să fie sda dacă aveți ssd pe NVME și rulați Linux nativ... # probabil SDB/SDC..., poate să fie sda dacă aveți ssd pe NVME și rulați Linux nativ...
 sudo parted /​dev/​sd<​X> ​ # înlocuiți <​X>​-ul sudo parted /​dev/​sd<​X> ​ # înlocuiți <​X>​-ul
Line 201: Line 216:
  
 <​code>​ <​code>​
 +# TODO: înlocuiți cu denumirea reală (versiunea) a fișierelor kernel și initrd!
 # inițial, fără initramfs: # inițial, fără initramfs:
-fatload mmc <N>:1 ${kernel_addr_r} vmlinuz-6.1.61-rpi+ +fatload mmc <N>:1 ${kernel_addr_r} vmlinuz-6.1.xx 
-#fatload mmc <N>:1 ${ramdisk_addr_r} initrd.img-6.1.61-rpi+ ​ # e degeaba, momentan :D+#fatload mmc <N>:1 ${ramdisk_addr_r} initrd.img-6.1.xx  # e degeaba, momentan :D
 # astea sunt setate deja în cmdline.txt,​ apoi sunt încărcate în DTB (FDT) mai departe de către BL2 # astea sunt setate deja în cmdline.txt,​ apoi sunt încărcate în DTB (FDT) mai departe de către BL2
 # putem explora device tree-ul din memorie în felul următor: # putem explora device tree-ul din memorie în felul următor:
Line 236: Line 252:
   * [[https://​github-wiki-see.page/​m/​lulu98/​projects-with-sel4/​wiki/​RPi4-Boot-Files|Explicație proces de boot al RPI 4 și fișierele firmware implicate]]   * [[https://​github-wiki-see.page/​m/​lulu98/​projects-with-sel4/​wiki/​RPi4-Boot-Files|Explicație proces de boot al RPI 4 și fișierele firmware implicate]]
   * [[https://​github.com/​cs-pub-ro/​SI-rpi-debian-scripts|Cod sursă scripturi compilare bootloader / kernel / generare rootfs]]   * [[https://​github.com/​cs-pub-ro/​SI-rpi-debian-scripts|Cod sursă scripturi compilare bootloader / kernel / generare rootfs]]
 +
  
  
si/laboratoare/2025/07.1763317218.txt.gz · Last modified: 2025/11/16 20:20 by florin.stancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0