GRUB sur clé USB - ajout de systèmes d'exploitation

9

Quelques antécédents:

  • Venant d'un arrière-plan largement Windows (bien que je connaisse Ubuntu, etc.) et utilisant une machine Windows 7 pour effectuer cette tâche
  • Installation réussie de GRUB sur le MBR du lecteur USB (lecteur FAT32 8 Go):
  • Avoir créé une structure de base sur le lecteur: / boot / grub, / boot / img, / boot / kernel

Question:

J'ai quelques questions de base pour les débutants, mais celles auxquelles j'ai eu du mal à trouver des réponses via Google / StackExchange, etc.

  • Je comprends que le dossier / boot / img / [SystemName] stockera l'image pour un système spécifique, qui peut utiliser différentes (ou les mêmes) versions de noyaux linux stockées dans le répertoire / boot / kernel (du moins, c'est comme ça que je j'aimerais l'installer)
  • Cependant, la plupart de ces systèmes ont juste un noyau dans leurs répertoires appelé "linux" (sans indiquer la version). Je peux rechercher quel noyau tous ces utilisent, mais quel est le meilleur endroit pour que les noyaux eux-mêmes soient copiés dans / boot / kernel?
  • Après avoir obtenu les noyaux, j'imagine que le reste consiste principalement à copier le périphérique dans / boot / img / et à créer l'entrée appropriée dans menu.lst, correct? Je peux le faire système par système une fois que je peux me référer aux noyaux.

But général:

J'essaie de créer un lecteur flash USB de 8 Go qui me permettra de démarrer plusieurs systèmes d'exploitation à partir d'un menu de démarrage GRUB. Pour ajouter ou soustraire des systèmes d'exploitation, je voudrais seulement avoir à copier les fichiers appropriés dans un dossier / boot / img / [SystemName] et / boot / kernel selon le cas, puis modifier le fichier menu.lst. Donc, cette première étape consiste à trouver les noyaux que beaucoup de ces systèmes d'exploitation partagent, car j'espère réduire la duplication.

SeanKilleen
la source
Et qu'est-ce que vous voulez avoir après avoir ajouté le noyau? Voulez-vous un système d'exploitation fonctionnel à partir duquel vous pouvez démarrer?
phunehehe
@phunehehe, merci! J'ai mis à jour le message pour inclure mon objectif général.
SeanKilleen
Il semble que vous essayiez de vider des images LiveCD pour diverses distributions sur un lecteur USB, puis de pouvoir les démarrer. Est-ce correct?
Wodin
@Wodin: Essentiellement, oui. LiveCD (mais avec une capacité d'écriture car il sera sur un support inscriptible), avec un chargeur de démarrage unifié pour toutes les distributions / outils que je veux.
SeanKilleen

Réponses:

4

Ce que vous essayez de réaliser, c'est d'étirer la technologie de démarrage :) Cependant, je pense que c'est possible, bien que je ne sois pas suffisamment informé pour vous donner un aperçu complet.

Tout d'abord, comme dit précédemment, les distributions ont des exigences très différentes. Deuxièmement, la bonne chose d'autre part, vous pouvez également trouver des distributions qui nécessitent des exigences minimales.

Je recommanderais d'utiliser GRUB4DOS comme chargeur de démarrage. Voir ce lien pour l'utiliser avec USB (car il a la commande find --set root -, qui est importante si vous avez un appareil mobile comme USB).

Ensuite, vous devez décider du nombre de partitions que vous utiliserez. "L'installation complète" standard est toujours dans une seule partition. Donc, si vous avez une clé USB de 8 Go et prenez une partition de 4 Go (ce qui permet une installation minimale), vous seriez limité à 2 «installations complètes» différentes des principales distributions comme Debian ou Fedora.

