Przejdź do treści
Raspberry Pi od zera: elektronika i środowisko na Fedorze
Podgląd za darmo

Wgranie systemu i pierwsze uruchomienie headless

Cel

Nagrasz Raspberry Pi OS z gotową konfiguracją (użytkownik, Wi-Fi, SSH z kluczem), znajdziesz Pi w sieci, zalogujesz się przez ssh i zaktualizujesz system. Opcjonalnie uruchomisz konsolę szeregową.

Potrzebne części

  • Raspberry Pi, zasilacz, karta microSD, czytnik kart
  • sieć Wi-Fi (albo kabel Ethernet)
  • opcjonalnie: konwerter USB–UART 3,3 V i 3 przewody żeńsko-żeńskie

Krok 1. Nagranie karty w Imagerze (2.x)

Według oficjalnej instrukcji:

  1. Device: wybierz swój model (Raspberry Pi 4 lub 5).

  2. OS: Raspberry Pi OS (64-bit) (z pulpitem) albo Raspberry Pi OS Lite (64-bit). Do pracy headless polecam Lite. Wersje „Legacy” to stary Bookworm, nie wybieraj ich bez powodu.

  3. Storage: wybierz kartę. ⚠️ Zostaw zaznaczone „Exclude system drives”, żeby nie nadpisać dysku komputera. Jeśli nie masz pewności, która to karta, odłącz inne nośniki USB.

  4. Customisation (zalecane). Kolejne podzakładki:

    • Hostname: np. wirelab-pi (tylko litery, cyfry i myślniki). Pi rozgłasza tę nazwę przez mDNS, więc będzie dostępne jako wirelab-pi.local.
    • Localisation: stolica (np. Warszawa). Ustawia strefę czasową, klawiaturę i kraj Wi-Fi.
    • User: nazwa użytkownika (małe litery, cyfry, _, -) i hasło. To hasło będzie też potrzebne do sudo.
    • Wi-Fi: SSID i hasło. Przy pracy headless to kluczowe, bo Pi musi się połączyć od razu po starcie.
    • Remote Access: włącz Enable SSH i wybierz Use public key authentication. Wklej zawartość ~/.ssh/id_ed25519.pub albo wskaż plik przyciskiem Browse. Imager sam podstawia tylko klucz RSA z ~/.ssh/id_rsa.pub, więc klucz Ed25519 wklej albo wskaż ręcznie.
    • Raspberry Pi Connect: opcjonalne, w kursie niepotrzebne.
  5. Zapisz i poczekaj na zapis oraz weryfikację.

Krok 2. Pierwszy start i szukanie Pi w sieci

Włóż kartę do Pi i podłącz zasilanie. Pierwsze uruchomienie trwa dłużej niż kolejne, bo system rozszerza partycję i stosuje ustawienia. Daj mu 2–3 minuty.

Sposób 1: mDNS (.local)

bash
# (na Fedorze)
$ ping wirelab-pi.local
$ avahi-resolve -n wirelab-pi.local     # z pakietu avahi-tools
$ avahi-browse -art | grep -i ssh       # lista usług w sieci

Raspberry Pi OS ma mDNS (usługę Avahi) włączony domyślnie. Domyślna nazwa, jeśli jej nie zmieniłeś, to raspberrypi.

Sposób 2: nmap (skan podsieci)

bash
# (na Fedorze) – najpierw sprawdź swój adres, np. 192.168.1.23
$ hostname -I
$ sudo nmap -sn 192.168.1.0/24

Z sudo nmap zwykle pokazuje też producenta karty sieciowej, co ułatwia wypatrzenie Raspberry Pi.

Sposób 3: lista urządzeń w panelu routera.

Krok 3. Pierwsze logowanie przez SSH

bash
# (na Fedorze)
$ ssh adrian@wirelab-pi.local

Przy pierwszym połączeniu SSH zapyta o odcisk klucza hosta. Wpisz yes. Jeśli wybrałeś logowanie kluczem, hasło nie będzie potrzebne (chyba że zabezpieczyłeś klucz hasłem).

Wygodny skrót w ~/.ssh/config na Fedorze:

tekst
Host pi
    HostName wirelab-pi.local
    User adrian
    IdentityFile ~/.ssh/id_ed25519

Od teraz wystarczy ssh pi, a pliki skopiujesz poleceniem scp plik.py pi:~/.

Krok 4. Aktualizacja systemu

Dokumentacja Raspberry Pi zaleca full-upgrade zamiast zwykłego upgrade, bo Raspberry Pi OS częściej niż Debian zmienia zależności pakietów:

bash
# (na Pi)
$ sudo apt update
$ sudo apt full-upgrade
$ sudo reboot

Sprawdź przy okazji wersję systemu i model:

bash
# (na Pi)
$ cat /etc/os-release | grep PRETTY
$ cat /proc/device-tree/model
$ groups          # powinno zawierać m.in. gpio (i zwykle i2c)

Krok 5 (opcjonalnie). Konsola szeregowa UART

