Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 9292
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#1

Post napisał: tuxcnc » 05 wrz 2024, 18:57

Najpierw kilka uwag ogólnych.
W Raspberry Pi 5 (pięć) dokonano kilku zmian sprzętowych, co skutkuje tym, że pewne rzeczy nie działają (albo nie działają na razie, albo nie zadziałają nigdy), więc po prostu nie warto go do do LinuxCNC używać.
Druga sprawa to RAM. Niby wystarczy 1 GB, ale 2 GB kosztuje raptem ~30 PLN więcej, dołożyć pamięci w tym modelu się nie da, więc wersja z 2 GB wydaje się wyborem optymalnym. Oczywiście jak ktoś bogaty, to sobie może kupić bogatszy w pamięć model, ale czy będzie miał z tego korzyść to wątpię...
Trzecia sprawa to wielkość karty SD. 8 GB wystarczy do uruchomienia systemu i korzystania tak jak jest, ale dość szybko można zapełnić kartę i mieć wtedy problem. Dlatego polecam 16 GB albo więcej.

Sama instalacja jest banalna.
Zupełnie przypadkiem znalazłem to: https://forum.linuxcnc.org/9-installing ... =20#307541
Naprawdę warto skorzystać z tego (Pi4 Image) obrazu, bo ma lepszy kernel i mniejszy jitter, niż ten z oficjalnej strony linuxcnc.
Sama instalacja systemu przebiega normalnie i sprowadza się do rozpakowania obrazu na kartę SD, co można zrobić na kilka sposobów i co jest doskonale opisane w necie.
System uruchamia się gotowy do użytku, nazwa użytkownika cnc, hasło użytkownika cnc, sudo bez hasła.
Zasadniczo można używać tego systemu bez żadnych modyfikacji, trzeba tylko wejść do menu Settings/Power i powyłączać oszczędzanie energii przez ekran. Powinno się to zrobić najpierw przesuwając wszystkie suwaki na zero, a dopiero potem odznaczając "główny wyłącznik". Nie będę tego opisywał dokładniej, bo to podstawy obsługi systemu operacyjnego. Powiem tylko, że jak się tego nie zrobi, to można mieć przykrą niespodziankę - nagle ekran się wyłączy a użytkownik zostanie wylogowany...

Mnie jednak system w takim stanie nie zadowala, bo jestem przyzwyczajony logować się jako root. Tak w ogóle, to nikt nie musi logować się jako root jeśli tego nie chce, ale blokowanie programów tak, żeby użytkownik root nie mógł ich uruchomić to skrajny debilizm, wymyślony przez paranoików o osobowości bolszewickiej. Linux to nie Windows, w Linuksie użytkownik root może wszystko, nawet jeśli to będzie głupie, albo niebezpieczne...
W każdym razie ja czuję potrzebę skompilowania LinuxCNC po swojemu, czyli bez tej debilnej blokady. Dodatkowo wyłączam jeszcze jeden komunikat (unexpected_realtime_delay), bo mam podejrzenia, że to opóźnienie generuje sam proces uruchamiania programu, co nie ma wpływu na jego dalszą pracę. Miałem kilka róznych instalacji LinuxCNC sterujących realną maszyną, wszystkie raczyły mnie tym komunikatem i pracowały bez żadnego problemu, więc zdecydowałem to zablokować.
To jest ta łata:

Kod: Zaznacz cały

