Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Filemonitor dla Ubuntu 20.04

Zaczęty przez unspec, Marzec 29, 2021, 11:38:05 PM

Poprzedni wątek - Następny wątek

unspec

Jest jakieś narzędzie, które jak w windzie pozwoliłoby kontrolować, jaki proces nadpisuje/czyta jakie pliki?

Pytam bo chciałbym dowiedzieć się kilku rzeczy:

1. Kiedy i jaki plik/skrypt ładuje sterownik WiFi ("r8188.ko"), w którym pliku jest to zapisane i czy przykładowo mogę to wyedytować aby ładował inny plik, bądź załadować sterownik, którego w ogóle system nie ładuje - jest to możliwe?

2. Chciałbym wyśledzić, jakie pliki nadpisuje nakładka graficzna podczas konfiguracji IPv4, czy będzie to możliwe aby dojść do tego w których plikach Ubuntu desktop to zapisuje i przenieść tą konfigurację na Ubuntu server?

lesio

#1
Jest takie polecenie: fuser
Oczywiscie dokumentacja jest dostepna: man fuser
Polecenie pozwala sprawdzic, jaki proces korzysta z danego pliku.
Przydatne moze byc tez polecenie : lsof (lista otwartych plikow).

Mozna tez sprobowac takiego sposobu na okreslenie plikow, ktore ulegly zmianom w trakcie naszych operacji:
1) utworzyc plik o dowolnej nazwie, np. znak
      $ touch znak
2) przeprowadzic nasze czynnosci
3) poleceniem find wyszukac pliki o czasie modyfikacji pozniejszym niz plik znak
      # find / -newer znak -print
lista bedzie zapewne obejmowac wiele plikow systemowych i trzeba bedzie przeprowadzic analize.
Przepraszam za brak polskich znakow.

LinGruby

#2
Cytat: unspec w Marzec 29, 2021, 11:38:05 PM
[...

1. Kiedy i jaki plik/skrypt ładuje sterownik WiFi ("r8188.ko"), w którym pliku jest to zapisane i czy przykładowo mogę to wyedytować aby ładował inny plik, bądź załadować sterownik, którego w ogóle system nie ładuje - jest to możliwe?

[...]

sterownik jest w kernelu a dokładnie CONFIG_R8188EU=m i o ile masz taką kartę to jest to ładowane na starcie systemu...
a co do ładowania to kłaniają się podstawy jak ładowane są moduły ( sterowniki )...

acz osobiście nie wyobrażam sobie serwera na wi-fi...
( ͡° ͜ʖ ͡°)  Linux User #592024 System:  spectrwm  Kernel: cachyos-rc-lto
Desktop: twm info: polybar Wm: spectrwm 3.4.1  Dm: sddm  Distro: CachyOS

unspec

Dziękuję za odpowiedzi. Jeszcze tylko przydałaby się informacja, gdzie znajdę te podstawy jak monitorować proces bootowania systemu i jak go modyfikować.
Serwer jest na wifi z tego powodu że jest uruchamiany okazjonalnie, komp stoi w kącie i ma podłączoną na LPT drukarkę. Stąd cała afera że drukarka jest na LPT i trzeba jakoś się do niej dobić. Gdy zachodzi potrzeba wydrukowania czegoś, to wówczas jest włączany.

pavbaranov

Będzie prościej, jak dobrze opiszesz problem z jakim się spotykasz. Spróbujemy pomóc.
Gdzie są podstawy? Cóż, te, o których tu - chyba - wspominasz, to jest "obsługa" kernela, a zatem w jego opisach. "Proces bootowania" to może się odnosić zarówno do kernela (głównie), jak i do programu bootującego (u Ciebie pewnie GRUB). Tak, czy inaczej... kernel. To co Ciebie - chyba - interesuje, to prawdopodobnie obsługa modułów kernela (lsmod, rmmod, insmod itd. itp.). Głównie znajdziesz informacje pod man i nazwą danego "programu". Niekiedy jest to głębiej zagrzebane. Osobiście polecam wiki Archa, bo po prostu zbiorczo i dobrze opracowane. Np. dla modułów kernela: https://wiki.archlinux.org/index.php/Kernel_module

unspec

Jeden z problemów polegał na tym, że w jednej (z wielu) instalacji Ubuntu server system nie włączał karty wifi. Udało się to zrobić po skompilowaniu drivera z githuba LWFINGER i po każdorazowym restarcie systemu trzeba było wpisać bodaj:

sudo insmod 8188eu.ko

Chodziło mi o to, żeby nie w jakiś najprostszy czy ordynarny sposób wpisywać to polecenie, bądź uruchamiać jakiś skrypt przy starcie systemu, tylko znaleźć "miejsce" gdzie system/(kernel?) ładuje sterowniki i "powiedzieć mu" gdzie jest ten sterownik i że ma go bezwarunkowo załadować.

Zapewne gdzieś jest takie "miejsce/skrypt konfiguracyjny" czy jak to nazwać, natomiast ja nie mam o tym większej wiedzy.

Drugi problem polegał na tym, żeby "wybadać" jakie pliki konfiguracyjne od IPV4 nadpisuje GUI w Ubuntu desktop, żeby móc to przenieść do Ubuntu server, co udało się dokonać bez tego reversingu za pomocą nmcli i nmtui.

robson75

Cytat: unspec w Kwiecień 10, 2021, 12:08:01 PM
Chodziło mi o to, żeby nie w jakiś najprostszy czy ordynarny sposób wpisywać to polecenie, bądź uruchamiać jakiś skrypt przy starcie systemu, tylko znaleźć "miejsce" gdzie system/(kernel?) ładuje sterowniki i "powiedzieć mu" gdzie jest ten sterownik i że ma go bezwarunkowo załadować.
Ponownie odsyłam na wiki Arch-a
https://wiki.archlinux.org/index.php/Kernel_module#Automatic_module_loading_with_systemd
Arch Linux Xfce - 64Bit Linux User #621110

unspec

Dziękuję, będę miał gdzie szperać. Bardzo cenne informacje.

unspec

Moją zagadkę ze sterownikiem prawdopodobnie rozwiązuje sekcja install w Makefile:


install:
install -p -m 644 8188eu.ko  $(MODDESTDIR)
@if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi;
@echo "blacklist r8188eu" > /etc/modprobe.d/50-8188eu.conf
cp rtl8188eufw.bin /lib/firmware/.
/sbin/depmod -a ${KVER}
mkdir -p /lib/firmware/rtlwifi
cp rtl8188eufw.bin /lib/firmware/rtlwifi/.


Najpewniej nie wykonałem polecenia:

sudo make install

unspec

Cytat: lesio w Kwiecień 05, 2021, 11:56:49 PM
[...]
3) poleceniem find wyszukac pliki o czasie modyfikacji pozniejszym niz plik znak
      # find / -newer znak -print
