LogoHam

Příprava na experimenty

Obsah:

  1. Nastavení a aktualizace systému linux
  2. Úvod do instalace programu Pi-star
  3. Instalace potřebných nástrojů
  4. Podpůrné programy pro Pi-Star Web Dashboard

Následující články jsou už určeny hlavně experimentátorům, běžní uživatelé hotspotů je asi moc nevyužijí. Úkolem je pochopit strukturu programu pi-star a jeho vnitřní provázanost, která má vliv na funkčnost celého systému. Pokud bude na konci opravdu fungující hotspot, je to jen něco navíc jako pověstná třešnička na dortu. V tuto chvíli máme na kartě pouze samotný linux 32-bit Lite nejnovějšího vydání. Pojďme si projít základní přípravné práce.

1. Nastavení a aktualizace systému linux

Po spuštění Rpi se s ní začneme domlouvat „na dálku“ z počítače s windows. Použijeme terminálový program PUTTY a protokol SSH. https://www.putty.org/ Jako adresu zadáme hostname, tedy pi-star. Po připojení zadáme uživatele, také pi-star a potom naše heslo, které jsme si zvolili při nahrávání SD karty. Nezapomeňte, že linux rozlišuje mezi malými a velkými písmeny. Takže pi-star, Pi-star nebo Pi-Star jsou tři různá slova. Mě navíc v terminálu nefunguje numerická klávesnice.

 10PuttyThumb

Obr. 1 - Připojení programem PUTTY

Jako první spustíme konfigurační program.

sudo raspi-config

Zde musíme provést:

  • 1 System Options / S5 Boot / B1 Console - to zabrání zbytečnému spouštění grafického prostředí
  • 3 Interface Options / I4 SPI - povolí interní komunikaci na této sběrnici
  • 3 Interface Options / I5 I2C - povolí interní komunikaci na této sběrnici
  • 3 Interface Options / I6 Serial Port – povolíme sériová zařízení (modem)
    • Login shell over serial: NO
    • Enable hardware serial port: YES
  • 6 Advanced Option / A1 Expand Filesystem - tím rozšíříme Linux na celou kapacitu SD karty, ať už jste vybrali jakoukoliv velikost. Tahle volba není potřeba pro SSD disk. Při prvním startu systému z SSD se provede automaticky.

Po restartu provedeme kontrolu a instalaci dostupných aktualizací jednotlivých součástí systému. K tomu použijeme sérií příkazů:

sudo apt-get update
sudo apt-get full-upgrade -y
sudo reboot

Po druhém restartu máme všechny součásti operačního systému v posledním provedení.

Upozornění: Příkazy nemusíme do okna PUTTY ručně opisovat. Pokud text ve windows okopírujeme do schránky (Ctrl+C), lze jej do okna PUTTY vložit prostým kliknutím pravého tlačítka myši. Pokud chceme přenášet text opačným směrem, vše, co se obarví v okně PUTTY myší, se automaticky kopíruje do schránky. Takže pak už ve windows stačí jen vložit (Ctrl+V).

První problém, který musíme řešit, je sériový port. Měl by být dostupný pro náš modem pod názvem ttyAMA0. Bohužel ho obsadí interní modul Bluetooth. To je potřeba opravit editací souboru /boot/firmware/config.txt (dříve /boot/config.txt) pomocí textového editoru nano:

sudo nano /boot/firmware/config.txt

na konec souboru dopíšeme

dtoverlay=miniuart-bt
dtoverlay=disable-bt

Pak změny uložíme Ctrl+O, ukončíme editor nano Ctrl+X a restartujeme Rpi.

sudo reboot

Po opětovném rozběhnutí Rpi si můžeme ověřit, zda zařízení ttyAMA0 existuje. Musí figurovat ve výpisu:

dmesg | grep tty 

2. Úvod do instalace programu pi-star

Jakkoliv logické by se mohlo zdát, že si program pi-star stáhneme z jeho domovského webu https://www.pistar.uk/downloads/ , není to ve skutečnosti možné. V uvedeném archivu jsou jen kompletní obrazy img, tedy včetně linuxu raspbian. Je to prakticky to stejné, co stáhneme z webu Odsky, jen bez přednastavené komunikace se serverem Odsky. My chceme instalovat samostatný program pi-star a ten tady nenajdeme.

