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?
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.
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...
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.
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
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.
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
Dziękuję, będę miał gdzie szperać. Bardzo cenne informacje.
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
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
[...]
#
newerXYOK - 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
@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?
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
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ć).
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 dniaCo 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
.