vendredi 6 juillet 2012

Installer Windows XP sur un ordinateur sous Ubuntu

Comment installer Windows XP sur une partition de mon ordinateur sous Ubuntu (12.04) a partir d'un fichier .iso?

La solution vient de : http://superuser.com/questions/99478/make-a-bootable-usb-to-install-windows-xp-from-linux

1) on installe VirtualBox:
sudo apt-get install virtualbox
2) on donne l'acces au disque dur (sur ma machine, /dev/sda3) pour VirtualBox:
VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sda -partitions 3
En cas de message d'erreur, on ajoute les droits
sudo adduser `whoami` disk
[Edit] A mon 2eme essai, j'avais toujours une erreur pour l'acces, j'ai du modifier l'acces au disk sda
sudo chown 666 /dev/sda*
..on se delogge et relogge

3) on lance VirtualBox

4) ajout d'un nouveau systeme.
Pour le disque dur, on selectionne le fichier ~/hdd.vmdk
Pour le cdrom, on indique le fichier .iso contenant l'image du DVD d'installation de Windows XP

5) Demarre la machine virtuelle sous VirtualBox: appui sur une touche pour lancer l'installation sur la premiere partition du premier disque dur.  Ca va ecraser tout ce qu'il y a dessus!!

6) croiser les doigts..

7) quitter VirtualBox

8) mettre a jour le "demarreur" pour pouvoir booter linux egalement (Si pas ecrase par Windows!):
sudo update-grub
sudo grub-install /dev/sda
9) redemarrer l'ordinateur

jeudi 5 janvier 2012

utiliser un clavier usb externe sur macbook pro

Les resultats de ma lutte pour arriver a utiliser un clavier francais usb logitech sur macbook pro avec OSX 10.6.
La reconnaissance guidee de macos ne me sort qu'un clavier ISO europeen standard dont les 3/4 des touches ne correspondent pas.

Pour s'en sortir, recuperer Ukelele, un logiciel qui permet de definir les caracteres relatifs aux touches (a part quelques touches systemes).
- Ouvrir le keyboard layout fourni "logitech french", verifier que toutes les touches sont correctement definies et sauvegarder le fichier layout (ou bundle).
- Placer le fichier sauvegarde dans Macintosh HD/Bibliotheque/Keyboard Layouts/ ou dans Macintosh HD/Systeme/Bibliotheque/Keyboard Layouts/
- Redemarrer la machine
- Dans l'application Preferences Systemes, aller dans "Langue et texte", onglet "Methodes de saisie", selectionner la methode "Logitech french" (ou le nom que vous lui avez donne) et activer l'option "afficher le menu Saisie dans la barre des menus".
- cliquer sur le petit clavier en haut a droite dans la barre des menus et selectionner le clavier a utiliser!

Verifie ton code C/C++ avec valgrind

Apres avoir cree son programme C et C++, on a beau etre super bon, les jours de fatigue, on risque d'avoir place inconsciemment quelques erreurs relatives a l'allocation ou l'acces memoire.
Heureusement, le petit utilitaire Valgrind est la pour nous sauver (sous Linux ou Mac)!

L'installation est simple:
- on recupere les dernieres soures ici
- on extrait les fichiers
- on va dans le repertoire cree
- depuis le terminal, on tape "./configure", puis "make", et enfin "sudo make install"

on verifie que tout marche bien en tapant un petit "valgrind ls -l"

Pour tester son programme, que l'on lance d'habitude comme ceci: "./mon_prog arg1 arg2"
il faut s'assurer que l'on a compile avec l'option -g, Ex: "gcc -o mon_prog -g mon_prog.c"

Le test se fait en lancant une commande du genre: "valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes ./mon_prog arg1 arg2"




Remarque: sous macos 10.6 au moins, un printf() (voire d'autres fonctions utilisant stout) dans le code va allouer une zone memoire qui ne sera pas liberee en sortie explicitement par le programme (Ca sera purge par l'OS normalement!).
On se retrouve avec un message sous Valgrind du style:
4,096 bytes in 1 blocks are still reachable in loss record 2 of 2
at 0x100012679: malloc (vg_replace_malloc.c:266)
by 0x10006FF4D: __smakebuf (in /usr/lib/libSystem.B.dylib)
by 0x10006FEB9: __swsetup (in /usr/lib/libSystem.B.dylib)
by 0x10002CC13: __vfprintf (in /usr/lib/libSystem.B.dylib)
by 0x10006FE0A: vfprintf_l (in /usr/lib/libSystem.B.dylib)
by 0x10009D482: printf (in /usr/lib/libSystem.B.dylib)
by 0x10000224C: main (mon_prog.c:547)

LEAK SUMMARY:
definitely lost: 0 bytes in 0 blocks
indirectly lost: 0 bytes in 0 blocks
possibly lost: 0 bytes in 0 blocks
still reachable: 4,096 bytes in 1 blocks
Pas besoin de s'en occuper!
Si ca derange, on peut fermer a la main stdout avec un petit: fclose( stdout );
..en esperant qu'il n'y ait pas de fonction executee a la terminaison ( atexit() ) qui utilise stdout..