Důvodem je, že vlastně neexistuje. Nejedná se o jeden kompaktní program, ale o několik samostatných částí od několika různých autorů, které spolu navzájem komunikují. Většina z nich pracuje na pozadí bez přímého uživatelského rozhraní jako služba, tzv daemon. Ke správné funkci vyžadují spoustu nastavení v systému linux. V tuto chvíli už začíná být zřejmé, proč se pi-star distribuuje ve formě kompletního img.

Za funkční základ systému pi-star můžeme považovat tyto moduly:

  • Web Dashboard – uživatelské webové rozhraní, autor Andy Taylor MW0MWZ
  • Služba MMDVMHost – základní komunikační program, autor Jonathan Naylor G4KLX
  • Sada skriptů, které vytváří služby a umožňují přístup k nim z Dashboardu, autor Andy Taylor MW0MWZ

Pomocí těchto tří komponent by už mělo jít vysílat systémem DMR (DMR+). Představují tedy absolutní minimum programu Pi-star.

3. Instalace potřebných nástrojů

 I když máme linuxový operační systém připravený, obsahuje jen nejběžnější, nejčastěji používané součásti. Pro naši práci musíme doinstalovat další specifické pracovní nástroje.
3.1 Git - program pro práci se serverem github.com, kde jsou umístěny zdrojové texty programů:
sudo apt-get install git -y
3.2 Překladač - program pro překlad zdrojových textů do spustitelných souborů. Vyžaduje spolupráci několika dalších nástrojů:
sudo apt-get install build-essential cmake libtool autoconf automake -y
3.3 Knihovny subsystémů - další programy, které bude pi-star využívat, třeba šifrování openSSL, grafické knihovny, zvukové knihovny, knihovny USB a další
sudo apt-get install libusb-1.0-0-dev libfftw3-dev libi2c-dev libwxgtk3.0-gtk3-dev libssl-dev libcurl4-openssl-dev libncurses-dev libglib2.0-dev libjpeg-dev libasound2-dev libudev-dev -y
Po instalaci tolika knihoven je lepší systém restartovat.
sudo reboot

3.4 Knihovna wiringpi
Program wiringpi je určen pro nízkoúrovňové ovládání GPIO portu Rpi. Bohužel s postupem času byl prohlášen za zastaralý a jeho distribuce prostřednictvím repozitářů ukončena. V nových projektech je jako náhrada doporučena služba Pigpio. Pro Pi-star ale musíme nainstalovat původní knihovnu wiringpi ze zdrojových textů projektu.
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
cd ..

Kontrola úspěšné instalace:
gpio -v

Já mám verzi 3.14 (platí 4.5.2025).

3.5 Knihovna ArduiPi_OLED
Program ArduiPi_OLED je nízkoúrovňová knihovna pro ovládání displeje. Není součástí běžných repozitářů, proto jej musíme také nainstalovat ze zdrojových textů projektu.
git clone https://github.com/hallard/ArduiPi_OLED.git
cd ArduiPi_OLED
sudo make
cd ..
Příkaz make obsahuje i příkaz k instalaci, proto je v tomto případě spuštěný prostřednictvím sudo. Překladač zdrojových textů sice zobrazuje varování, ale překlad i instalace proběhne bez chyb.

4. Podpůrné programy pro Pi-Star Web Dashboard

Webová aplikace Dashboard vyžaduje ke svému provozu následující subsystémy a nastavení:

  • Skriptovací jazyk Python
  • Skriptovací jazyk PHP
  • Webový server nginx
  • Nastavení práv pro skripty

4.1 Kontrola verze Python
Python už nejspíš bude součástí systému, takže ho nemusíme instalovat samostatně. Bohužel v originálních systémech img Pi-star se dodnes používá Python verze 2.7 (platí 4.5.2025). Jenže po období bouřlivého vývoje jazyka Python se dnes už všeobecně používá verze 3.x , která je ale zpětně s dvojkovou verzí nekompatibilní. To může způsobovat problémy po aktualizaci originálního Pi-star na novější verzi linuxu (upgrade). V našem systému už bude python určitě nový. Naštěstí v budované miniverzi Pi-star se "nejspíš" nekompatibilní skripty nepoužívají. Přesto ze zvědavosti zkontrolujeme aktuální verzi.
python
Ctrl+D
Příkazem na prvním řádku spustíme interpret jazyka Python. Já mám verzi 3.11.2 (platí 4.5.2025). Klávesovou kombinací na druhém řádku ho zase ukončíme. 