diff -Naur old/linuxcnc-master/src/rtapi/uspace_rtapi_app.cc new/linuxcnc-master/src/rtapi/uspace_rtapi_app.cc
--- old/linuxcnc-master/src/rtapi/uspace_rtapi_app.cc   2023-05-29 02:22:23.000000000 +0200
+++ new/linuxcnc-master/src/rtapi/uspace_rtapi_app.cc   2023-05-30 18:28:06.312487072 +0200
@@ -512,22 +512,6 @@
 }

 int main(int argc, char **argv) {
-    if(getuid() == 0) {
-        char *fallback_uid_str = getenv("RTAPI_UID");
-        int fallback_uid = fallback_uid_str ? atoi(fallback_uid_str) : 0;
-        if(fallback_uid == 0)
-        {
-            fprintf(stderr,
-                "Refusing to run as root without fallback UID specified\n"
-                "To run under a debugger with I/O, use e.g.,\n"
-                "    sudo env RTAPI_UID=`id -u` RTAPI_FIFO_PATH=$HOME/.rtapi_fifo gdb " EMC2_BIN_DIR "/rtapi_app\n");
-            exit(1);
-        }
-        if (setreuid(fallback_uid, 0) != 0) { perror("setreuid"); abort(); }
-        fprintf(stderr,
-            "Running with fallback_uid.  getuid()=%d geteuid()=%d\n",
-            getuid(), geteuid());
-    }
     ruid = getuid();
     euid = geteuid();
     if (setresuid(euid, euid, ruid) != 0) { perror("setresuid"); abort(); }
@@ -935,7 +919,7 @@
 }

 void RtapiApp::unexpected_realtime_delay(rtapi_task *task, int nperiod) {
-    static int printed = 0;
+    static int printed = 1;
     if(!printed)
     {
         rtapi_print_msg(RTAPI_MSG_ERR,
Ponieważ i tak coś musiałem skompilować, więc zdecydowałem się na najnowszy LinuxCNC z Githuba (dzisiaj pobrane 2.10).
Sama kompilacja przebiegła podręcznikowo (np. https://162.243.45.186/9-installing-lin ... t=0#178299) ,
Jednak tym razem postanowiłem zrobić to trochę inaczej.
Kernela oczywiście ruszać nie ma potrzeby, więc ten fragment pomijamy.
Po ściągnięciu źródeł i nałożeniu łaty nie instalowałem żadnych pakietów.
Miałem już takie przypadki, że instalowałem pakiety z listy znalezionej w necie, a potem się okazywało, że czegoś brakuje, a coś jest niepotrzebne...
Dlatego tym razem zacząłem tak:

Kod: Zaznacz cały

apt update
apt-get dist-upgrade
debian/configure uspace
dpkg-checkbuilddeps
Wyświetla się lista niespełnionych zależności, którą można skopiować (w linuksowym terminalu <klawisz shift + lewy klawisz myszy> potem <klawisz shift + prawy klawisz myszy> naprawdę warto się tego nauczyć) i wkleić do edytora tekstu (którego nie ma, więc trzeba go zainstalować. Polecam apt-get install gedit).
Teraz trzeba przed nazwami pakietów dopisać apt-get install i usunąć kilka fragmentów.
Apt potrzebuje składni, w której są tylko prawidłowe nazwy pakietów, a dpkg-checkbuilddeps daje na wyjściu jeszcze dodatkowe informacje o wersji pakietu (w nawiasach) albo możliwości wyboru jednego pakietu spośród kilku podobnych (rozdzielone znakiem | ). To naprawdę nie jest trudne, choć można wybrać spośród proponowanych akurat ten pakiet, którego zainstalować się nie da... No cóż, metodą prób i błędów daje się zrobić to prawidłowo...
Potem kopiuj i wklej do terminala <klawisz shift + prawy klawisz myszy>
Trzeba tylko pamiętać, aby w edytorze tekstu wyłączyć zawijanie tekstu, żeby mieć wszystko w jednej linii.
W ostateczności, jak ktoś ma dużo czasu i uporu, to może instalować po jednym pakiecie i sprawdzać czego jeszcze brakuje...
Kiedy uruchomiony ponownie dpkg-checkbuilddeps wykona się w milczeniu, można uznać ten etap za zakończony.
Teraz uruchamiamy

Kod: Zaznacz cały

debuild -uc -us
Zapewne dostaniemy komunikat, że nie znaleziono polecenia. Co gorsze nie ma pakietu debuild i nie da się go doinstalować... Cóż, tutaj trzeba po prostu wiedzieć, że zainstalować trzeba pakiet devscripts, po czym kompilacja powinna się rozpocząć...
Tutaj mała dygresja, że większość instalowanych pakietów i większość zużytego czasu, to budowa dokumentacji. Z jednej strony to jest straszne, z drugiej nie wiadomo czy ta dokumentacja kiedyś się nie przyda. Ja wiem, że można skompilować LinuxCNC bez dokumentacji, ale postanowiłem z tej opcji jednak nie korzystać.
Pomieliło i skompilowało...
W folderze wyżej znajdziemy skompilowane pakiety Debiana, które można zainstalować na różne sposoby. Ja lubię apt-get ./<nazwa pakietu> bo to zawsze mi działa szybko i bez problemów.
Jest jeszcze jeden patent, z którego warto korzystać.
Otóż parametry ładowane do kernela w czasie uruchamiania systemu są zapisane w pliku cmdline.txt Ten plik formalnie jest na partycji BOOT, ale w uruchomionym systemie jest do niego dostęp przez /boot/broadcom.
W tym pliku jest fragment isolcpus=2,3 który odpowiada za wyłączenie dwóch rdzeni z sheduler'a. Skutkuje to tym, że jitter się zmniejsza, ale także tym, że dwa rdzenie spośród czterech nie będą dostępne dla kompilatora. Wtedy kompilacja będzie trwała dwa razy dłużej..
Dlatego warto przed kompilacją większych programów fragment z isolcpus usuwać i restartować system, po czym wpisywać go z powrotem (ja sobie plik cmdline.txt kopiuje w bezpieczne miejsce i kiedy potrzeba nadpisuję oryginałem plik edytowany).

LinuxCNC 2.10 działa na opisywanym systemie, aczkolwiek dokładnie nie testowałem i gwarancji żadnych nie daję.

Powyższy opis można też wykorzystać na PC, choć są oczywiście pewne różnice.
Zasada jest jednak taka, żeby używać najnowszej wersji Debiana Bookworm, bo inaczej 2.10 może się nie skompilować, albo nie działać wcale, albo robić cuda...




drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2327
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#2

Post napisał: drzasiek90 » 05 wrz 2024, 19:18

Pokażesz jaki masz jitter na okresie bazowym?


forestgril
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 541
Rejestracja: 09 paź 2023, 10:20

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#3

Post napisał: forestgril » 05 wrz 2024, 19:50

„blokowanie programów tak, żeby użytkownik root nie mógł ich uruchomić to skrajny debilizm, wymyślony przez paranoików o osobowości bolszewickiej” - TuxCNC.

Buehehe :D ten cytat powinien być kiedyś w Wikipedii linuxa :)

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 9292
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#4

Post napisał: tuxcnc » 05 wrz 2024, 20:04

drzasiek90 pisze:
05 wrz 2024, 19:18
Pokażesz jaki masz jitter na okresie bazowym?
Dzisiaj już nie, ale trochę powyżej 50 tys.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2327
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#5

Post napisał: drzasiek90 » 05 wrz 2024, 20:32

Nie pamiętam teraz, ale zdaje się, że u mnie na 4B było mniej.
Trochę czasu poświęciłem na szukanie dobrego uniwersalnego rozwiązania aby na większości komputerów osiągnąć dobre wyniki.
Niestety mam krótką pamięć i z głowy wszystkiego sobie nie przypomnę.
Polecam, oprócz izolowania rdzeni, zainteresować się narzędziem tuned. Uruchomienie profilu performance na większości moich komputerów znacznie poprawiało wyniki.
Co dokładnie robi to narzędzie i ten profil- można doczytać. Teraz nie pamiętam a z głowy nie będę zmyślał.
Ale jedną w ważniejszych rzeczy jest wyłączenie skalowania częstotliwości na rdzenie procesora w zależności od zapotrzebowania - w efekcie pracują ciągle na maksymalnej częstotliwości.
Oszczędzanie energii na sterowniku CNC nie jest do niczego potrzebne a wręcz szkodliwe.

Dodane 13 minuty 53 sekundy:
Sprawdziłem, u mnie na rpi jest podobnie ok 50us.
Więc tutaj tuned nie dawał poprawy ale miałem kilka komputerów na których było widać znaczną poprawę.


cawboy
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 6
Posty: 630
Rejestracja: 13 mar 2021, 18:23
Lokalizacja: Bydgoszcz

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#6

Post napisał: cawboy » 05 wrz 2024, 21:14

drzasiek90 pisze:Nie pamiętam teraz, ale zdaje się, że u mnie na 4B było mniej.
Trochę czasu poświęciłem na szukanie dobrego uniwersalnego rozwiązania aby na większości komputerów osiągnąć dobre wyniki.

Mam nadzieję że to lepiej działało niż ta wersja "specjalna" pod Linumeric, która nie dość, że zamulała na max, do tego z softem na start który sobie "twórca" wymyślił.
Krak.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2327
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#7

Post napisał: drzasiek90 » 05 wrz 2024, 21:19

cawboy pisze:
05 wrz 2024, 21:14

Mam nadzieję że to lepiej działało niż ta wersja "specjalna" pod Linumeric, która nie dość, że zamulała na max, do tego z softem na start który sobie "twórca" wymyślił.
Nie chcę robić OT ale skoro poruszyłeś temat.
Możesz wyjaśnić dokładnie o co chodzi?
Co konkretnie zamula i jaki jest problem z "softem na start"?
Ten temat jest nie o tym ale możesz opisać to np w temacie o tym urządzeniu właśnie. Czemu wcześniej tego nie zgłosiłeś, skoro były problemy?


cawboy
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 6
Posty: 630
Rejestracja: 13 mar 2021, 18:23
Lokalizacja: Bydgoszcz

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#8

Post napisał: cawboy » 06 wrz 2024, 15:30

Nie mam już linumerica, zdobyłem karty mesa. Nie jestem człowiekiem który doopę zawraca z byle pierdołą, problem rozwiązałem, po prostu zainstalowałem "normalną" wersję linuxa.
Krak.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2327
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#9

Post napisał: drzasiek90 » 06 wrz 2024, 15:48

Nie chodzi o zawracanie du** tylko wyjaśnienie.
Nie robię tego tylko po to aby wypchnąć i mieć z głowy - działania były nakierowane tak aby wszystko było przejrzyste.
Nie chcę się usprawiedliwiać, chciałbym tylko zrozumieć.
O co chodzi z "softem na start"?
Przygotowany został system który się instaluje i od razu urządzenie działa. Wolałbys instalować i kompilować wszystko na piechotę? 99% użytkowników sobie z tym nie poradzi, stąd przygotowany gotowiec.
Pierwszą wersję instalowało się że skryptu i co chwilę były problemy, bo instalując pobierały się różne pakiety, którym zmieniały się zależności j to co działało dziś, za miesiąc już nie do końca.
Wystarczyło przeczytać co i doinstalować/zmienić ale większość miała z tym problem. Musiałem przeglądać logi co drugiego i szukać przyczyny, czemu u niego akurat się nie chce zainstalować. Gotowiec to rozwiązanie uniwersalne, tak aby każdemu zadziałało.
Ten system nie jest zmodyfikowany, po prostu ma na start zainstalowane wszystko co potrzeba.

Co do zamulania to nie bardzo rozumiem - mam ten system na rpi cały czas i działa moim zdanie bardzo płynnie - oczywiście jak na mini komputer.


cawboy
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 6
Posty: 630
Rejestracja: 13 mar 2021, 18:23
Lokalizacja: Bydgoszcz

Re: Instalacja LinuxCNC 2.10 na raspberry-pi 4 (cztery) B

#10

Post napisał: cawboy » 06 wrz 2024, 16:15

Kilkukrotnie wyskoczył komunikat "unexpected realtime delay" wysoki i niestabilny jitter (program potrafił się wykrzaczyć), skoki do ponad x10, pierwsze próby na laptopie asusa (pomyślałem że się nie nadaje) i testy na optiplex serii 7 i 9. Linuxcnc ściągnięty ze strony linuxcnc.org na każdym ze sprzętów działał poprawnie, a że pisałeś (z tego co pamiętam) o manewrach na rdzeniach pomyślałem, że mój sprzęt to szrot i może stąd problemy. Jak już pisałem, zainstalowałem "oryginał" i zadowolony. Co do softu, brakowało mi tam jakiegoś edytora (który zawsze był) i coś tam jeszcze, ale nie pamiętam, także wybacz.
Krak.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”