🧰 Techniczna informacja dla użytkowników bramki AIS

Techniczna informacja dla użytkowników bramki AIS

:tipping_hand_woman:

Drogi użytkowniku. Bramka DEV ma uprawnienia root-a - dlatego możesz zrobić wszystko co tylko potrafisz - możesz też zepsuć system.
Zamiast wklejać w konsole wszystkie znalezione w sieci komendy i polecenia, zapoznaj się proszę :pray: z tym wprowadzeniem - w ten sposób unikniesz problemów i najczęściej popełnianych błędów przez nowych użytkowników AIS.

:warning: Jeżeli po przeczytaniu zupełnie nie rozumiesz poniższego opisu, to dla własnego dobra :pray: nie używaj konsoli i root-a na bramce :pray:

Czym jest technicznie system operacyjny na bramce AIS?

System działający na bramce AIS to technicznie terminal dla systemu operacyjnego Android z własnym ekosystemem pakietów. Kompilujemy i dostarczamy ponad 1000 pakietów do różnych celów, w tym edytory kodu, kompilatory itp. Pakiety dostarczamy z naszego repozytorium apt:

https://powiedz.co/apt/

Najważniejsze cechy system działającego na bramce AIS (w skrócie AIS):

AIS działa na urządzeniach z systemem Android.
AIS to aplikacja napisana w C i Java.
AIS jak każda aplikacja Android ma własną przestrzeń użytkownika (bo każda aplikacja w Android to osobny użytkownik Linux)
AIS nie dostarcza własnego jądra Linux ale współdzieli jądro z systemem Android.

Czy AIS to emulator?

Nie, ale z drugiej strony tak. Czyli nie emulujemy sprzętu ale powłokę programową… wyjaśnię bardziej poniżej:

NIE - bo AIS nie emuluje żadnego systemu ani architekrury procesora. Programy są kompilowane pod architekturę procesora i wykonywane natywnie.

Czyli nie emulujemy żadnego urządzenia fizycznego (architekrury CPU) - nasze programy kompilowane są i wykonywane na takiej architekturze procesora jaka jest na bramce. W znaczeniu sprzętowym (fizyczne urządzenie) AIS nie jest emulatorem.

TAK. Z drugiej strony AIS jest emulatorem terminala komputerowego, w taki sam sposób, jak wiele popularnych programów dystrybucji Linuksa; np. terminal GNOME, Xterm itd…

Czyli AIS jest oprogramowaniem, które emuluje wyświetlacz (nie procesor lub cały system) z możliwościami określonego terminala sprzętowego.

Po co jest root w AIS DEV?

Root to super użytkownik (su - superuser), który ma kontrolę nad wszystkimi komponentami systemu. Dzięki dostępowi root masz swobodny dostęp do wszystkich systemów plików, możesz modyfikować oprogramowanie sprzętowe urządzenia, a także dostrajać konfigurację jądra, sieci itp.

Niektóre zaawansowane narzędzia, takie jak mount, tcpdump wymagają uprawnień root.

Czy potrzebuje dostępu root, żeby używać bramki?

Absolutnie nie, końcowy użytkownik nie potrzebuje dostępu root.
Programy które dostarczamy na bramce takie jak: Asystent domowy (Home Assistant), Zigbee2Mqtt, ZwaveJs2mqtt, mqtt, ftp, tunel cloudflare itd… działają w przestrzeni użytkownika.

W telefonie z Android czy iOS dostęp root jest zablokowany, żeby końcowy użytkownik niczego nie zepsuł.
Root jest potrzebny tylko dla zaawansowanych użytkowników, programistów którzy wiedzą co robią.

:warning: Nigdy nie używaj komend z ‘‘su’’, jeżeli nie wiesz co robisz! Przyklejając komendy z sieci, napisane dla innych systemów (bez zrozumienia) możesz zepsuć terminal AIS na bramce.

Jakie są różnice systemowe w stosunku do RPi?

3 podstawowe rzeczy to:

1. AIS nie jest zgodny z systemem plików w RPi

Dlatego AIS nie używa pakietów Raspberry Pi OS dla swojego środowiska ale własne kompilacje.
Na bramce nie znajdziesz katalogów takich jak /bin, /etc, /usr, /tmp i innych tak jak wRPi.
Wszystkie nasze programy są skompilowane tak aby działać w przestrzeni użytkownika - w lokalizacji /data/data/pl.sviete.dom/ - tu jest nasz główny system plików /
To dlatego, że działamy w systemie Android i terminal AIS jest aplikacją Android.

