Page 1 sur 1

[Démarrage] commande bash pendant le démarrage (résolu)

Publié : sam. 21 févr. 2015, 21:48
par Le Limule
bonjour,

j'ai un problème tout bête: je n'arrive pas à passer une commande bash pendant le démarrage (en tant que root donc).
exemple: je veux qu'un fichier /home/test soit créé pendant le démarrage.

il m'a semblé qu'on pouvait passer par un service avec systemd (mais s'il y a une solution plus simple je suis à l'écoute...).

j'ai donc créé un fichier /etc/systemd/system/test.service

Code : Tout sélectionner

[Unit]
Description=test

[Service]
Type=oneshot
ExecStart=/usr/bin/touch /home/test

[Install]
Alias=MAC.service
puis j'ai rentré:

Code : Tout sélectionner

# systemctl enable test.service
il me crée alors un raccourci MAC.service qui pointe vers test.service dans ce même répertoire.

si je rentre:

Code : Tout sélectionner

# systemctl start test.service
ça fonctionne, il me crée le fichier test "en direct".

mais si je redémarrage, il ne le crée pas.

que faire?

Re: [Démarrage] commande bash pendant le démarrage

Publié : sam. 21 févr. 2015, 22:06
par Moviuro
Plop !

Tu ne donnes pas de target à ton service, c'est pour ça que enable ne fonctionne pas comme attendu. Lis les services dans /usr/lib/systemd/system pour avoir des idées ainsi que systemd.unit(5), pour la section appropriée.

Mais je ne pense pas que ce soit réellemnt le problème : quelle est la chose que tu souhaite changer en lançant un script au démarrage ? un truc très très spécifique à ta machine ou un cas plutôt répandu auquel tu tentes de répondre par toi-même ?

++

Re: [Démarrage] commande bash pendant le démarrage

Publié : sam. 21 févr. 2015, 22:52
par Le Limule
merci.
je souhaite changer l'adresse MAC de l'interface réseau de ma carte mère car il semble qu'il y a un bug à ce niveau:

Code : Tout sélectionner

[utilisateur@localhost ~]$ dmesg|grep skge
[   10.110243] skge: 1.14 addr 0xfeafc000 irq 22 chip Yukon rev 1
[   10.110264] skge 0000:02:05.0: bad (zero?) ethernet address in rom
[   10.110609] skge 0000:02:05.0 eth0: addr 00:00:00:00:00:00
(et donc pas de réseau)
(après quelques recherches j'ai trouvé que l'on pouvait contourner ce pb en changeant l'adresse MAC, et en effet ça marche)

la commande que je veux passer au démarrage est donc celle-ci:

Code : Tout sélectionner

# ifconfig enp2s5 hw ether 00:90:f5:30:41:71
(enp2s5 est le nom de l'interface. 00:90:f5:30:41:71 est une possibilité parmi plein d'autres)

je n'ai pas trouvé d'autre solution pour l'instant.
en attendant je vais regarder ce que tu me dis sur la "target".

Re: [Démarrage] commande bash pendant le démarrage (résolu)

Publié : dim. 22 févr. 2015, 00:31
par Le Limule
ça y est j'ai compris.
il fallait indiquer dans le .service que ce service est lancé par une "target". exemple de mon test.service:

Code : Tout sélectionner

[Unit]
Description=test

[Service]
Type=oneshot
ExecStart=/usr/bin/touch /home/test

[Install]
WantedBy=multi-user.target
(ici en l'occurence j'ai choisi l'étape "multi-utilisateur" du démarrage)

ensuite il faut faire le

Code : Tout sélectionner

# systemctl enable test.service
pour que le lien symbolique soit créé afin que "l'étape de démarrage" multi-user.target rajoute le lancement de test.service à ses autres lancements.

Re: [Démarrage] commande bash pendant le démarrage (résolu)

Publié : dim. 22 févr. 2015, 09:51
par Moviuro
Ppour changer l'adresse MAC d'une carte, je pense qu'il vaut mieux utiliser udev ou systemd.network(5)