Actions











Démarrer Linux avec un disque USB

Écrit le 07/10/2004 @ 15:25 par Alexandre

Informatique - LinuxBoot Linux with USB Drive

Je fais un blog plus officiel puisque Menzonet, c'est gros! En effet, celà fait quelques fois que je fais des recherches sur Google et que je trouve Menzonet en référence. (Une version anglaise apparaîtra sous peu en commentaire dans compter une technique pour ne démarrer que du disque USB)

Alors ce blog rend la démarche officielle pour bâtir un kernel Linux qui peut démarrer à partir d'un disque USB. Pour cette première approche, je présente un type de configuration moitié disque interne moitié disque USb externe.Le premier défi est de trouver une version de Linux qui peut facilement prendre en charge les disques externes USB pour une première installation. Je sais qu'au compte RedHat/Fedora et SuSE permettent de le faire. Cependant, pour certaines versions, il est nécessaire de choisir le mode "Expert" afin d'avoir les modules nécessaires à l'initialisation des périphériques USB et donc du disque USB. Pour de plus amples informations, cherchez dans la documentation d'installation de la version qui vous intéresse. S'il n'y a aucune mention, ça ne veut pas dire que vous ne pouvez le faire, mais vous devrez trouver de l'aide ailleurs (Google étant une excellente source Smile). Vous devrez faire une installation de type /boot sur votre disque interne et le reste sur votre disque USB. Pourquoi /boot sur votre disque interne, simplement que sans ça, vous ne pourrez pas modifier le kernel par défaut qui vous permettra ensuite de compiler votre nouveau kernel. Je vais mettre en commentaire dans ce blog une façon pour ne pas avoir à faire ça... si j'y parviens, je ne l'ai pas réussi encore. Embarrassed

Ensuite, lorsque votre installation sera terminée, vous devrez redémarrer. Cependant, puisqu'aucune distribution jusqu'à maintenant ne compile les pilotes USB et SCSI par défaut dans le kernel, le disque USB ne sera pas trouvé et vous ne pourrez pas démarrer sur votre disque. En attendant des distributions nous offrant cette possibilité, nous devrons faire un certain travail manuel en modifiant le fichier initrd, c'est-à-dire le fichier contenant tout le nécessaire pour créer un disque temporaire dans la mémoire vive (init Ram Disk), pour y insérer les modules de démarrage USB et SCSI. Je vous réfère à la technique suivante "Modifier initrd pour utiliser l'USB". Une fois celà fait, vous pourrez enfin démarrer sur votre disque USB.

Maintenant, passons à l'installation d'un nouveau kernel. Sachez encore que tant qu'aucune distribution n'insèrera le nécessaire SCSI et USB directement dans le kernel plutôt qu'en module, il ne sera pas possible de télécharger un nouveau kernel précompilé. Il faut donc compiler notre propre kernel. Si vous ne savez pas comment faire, gardez votre kernel présent ou cherchez sur internet pour vous donner un coup de pouce. Je vous suggère les liens suivants : blog de Menzonet, !(liens pour compilation)! Cependant, ce dont je dois vous informer, c'est qu'il est primordial que vous incluiez certains pilotes dans le kernel plutôt qu'en modules. Si vous les mettez en modules, votre disque dur USB sera reconnu, mais aucune association ne pourra pour être faite. Ces pilotes sont !(liste des pilotes)!. Je n'ai pas testé avec les pilotes USB en modules, mais je sais que c'est nécessaire pour les pilotes SCSI. J'en déduis que ceux pour l'USB aussi puisque l'on suppose que le kernel doit être fonctionnel en soit avant de pouvoir reconnaître les partitions et sans ces pilotes, on ne peut pas accéder au disque et donc pas aux modules USB.

Voilà, vous avez votre nouveau kernel qui peut démarrer avec un disque USB.

Selon les informations que j'ai pu trouver sur le net, en n'utilisant pas de partition sur le disque interne et en suivant les indications précédantes (soit par le initrd ou le kernel), vous devriez être en mesure de tout installer sur le disque USB (ensuite, à vous de décider si vous voulez installer Grub/Lilo sur votre disque externe ou USB...)