[...]

#newerXY

OK - gdybym chciał znaleźć modyfikowane pliki danego dnia pomiędzy godziną 9:20 i 9:30 oraz nieodczytywać błędów

sudo find / -newermt '2021-05-30 09:19' -and -not -newermt '2021-05-30 09:31' 2> /dev/null

pavbaranov

@unspec - Doprawdy chciałbym dowiedzieć się na czym w istocie Twój problem polega, albowiem to co jest w #8 ("Moją zagadkę...") jest kompletnie niezwiązane z tematem #1, a nadto odpowiedziami w #3 i #9.
Domyślić się tylko mogę, że próbujesz coś skompilować (#8). Szukasz "miejsca, gdzie system ładuje sterowniki" (#5) i chcesz "mu" "powiedzieć, gdzie są te sterowniki" (#5).
Jakieś kompletne qui pro quo.
Zanim cokolwiek dalej napiszę - proste pytanie: czy próbujesz skompilować jakiś sterownik i chcesz go załadować do systemu podczas startu?
Pytania dodatkowe w przypadku twierdzącej odpowiedzi:
1. jaki to sterownik?
2. skąd wziąłeś źródła sterownika?
3. jak go budujesz?
4. czy nie istnieje paczka deb z tym sterownikiem?
5. czy próbowałeś sprawdzić, czy w innym kernelu dla Ubu 20.04.x nie ma tego sterownika wbudowanego?

unspec

#11
Witam @pavbaranov.

Jako newbie zapewne szukam i błądzę.
O ile rozumiem, jeżeli tylko skompiluję sterownik używając polecenia make all, wówczas za każdym razem po starcie systemu będę musiał ładować sterownik za pomocą polecenia modprobe lub insmod
Jeżeli wykonam sudo make install, wówczas sterownik będzie automatycznie ładowany przy starcie systemu.

Sterownik jest do karty wifi na USB z githuba użytkownika lwfinger.

https://github.com/lwfinger/rtl8188eu
Skierowanie do tego githuba jest ze strony producenta karty jako hint skąd wziąć do niej sterowniki do linuxa, to znaczy jest pdf z opisem karty i w sekcji bodaj linux driver jest to wskazanie.
Sklonowałem go i chyba osobno musiałem doinstalować program make (nie jestem całkowicie pewien ale chyba tak było), GCC chyba już było w systemie o ile pamiętam.

OK
Najpierw postaram się odpowiedzieć w sposób jaki oczekiwałeś:

1. Sterownik do "gwizdka" na USB RTL8188 TP-Link TL-WN725N WiFi
https://allegro.pl/oferta/karta-sieciowa-tp-link-tl-wn725n-wifi-n-usb-mini-10122585444
2.  https://github.com/lwfinger/rtl8188eu
3. Poleceniem make z konsoli, konkretnie o ile pamiętam najpierw sudo make all i potem sudo make install
4. Nie mam pojęcia czy istnieje deb z tym sterownikiem, ja kompilowałem ze źródeł.
5. Nie mam zielonego pojęcia jak sprawdzić, czy w innym kernelu ten sterownik jest wbudowany.

Ostatnia moja odpowiedź dotyczy punktu drugiego z pierwszego postu, czyli "szpiegowania" jaki plik w określonym czasie został zmodyfikowany. O ile chciałem ustalić co GUI U20 zmienia w konfiguracji IPV4 dla WiFi by przenieść to do ubuntu serwer. Okazało się to niepotrzebne, gdy wykupiłem kurs na Udemy i instruktor pokazał w jaki sposób skonfigurować to używając nmcli lub nmtui.
I właśnie znów okazało się że to polecenie jest bardzo potrzebne ponieważ: U16 wybiera mi błędny domyślny refresh rate dla mojego nowego monitora i mam black screen.
Owszem doszperałem się że poleceniem xrandr --rate 60 mogę zmienić częstotliwość odświeżania, natomiast mogę to zrobić dopiero po zalogowaniu. Oznacza to, że albo muszę autologin mieć na true, albo logować się "na ślepo" i tak samo wywoływać terminal, albo dopisać to polecenie do startu systemu, co i tak sprawia, że przed zalogowaniem się wcześniej nic nie widzę.

Tymczasem w Ubuntu nowszych jak 16.04 ustawienie to jest możliwe do wyboru w GUI i wybrana częstotliwość działa od początku startu systemu, a nie dopiero po zalogowaniu. Stąd moja dedukcja, że znów jak z IPV4 chciałbym podejrzeć jakie pliki modyfikuje GUI jeżeli modyfikuje się wartość refresh rate dla monitora i jeżeli to możliwe przenieść to do Ubuntu16.

Odpowiedź jest dla mnie tynfa warta, ponieważ przykładowo w książkach jakie kupiłem o linuksie

ubuntu-linux-biblia-william-von-hagen– 950 stron
unix-i-linux-przewodnik-administratora-systemow-wydanie-v-evi-nemeth-garth-snyder-trent-r-hein-ben-whale 1200 stron

Nie ma ani jednego przykładu w jaki sposób wyszukiwać pliki w zakresie określonej daty początkowej i końcowej.
Przykładowo w poniższym linku (zwracam uwagę na określenie BIG collection")
A BIG collection of Unix/Linux 'find' command examples
https://alvinalexander.com/unix/edu/examples/find.shtml
Również nie ma ani jednego takiego przykładu.

Jeżeli zapytasz po jaką cholerę używam osobno Ubuntu 16/18 i 20 to:

W kursie Embedded Linux Step by Step using Beaglebone Black jego Autor Kiran Nayak używa do kompilacji U-boot'a i jądra  Ubuntu 16 wraz ze ściągniętym GCC ze strony Linaro w wersji 7 dla procesorów 64 bitowych Intel/AMD linux-arm-gueabihf. Dla jasności mówiąc o wersji 32-64bit - mówię o procesorze który dokonuje kompilacji kodu, a nie o tym dla jakiego procesora zostaje skompilowany kod wyjściowy. Owszem bez problemu mogę sciągnąć GCC-linux-arm-gnueabihf do nowszych wersji Ubuntu jak 16, z kolei użycie tych wersji (obecnie 10 ileśtam) i jak się postaram, to mogę ściągnąć wersję 9 lub 8, co niestety owocuje tym, że każdy z tych kompilatorów podczas kompilacji wywala z 1500 warnów i z 1000 eventów co mu się nie zgadza, co proponuje inaczej, że struktura jest ucięta i jakieś jeszcze dowolne jego (kompilatora) "kręcenie nosem". W efekcie wszystko się pięknie kompiluje pod Ubuntu 16 bez żadnych warnów, eventów, domysłów, sugerowania że jest próba odczytu poza zakresem struktury i "kręcenia nosem".
Historia jest dość długa z tym kompilowaniem, bo próbowałem jak dostawcę linuxa mieć RPI 4 z 8GB RAM, ale z kolei niestety starsze wersje GCC nie były skompilowane dla ARM 64 bit, który nie robi tego jak Intel, że w trybie 64bit potrafi obsługiwać wykonywalne pliki 32 bitowe, a RPI4 jest 64 bitowe, a także nie ma wersji Ubuntu 16 w wersji 64bit skompilowanej dla RPI.

Ja sam także nie czuję się na siłach aby skompilować ze źródeł GCC w wersji 7 dla ARM gnu eabi hard float.

Z kolei ten sam Autor w kursie: Linux device driver programming using Beaglebone Black(LDD1) używa już Ubuntu 18.
Przykładowy odcinek:
https://youtu.be/3fKkDcArRoI

Gdyby nie to używałbym tylko Ubuntu 20.04 LTS


pavbaranov

#12
Na temat sterownika: https://ubuntuhandbook.org/index.php/2021/01/install-rtl8188eu-rtl8723ds-drivers-ppa-ubuntu-20-04/ - krótko i dosadnie.
Cały problem z tym wątkiem, który jest bałaganiarski i kompletnie niezrozumiały dla dowolnej osoby, która chce Ci pomóc polega na tym, że chcesz z nas uczynić swoich indywidualnych przewodników po linuksie, wszystko wrzucając w jeden wątek, bo Tobie tak wygodniej.
Ostatni post, to już kompletna maniana. Nawet za bardzo się czytać nie chce.
Jeśli masz jakiś problem - załóż wątek. Jeśli pojawia się inny problem, który nie jest z nim związany - nowy wątek. I tak do końca.
Nt. zamiennika dla FileMon (bo być może o takie narzędzie Ci chodziło dla Windows; zwróć uwagę, że nie każdy tu Windows ma), to alternativeto.net podpowiada dla tego typu funkcjonalności następujące rozwiązania: https://alternativeto.net/software/phrozen-windows-file-monitor/?platform=linux - nie wiem, nie sprawdzałem, nie mam też punktu odniesienia, by sprawdzić, czy o to Ci chodzi.
Dla funkcjonalności: "znajdź w systemie plik utworzony nie później niż YYYY-MM-DD i nie wcześniej niż >YYYY-MM-DD pewnie każdy, kto tego potrzebuje pisze jakiś sobie skrypt. W każdym systemie jest natomiast dostępne polecenie find, które można zastosować do dość dokładnego wyszukiwania - zerknij: https://hostovita.pl/blog/wyszukiwanie-plikow-linux-find-locate/ - może coś z tego wykorzystasz. Tutaj: https://stackoverflow.com/questions/16085958/find-the-files-that-have-been-changed-in-last-24-hours masz przykład takiego zastosowania (chyba), o jakie Ci chodzi.
Następne: https://www.cyberciti.biz/faq/unix-linux-list-all-files-modified-on-given-date/, jeszcze jedno: https://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/, kolejne: https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/. I sorry, ale nie chce mi się przekopiowywać następnych, bo tego typu rozwiązań bez liku. Są to bądź polecenia, bądź skrypty nieco bardziej zaawansowane.
W KDE można się bawić narzędziami opartymi o baloo np. kfind - podręcznik: https://docs.kde.org/stable5/en/kfind/kfind/kfind.pdf.
Nad przedpotopowymi (czyt. bez wsparcia) dystrybucjami Ubuntu nie będę się pochylać, bo szkoda mi czasu.

PS: Jeśli jesteś newbie, to zanim zaczniesz sobie rozwalać system nierozważnymi kompilacjami, lepiej po prostu szukać rozwiązań. Jak się nauczysz kompilować - na początek wyłącznie dla użytkownika (bo nie rozwalisz sobie systemu w ten sposób) - to naucz się tworzyć paczki dla systemu, którego używasz (w Twoim przypadku deb i o ile wiem, to bodaj Ubu ma ku temu jakieś narzędzia, a jeśli nie, to funkcjonalność taką ma launchpad). Dopiero potem, w ten sposób skompilowany i spakowany program instaluj w systemie. Zwłaszcza, gdy jest to jakieś rozwiązanie czysto "systemowe", a nie zewnętrzna aplikacja, które może być w jakiejś innej paczce w systemie (choćby w części takie pliki, to jest o takiej samej nazwie, dostarczać).

unspec

Choć wydaje mi się że jasno wyraziłem się w krótkich dwóch podpunktach o co pytam - okazuje się to niezrozumiałe za co przepraszam.
Jednak kolega lesio zrozumiał o co mi chodzi i naprowadził mnie na opcję newer

Teraz ja odpowiem:
Gdybym poszukiwał prywatnych instruktorów na forum do rozwiązywania moich problemów, nie kupowałbym książek i kursów o linux. Dziwi mnie także Twoje poruszenie, gdy po wielu dniach poszukiwań wklejam dokładne rozwiązanie, takie jakie potrzebuję, które jest rzadko spotykane.

Dla jasności jak wygląda schemat:
Modyfikuję coś w GUI jakiegoś (konkretnego i znanego mi) dnia o 9:30. Nie wiem jak to działa, być może jest jakieś buforowanie i pliki zostają zapisane dopiero podczas restartu systemu - więc na wszelki wypadek natychmiast restartuję system. OK - całość trwała powiedzmy od 9:30 do 9:33 danego dnia. Więc interesuje mnie modyfikacja plików w zakresie 4 minut a nie godzin, czy dób bądź tygodni czy miesięcy. Nie interesują mnie setki czy więcej plików zmodyfikowanych w ciągu doby - uzyskanie takiej papki informacyjnej skutecznie odstręcza od dalszych poszukiwań.
Mało tego - nie za bardzo mi się chce wyliczać ile to było dni temu - czy 31, czy na przykład 75 - prawda że kołomyja? (przykład z mtime -1).

Moja odpowiedź imho nie ma się nijak do topicu, bo wykonanie tylko samego sudo make all skompiluje sterownik, ale nie doprowadzi do jego każdorazowego ładowania w systemie po restarcie.
Wykonanie sudo make install właśnie rozwiązuje ten problem - tak czy nie? - popraw mnie jeżeli się mylę.

Dobrze - a więc linki od Ciebie
https://hostovita.pl/blog/wyszukiwanie-plikow-linux-find-locate/

Jeden prosty przykład z mtime:
CytatŻeby znaleźć pliki z czasem modyfikacji 1 dzień temu, wpisz:
find / -mtime 1
Nic wielkiego - takie ogólne poradniki to już ja sam mógłbym pisać - jeżeli kogoś bawi jak mu się przewija przez ekran setki czy tysiące modyfikowanych plików i chyba tylko to, bo nie wyobrażam sobie aby każdy z nich przeglądać.
https://stackoverflow.com/questions/16085958/find-the-files-that-have-been-changed-in-last-24-hours
Jak wyżej - rozdzielczość dobowa dobra dla zabawy, a nie filtrowania czy konkretnego wyszukiwania.
https://www.cyberciti.biz/faq/unix-linux-list-all-files-modified-on-given-date/
Tu już jest dość dobry hint, bo pojawia się data, ale nadal rozdzielczość dobowa.
https://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/
Jak wyżej nadal w rozdzielczości dobowej.
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/
Dalej sortowanie po dacie bez dodatkowych warunków filtrowania.

Jaka prosta rzecz:
Wyszukaj mi pliki zmodyfikowane między 9:00, a 9:05 określonego dnia
Co takiego złego jest w tym, że podałem przykład jak to zrobić, skoro bezpośrednio i tak nie ma tego w żadnym z tych linków?

Kwestia sterownika WiFi - wchodzę na stronę producenta, pobieram PDF, a tam skierowanie do githuba LWFINGER i lista poleceń jak go skompilować i zainstalować.
Co miałem zrobić? Napisać sterownik od nowa samemu? Co jest złego w tym, że zastosowałem się do zaleceń producenta?
I przy okazji - ta kompilacja nie rozwaliła mi systemu, sterownik działał, tylko gdy zapomniałem o sudo make install musiałem co każdy restart używać insmod.

Zobacz najnowsze wiadomości na forum