Mam 2 karty graficzne na swoim laptopie. Jeden to IGP, a drugi dyskretny.
Napisałem skrypt powłoki, aby wyłączyć dyskretną kartę graficzną.
Jak przekonwertować go na skrypt systemowy, aby uruchomić go podczas uruchamiania?
źródło
Mam 2 karty graficzne na swoim laptopie. Jeden to IGP, a drugi dyskretny.
Napisałem skrypt powłoki, aby wyłączyć dyskretną kartę graficzną.
Jak przekonwertować go na skrypt systemowy, aby uruchomić go podczas uruchamiania?
Istnieją głównie dwa podejścia do tego:
systemd
usługi.Dlatego potrzebujesz dwóch plików: skryptu i .service
pliku (plik konfiguracji jednostki).
Upewnij się, że skrypt jest wykonywalny, a pierwsza linia ( shebang ) to #!/bin/sh
. Następnie utwórz .service
plik w /etc/systemd/system
(nazwijmy go zwykłym plikiem tekstowym vgaoff.service
).
Na przykład:
/usr/bin/vgaoff
/etc/systemd/system/vgaoff.service
Teraz edytuj plik jednostki. Jego zawartość zależy od sposobu działania skryptu:
Jeśli vgaoff
po prostu wyłącza GPU, np .:
exec blah-blah pwrOFF etc
wówczas treść vgaoff.service
powinna być:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Jeśli vgaoff
jest używany do wyłączenia GPU, a także do ponownego włączenia, np .:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
wówczas treść vgaoff.service
powinna być:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff start
ExecStop=/usr/bin/vgaoff stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Aby wyłączyć:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Aby wyłączyć i włączyć:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
ExecStop=/bin/sh -c "echo ON > /whatever/vga_pwr_gadget/switch"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Gdy skończysz z plikami, włącz usługę:
systemctl enable vgaoff.service
Rozpocznie się automatycznie przy następnym uruchomieniu. Możesz nawet włączyć i uruchomić usługę za jednym razem
systemctl enable --now vgaoff.service
od systemd v.220
(w starszych konfiguracjach będziesz musiał uruchomić go ręcznie).
Aby uzyskać więcej informacji, patrz systemd.service
strona instrukcji.
Rozwiązywanie problemów .
Zacznij tutaj:
jak wyświetlić pełny dziennik systemd
usługi?
systemd
kody wyjścia usług i objaśnienie informacji o stanie
echo SOMETHING > /some/file
właściwie robi (lub jakakolwiek inna komenda), powinni zapoznać się z podstawami CLI przed próbą uruchomienia rzeczy w swoich systemach. Poza tym, FYI, przeczytaj, jak wyłączyć dGPU na kilku modelach laptopów, zobacz, czy użyte tam polecenia można zastąpić czymś, co sugerujesz. Ponadto, aby przywrócić oryginalny plik, zwykle ponownie instalujesz pakiet, który jest jego właścicielem.