Ouf, j’ai enfin la solution a un bug qui m’ennuyait depuis longtemps : au boot mon portable L400 de Dell m’offrait un superbe ecran noir avec curseur clignotant si je ne passais pas à chaque fois par le boot-menu … Un peu pénible ! Bien sûr, dans le Bios, impossible de changer l’ordre du démarrage une sombre vrai-fausse histoire de mode superviseur. En réalité, pour se sortir de cette histoire il suffit de falsher son BIOS pour une version plus récente. Pour ma part je suis passé du bios A3 au bios A9 disponible sur le site de Dell et il fonctionne à merveille maintenant.
Category Archives: Technology
VmWare player ou Xen ?
Avant d’utiliser cette technologie avec un objectif de rationnalisation de mes serveurs de dev (restons très modeste je parle de ce qui me sert à developper quelque site perso dont celui-ci), j’ai essayé deux produits me semblant être les principaux outils concernant ma cible d’implémentation à savoir Linux : vmware, outil payant mais disponible en version communautaire et xen, outil totalement ouvert.
J’ai donc commencé par vmware et de dois avoué que c’est à peut pret aussi simple qu’une installation de logiciel classique : installation du RPM qui va bien, lancement de l’executable en temps que root … la compilation des package, la signature de je ne sais trop quoi … tout est automatique. C’est beau c’est pro. nickel !
L’installation d’une VM est assez simple : vmware lance un vrai machine completement virtuelle, avec son bios, ses périphériques virtuel qui ne sont autre que les vrai périphériques physiques de la machine après association faite lors de la configuration de la VM. Bref, il suffit de mettre un cd d’install dans le lecteur, démarrer la VM en cliquant sur le bouton et zou, on boot la VM sur le CD et l’installation débute. Trop facile !!
Une fois installé, le petit package de drivers pour le système hôte se déploie en un clic et optimise grandement la performance des périphériques souris et clavier.
Avantage de vmware, simulant une machine physique, il supporte n’importe quel systeme fonctionnant sur la même plateforme (voir une autre plateforme dans des conditions plus pro). Du coup il est possible de s’en servir pour l’installation de windows XP sous linux lorsque l’on en a une utilisation très ponctuelle comme par exemple vérifier la compatibilité d’un site avec IE ou flasher un périphérique USB pour lequel on a qu’une version windows du soft (c’est du vecu). Parceque oui, le petit plus c’est la possibilité en un click de connecter un element USB sur la VM ! solution très interressante qui ouvre de nombreuses nouvelles possibilités en terme de support de périphérique sur une VM.
Bien sure, il faut aussi regarder les performance de cet environnent virtuel, et de ce point de vue là, dans un cadre d’utilisation simple c’est vraiment correct : pour vous dire j’ai fait tourner un XP sous Linux avec en tache de fond un calcul distributed.net + un calcul BOINC et franchement, l’utilisation etait acceptable, le tout sur une machine à environ 1.5Gz. Les problèmes de performance apparaissent vraiment avec le manque de mémoire : à savoir que le disque est simulé, il s’agit en réalité d’un fichier, lui-même écrit sur un file-système géré par linux et mappé sur un disque physique. Lorsque le système virtuel vient à manquer de mémoire physique, celui-ci se met à swapper dans un fichier, lui-même ecrit dans le fichier décrit ci-dessus … bref, l’empilement d’IO virtuelles et réelles que l’on rencontre alors finit vite par venir à bout de n’importe quoi … et vous amenè par exemple à fermer windows en plus de 2h … beau score ! POur une utilisation plus proffessionnelle ou resemblant moins à des tests je ne peux que conseiller l’utilisation de partitions physique plutot que logique pour les VM.
C’est ainsi que j’ai ensuite décidé de faire quelque essais avec Xen, d’autant que ma suse préférée offrait cette possibilitée. Pour la petite histoire, j’ai tout d’abord essayer ça dans une VM sous vmware (lol).
Le principe de Xen est un peu différent, il ne s’agit pas d’une application hébergée par un système hôte qui va faire tourner des VM, mais d’une couche basse, située en dessous du noyau hôte et qui va permettre le partage des ressources matérielles. Donc en gros, au boot, on demarre une sorte de noyau Xen (l’hyperviseur) qui lui-même va démarrer un noyau principal, le domaine0 depuis lequel on va pouvoir lancer les machines secondaires.
Le noyau est compilé spécifiquement pour Xen avec une architecture eponyme. Xen ne fournit pas une machine vituel, au même sens que vmware qui vous fournit une sorte de PC version logiciel, il fournit un service de partage des ressources matérielle à plusieurs systèmes ce qui est assez différent, surtout dans le sens où il n’est pas possible d’installer avec Xen n’importe quelle VM, mais seulement des noyaux type linux, openbsd & co. Pas de Windows ici bas. L’installation d’une VM ne se fait d’ailleurs pas de le même façon que celle d’un système classique : ici pas de boot depuis le cd pour l’install … on se débrouille pour installer l’OS dans un file système (logique ou physique) puis on boot sur ce file system. Un peu moins user-friendly, mais après tout, la création de VM est-ce vraiment une fonctionnalité grand publique ?
Les performances sont plutot au rendez-vous, j’utilise une VM comme serveur de DEV avec tomcat, mysql & co, les temps de réponse sont les même que sur mon serveur précédent dont la conf était certe un peu inférieur mais sans que ce soit sensible. Grosso modo, je concidère que le fait que ce soit une VM est transparent avec Xen, pour l’instant. A noter qu’il est possible de gérer la priorité entre les différentes VM, solution utile si l’on souhaite partager le même hardware pour des serveur de DEV et PROD par exemple.
Pourquoi utiliser des VM me direz-vous ? hors mis pour se trouver dans le situation hubuesque mais présente : lorsque je boot mon serveur de dev la séquence est la suivante :
- Un bootloader sur disquette va chercher un booloader pxe sur un serveur tftp
- Celui-ci charge un bootloder plus perfectionné qui permet de booter un noyau Xen (multi-kernel)
- Ce dernier va ensuite chercher l’hyperviseur Xen
- Qui boot le noyau du domaine principal présent sur NFS
- Qui demarre enfin la VM, elle aussi présente sur un autre lien NFS
Pourquoi faire simple quand on peut faire compliqué ? et bien simplement pour détacher le matériel du logiciel !!! voila qui permet de se sortir en un clein d’oeil des problèmes de pannes, mais qui permet aussi de migrer de matériel sans avoir à faire de réinstallation fastidieuses.
Portes dérobées dans les BIOS
Les fabriquants de bios prévoient souvent des portes dérobées pour accéder aux bios alors que ceux-ci sont protégés par des mots de passe … bien utile pour s’eviter un démontage suivi de son clear CMOS …
En voici une liste :
Backdoor Passwords Many BIOS manufacturers have provided backdoor passwords that can be used to access the BIOS setup in the event you have lost your password. These passwords are case sensitive, so you may wish to try a variety of combinations. WARNING: Some BIOS configurations will lock you out of the system completely if you type in an incorrect password more than 3 times. Read your manufacturers documentation for the BIOS setting before you begin typing in passwords. Award BIOS backdoor passwords: ALFAROME BIOSTAR KDD ZAAADA ALLy CONCAT Lkwpeter ZBAAACA aLLy CONDO LKWPETER ZJAAADC aLLY Condo PINT 01322222 ALLY d8on pint 589589 aPAf djonet SER 589721 _award HLT SKY_FOX 595595 AWARD_SW J64 SYXZ 598598 AWARD?SW J256 syxz AWARD SW J262 shift + syxz AWARD PW j332 TTPTHA AWKWARD j322 awkward AMI BIOS Backdoor Passwords: AMI BIOS PASSWORD HEWITT RAND AMI?SW AMI_SW LKWPETER CONDO Phoenix BIOS Backdoor Passwords: phoenix PHOENIX CMOS BIOS Misc. Common Passwords ALFAROME BIOSTAR biostar biosstar CMOS cmos LKWPETER lkwpeter setup SETUP Syxz Wodj Other BIOS Passwords by Manufacturer Manufacturer Password VOBIS & IBM merlin Dell Dell Biostar Biostar Compaq Compaq Enox xo11nE Epox central Freetech Posterie IWill iwill Jetway spooml Packard Bell bell9 QDI QDI Siemens SKY_FOX TMC BIGO Toshiba Toshiba Toshiba BIOS Most Toshiba laptops and some desktop systems will bypass the BIOS password if the left shift key is held down during boot IBM Aptiva BIOS Press both mouse buttons repeatedly during the boot
Demarrage d’un noyau Xen en réseau via PXE
Un article précédent décrit brièvement comment booter une machine sur le réseau en utilisant PXE. Je me suis donc amusé à booter, cette fois ci, non pas un noyau classique mais un moyau Xen. De prime abord cela pourrait sembler être semblable mais il n’en est rien !
L’utilisation de Xen demande de booter un premier noyau “gen.gz” qui va lui-même, par la suite, booter un second noyau compilé spécifiquement. L’utilisation de pxelinux.0 comme bootloader n’est donc plus possible dans un tel cas. Voici donc la procédure à suivre :
- Il faut tout d’abord créer un noyau compatible Xen et acceptant un boot depuis le reseau, pour celà, je vous renvoie à l’article précédent qui indiques les options que celui-ci doit supporter. Ce noyau devra en outre être compilé pour une cible de type XEN.
- Il faut ensuite récupérer un bootloader adapté, celui-ci se trouve dans le package Syslinux (il est possible qu’il ne soit pas livré avec votre distribution, il suffit alors de le télécharger sur le net). Le bootloader en question est mboot.c32 ; il se trouve dans syslinux/com32/modules. Ce fichier sera placé dans le répertoire tftpboot sur serveur.
- La configuration de PXE se fait dans le fichier dhcp.conf, exactement comme nous l’avions fait précédemment. Rien ne change.
- Dans le fichier de démarrage (tftpboot/pxelinux.cfg/mac-adress ) nous allons trouver la configuration suivantes :
default linux label linux kernel mboot.c32 append xen.gz dom0_mem=192000 --- vmlinuz_xen root=/dev/nfs devfs=mount ip=::::::dhcp nfsroot=10.0.0.20:/share/homeXen initrd=initrd_xen prompt 1 timeout 10
- Le noyau qui sera booté en premier est le fameux mboot.c32
- Celui-ci va lancer la couche basse de XEN (xen.gz) qui est à récupérer dans le package de XEN
- Le premier noyau va être configuré avec 192Mo de mémoire
- Il va ensuite lancer le noyau linux compilé pour XEN : vmliuz_xen
- Le boot se fera depuis le réseau, la configuration etant obtenue par dhcp
- Le noyau ainsi démarré va encore poser un problème : lorsque XEN demarre en mode bridge, il tombe l’interface réseau, ce qui bien sure lors d’un boot NFS plante la suite du démarrage. Une des solution est l’utilisation du mode rootage plutot que bridge. Il faut modifier le fichier /etc/xen/xend-config.sxp :
- Mettre en commentaire les deux lignes de confugration du bridge :(network-script network-bridge) et (vif-script vif-bridge)
- Décommenter les lignes du mode routage : (network-script network-route) (vif-script vif-route)
Pour ceux qui comme moi tiendraient vraiment à utiliser une configuration de type bridge, je n’ai rien trouvé de mieux que d’utiliser une seconde carte réseau sur la machine …
Utilisation d’un fichier comme SWAP avec Linux
Sur un pc sans disque (mais aussi parfois sur une machine virtuelle), il n’est par définition pas possible de créer une partition dédiée au swap, dans ce cas, il est possible d’utiliser un fichier en temps que swap.
La création consiste en les étapes suivantes :
- Créer un fichier de swap : dd if=/dev/zero of=/swapfile bs=1024 count=xxx avec xxx = taille en Ko du swap
- Créer en temps que swap : mkswap /swapfile
- Il faut ensuite associer ce fichier à un périphérique : losetup /dev/loop0 /swapfile
- Puis activer ce swap : swapon /dev/loop0
Créer un disquette de boot permettant de faire un demarrage PXE sans ROM réseau
Dans un précédent article, j’ai indiqué comment booter depuis un PC diskless en utilisant la fonction boot-pxe de la carte réseau. Toutefois sur un pc un peu ancien il est rare de trouver une carte supprotant le pxe… Dans ce cas, il y a une solution simple : créer une disquette de boot minimaliste avec les driver PXE pour ensuite demarrer sur le réseau. (je retrouve ainsi enfin une utilité à mon lecteur de disquette !! génial !)
La démarche est assez simple d’autant que tout est automatiser : il faut créer une disquette de boot sur le site suivant : http://rom-o-matic.net/5.4.2/
- Choisir la carte réseau dans la liste
- Choisir le format de sortie : Floppy bootable ROM image (.zdsk)
- Choisir customize ROM Option et choisir :
- USE_STATIC_BOOT_INFO en indiquant toute la configuration (je ne sais pour quelle raison, les infos dhcp ne sont pas reçu sur le client dans ma config)
- PXELOADER_KEEP_ALL
- Sélectionner le bouton “Get ROM”
- ecrire le fichier sur une disquette : cat eb-5.4.2-driver.zdsk > /dev/fd0
- configurer le serveur pxe comme indiqué dans le précédent article
- booter !
Et voila … une machine sans disque dur qui boote sur le réseaux avec une carte réseau ne supportant pas PXE ;o)
Intégrer une carte mère de Dell Gx150 dans un PC standard
A destination de ceux qui comme moi souhaiteraient intégrer dans un boitier standard une carte mere de Dell Gx150 … C’est possible …
Tout d’abord il faut faire un peu de bricolage car avec Dell tout est presque standard ! Par exemple le panneau arrière est presque ATX … bref, il faut s’équiper d’une scie à métaux, d’un marteau, d’une perceuse … et c’est possible !
Ensuite l’etape ultime est la connexion des boutons de l’interface sur le connecteur “FrontPanel” non documenté … dont je vous livre ici les principaux secrets !
A o o o C D F o ... H o o B o o o o o E G o ... o o o
Le repere est la patte manquante entre D et F, les o indiquent les pattes dont je n’ai pas evalué l’usage. Pour le reste :
- A & B : Speaker resp. – et +
- C & D : Power Led resp. – et +
- F & G : Power Switch
- E & H : HDD Led resp. – et +
Bon bricolage !
Configuration mémoire d’une JVM (suite)
Suite a mon article sur un peu d’optimisation mémoire en Java, J’ai reçu une question interressante ; ma réponse me semble pouvoir être partagée en complément :
Je me demande si il existe une formule permettant de déterminer quelle taille maximum peut on allouer a l option -Xmx en fonction de la ram, de la taille des fichiers d’échange, …. Si tu as des infos …
En première approche, sans contexte, il ne me semble pas possible de répondre à cette question sous la forme d’une formule toutefois, voici les principaux éléments auxquels je pense :
Je ne pense pas qu’il y ait de formule magique … Java va utiliser la mémoire tant qu’il y en a, y compris s’il n’en a plus besoin en ne passant plus le GC, en tout cas jusqu’a atteindre Xmx – Xms … bref, ca va swapper et ce n’est pas forcement conseillé !
Tout dépend de ce que tu souhaites : éviter un crash de la JVM a tout prix ou preserver les performances. Si l’appli demande plus de mémoire qu’il n’y en a sur le système, je n’ai qu’un conseil : acheter de la RAM.
Pour mon usage personnel, je concidèrerai le paramétrage suivant (à noter qu’il ne s’agit que d’une borne max) :
Xmx – Xms < RAM_totale – RAM_utilisée_hors_JVM – marge (RAM_totale*0.1)
Ce qui peut être proche de :
Xmx < Xms + 0.9*RAM_libre
Ce qui ne répond qu’à moitier à la question puisqu’il reste à déterminer Xms.
Là, tout dépend de l’application ; plus Xms est grand plus tu augmentes Xmx dans mon équation et moins tu risques de saturer la mémoire de la JVM (si c’est le pbm) mais plus tu risques de swapper.
Par ailleurs, attention, si Xmx > RAM_totale tu pénalises les applications autres que Java car Java va utiliser toute la mémoire qu’on lui donne. Dans ce cas tu peux avoir des impacts très forts sur les applications telles que la base de donnée par exemple et pénaliser ton application… d’où bien prendre en compte la RAM_utilisée_hors_JVM et une marge pour ces applications.
Le risque en saturant la RAM est que lors d’un pic d’utilisation tu auras à la fois une JVM surchargée et des applications tierses sans mémoire = écroulement du serveur…(c’est peut-être une banalité ce que je dis là mais rien ne dis qu’il n’y aura pas de la perte de mémoire dans la JVM alors que les autres appli seront dejà HS)
Sauf contexte particulier, la RAM ne coute pas chere et les performances disques sont beaucoup trop médiocres … donc achetez de la RAM !
A l’opposé, si je peux aussi proposer un conseil à ceux qui ne cessent d’acheter de la RAM et voient toujours leur serveur saturés… jouez un peu sur les paramétrages, Java, mais d’autres appli comme Oracle commencent par se mettre la RAM sous le coude ou ne la libère que quand il n’y en a plus… bref, plus on en met et plus ca en consomme. De belles économies en perspective et un meilleurs partages des ressources pour les applications plus eco-citoyennes en quelque sorte.
Par aileurs, cette analyse ne tiens pas vraiment compte de la façon dont le système gère son cache. Hors pour ce qui est de linux, la mise en swap se fait par page mémoire (de l’ordre de 4K) On peut donc imaginer qu’une partie de la mémoire de la JVM, les objets non référencés mais pas encore libérés, va rapidement être mise en swap ; si necessaire et sans domage pour les performances. Alors, pourquoi ne pas libérer la mémoire de la JVM plus tot ? (on en revient à la formule initiale !). Autre impact : le risque de swapper des objets toujours référencés mais peu utilisés ce qui augmentera les temps de réponse sur ces objets. Je reste donc sur ma formule précédente.
Pour finir par un lien avec l’article précédent, Xms ne doit pas être trop grand sans quoi le garbage collector ne passera que rarement et la consommation mémoire “de croisière” pourrait être plus forte que nécessaire ; toutefois c’est à moindre mal.