jeudi 8 juillet 2010

Comment installer une ISO Ubuntu sur une clé USB... à l'aide d'un Mac

Attention billet très technique et très geek : ami lecteur, éloigne toi si la ligne de commande te fait peur ! (Je pense notamment à toi, ami de facebook)

Bon, je possède un Mac avec Leopard installé dessus (et pas de dual boot), et j'ai voulu flasher une clé USB avec Ubuntu Netbook. Las, trois fois hélas, Ubuntu ne fournit plus des images prêtes pour utilisation mais uniquement des ISO à graver (contrairement à Moblin et Meego soit dit en passant).

Et bien qu'il y ait quelques instructions, rien qui ne marche vraiment sous mac !

Donc voici mes instructions pour Ubuntu 10.04 :

  1. Récuperez l'ISO dont vous avez besoin
  2. Récuperez l'image hd-media de la distribution correspondante, c'est à dire le fichier boot.img.gz : ici pour Ubuntu 10.04
  3. Décompressez l'image : gzip boot.img.gz
  4. Insérez votre clé usb (attention, elle sera effacée par la suite)
  5. Vérifiez à quel périphérique elle correspond : diskutil list (elle doit apparaitre avec un périphérique /dev/diskX)
  6. Démontez la clé (mais laissez la branchée) : diskutil unmountDisk /dev/diskX
  7. Flashez l'image : dd if=boot.img of=/dev/rdiskX bs=1m (oui rdisk et pas disk, ca accélère beaucoup les choses)
  8. Ejectez la clé : diskutil eject /dev/diskX
  9. Débranchez et rebranchez la clé : elle doit apparaître sous le finder
  10. Ouvrez l'ISO dans le finder
  11. Copiez tous les fichiers de l'ISO dans la clé (qui doit aussi apparaitre dans le Finder)
  12. Copiez les fichiers du répertoire isolinux (de l'ISO) à la racine de la clé (ca va écraser certains fichiers, c'est normal !)
  13. Ejectez la clé, c'est prêt : il ne reste plus qu'à booter et au prompt, appuyer sur Return pour afficher le menu.

C'est sûr, c'est bien plus compliqué que sous Linux ou Windows...

dimanche 27 décembre 2009

L'astuce ultime : comment savoir si sa télécommande est en panne...

Bon, un jour ou l'autre, on a tous une télécommande qui subitement ne marche plus (généralement au moment où l'on en avait le plus besoin, merci Murphy). Bon, la plupart du temps, changer les piles (pour peu qu'on en ait encore...) suffit mais parfois non. Et là, la question cruciale : est-ce la télécommande ou bien le récepteur qui est en panne ? [1]

Voilà le truc [2] : prenez un appareil photo numérique, ou bien une caméra, l'important étant d'avoir un mode "visée sur écran" (sur mon reflex, il faut passer en Live View), et avec la télécommande, visez l'objectif en appuyant sur le bouton : si la télécommande marche, une lumière apparait aussitôt [3]!

Notes

[1] Parce que si on pouvait s'éviter de racheter inutilement une télécommande ou bien de remplacer l'appareil

[2] qui ne marche que pour les télécommandes à infrarouges

[3] Ultime je vous dis

vendredi 13 novembre 2009

A propos de la bombe atomique...

Les effets de la bombe atomique, ce n'est pas un sujet des plus joyeux, et pour avoir visité le musée de Nagasaki à ce sujet, je peux vous assurer que ca fait une forte impression...

Mais bon, un ami (Julien R.) m'a fait suivre cet excellent billet de Marion Montaigne à ce sujet, donc si l'humour au second degré ne vous effraie pas, bonne lecture...

mercredi 3 octobre 2007

Lancer un script mysql sans donner ni l'utilisateur ni le mot de passe sur la ligne de commande

Voici mon problème du jour : Comment lancer un script (de maintenance par exemple) qui fait appel à mysql, sans stocker en dur le nom de l'utilisateur et le mot de passe (ce qui est mal, très très mal). Le but est que seul un utilisateur privilégié (je n'ai pas forcément dit root ! je pense plutôt à un compte système comme mysql par exemple) puisse lancer ce script.