Dernière modification le 14/10/2004 @ 11:38 par Alexandre

Commentaire par Alexandre  Score: 2
Écrit le: 08/10/2004 @ 10:09

English Traduction

So, this comment is to describ an official way to compile a Linux kernel that can boot a USB drive. On a first try, I'll use a half internal drive and half USB drive configuration. The first challenge is to find a distribution that can easily detect and use an external USB drive on the first installation. I know that RedHat/Fedora and SuSE can do it. Still, for some distributions, you'll have to use "Expert" mode to initiate the USB and SCSI drivers, since USB drives use some SCSI fonctions. For more information, search in the documentation of the distribution you're interested in. If there is no mention about it, it doesn't mean that you can't do it but you'll have to find some help somewhere else (Google being an excellent source Smile). You'll have to do an installation so your /boot should be on your internal drive and the other partitions on the USB drive. Why /boot has to be on your internal drive? Simply because you won't be able to modify your default kernel to boot your system and to compile your new kernel. I'll put a way to do an installation only on your USB drive in an other comment... if I can manage a way to do it myself, since I didn't do it yet. Embarrassed

When your installation will be finished, you'll have to reboot. But since no distribution up to now compile USB and SCSI drivers in the kernel by default, your USB drive wont be found and you wont be able to boot on it. While we wait for some distribution that will offer us this option, we'll have to do some manual work by modifying the initrd file, that is the file containing everything needed to make a temporary RAM disk (init Ram Disk), to put in it the USB and SCSI modules. Go see this link to be able to do it "Modify your initrd to use USB". When you'll have done with it, you should be able to boot on your USB drive.

Now, let's install a new kernel. Know that as long as there will be no distribution with SCSI and USB drivers directly in the kernel isntead of in module, you wont be able to download a new precompiled kernel. You'll have to compile it by yourself. If you don't know how to do it, keep your working kernel or search on the net to know how to do it. I suggest you some links : blog de Menzonet. But I must inform you that you have to (YOU MUST) include some drivers in the kernel and not as modules. If you put them as modules, your USB drive will be recognized, but no association will be possible and you won't be able to boot on it. These drivers are !(liste des pilotes)!. I didn't tried USB drivers as modules, but I know that it is needed for the SCSI drivers to be in the kernel. I suppose that USB drivers should be in the kernel too because the kernel must be functional in standalone before being able to recognize the partitions and without these drivers, we can't access to the USB drive and we can't load the modules.

That's it, you have a new kernel that can boot your USB drive.

From the information that I was able to find on the net, if you don't use an external drive for your /boot and by following the preceding indications (initrd or kernel), you SHOULD be able to install everything on your USB drive and boot on it (then, up to you to install Grub/Lilo on your internal or external drive... But on your USB drive, you'll need a BIOS that can boot on USB drive)
Dernière modification le 14/10/2004 @ 11:49

Commentaire par Alexandre  Score: 2
Écrit le: 03/11/2004 @ 20:59

Il semble que le kernel 2.6.9 me donne du fil à retordre. Avec une configuration très semblable à celle du 2.6.8.1, je n'arrive pas à faire en sorte que les modules soient loadés suffisamment rapidement pour que le disque USB soit reconnu... Je vais trouver. D'après mes premières sources, ça pourrait avoir un lien avec un option introduit dans le kernel 2.6.9 qui se trouve sous "bloc devices" ->"low usb devices" : il faudrait le désactiver... Je vais l'essayer. Wink
Dernière modification le 03/11/2004 @ 21:05

Commentaire par Alexandre  Score: 2
Écrit le: 25/03/2005 @ 02:13

Pour la suite des découvertes avec les kernels plus récents que 2.6.8, voyez cet autre blog plus récent


Tous les blogs
<< .NET under Linux | Retour aux blogs | Trou de sécurité dans ASP.Net >>
Blogs de la même catégorie
<< RedHat achète Netscape Enterprise Server et le rend open-source | Redhat Up2Date plante? >>