Raspberry Pi – Pre konfiguracja systemu operacyjnego (headless install)

Pomimo tego, że Raspberry Pi potrafi obsłużyć mysz, klawiaturę oraz monitor to przy bardziej ukierunkowanych zastosowaniach raczej się ich nie używa. Instaluje się wtedy minimalny system, który udostępnia jakieś usługi, wykonuje jakieś zadania, a jego interakcja z użytkownikiem może odbywać się inaczej niż przez myszkę i klawaiturę (np. przez wyprowadzone na zewnątrz obudowy systemu wbudowanego przyciski, diody, wyświetlacze). W dzisiejszym artykule pokażę Wam jak zainstalować minimalny system operacyjny na malince wyposażonej w WiFi oraz skonfigurować połączenie sieciowe jeszcze przed pierwszym włożeniem karty SD do komputerka.

Wypalenie obrazu

Zacznijmy od pobrania obrazu systemu. W artykule wszystkei kroki będą opisywane na systemie Raspbian Stretch Lite wydanym 18.04.2018.

Następnie wkładamy czystą kartę SD do komputera (mi udało się czystego raspbiana lite zainstlaować na karcie o pojemności 2GB). Obraz możemy wypalić programem Etcher.

Dodanie plików konfiguracyjnych

Po pomyślnym wypaleniu obrazu na karcie SD powinny pojawić się dwie partycje, z których jedna nazywa się boot. Otwieramy ją i tworzymy na niej dwa pliki:

  • ssh
  • wpa_supplicant.conf

Plik „ssh” powinien nazywać się dokładnie tak (bez rozszerzenia). Może mieć dowolną zawartość, ważne żeby tylko był, więc zostawiamy go pustego. Spowoduje on po pierwszymz bootowaniu systemu uruchomienie usługi SSH, dzięki czemu będziemy mogli się połączyć z malinką zdalnie przez konsolę (np. PUTTY).

Plik „wpa_supplicant.conf” musimy wypełnić danymi konfiguracyjnymi do naszej sieci WiFi. Plik ten wypełniamy wg. poniższego wzoru:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=PL

network={
  ssid="nazwa sieci"
  psk="hasło"
  key_mgmt=WPA-PSK
}

Musimy tu uzupełnić nazwę sieci oraz hasło. Należy pamiętać, że musi to być nazwa dokładnie taka jaką widzimy np. w windowsowym okienku z dostęnymi sieciami. Jeszcze jedną zmienną, którą możemy zmienić jest zmienna „country”. Należy wpisać dla niej 2 znakowy kod kraju zgodny z ISO-3166-1. Kody można sprawdzić tutaj. Dla Polski jest to PL.

Po uzupełnieniu danych zapisujemy plik na karcie, wyjmujemy ją z komputera i wkładamy do malinki.

Pierwsze uruchomienie

O ile nasz router nie jest inaczej skonfigurowany to podczas połączenia malinki z siecią powinna ona dostać adres z puli adresów DHCP. Oczywiście nie wiemy jaki on jest i malinka sama nam nie powie. Dlatego też musimy przeskanować sieć.

Sposób 1: Sprawdzenie listy połączonych urządzeń w routerze

Jeżeli mamy dostęp do panelu administracyjnego routera możemy bez problemu znaleźć naszą malinę i jej adres IP na liście połączonych urządzeń. U mnie wygląda to tak:

Router pokazuje, że jest ona podłączona po kablu, ale to przez to, że jest połączona z siecią WiFi udostępnianą przez router skonfigurowany jako AP podłączony skrętką do głównego routera na adresie 192.168.1.2.

Sposób 2: Skanowanie sieci programem

Dobrym programem do szybkeigo i łatwego przeskanowania sieci jest Advanced IP Scanner. Wystarczy wpisać zakres adresów, wcisnąć Skanuj, poczekać chwilkę i już widizmy adres naszej maliny:

Połączenie SSH

Znając już adres komputerka możemy połączyć się z nim za pomocą programu PUTTY wpisując standardową w malince nazwę użytkownika i hasło, czyli user: pi oraz hasło: raspberry.

Przydzielenie statycznego adresu IP

Nie chcemy za każdym razem szukać raspberry na liście kiedy tylko wygaśnie jej czas dzierżawy DHCP, dlatego też pokażę Wam w jaki sposób przydzielić malince statyczne IP.

Sposób 1: Odpowiednia konfiguracja routera

Ponownie jeżeli mamy dostęp do routera możemy przydzielić w jego panelu dowolnemu hostowi (identyfikowanemu po adresie MAC) statyczny adres IP. W każdym routerze będzie to wyglądało inaczej, dlatego tylko wspominam o takiej możliwości.

Sposób 2: Modyfikacja pliku dhcpcd.conf

Drugi sposób wymaga zmian w konfiguracji malinki. Pierwszą czynnością, którą musimy zrobić jest sprawdzenie nazwy interfejsu na którym chcemy zmienić ustawienia sieciowe. W tym celu wpisujemy w konsoli

ifconfig

W moim przypadku interfejs ten nazywa się wlan0:

Teraz należy zabrać się do edycji pliku dhcpcd.conf wpisując w konsoli

sudo nano /etc/dhcpcd.conf

Teraz szukamy przykładowych linijek z konfiguracją interfejsu eth0 (domyślnie są one zakomentowane znakiem # na początku każdej linii). Wystarczy, że zmienimy nazwę interfejsu na ten, któy odczytaliśmy z ifconfig i odkomentujemy wybrane linijki, ale możemy też je przepisać pod spodem.

U mnie dla adresu IP 192.168.1.120, maski podsieci 255.255.255.0, adresu bramy i DNS 192.168.1.1 na interfejsie wlan0 wpisy te wyglądają tak:

interface wlan0
static ip_address=192.168.1.120/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

W tym przypadku maska podsieci jest zapisana przy adresie IP jako liczba bitów części sieci.

W przypadku, keidy chcemy mieć alternatywne adresy IP serwerów DNS możemy je wpisać po spacji np.

static domain_name_servers=1.1.1.1 1.0.0.1

Taki wpis jest jak najbardziej poprawny (są to adresy DNS dostarczone przez CloudFlare). Ja mam je ustawione w routerze, dlatego w konfiguracji interfejsu mogę ustawić adres IP routera, który i tak przekaże żądania DNS dalej do CloudFlare.

Po zapisaniu pliku (Ctrl + O) możemy zamknąć edytor (Ctrl + X) i uruchomić ponownie system:

sudo reboot

Należy pamiętać, że od teraz logujemy się do malinki na nowym adresie, czyli w moim przypadku 192.168.1.120: