Si tu as une debian ou peut-être ubuntu aussi, c'est sûrement anacron qui appelle run-parts sur /etc/cron.daily qui contient le script find qui appelle updatedb qui fait appelle à l'outil find. Le find que tu vois tourner en nobody doit être un de ces deux là.
C'est en regardant le code source du driver il y a longtemps que j'ai vu ce que le -2 voulait dire, ce que je te traduis plus haut.
Ca ne vient pas du 2.6.23. Car chez moi ca marche.
Vu que tu dis plus loin que ca marche si tu le met en module, je pense que ca venait du fait que s'il n'est pas en module, il essaye de démarrer à un moment où il n'a pas encore le système de fichier et donc pas le firmware, mais je peux me tromper...
ipw2200: Unable to load firmware: -2 correspond en gros à Aucun fichier ou répertoire de ce type.
Donc tu t'es trompé d'endroit pour ton microcode. De mémoire, mais sans pouvoir le vérifier tout de suite sur mon ordi, le firmware se place dans le répertoire /usr/lib/hotplug/firmware/.
La liste des particularités de ton installation, c'est justement cette image disque.
Moi aussi mon intuition me disait que c'était une méthode bourrine, mais en fait, quand on réfléchit, on ne voit pas bien ce que ca va apporter de plus de tout réinstaller : on aura après beaucoup d'efforts le même résultat. Le concept d'installation propre n'a pas la même pertinence que sous un autre OS : en général, les seules choses à nettoyer, ce sont des paquets que tu n'utilises plus, et sous Debian, c'est aptitude purge.
Il faut bien noter que avec udev, le matériel est détecté à chaque démarrage, il n'y a donc rien au niveau driver de figé par rapport à ton matériel. Le reste, c'est les mêmes binaires, donc je repose la question de la pertinence de tout réinstaller.
Je ne demande qu'à changer d'avis mais pour le moment j'ai zéro argument contre la technique de l'image disque.
En général, et j'ai pu le vérifier, en mettant un disque dur dans du nouveau matériel, tout fonctionne impécablement.
La seule manipulation à connaître consiste à nommer correctement les cartes réseau. En général, effacer /etc/udev/rules.d/z25_persistent-net.rules pour qu'il soit regénéré suffit.
Ensuite y'a deux trois trucs annexes un peu plus évidents, comme le nom des disques durs / lecteurs DVD si tu changes tes branchements, ou le xorg.conf si tu changes de carte graphique.
Là où tu n'as pas le choix, c'est si tu changes d'architecture (du genre i386 -> amd64) où là il faut utiliser la méthode décrite plus haut.
J'utilise darcs car lorsque la question s'est posée, c'était le seul qui permettait d'enregistrer seulement un changement dans un fichier et pas forcément tous les changements d'un fichier.
(c'est maintenant apparemment possible avec mercurial au moins grâce à http://www.selenic.com/mercurial/wiki/index.cgi/RecordExtens(...) )
mercurial était trop jeune et git trop compliqué en apparence. J'aime la simplicité "un dépot, une seule branche". Darcs s'apprend en quelques minutes. Ca c'est vraiment bien.
L'environnement Maemo (rootstrap dérivé de Debian pour le Nokia N770 et N800) a aussi ca sous le nom de Single-click install. Pour ceux qui sont familiers avec Debian, c'est tout simplement un fichier servi par http qui ressemble à ca :
[install]
repo_name = Foo Catalogue
repo_deb = deb http://foo.com/maemo mistral user
package = foo-app
Une page[1] du wiki officiel dit que pour sarge, c'est les paquets qui vont attérir dans la stable rN. En effet, la version stable de debian est mise à jour régulièrement avec les corrections de bugs non intrusives et les mises à jour de sécurité, voir l'exemple de l'annonce de sarge r6[2]. Aucune idée de savoir si c'est valable pour etch, mais y'a pas de raison.
A noter que même en 2D, le gain de performance entre le driver libre nv et le driver propriétaire nvidia est énorme.
Par exemple, pour lire une vidéo en 1280x720 (DX50) via XV, ce n'est tout simplement pas possible sur mon ordi avec le driver libre (Xorg utilise tout le temps CPU) alors qu'avec le driver propriétaire, ca passe (moins de 30% du temps CPU pour mplayer et Xorg).
Je ne pense pas que ce soit un cheval de troie mais plutôt une très mauvaise façon de controuner un problème dans leur driver.
Pour nautilus, aucune idée.
Pour ce que je te conseille, rien de bien simple. Perso, ce que je ferais, c'est exécuter le scipt d'installation en enlevant ces lignes setuid. Ensuite, voir les droits minimum dont a besoin xsane pour fonctionner, créer un groupe dédié qui a les droits sur les bons périphériques de /dev (apparemment /dev/mfpports et le port série) et s'ajouter dans ce groupe. Mais je sais pas si c'est possible. A voir, par tatonnement en utilisateur normal en regardant ce qui ne marche pas (éventuellement à coup de strace)...
Pour info, c'est comme celà que fonctionne l'usb, la carte son, etc (au moins sur Debian et ubuntu) : si tu n'es pas dans le groupe audio, tu ne peux pas écouter de musique car seul les utilisateurs du groupe audio on le droit d'écrire dans /dev/snd/*.
wrap_setuid_third_party_application() {
if echo "$1" | grep -q "/" ; then
APP_NAME=$1
else
APP_NAME=`which $1 2> /dev/null`
fi
NEW_NAME=${APP_NAME}.bin
if test -n "$APP_NAME" ; then
if ! test -f "$NEW_NAME" && ! test -d "$NEW_NAME"; then
mv "$APP_NAME" "$NEW_NAME"
cp -af /opt/${VENDOR}/mfp/bin/suwrap "$APP_NAME"
chown root:root "$APP_NAME"
chmod 4755 "$APP_NAME"
fi
fi
}
wrap_setuid_ooo_application() {
WRAPPING_BIN=`ls /usr/lib*/*/program/$1.bin /opt/*/program/$1.bin 2> /de
v/null | head -1`
if test -n "$WRAPPING_BIN" ; then
${2}wrap_setuid_third_party_application $WRAPPING_BIN
fi
}
Donc en gros il te copie les exécutables ooo dans /opt avec l'extension .bin et il te les remplace par un script setuid qui les appelles. Je n'ai jamais vu une telle horreur.
Pour piloter le stdin et le stdout d'un fils, il faut, juste après le fork(), fermer stdin et stdout et faire un dup() de deux descripteurs de fichier au préalable défini sur respectivement stdin et stdout. Les deux descripteurs de fichier étant connu du père, en écrivant dessus, on pilote mplayer (avec de préférence -slave mais pas obligé).
Exemple de code repompé d'un d'un de mes vieux projets (le programme à lancer s'appelait apt, rien à voir avec Debian) par flemme de chercher dans Google:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h> // exit()
#include <string.h> // memset(), strcat()...
#include "apt.h"
#include "msg.h"
#include "init.h"
#include "parse.h"
#define STDIN 0
#define STDOUT 1
#define STDERR 2
/* The size should be around 500, because of the mvts answer */
#define APT_OUTPUT_LINE_MAX_LENGTH 1000
extern config* current_configuration;
int APTIN_K,APTOUT_K;
FILE* STREAM_IN;
FILE* STREAM_OUT;
void APTlaunch(const char *apt_path,int* aptin_k,int* aptout_k){
int childPid;
int pipefdin[2],pipefdout[2];
/* Pipes init */
if( pipe(pipefdin) == -1 || pipe(pipefdout) == -1 ){
perror("Creating apt communication pipes");
exit(1);
}
childPid = fork();
if( !childPid ){
// son, so we launch apt and we connect
// its standards channels to pipes
// close unused channels
close(pipefdin[1]);
close(pipefdout[0]);
// Duplicate stdin to our pipe
close(STDIN);
if( dup(pipefdin[0]) == -1 ){
perror("duplicating apt stdin");
exit(1);
}
// Duplicate stdout to our pipe
close(STDOUT);
if( dup(pipefdout[1]) == -1 ){
perror("duplicating apt stdout");
exit(1);
}
// Duplicate stderr to the same pipe as stdout
close(STDERR);
if( dup(pipefdout[1]) == -1 ){
perror("duplicating apt stderr");
exit(1);
}
// Launch apt
if( execl(apt_path,apt_path,NULL) == -1 ){
perror("can't find apt");
exit(1);
}
}else{
// father, this process, continues execution
// Close unusable channels
close(pipefdin[0]);
close(pipefdout[1]);
// Return the right values to control the apt
*aptin_k = pipefdin[1];
*aptout_k = pipefdout[0];
}
}
void APTstart(const char* apt_path){
// Launch the apt upon the connection
APTlaunch(apt_path,&APTIN_K,&APTOUT_K);
// Use stdio to manipulate the commands
STREAM_IN = fdopen(APTIN_K,"w");
STREAM_OUT = fdopen(APTOUT_K,"r");
}
void APTstop(){
write(APTIN_K,"q\n",2);
}
int APTloadDataFile(const char* filename){
int written;
written = fprintf(STREAM_IN,"load %s%s\n",current_configuration->apt_data_path
,filename);
fflush(STREAM_IN);
return written;
}
int APTsendCommand(const char* cmd){
int written;
written = fprintf(STREAM_IN,"%s\n",cmd);
fflush(STREAM_IN);
return written;
}
char* APTgetNextLine(){
char* line;
line = (char*)malloc(APT_OUTPUT_LINE_MAX_LENGTH*sizeof(char));
fgets(line,APT_OUTPUT_LINE_MAX_LENGTH,STREAM_OUT);
// Careful, the \n is still in line
return line;
}
char* APTgetOutputTillEmptyLine(){
char* buffer;
lineList* acftList = (lineList*)malloc(sizeof(lineList));
lineList* otherLines;
int byteCounter = 0;
acftList->line = APTgetNextLine();
acftList->nextLines = NULL;
otherLines = acftList;
if( acftList->line[0] != '\n' ){
buffer = APTgetNextLine();
while( buffer[0] != '\n' ){
byteCounter += strlen(buffer);
otherLines = addToLineList(otherLines,buffer);
buffer = APTgetNextLine();
}
}
buffer = lineList2string(acftList,byteCounter);
freeLineList(acftList);
return buffer;
}
void APTflushOutput(){
char* line = APTgetNextLine();
while( strcmp(line,"\n") ){
free(line);
line = APTgetNextLine();
}
free(line);
}
Je ne sais pas si il y a des règles toutes faite. De mon exprérience, j'essaye de séparer :
- ce qui est donnée de ce qui est programme (pour pouvoir réinstaller facilement)
- ce qui change souvent de ce qui change rarement (pour éviter les corruptions)
- ce qui est à sauvegarder de ce qui ne l'est pas (pour pouvoir idnetifier facilement ce qui est à sauvegarder)
Après, les choses classiques :
- /var à part car ca change souvent
- /home ou /var/www (selon ce que tu choisis) à part car c'est à sauvegarder
- la swap à part comme d'habitude
- éventuellement /boot à part pour gérer les problèmes de boot
- éventuellement une partition de sauvegarde à part.
Avant, tu peux voir si tu veux faire du RAID.
Pour finir, je te donne l'exemple de mon ordi qui peut être bon ou mauvais mais bon, c'est un exemple : Sys. de fich. Tail. Monté sur
/dev/hda1 259M /
/dev/hdc1 19G /backup
/dev/mapper/maxtor-home 53G /home
/dev/mapper/maxtor-tmp 496M /tmp
/dev/mapper/maxtor-usr 2,0G /usr
/dev/mapper/maxtor-var 18G /var
/dev/mapper/seagate-fileserv 147G /var/fileserv
Cet article dit qu'il faut activer le démon rsync pour faire du rsync à travers ssh ce qui n'est pas le cas. La partie où l'on touche au fichier /etc/default/rsync est donc à zapper.
A ce propos, je me demande maintenant depuis un grand moment pourquoi la version 2 ne vient pas par les mises à jour automatiques. A la sortie de Firefox 2, j'avais cru lire quelquechose comme quoi il fallait attendre une mise à jour de Firefox 1.5 qui permettrait de refuser une mise à jour.
Mais depuis, plus de nouvelle. Qu'en est-il?
Que va-t-il arriver à ces milliers d'utilisateurs de Firefox 1 qui n'en on rien à faire du planning des sorties des produits Mozilla lorsque Firefox 1 ne sera plus supporté?
# cron
Posté par niol (site web personnel) . En réponse au message Recherche tâche en arrière plan. Évalué à 4.
# Config debian de wpa_supplicant
Posté par niol (site web personnel) . En réponse au message WIFI en WPA2. Évalué à 3.
[^] # Re: Impossible de charger le microcode
Posté par niol (site web personnel) . En réponse au message Problème kernel 2.6.23 avec ipw2200. Évalué à 1.
Ca ne vient pas du 2.6.23. Car chez moi ca marche.
Vu que tu dis plus loin que ca marche si tu le met en module, je pense que ca venait du fait que s'il n'est pas en module, il essaye de démarrer à un moment où il n'a pas encore le système de fichier et donc pas le firmware, mais je peux me tromper...
# Impossible de charger le microcode
Posté par niol (site web personnel) . En réponse au message Problème kernel 2.6.23 avec ipw2200. Évalué à 2.
ipw2200: Unable to load firmware: -2 correspond en gros à Aucun fichier ou répertoire de ce type.
Donc tu t'es trompé d'endroit pour ton microcode. De mémoire, mais sans pouvoir le vérifier tout de suite sur mon ordi, le firmware se place dans le répertoire /usr/lib/hotplug/firmware/.
Voir éventuellement la doc : http://ipw2200.sourceforge.net/faq.php#qa_1_7
[^] # Re: Distrib sur nouveau matériel
Posté par niol (site web personnel) . En réponse au message Retrouver ses paquets .. Évalué à 2.
Moi aussi mon intuition me disait que c'était une méthode bourrine, mais en fait, quand on réfléchit, on ne voit pas bien ce que ca va apporter de plus de tout réinstaller : on aura après beaucoup d'efforts le même résultat. Le concept d'installation propre n'a pas la même pertinence que sous un autre OS : en général, les seules choses à nettoyer, ce sont des paquets que tu n'utilises plus, et sous Debian, c'est aptitude purge.
Il faut bien noter que avec udev, le matériel est détecté à chaque démarrage, il n'y a donc rien au niveau driver de figé par rapport à ton matériel. Le reste, c'est les mêmes binaires, donc je repose la question de la pertinence de tout réinstaller.
Je ne demande qu'à changer d'avis mais pour le moment j'ai zéro argument contre la technique de l'image disque.
# Distrib sur nouveau matériel
Posté par niol (site web personnel) . En réponse au message Retrouver ses paquets .. Évalué à 1.
La seule manipulation à connaître consiste à nommer correctement les cartes réseau. En général, effacer /etc/udev/rules.d/z25_persistent-net.rules pour qu'il soit regénéré suffit.
Ensuite y'a deux trois trucs annexes un peu plus évidents, comme le nom des disques durs / lecteurs DVD si tu changes tes branchements, ou le xorg.conf si tu changes de carte graphique.
Là où tu n'as pas le choix, c'est si tu changes d'architecture (du genre i386 -> amd64) où là il faut utiliser la méthode décrite plus haut.
# Darcs
Posté par niol (site web personnel) . En réponse au journal Git et Mercurial. Évalué à 3.
(c'est maintenant apparemment possible avec mercurial au moins grâce à http://www.selenic.com/mercurial/wiki/index.cgi/RecordExtens(...) )
mercurial était trop jeune et git trop compliqué en apparence. J'aime la simplicité "un dépot, une seule branche". Darcs s'apprend en quelques minutes. Ca c'est vraiment bien.
De plus, je ne me suis pas encore heurté de manière bloquante aux problèmes connus de darcs (voir http://wiki.darcs.net/DarcsWiki/FrequentlyAskedQuestions#hea(...) )
# Existe aussi chez maemo
Posté par niol (site web personnel) . En réponse au journal One-Click Install avec OpenSuSE : vers le Linux de masse ?. Évalué à 1.
# tzconfig
Posté par niol (site web personnel) . En réponse au message Problème d'heure. Évalué à 1.
# Indices
Posté par niol (site web personnel) . En réponse au message Dépots debian - proposed-updates. Évalué à 3.
[1] http://wiki.debian.org/DebianVolatile
[2] http://www.debian.org/News/2007/20070407
[^] # Performances nv vs nvidia
Posté par niol (site web personnel) . En réponse au message Consommation anormal CPU, mauvaise config.serveur X. Évalué à 1.
Par exemple, pour lire une vidéo en 1280x720 (DX50) via XV, ce n'est tout simplement pas possible sur mon ordi avec le driver libre (Xorg utilise tout le temps CPU) alors qu'avec le driver propriétaire, ca passe (moins de 30% du temps CPU pour mplayer et Xorg).
[^] # Re: Voir source du script d'installation
Posté par niol (site web personnel) . En réponse au message Ooo s'ouvre en root et non en user normal. Évalué à 3.
Pour nautilus, aucune idée.
Pour ce que je te conseille, rien de bien simple. Perso, ce que je ferais, c'est exécuter le scipt d'installation en enlevant ces lignes setuid. Ensuite, voir les droits minimum dont a besoin xsane pour fonctionner, créer un groupe dédié qui a les droits sur les bons périphériques de /dev (apparemment /dev/mfpports et le port série) et s'ajouter dans ce groupe. Mais je sais pas si c'est possible. A voir, par tatonnement en utilisateur normal en regardant ce qui ne marche pas (éventuellement à coup de strace)...
Pour info, c'est comme celà que fonctionne l'usb, la carte son, etc (au moins sur Debian et ubuntu) : si tu n'es pas dans le groupe audio, tu ne peux pas écouter de musique car seul les utilisateurs du groupe audio on le droit d'écrire dans /dev/snd/*.
# Voir source du script d'installation
Posté par niol (site web personnel) . En réponse au message Ooo s'ouvre en root et non en user normal. Évalué à 10.
Dans le source du script d'instalaltion des drivers, on peut voir :
et :Donc en gros il te copie les exécutables ooo dans /opt avec l'extension .bin et il te les remplace par un script setuid qui les appelles. Je n'ai jamais vu une telle horreur.
[^] # Re: Piloter stdin et stdout d'un fils
Posté par niol (site web personnel) . En réponse au message Gestion STDIN + pilotage Mplayer. Évalué à 1.
# Piloter stdin et stdout d'un fils
Posté par niol (site web personnel) . En réponse au message Gestion STDIN + pilotage Mplayer. Évalué à 1.
Pour piloter le stdin et le stdout d'un fils, il faut, juste après le fork(), fermer stdin et stdout et faire un dup() de deux descripteurs de fichier au préalable défini sur respectivement stdin et stdout. Les deux descripteurs de fichier étant connu du père, en écrivant dessus, on pilote mplayer (avec de préférence -slave mais pas obligé).
Exemple de code repompé d'un d'un de mes vieux projets (le programme à lancer s'appelait apt, rien à voir avec Debian) par flemme de chercher dans Google:
[^] # Taille vidéo mplayer
Posté par niol (site web personnel) . En réponse au message Gestion STDIN + pilotage Mplayer. Évalué à 1.
# grep sur ton profile
Posté par niol (site web personnel) . En réponse au message Megago.com. Évalué à 2.
voir http://lists.debian.org/debian-security/2006/09/msg00040.htm(...)
En général, pour ce genre de problèmes, commence par renommer ton répertoire avec ton profile Firefox pour avoir un Firefox tout neuf et tester.
# Lié à un bug?
Posté par niol (site web personnel) . En réponse au message avahi daemon. Évalué à 1.
https://bugs.launchpad.net/ubuntu/+source/avahi/+bug/94940
# A toi de voir
Posté par niol (site web personnel) . En réponse au message Partitionnement d'un serveur dédié. Évalué à 2.
- ce qui est donnée de ce qui est programme (pour pouvoir réinstaller facilement)
- ce qui change souvent de ce qui change rarement (pour éviter les corruptions)
- ce qui est à sauvegarder de ce qui ne l'est pas (pour pouvoir idnetifier facilement ce qui est à sauvegarder)
Le Partitioning HOWTO semble confirmer ce que je pense : http://tldp.org/HOWTO/Partition/requirements.html
Après, les choses classiques :
- /var à part car ca change souvent
- /home ou /var/www (selon ce que tu choisis) à part car c'est à sauvegarder
- la swap à part comme d'habitude
- éventuellement /boot à part pour gérer les problèmes de boot
- éventuellement une partition de sauvegarde à part.
Avant, tu peux voir si tu veux faire du RAID.
Pour finir, je te donne l'exemple de mon ordi qui peut être bon ou mauvais mais bon, c'est un exemple :
Sys. de fich. Tail. Monté sur
/dev/hda1 259M /
/dev/hdc1 19G /backup
/dev/mapper/maxtor-home 53G /home
/dev/mapper/maxtor-tmp 496M /tmp
/dev/mapper/maxtor-usr 2,0G /usr
/dev/mapper/maxtor-var 18G /var
/dev/mapper/seagate-fileserv 147G /var/fileserv
[^] # Re: quels logiciels doivent être installés? Où et comment?
Posté par niol (site web personnel) . En réponse au message système de sauvegarde automatique de données. Évalué à 1.
# Quelques alias maison
Posté par niol (site web personnel) . En réponse au message Aliases shell. Évalué à 2.
# Mise à jour automatique vers la version 2
Posté par niol (site web personnel) . En réponse au journal Mise à jour de sécurité pour Mozilla-Firefox 2.0.0.X et 1.5.0.X. Évalué à 1.
Mais depuis, plus de nouvelle. Qu'en est-il?
Que va-t-il arriver à ces milliers d'utilisateurs de Firefox 1 qui n'en on rien à faire du planning des sorties des produits Mozilla lorsque Firefox 1 ne sera plus supporté?
# Thinking in C++
Posté par niol (site web personnel) . En réponse au message Quel bouquin (accessible) pour un débutant ?. Évalué à 4.
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
(par contre je ne sais pas si ca existe en français)
# Une vidéo : Web application frameworks
Posté par niol (site web personnel) . En réponse au journal Rapid Development with Turbogears. Évalué à 5.
C'est en quelque sorte un comparatif.
C'est par exemple ici :
http://video.google.com/videoplay?docid=6297126166376226181&(...)
# ->documentation
Posté par niol (site web personnel) . En réponse au message Ocaml : Installer un module à partir d'un fichier .ml. Évalué à 2.
http://caml.inria.fr/pub/docs/manual-ocaml/manual004.html#ht(...)
Bon courage.