[SOS] exécutable > 1.44Mo suite

Konstantin Tcholokachvili tcholoka at gmail.com
Ven 10 Juil 11:39:36 CEST 2009


Le 10/07/09, gargamel79<gargamel79 at orange.fr> a écrit :
> Merci  à Konstantin Tcholokachili . Je n'espérais  pas un réponse  aussi
> rapide  en cette,
>  période  (surtout  avec les  10e  RMLL ...).  Il  me reste cependant  2
> questions  :

De rien.

> 1)  la phrase  " First you  need to build a bootable foppy  image  which
> holds  ... and your  kernel..."
>   semble me ramener au point de départ, puisque mon kernel dépasse les
> 1.44Mo ...
> 2) Je développe  sur une station  Debian  /  Sarge qui  ne possède pas
> d'accès  internet  et je ne vois
>  pas de paquet correspondant à mkisofs dans la distribution. J'accède à
> internet sur une station Ubuntu
> mais là non plus, je ne vois  pas de paquet  pour  mkisofs  (qui  ne
> sera d'ailleurs pas forcément portable
> sous Debian...).

Il ne faut pas s'inquieté. Ce n'est qu'une façon parmi d'autres de
créée une image ISO.
Moi j'utilise la technique décrite pour Windows (qui marche très bien
Linux d'ailleurs, je sais pas pourquoi ils ont classifié ainsi).
J'ai déjà crée des LiveCD Linux, et une image d'un autre OS qui
dépasse allégrement 1.44Mo sans passé par la création de floppy.img
(la création d'ISO de certains OS ont besoin de floppy.img, comme BeOS
il me semble).

Voici l'extrait de mon Makefile:

--------------------------------------------------
KERNEL   = versatile.elf
MULTIBOOT_IMAGE = versatile.iso

# Main target
all: $(MULTIBOOT_IMAGE)

$(MULTIBOOT_IMAGE): $(KERNEL)
	mv $(KERNEL) grub_image_build/
	mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
	-boot-load-size 4 -boot-info-table -o $(MULTIBOOT_IMAGE) grub_image_build/

$(KERNEL): $(OBJECTS)
	$(LD) $(LDFLAGS) -T ./linker_script.lds -o $@ $^
------------------------------------------------------	
	
	
Le répértoire grub_image_build/ contient les fichiers qui sont fournis par Grub.

bash-3.1# ls grub_image_build/
boot  boot.catalog

bash-3.1# ls grub_image_build/boot/grub/
grub.conf  stage2_eltorito
bash-3.1#


grub.conf est le fichier à éditer pour définir les OS à booter.
Dans le cas d'image ISO on peut spécifier que l'image est sur un CD-ROM
(sans pour autant que ça soit vrai si on utilise par exemple quemu pour émuler).
Par contre si tu grave le CD et que Grub est installé sur ton système
le système va démarrer comme un LiveCD.

Voici l'extrait de ce fameux fichier, j'ai rajouté des explications
après le signe # :
------------------------------------------------
timeout 3 # timeout en secondes pour choisir le système à booter,
#modifiable selon son gré

title Versatile # Le nom d'OS qui apparaîtra pour faire un choix
root (cd) # on spécifie que les données sont sur un CD (fonctionne
aussi pour l'émulation)
kernel /versatile.elf root=hdc ro=1 -- # versatile.elf est ce qu'il
faut booter    #lorsqu'on
#choisi Versatile (versatile.elf a été copié à la racine du
grub_image_build, #c'est pour ça que Grub le "verra" à la racine)
#hdc désigne le lecteur de CD.
---------------------------------------------
Les fichiers boot.catalog, grub.conf et stage2_eltorito sont présents
sur le système
si Grub est installé, c'est de la qu'on obtient ces fichiers.

En fait l'outils mkisofs est livré avec le paquet cdrtools, donc c'est
cdrtools qu'il faudra
rechercher.

Si tu passes ces étapes avec succès le noyau démarrera sans problème,
quelque soit son taille.

> L'idée de créer une image en RAM est certainement la solution, mais
> comment faire ?

En théorie, il faut empêcher que les pages présentes en RAM soit
écrites sur le disque (swapping).
Ce qui fait que ce qui est présent en mémoire reste en RAM, c'est ce
qui est expliqué dans l'article portant sur le VFS, je crois. Dans
cette article, il y a aussi l'implémentation d'un système de fichiers
fonctionnant qu'en RAM (virtfs, je crois).

Sinon, il aussi un article qui explique une implémentation possible
avec un système d'initrd
(http://www.jamesmolloy.co.uk/tutorial_html/8.-The%20VFS%20and%20the%20initrd.html).
Il n'a pas implémenté la gestion des répértoires, seuls les fichiers
peuvent être "injéctés" sur le système.

Sinon, il y en a aussi dans le noyau Linux (TMPFS, je crois).

Pour l'instant, c'est tout ce que je peux dire à propos des systèmes
de fichiers en RAM.

Bonne chance!


> Merci pour vos suggestions.
>     Alain Leaper
>
> --
> Membre de l'April - « promouvoir et défendre le logiciel libre » -
> http://www.april.org
>
> Rejoignez maintenant plus de 5000 (*) personnes, associations, entreprises
> et
> collectivités qui soutiennent notre action
>   *: MAJ le 17/06/09  : 5000 depuis le 3/06/09 !!
>
>
> _______________________________________________
> Sos mailing list
> Sos at the-doors.enix.org
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
>


Plus d'informations sur la liste de diffusion Sos