Konsola szeregowa ratuje sytuację, gdy Pi nie łączy się z siecią. Widzisz wtedy komunikaty startowe i możesz się zalogować kablem.

Włączenie na Pi. Wybierz sudo raspi-config → 3 Interface Options → I6 Serial Port. Na pytanie o login shell over serial odpowiedz Yes, potem zrestartuj Pi. W wersji z pulpitem włącz w Preferences → Control Centre → Interfaces oba przełączniki: Serial Port i Serial Console.

🟦 Pi 4 / Pi 5: gdzie jest konsola

  • Pi 4: konsola jest na GPIO14 (TX, pin 8) i GPIO15 (RX, pin 10).
  • Pi 5: domyślnie główny UART (UART10, /dev/ttyAMA10) wychodzi na osobne 3-pinowe złącze oznaczone „UART”, a nie na złącze 40-pin. Do tego złącza potrzebny jest odpowiedni kabel (np. Raspberry Pi Debug Probe). Według dokumentacji, gdy do złącza debug nic nie jest podłączone, a w config.txt jest enable_uart=1, Pi 5 przekierowuje logi jądra na GPIO14/15.

Zbliżenie Raspberry Pi 5: między gniazdami micro HDMI oznaczonymi HDMI0 i HDMI1 znajduje się małe białe 3-pinowe złącze J6 z nadrukiem UART, zaznaczone ramką

Fot. 3.1. Złącze UART (J6) na Raspberry Pi 5, między gniazdami micro HDMI; tu podłącza się kabel Debug Probe. Zdjęcie: SimonWaldherr, CC BY-SA 4.0, Wikimedia Commons; kadrowanie i oznaczenia: wirelab, CC BY-SA 4.0.

Podłączenie (Pi 4 lub Pi 5 w trybie GPIO14/15):

⚠️ Połączenia rób przy wyłączonym Pi i z konwerterem odłączonym od USB komputera. Jeśli konwerter ma zworkę napięcia, ustaw ją na 3,3 V. Sygnał 5 V na pinie RX (GPIO15) może uszkodzić Raspberry Pi.

Pin fizyczny BCM Element
8 GPIO14 (TXD) → RX konwertera
10 GPIO15 (RXD) → TX konwertera
6 – (GND) → GND konwertera

Schemat: pin 8 (GPIO14, TXD) Raspberry Pi połączony z RXD konwertera USB–UART, pin 10 (GPIO15, RXD) z TXD konwertera, pin 6 (GND) z GND konwertera; pin VCC konwertera niepodłączony, konwerter przez USB do komputera z Fedorą

Rys. 3.1. Konsola szeregowa: TX i RX na krzyż, wspólna masa, bez zasilania z konwertera.

⚠️ TX łączymy z RX na krzyż. Nie podłączaj pinu VCC/5V konwertera do Pi, bo Pi ma własne zasilanie. Przewód GND jest obowiązkowy: napięcia sygnałów TX i RX są mierzone względem masy, więc oba urządzenia muszą mieć wspólną masę.

Połączenie z Fedory (115200 bps, 8N1, czyli standard konsoli Raspberry Pi):

bash
# (na Fedorze)
$ minicom -D /dev/ttyUSB0 -b 115200
# wyjście z minicom: Ctrl+A, potem X
# albo:
$ screen /dev/ttyUSB0 115200
# wyjście ze screen: Ctrl+A, potem K

W minicom wyłącz sprzętową kontrolę przepływu (Ctrl+A, O → Serial port setup → Hardware Flow Control: No), bo inaczej klawiatura może „nie pisać”.

Typowe błędy

  • ssh: Could not resolve hostname: mDNS nie działa na Twojej sieci lub Fedorze. Użyj adresu IP z nmap albo z routera.
  • Connection refused: SSH nie został włączony w Imagerze. Nagraj kartę jeszcze raz z włączonym SSH.
  • WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! po ponownym nagraniu karty: to normalne, bo nowy system ma nowe klucze hosta. Usuń stary wpis: ssh-keygen -R wirelab-pi.local.
  • Pi nie łączy się z Wi-Fi: zła nazwa sieci (wielkość liter ma znaczenie), sieć tylko 5 GHz przy Zero 2 W (obsługuje wyłącznie 2,4 GHz) albo zły kraj w ustawieniach lokalizacji.
  • Śmieci na konsoli szeregowej: zła prędkość (musi być 115200) albo brak wspólnej masy (GND).

Ćwiczenie

Zaloguj się przez ssh, wykonaj aktualizację i zapisz wynik cat /etc/os-release | grep PRETTY oraz uname -r. Potem wyloguj się (exit) i zaloguj ponownie, używając aliasu ssh pi.

Podsumowanie

Pi działa bez monitora: karta nagrana w Imagerze od razu łączy się z Wi-Fi i wpuszcza cię przez SSH kluczem. Pi znajdziesz po nazwie .local, skanem nmap albo w panelu routera. System aktualizujesz poleceniem apt full-upgrade. Konsola szeregowa to awaryjne wejście, gdy sieć zawiedzie.

Napisz