J'ai 2 cartes graphiques sur mon ordinateur portable. L'un est IGP et un autre discret.
J'ai écrit un script shell pour désactiver la carte graphique discrète.
Comment puis-je le convertir en script systemd pour l'exécuter au démarrage?
la source
J'ai 2 cartes graphiques sur mon ordinateur portable. L'un est IGP et un autre discret.
J'ai écrit un script shell pour désactiver la carte graphique discrète.
Comment puis-je le convertir en script systemd pour l'exécuter au démarrage?
Il y a principalement deux approches pour le faire:
systemd
service.Par conséquent, vous avez besoin de deux fichiers: le script et le .service
fichier (fichier de configuration de l'unité).
Assurez-vous que votre script est exécutable et que la première ligne (le shebang ) l'est #!/bin/sh
. Ensuite, créez le .service
fichier dans /etc/systemd/system
(un fichier texte brut, appelons-le vgaoff.service
).
Par exemple:
/usr/bin/vgaoff
/etc/systemd/system/vgaoff.service
Maintenant, éditez le fichier d'unité. Son contenu dépend du fonctionnement de votre script:
Si vgaoff
seulement éteint le gpu, par exemple:
exec blah-blah pwrOFF etc
alors le contenu de vgaoff.service
devrait être:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Si vgaoff
est utilisé pour éteindre le GPU mais aussi pour le rallumer, par exemple:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
alors le contenu de vgaoff.service
devrait être:
[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
Pour éteindre:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Pour allumer et éteindre:
[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
Une fois que vous avez terminé avec les fichiers, activez le service:
systemctl enable vgaoff.service
Il démarrera automatiquement au prochain démarrage. Vous pouvez même activer et démarrer le service en une fois avec
systemctl enable --now vgaoff.service
à partir de systemd v.220
(sur les anciennes configurations, vous devrez le démarrer manuellement).
Pour plus de détails, voir systemd.service
la page de manuel.
Dépannage .
Commencez ici:
Comment voir le journal complet d'un systemd
service?
systemd
codes de sortie de service et explication des informations d'état
echo SOMETHING > /some/file
fait (ou toute autre commande en fait) devraient se familiariser avec les bases de la CLI avant d’essayer d’exécuter des tâches sur leurs systèmes. Cela mis à part, Pour votre information, lisez comment passer dGPU off sur plusieurs modèles d'ordinateurs portables, voir si les commandes utilisées , il pourrait être remplacé par quelque chose comme vous le suggérez. En outre, pour restaurer le fichier d'origine, vous devez généralement réinstaller le package qui en est propriétaire.