.~~.   .~~.
		    '. \ ' ' / .'
		     .~ .~~~..~.                       _                          _
		    : .~.'~'.~. :      ___ ___ ___ ___| |_ ___ ___ ___ _ _    ___|_|
		   ~ (   ) (   ) ~    |  _| .'|_ -| . | . | -_|  _|  _| | |  | . | |
		  ( : '~'.~.'~' : )   |_| |__,|___|  _|___|___|_| |_| |_  |  |  _|_|
		   ~ .~ (   ) ~. ~                |_|                 |___|  |_|
		    (  : '~' :  )
		     '~ .~~~. ~'
			 '~'
		

Połączenie z Raspberry Pi Zero przez USB

Raspberry Pi Zero, to dziwny komputerek... Pozbawiony łączności, ze złączem mini-HDMI, oraz jednym portem micro-USB, jest nieco większy niż od listka gumy do żucia i kosztuje ok. 20 zł oczywiście w przeliczeniu $5 na złotówki, bo chyba w żadnym sklepie nie znajdziemy w tej cenie. Jeśli ktoś zaczyna swoją przygodę z tego rodzaju zabawkami, to może sobie sprawić coś takiego. I własnie tym materiałem udowodnie że poza kablem micro-USB (takim do przesyłania danych, nie tylko ładowania), kartą microSD i komputerem z GNU/Linux-em nie potrzebujemy innych akcesoriów, aby móc z niego korzystać.

  1. Wgrywamy system operacyjny na kartę możemy uzyć do tego programu Balena Etcher, lub klasycznego polecenia dd.
  2. Po nagraniu systemu na kartę, pojawią nam się w systemie dwie dodatkowe partycje. Przechodzimy do partycji oznaczonej jako boot.
  3. Otwieramy plik config.txt i na samym dole dopisujemy dtoverlay=dwc2. Plik zapisujemy i zamykamy.
  4. Otwieramy plik cmdline.txt i po słowie rootwait dopisujemy modules-load=dwc2,g_ether.
  5. Bezpośrednio na partycji boot tworzymy nowy pusty plik o nazwie ssh.
  6. Wyciągamy kartę, wkładamy ją do naszego RPI. Następnie kabel podłączamy do komputera i do portu USB Raspberry (to bardzo ważne)!
  7. W systemie (Ubuntu 20.04 amd64), powinna pojawić się kolejna karta sieciowa. Jeśli pojawia się łaczenie oraz dostajemy powiadomienie że Włączenie sieci nie powiodło się", musimy ustawić nasz interfejs na local-link. Jeśli używamy środowiska Gnome, to przechodzimy do Ustawienia -> Sieć -> przycisk opcji przy Ethernet (USB) -> zakładkę IPv4 -> Metoda IPv4: Tylko Local-Link -> Zastosuj, następnie wyłączamy włączamy interfejs, klikając na przełącznik obok przycisku opcji. Teraz powinniśmy dostać jeden z adresów z tej klasy 169.254.X.Y/16 i moć się połączyć z RPI.
  8. Łączymy sie z Raspberry przez SSH:
    $ ssh pi@raspberrypi.local
    
  9. Po zalogowaniu, powinniśmy od razu zmienić hasło. Zatem passwd. Po zmienia hasła przydałoby się połączenie z Internetem. Żeby chociaż zaktualizować system. Na nowej karcie terminala, na naszym komputerze uruchamiamy przekazywanie pakietów oraz za pomocą iptables załączamy NAT. Jeśli martwimy się o bałagan, to po zabawie z RPI, robimy reboot i wszystko wraca do normy. Załączenie przekazywania pakietów:

    $ sudo sysctl net.ipv4.ip_forward=1
    

    Włączenie NAT-u:

    $ sudo iptables -t nat -I POSTROUTING -o <interfejs sieciowy naszego komputera> -j MASQUERADE
    

    To jeszcze nie wszystkie czynności, aby RPI 0 miało dostęp do Internetu. Wydając polecenie ip a odszukujemy intefejsu 'usb0', zapamiętujemy, lub zapisujemy gdzieś przypisany mu adres. Następnie na Raspberry dodaje trasę bramy domyślnej wskazując właśnie ten adres.

    $ sudo ip route add default via <adres interfejsu USB0 na naszym komputerze>
    

    Po dodaniu bramy, możemy smiało wydawać polecenia: apt update oraz apt upgrade

Jak widać na powyższych czynnościach nie potrzeba masy akcesoriów jakby się mogło wydawać patrząc na to jak niepozorne jest to urządzenie. Gdyby nie to że trzeba wlutować pinów do GPIO, to korzytał bym RPI Zero przy swoich projektach.

~xf0r3m