Cependant, il existe quelques petites distributions Linux spécialisées. Par exemple, "Puppy Linux" est très petit et possède un mode spécial "Frugal Installation". Il existe en plusieurs versions (par exemple, il existe MacPup avec des tentatives d'implémentation d'un Apple comme Desktop, ou Fatdog64 qui est un Linux 64 bits).

Dans ce mode "Frugal installation", il utilise exactement 1 répertoire et peut être installé en parallèle sur un Linux ou Windows existant sur le disque dur (ou USB). Je suis sûr qu'il existe d'autres distributions qui prennent en charge des modes similaires.

Étant donné que Puppy Linux est petit (<150 Mo) et en supposant que vous réservez un petit fichier de sauvegarde pour chaque installation (512 Mo), vous pouvez facilement installer comme 10 systèmes d'exploitation différents sur la clé USB. Il existe des Linux encore plus petits (Slitaz, Tinycore), que vous pourriez utiliser.

Par exemple, j'attache le fichier menu.lst (GRUB4DOS) de mon installation PC actuelle, les 8 premières entrées sont toutes différentes de l'installation de Puppy Linux sur hd0,2 (c'est-à-dire la 3ème partition sur le 1er disque dur), puis il y a un minimum Installation de Debian dans une petite partition supplémentaire ainsi que Windows-XP d'origine.

timeout=10
default=0  

  title Linux Buero (on /dev/sda3)
  root (hd0,2)
  kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
  initrd /puppy431-de/initrd.gz

  title Live CD build (on /dev/sda3)
  root (hd0,2)
  kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
  initrd /puppylivecdbuild/initrd.gz

  title sage developement(on /dev/sda3)
  root (hd0,2)
  kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
  initrd /Sage46dev/initrd.gz

  title sage developement test and fun
  root (hd0,2)
  kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
  initrd /Sage-test/initrd.gz

  title Lupq 511
  find --set-root --ignore-floppies /lupq511/initrd.gz
  kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupq511/initrd.gz 

  title Lupu 520 - New kid on the block
  find --set-root --ignore-floppies /lupu-520/initrd.gz
  kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupu-520/initrd.gz 

  title wary beta (on /dev/sda3)
  root (hd0,2)
  kernel /wary/vmlinuz psubdir=wary ro vga=normal
  initrd /wary/initrd.gz

  title spup (on /dev/sda3)
  root (hd0,2)
  kernel /spup/vmlinuz psubdir=spup ro vga=normal
  initrd /spup/initrd.gz

  title Debian (on /dev/sda2)
  find --set-root --ignore-floppies /initrd.img
  kernel /vmlinuz root=/dev/sda2 ro
  initrd /initrd.img

  title Windows NT/2K/XP\nStart Windows if installed on HDD
  fallback 7
  find --set-root --ignore-floppies /ntldr
  chainloader /ntldr

boot

Le menu.lst sur votre clé USB pourrait ressembler, la commande GRUB4DOS find --set-root --ignore-floppies /lupq511/initrd.gz (recherche ce fichier sur tous les lecteurs) pourrait être très utile si vous utilisez USB, vous n'avez donc pas à utiliser d'entrées fixes pour votre lecteur.

Avec les informations ci-dessus, quelques commentaires sur vos questions originales:

Q: * Je comprends que le dossier / boot / img / [SystemName] stockera l'image pour un système spécifique, qui peut utiliser différentes (ou les mêmes) versions de noyaux Linux stockées dans le répertoire / boot / kernel (au moins, c'est comme ça que j'aimerais le configurer)

R: Je ne sais pas si cela va fonctionner, car la plupart des principales distributions s'attendent à avoir le droit exclusif de leur partition et à installer une structure de répertoires spécifique pour leurs fichiers. À mon avis, il est préférable de respecter la configuration par défaut et de fournir ce que la distribution attend, c'est-à-dire que certains ont besoin d'une partition exclusive, certains seront satisfaits d'un simple répertoire sur une partition partagée. Je ne dis pas qu'il n'est pas possible d'installer plusieurs systèmes d'exploitation sur une partition de manière non par défaut, mais cela demande des problèmes et, à mon avis, n'est pas pratique pour un nouveau venu Linux. Une solution de contournement possible que je mentionne au bas de mon message (installations "Wubi-like").

Q: * Cependant, la plupart de ces systèmes ont juste un noyau dans leurs répertoires appelé "linux" (sans indiquer la version). Je peux rechercher quel noyau ces utilisateurs utilisent tous, mais quel est le meilleur endroit pour obtenir les noyaux eux-mêmes à copier dans / boot / kernel?

R: Je pense que les noyaux devraient aller exactement là où les distributions les ont habituellement. Il n'est pas nécessaire de les stocker dans un dossier séparé / boot / kernel, et je ne recommanderais pas non plus d'essayer de les partager entre les distributions. L'espace de stockage est minimal pour un noyau (comme 2-3 Mo). Il y a vraiment beaucoup de versions et sous-versions et parfois il y a même des correctifs spécifiques appliqués aux noyaux de distributions. Brancher un noyau différent / non testé est une expérience inutile.

Q: * Après avoir récupéré les noyaux, j'imagine que le reste consiste principalement à copier le périphérique dans / boot / img / et à créer l'entrée appropriée dans menu.lst, n'est-ce pas? Je peux le faire système par système une fois que je peux me référer aux noyaux.

R: Comme mentionné précédemment, il vaut mieux créer des partitions séparées pour les distributions qui en ont besoin et mélanger les distributions moins gourmandes dans leurs propres dossiers. Traitez le noyau, l'initrd et le reste de la distribution comme une unité.

Une dernière idée. Si vous ne souhaitez pas utiliser différentes partitions, vous pouvez essayer quelque chose comme des installations "WUBI" pour les distributions exigeant une installation complète sur sa propre partition. Cela signifie que vous créez des fichiers volumineux avec ses propres systèmes de fichiers ext2 / ext3 sur l'USB, puis les montez en tant que «lecteurs» et y installez le système d'exploitation. (Je l'appelle WUBI, car c'est l'application la plus connue).

Ce qui suit devrait être une entrée menu.lst de Grub4dos pour démarrer une "installation Wubi".

# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot

D' ici .

Vous voyez, il y a 2 commandes "set root", la seconde après "root.disk" qui contient Linux, est montée en tant que loop0.

J'espère que je pourrais donner quelques idées, bien que ce ne soit pas une visite complète.

Emil WidmannEmil
la source
Désolé, le mauvais lien vers l'entrée Grub pour Wubi est incorrect (car c'est mon premier message, mon deuxième lien était "protégé contre le spam"). Le lien de droite est: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil
1

Voici deux guides:

Je pense que les deux utilisent des partitions distinctes pour chaque noyau.

Les entrées dans " /boot/grub/menu.lst " sont comme ceci:

title Unity-2010 -- With Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010 changes_dev=LABEL=Unity-2010 acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

title Unity-2010 -- No Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010  acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz
oposit
la source
0

Cela dépend vraiment des distributions que vous y mettez. Certains d'entre eux font des choses désagréables dans les initramfs, donc cela devient difficile. Certaines distributions en direct recherchent une étiquette, d'autres recherchent uuid. Vous ne pouvez pas fournir cela.

La solution n'est pas facile, vous devez créer de nouveaux ramdisks personnalisés pour vos distributions en direct.

j'espère que je ne me suis pas trompé: D

amiral0
la source
0

Vous aurez certainement besoin d'une sorte d'espace utilisateur pour accompagner chacun de ces noyaux. (Programmes, configuration, travaux.) Traditionnellement, vous utilisiez au moins une partition pour chaque système d'exploitation séparé, et la partition GRUB elle-même était montée en tant que / boot (vous n'auriez donc pas, en fait, de démarrage en tant que sous-répertoire de ce partition; ce serait le répertoire racine, avec grub / comme sous-répertoire.)

SamB
la source