2. Pakiety AIS używają Bionic libc

Aby mieć najlepszą kompatybilność z systemem operacyjnym Android, wszystkie nasze pakiety kompilujemy za pomocą Android NDK. Wynikowe binaria są linkowane z libc Bionic (pliki libc.so, libm.so, libdl.so z /system/lib w Android).

Dlatego programy dynamicznie linkowane z RPi nie będą działać, ponieważ w nich linker jest oczekiwany w nieistniejącej na Android lokalizacji (/lib).

3. Główny system plików systemu AIS jest przechowywany jako zwykłe dane aplikacji Android

Główny system plików i katalog domowy użytkownika znajdują się w prywatnym katalogu danych aplikacji, który znajduje się na partycji /data w systemie Android a dokładnie w lokalizacji /data/data/pl.sviete.dom/

Jeśli robisz pełny reset aplikacji AIS lub czyścisz dane serwera AIS z systemu Android, to tak naprawdę usuwasz pliki w lokalizacji ‘’/data/data/pl.sviete.dom/‘’, a następnie pobierasz najnowszą paczkę z plikami z naszego serwera i zaczynasz przygodę z systemem od nowa.

:warning: Uwaga możesz wszystko w systemie AIS

Jako użytkownik AIS, masz pełny dostęp do odczytu i zapisu do wszystkich składników systemu AIS, w lokalizacji ‘’/data/data/pl.sviete.dom/‘’

Bądź ostrożny, ponieważ bardzo łatwo jest zepsuć coś przez przypadkowe usunięcie lub nadpisanie plików w ‘’/data/data/pl.sviete.dom/'.
Jeżeli przyklejasz do konsoli skrypty z internetu, napisane dla innych systemów to możesz coś zepsuć.

Na szczęście Android jest zabezpieczony i aplikacje na Androida działają w trybie piaskownicy (sandboxed) i mają własny identyfikator użytkownika systemu Linux oraz etykietę SELinux.
AIS nie jest wyjątkiem. Pełny reset AIS to wyczyszczenie danych aplikacji i start od początku.

:warning: :warning: Uwaga masz dostęp root-a

Jeżeli w skryptach, które przyklejasz bez zrozumienia z sieci występuje przełączenie na root-a (su) i wykonujesz je bezrozumnie, to psujesz już nie system AIS, ale system Android.

Jak zepsujesz Android to pozostanie przywracanie ustawień fabrycznych urządzenia.

Na bramce mamy tzw. “niezniszczalną” strukturę systemu zaprojektowaną przez firmę Android, którą kupiło Google żeby konkurować z iOS. Mamy te same partycje, co system Android, ponieważ ten system został zaprojektowany tak żeby nie dało się go zepsuć - tutaj to wyjaśniamy:

:warning: :warning: :warning: Uwaga root może montować partycję do zapisu

W skrajnym przypadku skrypt, który uruchomisz na bramce może zamontować partycję która jest tylko do odczytu i coś na niej zmienić. Jak zmienisz coś na partycji zapasowej to nie uda się jej przywrócić i będzie trzeba ponownie programować urządzenie w AIS.

Używając bramki nie zapominaj proszę, że:

PS

Jeżeli nie możesz zainstalować np. HACS na bramce AIS. To znaczy, że nie znasz podstawowych komend w Linux, nie wiesz co robisz i nie powinieneś tego robić.

Cała instalacja HACS polega na pobraniu i rozpakowaniu zip-a do forlderu custom_components/hacs bo HACS to komponent niestandardowy.

Można napisać “magiczny skrypt” który to robi w 10 sekund i będzie on składał się z 3 podstawowych komend w linux (mkdir, curl, unzip):

mkdir -p ~/AIS/custom_components/hacs
curl -L "https://github.com/hacs/integration/releases/latest/download/hacs.zip" -o ~/hacs.zip
unzip ~/hacs.zip -d ~/AIS/custom_components/hacs

Specjalnie nie opisujemy jak to robić - dla dobra użytkowników :heart:
Bo jeżeli nie rozumiesz czym są HACS-y i jak je zainstalować, to znaczy, że nie jesteś na to gotowy i wszystko co zrobisz w HACS, to wygenerujesz kolejne problemy których nie zrozumiesz…

:peace:

11 polubień