Tu peux regarder la doc des appels système wait et waitpid, notamment les différentes macros qui permettent de déchiffrer ce qu'il s'est passé : waitpid.2.fr.
Non, le chargeur de démarrage lance le noyau. Celui-ci va mettre en place plein de choses, utiliser cet initramfs (qui est juste une archive CPIO, optionnellement compressée) pour lancer init depuis celui-ci. Cet initva faire le nécessaire pour mettre en place le reste du système et passer la main au vrai système init (souvent systemd, de nos jours).
Sur Debian 9, ping utilise bien nsswitch, configuré pour utiliser files et dns, et regarde donc /etc/files, lit /etc/resolv.conf et effectue la résolution DNS.
Tu peux utiliser strace pour vérifier les appels système, par exemple avec -f -v -s 400 (je ne vais pas rentrer dans les détails, mais c'est les options qui sont souvent utiles pour commencer). Attention, il faudra peut-être lancer cela avec sudo pour éviter un EPERM (PTRACE vs. capabilities, j'imagine).
Ta fonction de traitement de signal utilise des fonctions qui ne sont pas autorisées dans un gestionnaire de signal. Si tu utilises ce genre de fonctions, tu es hors jeu. Tout peut arriver. Undefined Behaviour (UB), c'est potentiellement aller écrire des zéros dans tous tes fichiers, puis tout supprimer, et faire chanter la Marseillaise à ton PC speaker. Cela peut également vouloir dire boucler sans arrêt, ou s'arrêter dès le premier passage dans cette fonction (les différents comportements que je décrivais).
Si tu veux des résultats prédictibles et définis, ne t'expose pas à des comportements indéfinis. Respecte les règles.
De mon côté, une fois que j'ai ajouté les #include qui manquent, soit :
#include<signal.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>#define SIGSEGV 11voidfToCallIfSegFault(intsig){fprintf(stdout,"il y a eu un segfault dans ton code mon coco, le sig = %i\n",sig);kill(getpid(),sig);}intmain(intargc,charconst*argv[]){structsigactionact;act.sa_handler=fToCallIfSegFault;sigaction(SIGSEGV,&act,NULL);//on genere un segfaultchar*str=NULL;str[0]='c';//erreur de segmentationreturn0;}
J'ai bien ceci en boucle :
il y a eu un segfault dans ton code mon coco, le sig = 11
il y a eu un segfault dans ton code mon coco, le sig = 11
il y a eu un segfault dans ton code mon coco, le sig = 11
… ou bien un arrêt instantané, ou bien un arrêt après plus ou moins longtemps.
Dans mes vieux souvenirs (mais je n'ai pas de source pour cela), il me semble qu'on disait qu'un gestionnaire de signal, sur SIGSEGV du moins, était censé faire une chose et une seule : appeler backtrace, finir de loguer et quitter.
Quoi qu'il en soit, je t'invite à lire (en anglais) cette section de la page wikipedia sur les signaux, notamment la première phrase :
C'est effectivement un point qui revient régulièrement dans les formations shell…
Rappel rapide : [ est une commande, donc doit être séparée du if précédent. Puis viennent ses arguments, donc espace également après [. Quant à ], c'est un argument à passer (le dernier) à la commande [ donc doit être séparé des autres arguments. Après le ], pas de contrainte particulière (si on a un ; notamment, il peut être collé).
Exemple sans if pour montrer l'aspect facultatif des séparations en dehors des crochets : [ 0 = 1 ]||[ 1 = 1 ]
Ici tu filtres pour n'afficher que les entités qui sont à la fois fichier et répertoire… Il te faudrait un -o entre les deux (et ça exclut tout ce qui est b, c, p, s…).
Cela fait un moment que je n'ai pas eu à faire cela, mais un petit ssh -D 1080 vers une machine dans le bon pays, et un navigateur configuré pour passer par le proxy SOCKS ainsi ouvert, ça m'a dépanné une paire de fois.
(Pour éviter d'avoir à retoucher aux réglages régulièrement, on peut utiliser une extension de type « sélecteur de proxy », ou bien un profil particulier dans Firefox.)
C'est toujours une bonne idée de citer la configuration qu'on essaie de faire fonctionner, en complément des éventuels messages d'erreur des commandes lancées.
Le fichier include/rt_os_util.h semble avoir le même contenu (modulo des commentaires) que celui du driver fourni par TP Link. Si mon analyse (voir commentaire plus haut) est bonne, cela donnera le même problème de compilation ?
À première vue, cela ressemble beaucoup à un problème classique pour les modules qui ne sont pas intégrés dans le noyau : les structures de données et les fonctions dans le noyau évoluent avec le temps, et les composants inclus dans le noyau sont mis à jour au fur et à mesure.
(Dans les cas classiques, le module externe pourrait ne pas être au courant des modifications en question, d'où de possibles incompatibilités/erreurs de compilation.)
Mais pour le coup, il pourrait être question d'un compilateur devenu plus strict avec le temps (cf. l'option -Werror=incompatible-pointer-types)…
Voici le type attendu par la fonction pour le paramètre en question : typedef void (*usb_complete_t)(struct urb *);
Voici le type spécifié dans les sources du module externe (./NETIF/include/rt_os_util.h) : typedef VOID (*USB_COMPLETE_HANDLER)(VOID *);
Tu peux essayer de changer cela en : typedef VOID (*USB_COMPLETE_HANDLER)(struct urb *);
(qui est plus précis sur le type de pointeur manipulé, void* étant générique)
Aucune garantie que cela permette de compiler l'ensemble avec succès, mais est-ce que ça peut être pire que la situation actuelle ? :)
Quels sont les paquets boost que tu as installés (libboost-thread-dev, libboost-system-dev, libboost-test-dev ou assimilés) ?
Où sont les fichiers installés par ces paquets (/usr/include ou assimilé) ?
Ces emplacements font-ils partie des chemins de recherche par défaut du compilateur ?
D'après un codesearch rapide, le code Meson que tu as cité est explicitement testé dans la suite de test Meson, donc je pense que ça n'est pas la partie problématique…
Comme indiqué dans la sortie apt, il a été installé mais ne l'est plus…
Quant à la présence de la commande youtube-dl qui persiste, tu peux vérifier où cette commande est installée, par exemple avec which youtube-dl. Pour localiser les autres fichiers qui pourraient être impliqués, locate youtube-dl (il faudra peut-être installer mlocate ou assimilé, et lancer updatedb en superutilisateur une première fois).
Édition : Oups, j'avais ouvert cette page et ai commenté bien après, sans voir la réponse plus complète de Kerro.
Je n'ai pas d'interface gnomesque sous la main, mais je ne suis pas sûr que l'option choisie soit la bonne. Cela pourrait être une variante du français, alors qu'il y a une disposition suisse directement.
Pour vérifier les réglages dans la session en cours :
setxkbmap -print
Exemples pour basculer vers le français en variante OSS, puis vers le suisse :
setxkbmap fr oss
setxkbmap ch
Le second appel me donne bien qwertzu.
Ce réglage n'est que temporaire, je t'invite donc à vérifier que ça fait bien ce que tu veux pour ton clavier, puis à trouver les bonnes options dans l'interface graphique. ;)
Ton dossier s'appelle /home/armel/Documents/Archer_T2U_V1_150901(1) et les parenthèses sont probablement le problème ici (il s'agit de caractères spéciaux). Je t'invite à renommer ton répertoire, ça devrait mieux se passer :
Néanmoins, le plus simple est probablement de supprimer le répertoire où le début de compilation a eu lieu, et de partir d'une copie de travail propre (moins de risque d'avoir des choses à moitié compilées dedans, et qui font référence à l'ancien chemin).
(Attention, les identifiants numériques ne sont pas fixes.)
Il est possible d'activer/désactiver un périphérique avec xinput --enable 12 et xinput --disable 12 respectivement (ici pour mon touchpad, ALP000D:00 044E:120C).
Si tu fais tourner cela dans une crontab, il faudra faire attention d'avoir les bonnes variables d'environnement positionnées (notamment DISPLAY, et probablement XAUTHORITY), pour que la commande appelée puisse se connecter au serveur d'affichage.
# Noyau
Posté par Cyril Brulebois (site web personnel) . En réponse au message linux me retourne la valeur 139 quand j'ai un segFault (SIGSGEV). Évalué à 2.
Tu peux regarder la doc des appels système
waitetwaitpid, notamment les différentes macros qui permettent de déchiffrer ce qu'il s'est passé : waitpid.2.fr.Debian Consultant @ DEBAMAX
# Pas tout à fait
Posté par Cyril Brulebois (site web personnel) . En réponse au message initrd et kernel. Évalué à 5.
Non, le chargeur de démarrage lance le noyau. Celui-ci va mettre en place plein de choses, utiliser cet initramfs (qui est juste une archive CPIO, optionnellement compressée) pour lancer
initdepuis celui-ci. Cetinitva faire le nécessaire pour mettre en place le reste du système et passer la main au vrai systèmeinit(souventsystemd, de nos jours).Debian Consultant @ DEBAMAX
[^] # Re: what ???
Posté par Cyril Brulebois (site web personnel) . En réponse au message nslookup fonctionne mais pas ping. Évalué à 3.
Sur Debian 9, ping utilise bien nsswitch, configuré pour utiliser
filesetdns, et regarde donc/etc/files, lit/etc/resolv.confet effectue la résolution DNS.Tu peux utiliser
stracepour vérifier les appels système, par exemple avec-f -v -s 400(je ne vais pas rentrer dans les détails, mais c'est les options qui sont souvent utiles pour commencer). Attention, il faudra peut-être lancer cela avecsudopour éviter unEPERM(PTRACEvs. capabilities, j'imagine).Debian Consultant @ DEBAMAX
[^] # Re: undefined behaviour
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme avec sigaction. Évalué à 2.
Ta fonction de traitement de signal utilise des fonctions qui ne sont pas autorisées dans un gestionnaire de signal. Si tu utilises ce genre de fonctions, tu es hors jeu. Tout peut arriver.
Undefined Behaviour(UB), c'est potentiellement aller écrire des zéros dans tous tes fichiers, puis tout supprimer, et faire chanter la Marseillaise à ton PC speaker. Cela peut également vouloir dire boucler sans arrêt, ou s'arrêter dès le premier passage dans cette fonction (les différents comportements que je décrivais).Si tu veux des résultats prédictibles et définis, ne t'expose pas à des comportements indéfinis. Respecte les règles.
Quant aux race conditions, pas vraiment de rapport avec l'électronique à proprement parler. Un système informatique est constitué de plein d'événements concurrents. En fonction du timing, on peut se retrouver avoir des choses qui marchent©®™ ou pas-marchent©®™, par exemple parce que les signaux ont été reçus/traités plus ou moins rapidement, ou dans un ordre donné, ou en interrompant telle autre routine, etc.
Debian Consultant @ DEBAMAX
# Étrange, mais un (équivalent de) raise() depuis un gestionnaire de signaux…
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme avec sigaction. Évalué à 2.
De mon côté, une fois que j'ai ajouté les
#includequi manquent, soit :J'ai bien ceci en boucle :
… ou bien un arrêt instantané, ou bien un arrêt après plus ou moins longtemps.
Dans mes vieux souvenirs (mais je n'ai pas de source pour cela), il me semble qu'on disait qu'un gestionnaire de signal, sur
SIGSEGVdu moins, était censé faire une chose et une seule : appelerbacktrace, finir de loguer et quitter.Quoi qu'il en soit, je t'invite à lire (en anglais) cette section de la page wikipedia sur les signaux, notamment la première phrase :
Debian Consultant @ DEBAMAX
[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme if. Évalué à 4.
C'est effectivement un point qui revient régulièrement dans les formations shell…
Rappel rapide :
[est une commande, donc doit être séparée duifprécédent. Puis viennent ses arguments, donc espace également après[. Quant à], c'est un argument à passer (le dernier) à la commande[donc doit être séparé des autres arguments. Après le], pas de contrainte particulière (si on a un;notamment, il peut être collé).Exemple sans
ifpour montrer l'aspect facultatif des séparations en dehors des crochets :[ 0 = 1 ]||[ 1 = 1 ]Debian Consultant @ DEBAMAX
[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme if. Évalué à 2.
Ça ne mène pas à l'erreur mentionnée, donc ça ne m'a pas paru pertinent de le mentionner à ce stade. La vie, les priorités, tout ça.
Debian Consultant @ DEBAMAX
[^] # Re: Le code semble correct mais…
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme if. Évalué à 2.
Pas si le copier-coller est fidèle (en vérifiant le code markdown).
Et effectivement le code me semble correct.
Et je ne vois rien qui puisse être problématique avec un quelconque shell.
Debian Consultant @ DEBAMAX
[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme if. Évalué à 2.
Non, l'espace n'est pas nécessaire.
Debian Consultant @ DEBAMAX
[^] # Re: par type ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message faire un find ou un ls. Évalué à 1. Dernière modification le 06 février 2019 à 22:21.
Non…
Ici tu filtres pour n'afficher que les entités qui sont à la fois fichier et répertoire… Il te faudrait un
-oentre les deux (et ça exclut tout ce qui estb,c,p,s…).Debian Consultant @ DEBAMAX
[^] # Une fonction
Posté par Cyril Brulebois (site web personnel) . En réponse au message Alias avec cible changeante.. Évalué à 4.
Alternative au script dédié, dans
~/.bashrcou équivalent pour le shell de ton choix :Je ne sais pas trop ce que tu entends par coloriser, tu peux préciser ?
Debian Consultant @ DEBAMAX
[^] # Re: Peut-être bien que...
Posté par Cyril Brulebois (site web personnel) . En réponse au message Copie De serveur à serveur en étant connecté à un serveur. Évalué à 3.
Yep. Et complément d'information,
mkdir -ppermet d'éviter ceif.Debian Consultant @ DEBAMAX
# ip link
Posté par Cyril Brulebois (site web personnel) . En réponse au message No DHCPOFFERS received. Évalué à 1. Dernière modification le 28 janvier 2019 à 18:12.
Tu peux commencer par
ip linkpour voir à quoi ressemblent les différentes interfaces et l'état de chacune.Exemple sur mon laptop docké (donc Ethernet branché) :
vs. non docké :
Debian Consultant @ DEBAMAX
# Proxy socks over ssh ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message Regarder une vidéo restreinte à la France. Évalué à 9.
Cela fait un moment que je n'ai pas eu à faire cela, mais un petit
ssh -D 1080vers une machine dans le bon pays, et un navigateur configuré pour passer par le proxy SOCKS ainsi ouvert, ça m'a dépanné une paire de fois.(Pour éviter d'avoir à retoucher aux réglages régulièrement, on peut utiliser une extension de type « sélecteur de proxy », ou bien un profil particulier dans Firefox.)
Debian Consultant @ DEBAMAX
[^] # Re: ligne 3
Posté par Cyril Brulebois (site web personnel) . En réponse au message probleme de configuration de eth0 sur kubuntu. Évalué à 2.
C'est toujours une bonne idée de citer la configuration qu'on essaie de faire fonctionner, en complément des éventuels messages d'erreur des commandes lancées.
Debian Consultant @ DEBAMAX
[^] # Re: driver déjà patché
Posté par Cyril Brulebois (site web personnel) . En réponse au message compilation Clé Wifi TP-LINK. Évalué à 1.
Le fichier
include/rt_os_util.hsemble avoir le même contenu (modulo des commentaires) que celui du driver fourni par TP Link. Si mon analyse (voir commentaire plus haut) est bonne, cela donnera le même problème de compilation ?Debian Consultant @ DEBAMAX
[^] # Patch patch patch
Posté par Cyril Brulebois (site web personnel) . En réponse au message compilation Clé Wifi TP-LINK. Évalué à 1.
À première vue, cela ressemble beaucoup à un problème classique pour les modules qui ne sont pas intégrés dans le noyau : les structures de données et les fonctions dans le noyau évoluent avec le temps, et les composants inclus dans le noyau sont mis à jour au fur et à mesure.
(Dans les cas classiques, le module externe pourrait ne pas être au courant des modifications en question, d'où de possibles incompatibilités/erreurs de compilation.)
Mais pour le coup, il pourrait être question d'un compilateur devenu plus strict avec le temps (cf. l'option
-Werror=incompatible-pointer-types)…Voici le type attendu par la fonction pour le paramètre en question :
typedef void (*usb_complete_t)(struct urb *);Voici le type spécifié dans les sources du module externe (
./NETIF/include/rt_os_util.h) :typedef VOID (*USB_COMPLETE_HANDLER)(VOID *);Tu peux essayer de changer cela en :
typedef VOID (*USB_COMPLETE_HANDLER)(struct urb *);(qui est plus précis sur le type de pointeur manipulé,
void*étant générique)Aucune garantie que cela permette de compiler l'ensemble avec succès, mais est-ce que ça peut être pire que la situation actuelle ?
:)Debian Consultant @ DEBAMAX
# boost est-il bien installé ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message Meson ne détecte pas boost. Évalué à 1.
Quelques questions:
libboost-thread-dev,libboost-system-dev,libboost-test-devou assimilés) ?/usr/includeou assimilé) ?D'après un codesearch rapide, le code Meson que tu as cité est explicitement testé dans la suite de test Meson, donc je pense que ça n'est pas la partie problématique…
Debian Consultant @ DEBAMAX
[^] # Re: Il est bien supprimé
Posté par Cyril Brulebois (site web personnel) . En réponse au message Désinstaller un programme. Évalué à 2. Dernière modification le 14 janvier 2019 à 19:44.
Comme indiqué dans la sortie
apt, il a été installé mais ne l'est plus…Quant à la présence de la commande
youtube-dlqui persiste, tu peux vérifier où cette commande est installée, par exemple avecwhich youtube-dl. Pour localiser les autres fichiers qui pourraient être impliqués,locate youtube-dl(il faudra peut-être installermlocateou assimilé, et lancerupdatedben superutilisateur une première fois).Édition : Oups, j'avais ouvert cette page et ai commenté bien après, sans voir la réponse plus complète de Kerro.
Debian Consultant @ DEBAMAX
# Il est bien supprimé
Posté par Cyril Brulebois (site web personnel) . En réponse au message Désinstaller un programme. Évalué à 3.
Je m'appuie sur un exemple local, mais c'est pareil chez toi :
Les deux lettres
retcdans les premières colonnes correspondent respectivement àRemoveetConf-files.Autrement dit, le paquet a bien été supprimé, mais des fichiers de configuration sont toujours présents.
Pour le supprimer complètement, c'est l'opération
purgeplutôt queremovequ'il faut utiliser.Debian Consultant @ DEBAMAX
# Hack hack hack
Posté par Cyril Brulebois (site web personnel) . En réponse au message clavier qwerty à qwertzu. Évalué à 1.
Je n'ai pas d'interface gnomesque sous la main, mais je ne suis pas sûr que l'option choisie soit la bonne. Cela pourrait être une variante du français, alors qu'il y a une disposition suisse directement.
Pour vérifier les réglages dans la session en cours :
Exemples pour basculer vers le français en variante OSS, puis vers le suisse :
Le second appel me donne bien
qwertzu.Ce réglage n'est que temporaire, je t'invite donc à vérifier que ça fait bien ce que tu veux pour ton clavier, puis à trouver les bonnes options dans l'interface graphique. ;)
Debian Consultant @ DEBAMAX
[^] # Re: coincidence
Posté par Cyril Brulebois (site web personnel) . En réponse au message Boot BIOS UEFI. Évalué à 2.
Étant donné l'existence de https://fwupd.org/ j'aurais tendance à être moins catégorique quant à l'absence totale d'interaction entre OS et UEFI…
Debian Consultant @ DEBAMAX
# Nom du dossier ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message compilation Clé Wifi TP-LINK. Évalué à 9.
Ton dossier s'appelle
/home/armel/Documents/Archer_T2U_V1_150901(1)et les parenthèses sont probablement le problème ici (il s'agit de caractères spéciaux). Je t'invite à renommer ton répertoire, ça devrait mieux se passer :Néanmoins, le plus simple est probablement de supprimer le répertoire où le début de compilation a eu lieu, et de partir d'une copie de travail propre (moins de risque d'avoir des choses à moitié compilées dedans, et qui font référence à l'ancien chemin).
Debian Consultant @ DEBAMAX
[^] # Re: Éteindre l'écran ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message Désactiver l'écran tactile selon une borne d'heures (Debian). Évalué à 2.
On peut habituellement forcer l'extinction/l'allumage via DPMS :
Bien évidemment, la moindre interaction va sortir l'écran de la veille DPMS, donc ça ne remplit pas la fonction de verrouillage.
Debian Consultant @ DEBAMAX
# xinput ?
Posté par Cyril Brulebois (site web personnel) . En réponse au message Désactiver l'écran tactile selon une borne d'heures (Debian). Évalué à 7.
Dans un environnement graphique (X11), les différents périphérique d'entrée peuvent être consultés mais aussi (re)configurés avec la commande
xinput.Exemple sur mon laptop :
(Attention, les identifiants numériques ne sont pas fixes.)
Il est possible d'activer/désactiver un périphérique avec
xinput --enable 12etxinput --disable 12respectivement (ici pour mon touchpad,ALP000D:00 044E:120C).Si tu fais tourner cela dans une crontab, il faudra faire attention d'avoir les bonnes variables d'environnement positionnées (notamment
DISPLAY, et probablementXAUTHORITY), pour que la commande appelée puisse se connecter au serveur d'affichage.Debian Consultant @ DEBAMAX