web-dev-qa-db-fra.com

Comment Linux / xBSD a-t-il démarré avant GRUB?

Selon Wikipedia , GRUB est sorti en 1995. À ce moment-là, Linux et xBSD existaient depuis plusieurs années. Je sais que les premières versions d'Unix étaient liées au matériel dans les années 70 et Années 80, mais Linux et xBSD étaient libres de distribuer et d'installer. Ce qui pose la question de savoir comment démarrer Linux à l'époque? Les distributions étaient-elles livrées avec leurs propres implémentations de chargeurs de démarrage?

23

La première distribution Linux que j'ai utilisée dans les années 90 (Slackware 3.0 IIRC) utilisé LILO comme chargeur de démarrage. Et de nombreuses distributions ont utilisé LILO pendant des années même lorsque GRUB devenait le chargeur de démarrage "par défaut".

De plus, dans les premières années de Linux, il était courant de démarrer Linux à partir d'un autre système d'exploitation (c'est-à-dire DOS ou Windows) au lieu de s'appuyer sur un chargeur de démarrage/double démarrage. Par exemple, il y avait loadlin .

N'oubliez pas Syslinux , qui est un chargeur de démarrage plus simple souvent utilisé pour les distributions d'installation/récupération USB auto-amorçables. Ou Isolinux (du même projet) utilisé par de nombreuses distributions "Live".

Gardez à l'esprit qu'aujourd'hui GRUB peut être utilisé pour charger de nombreux systèmes d'exploitation, tandis que LILO était plus limité et ciblait spécifiquement Linux (c.-à-d. LInux LOader), avec une certaine prise en charge du double démarrage vers Windows .
GRUB est très utile pour le démarrage double/multiple en raison de ses nombreuses options configurables, de ses capacités de script, etc ...
Si vous voulez juste un seul OS sur votre machine, "n'importe" (c'est-à-dire le chargeur de démarrage par défaut pour votre distribution Linux/BSD) devrait suffire.

51
Mr Shunz

LILO était la norme de facto pour démarrer Linux sur PC avant Grub, à un stade très précoce (MCC, l'une des premières distributions Linux, l'a utilisée) . Divers autres chargeurs de démarrage ont été utilisés simultanément. Loadlin était assez courant; il a démarré Linux à partir de DOS, et a même été utilisé dans certaines configurations avec umsdos pour héberger un environnement Linux dans un système de fichiers DOS ... Une autre configuration courante n'impliquait pas de chargeur de démarrage à tous: le noyau pouvait démarrer lui-même à partir d'une disquette, et la plupart des utilisateurs de Linux conservaient une bonne paire de disquettes "de démarrage et racine", l'une contenant le noyau, l'autre un système de fichiers racine de base à des fins de sauvetage.

Il y avait plusieurs façons d'utiliser les chargeurs de démarrage d'autres systèmes d'exploitation pour démarrer Linux également; par exemple, le gestionnaire de démarrage OS/2 ou NTLDR de Windows NT.

D'autres systèmes avaient leurs propres chargeurs de démarrage:

  • SILO on SPARC (postes de travail Sun et autres);
  • PALO sur PA-RISC (stations de travail HP);
  • YaBoot et Quik sur PowerPC;
  • aBoot et MILO sur Alpha ...

Même de nos jours, Grub n'est pas le seul chargeur de démarrage que vous verrez. Bien que le démarrage du noyau directement à partir d'une disquette ne soit plus très utile (je n'ai pas vérifié s'il est toujours possible, en supposant que vous pouvez créer un noyau suffisamment petit pour tenir sur une disquette), il peut démarrer directement à partir d'EFI (qui est en fait son propre petit système d'exploitation conçu pour charger d'autres systèmes d'exploitation, tout comme Grub). Sur de nombreux petits systèmes (systèmes embarqués, ordinateurs à carte unique ...), vous trouverez -Boot . (Et il y a aussi ne couche EFI pour U-Boot .)

29
Stephen Kitt

Jusqu'au milieu des noyaux 2.6, le noyau x86 était directement amorçable s'il était copié sur une disquette (comme s'il s'agissait d'une image disque).

C'était, en fait, la façon originale de démarrer Linux.

Si vous regardez l'en-tête d'un noyau x86 aujourd'hui, vous voyez un message d'erreur indiquant que le démarrage à partir de disquettes de ce type ne fonctionne plus.

12
Joshua

J'ai commencé avec Linux à la fin des années 90 et comme mentionné, lilo était la valeur par défaut. Si vous vouliez effectuer un double amorçage avec un système DOS, vous pouvez effectuer un amorçage nu sans charger des éléments dans HIMEM ou charger des pilotes de CD, etc. et utiliser loadlin. Pour le double démarrage de Win95, vous pouvez d'abord rendre le lecteur amorçable avec DOS, puis installer '95, et le chargeur de démarrage de '95 vous permettra de démarrer le noyau DOS, puis vous pourrez utiliser loadlin.

Pour un double démarrage avec NT4, l'astuce consistait à écrire LILO dans le / partition, puis supprimez les 512 premiers octets à l'aide de dd (dd if=/dev/sda2 of=/path/to/file bs=512 count=1) et placez le fichier résultant où ntldr pourrait le voir et vous pourriez l'utiliser à partir du chargeur de démarrage de WinNT. Le problème avec cela est que lorsque vous avez mis à niveau votre noyau, vous devez vous rappeler de répéter toutes les étapes avant de redémarrer, sinon vous auriez des problèmes pour revenir dans le système Linux. Le même processus a fonctionné avec Win2k.

Avec LILO, chaque fois que le noyau était mis à jour, vous devez vous rappeler de mettre à jour LILO.

Avec loadlin chaque fois que le noyau est mis à jour, vous devez vous rappeler de copier le noyau vers la partition DOS.

Une autre option suggérée dans d'autres réponses était d'écrire le noyau directement sur une disquette en utilisant dd if=/path/to/vmlinuz of=/dev/fd0 MAIS le périphérique racine devait être défini correctement dans le noyau, soit au moment de la compilation, soit en utilisant l'utilitaire rdev.

Lorsque GRUB est apparu, il y avait beaucoup de réjouissance car vous n'aviez plus à vous rappeler de mettre à jour LILO, ou de mettre à jour LILO et de retirer les informations de démarrage, etc. oublié de mettre à jour les informations du chargeur de démarrage ...

5
ivanivan

Et avant LILO et GRUB, vous deviez le lancer à partir de la ligne de commande avec une sorte d'utilitaire de chargeur de démarrage personnalisé.

Par exemple, l'Amiga avait Linux disponible. Vous avez dû utiliser un utilitaire de ligne de commande appelé amiboot pour charger l'ELF du noyau en mémoire et y accéder.

Voici une vidéo d'une personne utilisant amiboot depuis la ligne de commande pour lancer linux sur un Amiga 6 . Son script StartInstall appelle l'exécutable amiboot. Vous pouvez regarder amiboot configurer la mémoire, déterminer l'adresse de chargement souhaitée et transmettre les paramètres au noyau vers 0:55.

0
BoredBsee