Forum Linux.général Cramfs

Posté par  .
Étiquettes : aucune
0
25
mai
2006
Bonjour, je viens de finir ma partition pour mon système embarqué (elle fait 49 Mo). Maintenant j'aimerais monter en Cramfs tous les repertoires accessibles en lecture seul (comme bin,usr,sbin,..) et d'autres en lecture/écriture mais en mémoire vive (comme /home,/etc,...)

Je ne sais pas comment faire cela.. J'ai deja essayé de tout mettre en cramfs, mon image fait 23Mo ùmais qd je la passe à inird de grub , il me met image too big...

Merci pour votre aide!!

Nicolas.
  • # cramfs ?

    Posté par  . Évalué à 2.

    Faut croire qu'il y a une limite, et si on peut l'augmenter, je ne sais pas comment on fait.

    Si j'ai bien compris ce que tu veux faire, ton système charge toute ta partition en mémoire vive : tu en as assez ?
    Je demande car tu peux aussi utiliser un système à la KNOPPIX, cad avec un système de fichiers compressé en lecture seule. Ex. de systèmes de fichiers : cloop, squashfs, isofs (avec compression transparente)

    Si tes besoins le permettent, il se peut que tu puisses te passer d'une image de démarrage (solution non testée) :
    * intégrer au noyau tous les pilotes nécessaires pour qu'il puisse monter / sans module et passer la bonne valeur pour l'option 'root'
    * pas d'option initrd
    * créer un script /sbin/preinit (exécutable) du genre :
    #! /bin/sh
    # rw.tar.bz2 contient etc, home, etc.
    # ne pas oublier de créer le point de montage ( /mnt/ramdisk )
    # et les liens symboliques suivants :
    # /etc -> /mnt/ramdisk/etc
    # /home -> /mnt/ramdisk/home
    # ...
    (export PATH=/usr/sbin:/sbin:/usr/bin:/bin
    mount -t tmpfs -o mode=0755 tmpfs /mnt/ramdisk
    cd /mnt/ramdisk
    tar -xjf /rw.tar.bz2)
    exec /sbin/init -i
    * ajouter l'option init=/sbin/preinit

    Avec une image de démarrage, même très petite, tu as beaucoup plus de libertés pour préparer /. Et puisque c'est pour de l'embarqué, il reste préférable d'intégrer au noyau tous les pilotes nécessaires pour monter /.
    Avant de développer cette possibilité, ce serait mieux que tu décrives plus précisement ce que tu veux.

    Au fait, tu pars de quelle distribution ? Quel quantité de RAM ? Quoi comme unité de stockage ?
    • [^] # Re: cramfs ?

      Posté par  . Évalué à 1.

      J'ai 64 Mo de disque (Flash donc voila pourquoi systeme en lecture seule), 128 de Ram et un processeur VIA C3 800. J'aimerais charger en ram mon application : Firefox pour une plus grande rapidité. Ensuite je voudrais aussii monter en RAM mes fichiers accessibles en lecture/écriture (/etc, /home,..).

      De plus je me passe deja d'une image de mon système de fichier au démarrage. Je passe root=maPartition au grub et ca marche nickel.. J'ai aussi intégrer tous les pilotes pour la gestion de ma carte (+ système de fichier en ROM et ext2)

      Ma distribution est une distrib que je crée de toutes pièces ( noyau sur kernel.org, commandes de bases : busybox, etc..)

      De plus je n'ai pas l'executable tar d'installer sur ma machine, est ce qu'il est obligatoire ou est ce qu'on peut se passer de lui si tu as une autre solution n'hésite pas...

      Merci d'avance!!

      PS : Les sources de mon système embarqué seront présentes dès la fin du projet sur mon site internet.. Je mettrais un lien dans le forum..

      Nicolas
      • [^] # Re: cramfs ?

        Posté par  . Évalué à 2.

        J'aimerais charger en ram mon application : Firefox pour une plus grande rapidité
        Tu es sûr que c'est plus rapide ou tu espères/crois ?
        J'imagine que Linux garde tout ce qu'il peut en cache donc si tu as assez de RAM, il ne devrait pas y avoir de différence selon que tu copies ou non tout ta partition (à la limite, tu peux forcer une mise en cache au démarrage).
        De plus je n'ai pas l'executable tar d'installer sur ma machine, est ce qu'il est obligatoire ou est ce qu'on peut se passer de lui si tu as une autre solution n'hésite pas...
        (... et bunzip2)
        Bah, c'était pour compresser et gagner de la place. Apparemment, tu en as assez (49Mo sur 64) donc tu peux aussi y aller à coup de 'cp -a'

        Si tu peux te contenter de tout copier sauf certains répertoires (ex: /bin), la solution que j'ai donnée dans mon précédent post doit suffire, quitte à ajouter /usr (pour Firefox) à la liste /etc,/home...

        Pour avoir _toute_ ta partition en RAM, j'aurais dit qu'il faut passer par un image de démarrage (initrd). Mais apparemment, dans ton cas, la méthode suivante devrait fonctionner :
        * intégrer au noyau tous les pilotes nécessaires pour qu'il puisse monter / sans module et passer la bonne valeur pour l'option 'root'
        * pas d'option initrd
        * créer un script /sbin/preinit (exécutable) du genre :
        #! /bin/sh
        # ne pas oublier de créer le point de montage ( /mnt/ramdisk )
        PATH=/usr/sbin:/sbin:/usr/bin:/bin
        mount -t tmpfs -o mode=0755 tmpfs /mnt/ramdisk
        cd /mnt/ramdisk
        cp -ax / .
        exec chroot . /sbin/init -i
        * ajouter l'option init=/sbin/preinit
        * (dans ce cas, plus besoin de faire quoique ce soit de spécial pour /etc, /home, etc)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.