Forum Linux Mint Polska
[SOLVED] Autostart - Wersja do druku

+- Forum Linux Mint Polska (https://forum.linuxmint.pl)
+-- Dział: Wsparcie (https://forum.linuxmint.pl/forumdisplay.php?fid=203)
+--- Dział: Software (https://forum.linuxmint.pl/forumdisplay.php?fid=117)
+--- Wątek: [SOLVED] Autostart (/showthread.php?tid=1233)

Strony: 1 2


Autostart - akaiyuki - 27-09-2020

Witam,
wreszcie udało mi się rozwiązać problem opętanych wentylatorów w moim dellu. Niestety, aby zewnętrzny program mógł przejąć nad nimi kontrolę, na początku każdej sesji muszę ręcznie wpisać polecenie:
Kod:
dell-bios-fan-control 0

Ponieważ polecenie wymaga uprawnień roota, przedtem muszę wpisać polecenie

Kod:
su

i wklepać hasło.
Pewnie temat był już wielokrotnie opisywany, tylko ja nawet nie wiem, jak go nazwać i po jakim słowie kluczowym go szukać. Chodzi mi o to, by przy starcie systemu ta komenda automatycznie się uruchamiała. Nie wiem, czy to trzeba napisać jakiś skrypt (cokolwiek to jest), czy są na to inne sposoby.


RE: Autostart - dedito - 27-09-2020

Pamiętaj, że wyłączając kontrolę via BIOS przejmujesz odpowiedzialność za kontrolę i jakieś złe ustawienia mogą doprowadzić do problemów ze sprzętem.
Jak instalowałeś ten programik, może masz już też zainstalowaną usługę w systemd i wystarczy ją załączyć?


RE: Autostart - akaiyuki - 27-09-2020

Nie miałem wyjścia. Wentylatory zachowywały się jak poje..ne, szału można było dostać... i8kutils nie przejmował kontroli nad wentylatorami - pracował, ale jakby go nie było. Ja na Allegro zacząłem szukać innego laptopa, a tego w wyobraźni rozwalałem już siekierą...
Nie do końca rozumiem pytanie, więc może niemądrze odpowiem. Dell-Bios-Fan-Control instalowałem przez terminal. Nie wiem, co to systemd, ale jeśli uruchamia się toto przez kliknięcie na "programy startowe" w menu, to tam tego programu do uruchomienia nie ma.
Pracę wentylatorów i temperatury ciągle monitoruję, jest cicho, bezpiecznie, miło i przyjemnie.


RE: Autostart - dedito - 27-09-2020

Ok, coś już wiem, i8kutils teraz kontroluje wentylatory, ale dalej nie wiem jak instalowałeś Dell-Bios-Fan-Control.
Stwierdzenie "instalowałem przez terminal" mówi niewiele. Przez terminal można zrobić wiele rzeczy, zainstalować program z repozytorium, skompilować program z gita, skompilować program z archiwum tar.gz ... etc itd. Napisz coś więcej.


RE: Autostart - akaiyuki - 27-09-2020

Kod:
sudo snap install dell-bios-fan-control

Po instalacji komenda

Kod:
dell-bios-fan-control 0

jeszcze nie działała, więc zgodnie ze wskazówkami ze strony https://snapcraft.io/dell-bios-fan-control wykonałem komendę

Kod:
sudo snap connect dell-bios-fan-control:io-ports-control

Od tej chwili jest OK.


RE: Autostart - dedito - 28-09-2020

W przypadku snapa to nie wiem jak się robi auto-connect, ale można użyć systemd.
https://better-coding.com/autostart-uruchamianie-wlasnej-uslugi-podczas-startu-systemu-linux-przy-uzyciu-systemd/
Cytat:1. Przygotowanie pliku konfiguracyjnego definiującego usługę
Definiowanie nowej usługi rozpoczynamy od utworzenia pliku my-service.service w katalogu /etc/systemd/system:

sudo nano /etc/systemd/system/my-service.service
Poniższy listing zawiera najprostszą wymaganą konfigurację, którą należy wprowadzić aby usługa w ogóle wystartowała. Jak widać jest to bajecznie proste. Podajemy jedynie nazwę, oraz komendy do starowania i zatrzymywania naszej usługi.

[Unit]
Description=My Service

[Service]
ExecStart=/path/to/my/service start
ExecStop=/path/to/my/service stop

[Install]
WantedBy=default.target
Jeśli przedstawiona powyżej konfiguracja nie spełnia Twoich oczekiwań zapraszam do zapoznania się z oficjalną dokumentacją narzędzia systemd. Odnajdziesz tam bardziej zaawansowanie opcje, które być może rozwiążą twój problem. Jeśli będziecie zainteresowani tym tematem – mogę omówić go szerzej w osobnym wpisie.

2. Aktywowanie oraz zarządzanie nowo-powstałą usługą
Samo umieszczenie konfiguracji usługi w folderze /etc/systemd/system nie spowoduje jeszcze, że zostanie ona uruchomiona podczas startu systemu. Aby osiągnąć wspomniany efekt, należy aktywować daną usługę. Na poniższych listingach zaprezentowane są wybrane komendy, które odpowiedzialne są odpowiednio za aktywację, dezaktywację, manualne uruchamianie i zatrzymywanie oraz sprawdzanie aktualnego stanu usługi.

Aktywacja oraz dezaktywacja uruchamiania usługi podczas startu systemu:

sudo systemctl enable my-service.service
sudo systemctl disable my-service.service
Manualny start oraz zatrzymanie usługi:

sudo systemctl start my-service.service
sudo systemctl stop my-service.service
Sprawdzanie stanu usługi

systemctl status my-service.service
3. Przykład: autostart dowolnego kontenera Docker podczas startu systemu
Nadszedł czas na omówienie przedstawionej wcześniej teorii na jakimś konkretnym przykładzie. Niech to będzie uruchomienie kontenera Docker o nazwie my-container-name. Przyjmiemy, że nasza usługa nazywa się my-docker-service. Bazując na przedstawionym wcześniej sposobie należy utworzyć plik my-docker-service.service:

sudo nano /etc/systemd/system/my-docker-service.service
zawierający poniższą konfigurację usługi:

[Unit]
Description=My Docker container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-container-name
ExecStop=/usr/bin/docker stop -t 10 my-container-name

[Install]
WantedBy=default.target
Ostatnim krokiem jest aktywacja uruchamiania usługi podczas startu systemu. Dla sprawdzenia poprawności konfiguracji możemy ręcznie uruchomić naszą usługę oraz sprawdzić jej status. Całość przedstawia poniższy listing:

sudo systemctl enable my-docker-service.service
sudo systemctl start my-docker-service.service
sudo systemctl status my-docker-service.service

W Twoim przypadku plik by wyglądał tak (źródło https://aur.archlinux.org/cgit/aur.git/tree/dell-bios-fan-control.service?h=dell-bios-fan-control-git ) :
Kod:
[Unit]
Description=Disables BIOS control of fans at boot.
Before=i8kmon.service

[Service]
Type=oneshot
ExecStart=/usr/bin/dell-bios-fan-control 0
RemainAfterExit=true
ExecStop=/usr/bin/dell-bios-fan-control 1

[Install]
WantedBy=multi-user.target
jedynie sobie te polecenia załącz wyłącz dostosuj.


RE: Autostart - magnus - 29-09-2020

Można także użyć programu Cron. Wykonaj to polecenie w terminalu i zrestartuj komputer:

Kod:
printf '%s\n' 'SHELL=/bin/sh' \
'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' \
'@reboot root dell-bios-fan-control 0' \
| sudo tee /etc/cron.d/dell-fan-control

Teraz polecenie dell-bios-fan-control 0 powinno być wykonywane przy starcie komputera.


RE: Autostart - akaiyuki - 30-09-2020

Pomysł Magnusa jest prostszy, ale nie zadziałał. Może źle zrobiłem, bo potraktowałem to wszystko jako jedną komendę i w całości wkleiłem do terminala. Protestów nie było... Propozycję Dedito będę musial rozkminiać przez weekend Smile


RE: Autostart - dedito - 30-09-2020

Zauważ, że masz inne polecenie niż podał Magnus.


RE: Autostart - magnus - 30-09-2020

To było jedno polecenie. Żeby posprzątać usuń plik który został utworzony za pomocą tego polecenia:

Kod:
cd /etc/cron.d
sudo rm dell-fan-control

@dedito, co masz na myśli pisząc: "Zauważ, że masz inne polecenie niż podał Magnus."