4.2 Instalace skriptovacího jazyka php
Se skriptovacím jazykem php je ten problém, že pro svou činnost automaticky nainstaluje webový server Apache. To je dnes už jakýsi standard ve světě webových serveru a šel by použít. Ale systém pi-star používá webový server nginx, tak to nebudeme měnit. Pro nainstalování php bez Apache musíme použít variantu php-fpm. A k tomu přidáme pár dalších knihoven.
sudo apt-get install php-fpm php-cli php-common php-mbstring php-xml php-curl php-mysql php-gd -y
Kontrola verze:
php -v
Já mám aktuálně verzi 8.2.7 (platí 4.5.2025). Tohle číslo bude potřeba při nastavení webového serveru nginx.

4.3 Instalace nginx
Webový server je základem uživatelského rozhraní Dashbord a jeho funkčnosti. Nainstalujeme jej standardně z repozitářů linuxu.
sudo apt-get install nginx -y
Pracovní adresář serveru je /var/www/html. Pracuje s ním jako uživatel www-data. Pi-star ale používá adresář /var/www/dashboard. Tak ho hned vytvoříme.
sudo mkdir /var/www/dashboard
Dále vytvoříme soubor .htpasswd v adresáři /var/www
sudo nano /var/www/.htpasswd
Obsah souboru:
pi-star:$apr1$okGfEHo0$0U2qloYQMYdyag6m35KJ21
Po uložení nastavíme práva k souboru:
sudo chown www-data:www-data /var/www/.htpasswd
Přesměrování webu z adresáře html na adresář dashboard zajistíme v novém konfiguračním souboru. Ten vytvoříme editorem nano:
sudo nano /etc/nginx/sites-available/pi-star
Obsah souboru:

server {
listen 80 default_server;
root /var/www/dashboard;

location ^~ /admin {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /var/www/.htpasswd;
client_max_body_size 512K;

# Load the defaults
include /etc/nginx/default.d/php.conf;
}

location ~ /\.git {
deny all;
}

# Load the defaults
include /etc/nginx/default.d/*.conf;
}

Pak musíme vytvořit odkazovaný adresář a soubory v něm
sudo mkdir /etc/nginx/default.d
sudo nano /etc/nginx/default.d/php.conf

location ~ \.php$ {
fastcgi_index index.php;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 240;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME
$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_hide_header X-Powered-By;
}

Pozor !!! na řádku fastcgi_pass musí být správná verze PHP, jinak se při pokusu o spuštění webu objeví chyba: 505 Bad Gateway.
sudo nano /etc/nginx/default.d/cacheing.conf

location /favicon.ico {
log_not_found off;
access_log off;
}

location /robots.txt {
log_not_found off;
access_log off;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}

sudo nano /etc/nginx/default.d/index.conf

index index.php index.html index.htm;

sudo nano /etc/nginx/default.d/security.conf

client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

if ($request_method !~ ^(GET|HEAD|POST)$ )
{
return 444;
}

server_tokens off;
add_header X-Frame-Options "SAMEORIGIN";

location ~ /\. {
access_log off;
log_not_found off;
deny all;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one

location ~ /\.ht {
deny all;
}

Následuje vytvoření simlinku (přesměrování) souboru /etc/nginx/sites-available/pi-star do adresáře /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/pi-star /etc/nginx/sites-enabled/pi-star
a odstraníme původní symlink na default konfiguraci.
sudo rm /etc/nginx/sites-enabled/default
Restartujeme nginx a zkontrolujeme, že běží
sudo systemctl reload nginx
sudo systemctl status nginx

Upozornění: Příkazy typu "sudo systemctl status ..." se někdy neukončí a zůstanou "viset" ve výpisu. V tom případě se vrátíme na příkazový řádek kombinací kláves Ctrl+C.

4.4 Nastavení práv pro skripty.
Aby fungovaly přímé příkazy Dashboardu směrem k systému, musí mít noví uživatelé právo používat příkaz sudo ve skriptech. K nastavení použijeme příkaz
sudo visudo
který otevře soubor /etc/sudoers.tmp, na jehož konec doplníme

pi-star ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL

Toto nastavení má například vliv na funkčnost tlačítek Reboot a Shutdown v menu Power Dashboardu.

Žádné komentáře

Zanechat komentář

Odpověď na Some User

E-mail: hugocz@jevicko.org Lokátor: JN89IP