C'est plutôt facile, et je fournis trois solutions pour la peine :
  1. Avoir un fichier de configuration pour le script accessible seulement par l'utilisateur privilégié

    On définit dans le fichier de configuration des variables d'environnement, une pour le user, une autre pour le mot de passe. Dans le script il ne reste qu'à utiliser la commande source pour récuperer ses variables (seul l'utilisateur privilégié pourra lire le fichier). Simple et efficace.

  2. Avoir un fichier de configuration pour mysql accessible seulement par l'utilisateur privilégié

    Variante de la précédente : on crée un fichier de configuration spécifique pour mysql (que l'on pourra mettre par exemple dans /etc/mysql mais il n'y a aucune obligation). Et on utilise l'option --defaults-file pour que mysql lise le contenu du fichier (il lit notamment les sections [client] et [mysql]). Exemple de fichier:

    [client]
    host = localhost
    user = votre_user
    password = votre_mot_de_passe
    socket = /var/run/mysqld/mysqld.sock
    Bonus : on peut spécifier d'autres options pour influer sur mysql (en vrac, le nom de serveur, le jeu de caractères...).
  3. Pour ceux qui ont plusieurs scripts mais qui ont des options qui diffèrent légèrement

    Vous avez des scripts quasiment identiques mais les options diffèrent légèrement (ou vous voulez centraliser tout en un seul fichier) : c'est possible. C'est une variante du cas précedent : on écrit un fichier de configuration mysql que l'on découpe en plusieurs sections. Ensuite, on fait appel au programme my_print_defaults ! my_print_defaults examine le fichier de configuration (option -c pour spécifier le votre...) et donne en sortie les paramètres à passer à mysql sous forme d'argument. Exemple :

    $ my_print_defaults -c /etc/mysql/maconf.cnf client 
    --host=localhost
    --user=votre_user
    --password=votre_mot_de_passe
    --socket=/var/run/mysqld/mysqld.sock
    Il ne reste plus qu'à passer cela à mysql en récuperant la sortie dans une variable (ou en utilisant cette petite merveille de xargs).

mardi 2 octobre 2007

Petit truc en vrac

Je suis souvent confronté à des petits problèmes dont je ne trouve pas immédiatement la solution (ce qui n'engendre chez moi que frustration et désespoir, et chez certains de mes collègues une perte de leur capacité auditive). Et parfois, après, alors que j'étais sur totalement autre chose, je découvre ce que je cherchais désespérement. Si, si.

Dans le principe que "Si j'ai ce problème, il y a de fortes chances que d'autres soient dans le même cas de figure", voici le premier billet d'une probablement longue série.

Problème: Comment executer un script au démarrage d'une machine quand on n'est pas root !
Quelques précisions: l'un de mes amis et colocataires de notre serveur dédié utilise fetchmail. Mais à chaque fois qu'il y a reboot du serveur (ce qui est arrivé une ou deux fois), adieu fetchmail... Donc pour parer à cela, il a ajouté un script dans sa crontab pour vérifier toutes les heures si fetchmail est démarré, et dans le cas contraire, le script lance fetchmail. Pas mal mais peut on faire mieux ?

La réponse est oui, du moins si on utilise Vixie cron (le cron par défaut d'ubuntu et de tant d'autres) dans sa version 3 (qui date de 1993). Oui, ce bon vieux cron que l'on croit seulement capable de lancer des tâches périodiquement. En faisant un simple man 5 crontab, on tombe sur ce paragraphe:

À la place des cinq premiers champs peut apparaître l’une des huit chaînes spéciales :


              chaîne         signification
              ------         -------
              @reboot        Exécuter une fois au démarrage.
              @yearly        Exécuter une fois par an, « 0 0 1 1 * ».
              @annually      (idem que @yearly)
              @monthly       Exécuter une fois par mois, « 0 0 1 * * ».
              @weekly        Exécuter une fois par semaine, « 0 0 * * 0 ».
              @daily         Exécuter une fois par jour, « 0 0 * * * ».
              @midnight      (idem que @daily)
              @hourly        Exécuter une fois par heure, « 0 * * * * ».

et oui un simple @reboot et le tour est joué...