Programme en cache

bonjour

j’ai actuellement une débian sur mon pc et voici ce que je voudrai faire :

ma débian est lancer avec le stricte minimum installé sur un disque dur. je souhaiterai que , une fois démaré , le systeme mette en cache les programmes dont il a besoin , me permettant ainsi de débranché mon disque dur a chau et que ma débian fonctionne encore. donc je cherche un programme ou une manipe a faire pour que par exemple , ls , cp , mount et autre fonctionne sans mon disque dur.

quelqu’un aurai une idée ?

Merci :slightly_smiling:

PS : sa pe parètre bizar ce que je demande mais j’ai beaucoup bidouiller au niveau hard mon pc dc sa marche le seul pb c’est qu’il garde en mémoire seulement les 2 ou 3 dernier programmes lancé.

Pourquoi pas un ramdisk dans ce cas? Quel est le but exact???

Il faudrait mettre tout le système en mémoire dans ce cas, sinon en enlevant le disque tu perds la file de processus mis en cache, le système de fichier, les programmes pas encore mis en mémoire, et les entrées/sorties sur fichiers (les logs par exemple) ne pourront pas se faire, ce qui devrait faire un joli kernel panic. Il faudrait installer le système dans une partie de la mémoire (un ramdisk comme le dit fran.b). Avec windows, on pouvait le faire à partir d’une disquette boot, je ne sais pas ce qu’il en est avec linux mais ça devrait être idem. Une autre solution serait d’installer un système RAID, avec deux disques identiques dont l’un prend le contrôle quand on enlève l’autre, puis remet à jour le nouveau disque une fois monté.

Pouvez vous me donner plus d’information sur le ramdisk ? car je ne connai rien a ce sujet.

est ce que 40 mo de mémoire vive suffira ?

mon but est d’avoir mon pc qui tourne sans disque dur et avec le minimum du minimum de programme lancé pour que tout loge sur la memoire vive. ce pc me ser en fait a pouvoir me connecter en ssh depuis l’interna de ma prépa où seulement le port 80 est ouvert ( le pc de chez moi écoute en ssh le port 80 :slightly_smiling: )

sinon javai penser faire un chroot sur la mémoire vive et y mettre le systeme. est ce que cela se fait ? et surtout est ce que c’est assé automatique ou faut bidouiller dans tous les sens ?

merci

??? Tu prends un CD live et tu boutes dessus sans disque, tu peux éventuellement charger

boisson.homeip.net/BootCD-2.6.iso.bz2

  1. tu dézippes, tu montes l’image ISO et tu recopies le tout en tant que root sur un repertoire ~/CD par exemple
  2. Tu fais

cd CD

sh mnt26

  1. Tu mets ce que tu veux sur /mnt

  2. cd ~/CD
    sh dmnt26

Et tu graves /tmp/BootCD.iso

Pour te montrer, je t’ai rapidement mis ssh sur ce CD tu le trouveras à partir de 21h07 sur
boisson.homeip.net/BootCD-2.6.iso.bz2

Le CD est en place (40M), tu le charges, tu le graves, tu boutes dessus, tu réponds «o» au chargement des modules et éventuellement «o» au chargement du PCMCIA, tu appuies sur «Entrée», tu as telnet, ssh, ftp, lynx, etc et une carte réseau configurée par dhcp.

merci mais le pb c’est que je ne pes pas lire de cd sur mon pc , ni de disquette.

jvoulé pas vraiment dir ce que je fait mais bon voila la vrai raison , comme sa les renseignement irons ( je l’esper ) plus vite :

j’ai débian sous ma gamecube ( powerpc ) , ma console n’a pas de DD et utilise une image ext3 stoker sur un pc avec lequel elle est relier en réseau , sachant qu’elle a 40 mo de ram je souhaiteré pourvoir l’utiliser sans avoir besoin quel soit brancher a mon pc. et donc c’est pour sa que je ne peut pas lire de cd , dvd , disquette , etc…

mais ne me dites pas d’aller sur des forum de gamecube car mon probleme est un probleme linux et non gamecube. je souhaite trouver un programme ( ou une manip a faire ) tel que le systeme qui est lancer en ce moment soit entierement logé dans la mémoire ram. y a t-il une solution ou faut-il que je me résolve a abandonner cette idée ?

merci

ToToL

Un tout petit effort en français serait souhaitable, le sms n’est pas très apprécié ici.
Cela dit, sois le bienvenu.

Entièrement d’accord pour la remarque sur le SMS et l’orthographe. Par ailleurs, tu devrais être précis dès le début, non pas que rajouter ssh m’a fait perdre du temps mais dis toi que les gens qui te répondent passent un peu de temps pour cela. Perdre du temps à répondre à des pbms qui n’existent pas est assez pénible. Savoir dès le début ton pbm et ton architecture simplifie les choses.

Il te suffit de faire une image disque assez petite et de la mettre dans un ram disque.

Lis /usr/src/linux/Documentation/ramdisk.txt

Un tout petit effort en français serait souhaitable, le sms n’est pas très apprécié ici.
Cela dit, sois le bienvenu.[/quote]
Bienvenue !
Le SMS n’est apprecié nulle part, mais à titre personnel, la gueulante contre le style SMS m’enerve plus encore que le style SMS lui même.
Ricardo, fran.b je l’ai déjà dit, mais je le redis: si vous n’aimez pas ce qu’ecrit un posteur, ne le lisez pas.

Sinon, totor, t’es tu orienté vers une flonix, si tu as un port USB (distrib sur clé USB) ?
D’ailleurs, à part le réseau, qu’as tu comme ports, sur ta GC ? et comment se fait le boot ? tu pourrais être plus précis ?

Sinon, encore, toutes ces distrib (flonix, knoppix, etc), fonctionnent à priori comme tu souhaites: elles démarrent et se chargent en mêmoire, et aprés, tu peux déconnecter le support (presque). Donc, cherches encore, parceque la solution existe.

[quote]Ricardo, fran.b je l’ai déjà dit, mais je le redis: si vous n’aimez pas ce qu’ecrit un posteur, ne le lisez pas.[/quote] Matt, je te retourne ton conseil :
si tu n’aimes pas les posts qui gueulent contre le sms, ne les lis pas.

Je m’exuse pour le style sms et pour les fautes, je vais faire attention.

je ne voulais pas trop dir que c’était sur ma gamecube car j’avais peur que des administrateur du forum prennent cela comme du piratage ( et oui malheuresement les préjugé existent ) et donc que ceux-ci me supprime mon compte. Au final je n’aurai jamais eu d’aide.

je suis désolé fran.b et les autres de vous avoir fait perdre du temps …

A propos de ma gamecube , je n’ai que le port réseau dessu. Le système est simple , il y a une faille dans un jeu qui permet d’envoyer autre chose que les données que le jeu attend. Donc par methode on envoi un programme contenant le kernel ainsi que ce qu’il faut pour qu’il utilise comme disque dur une image en ext3 stocké dans mon ordinateur.

OK, je vais me renseigner à propos du ramdisk car vus ce que vous me dites, ma solution à l’aire ici.

Sinon j’avais pensé a une autre méthode : monter un répertoire d’un FTP dans un dossier de ma débian puis d’y copier mon système ( enfin le minimum du minimum au lieu de le mettre dans la mémoire ram ) et enfin de faire un chroot dessu. Est-ce que cela est possible?

Merci

Ps : exusez moi encore pour les fautes d’orthographes …

En fait tu as deux choix sachant que tu as la possibilité d’installer un système de fichiers et de bouter dessus si j’ai bien compris

  1. Tu veux un système autonome. Dans ce cas réellement la solution est le système en ramdisk. Le CD (i386 doncinutilisable pour toi) utilise un ramdisk de 16M et comporte la plupart des outils dont ssh. Il te suffit de faire l’équivalent. Peut probable avec 40MRAM d’avoir un environnement graphique dans ce cas. Et les applications seront assez sommaires.

  2. Tu veux te servir de ta machine comme terminal. Dans ce cas, il est possible de monter une racine NFS, dans un tel cas beaucoup de choses sont possible mais tu «traines un fil à la patte» dans le sens ou tu est obligé de maintenir un lien réseau avec ton serveur NFS. Mais tu es beaucoup plus libre de faire ce que tu veux ayant plus de place disponible. Mais je ne connais pas les possibilités de la gamecube

je ne souhaite nullement une interface graphique et j’utilise ma gamecube en fait comme porte d’entré dans mon réseau local.

peut tu m’indiquer une bonne documentation pour faire fonctionner ce ramdisk de 16 mo et où le trouver?

c’est vrai, j’avai oublié que je n’ai pas de connexion permanente car c’est la ligne adsl de chez moi donc j’abandonne l’idée du NFS.

Merci

[quote=“ricardo”][quote]Ricardo, fran.b je l’ai déjà dit, mais je le redis: si vous n’aimez pas ce qu’ecrit un posteur, ne le lisez pas.[/quote] Matt, je te retourne ton conseil :
si tu n’aimes pas les posts qui gueulent contre le sms, ne les lis pas.[/quote]Et je rajoutes une couche de bruit pour dire que tout ça, c’est du bruit :laughing:
sinon totol, j’ai pas tout bien compris de ce qui se passait ACTUELLEMENT une fois que tu as lancé ton kernel: tu va chercher un rootfs sur ta machine en réseau LOCAL ou par ADSL ?
Et sinon, ce que tu veux, c’est éteindre ta machine serveur une fois ta gamecube active ?

Sinon, il se trouve que Linux Magazine France n°18 contient un article “Construisez un systême linux RUN IN MEMORY”.
si on a le moyen de passer un initrd avec le noyau, on peut mettre le rootfs dans l’initrd, c’est ce qu’il y a de plus simple.
l’initrd est en fait un filesystem, qui peut être compressé (il faut donc le décompresser avant de le retoucher).
L’idée est toute simple: l’initrd EST le rootfs, et tu boote juste avec l’argument de noyau “root=/dev/ram0”.
il te faut donc juste une image de ton rootfs de taille inferieure à “la memoire de ta machine moins la mêmoire qu’occupe ton systême en pleine charge”.
En détail, par exemple pour en fabriquer une:

[code]

creation et montage d’un ramdisk de 20 Mo

dd if=/dev/zero of=initrd bs=1024 count=20000
losetup /dev/loop0 initrd
mkfs.ext2 /dev/loop0

montage

mkdir mnt
mount /dev/loop0 mnt

copie du rootfs (l’initrd que l’on construit ne dois bien sûr pas être dessus)

tu utilises la méthode que tu veux pour recopier l’arbo que tu veux sur mnt

finalisation

umount mnt
losetup -d /dev/loop0

et éventuellement (mais ce n’a pas d’interet pour toi, vu qu’il va se décompresser en mêmoire de toutes façon)

gzip initrd[/code]
Et là, si j’ai bien tout compris, tu bootes avec les arguments “initrd=…” et root=/dev/ram0, et c’est bon.
Mais plutot qu’une debian, vu tes besoins, je te conseillerait de partir d’une microdistrib genre coyote linux, si il existe, et juste de rajouter les modules de ton matériel.

Sinon, il y a d’autres subtilités aprés pour optimiser, mais l’essentiel est là. Je relis la suite de l’article pour voir.

Mais est ce ton cas, peux tu booter avec un initrd ? :mrgreen:

Par ailleurs, j’ai cru comprendre qu’il y avait un “pivot_root” qui permet de changer de rootfs, ce qui resoudrait ton pb: tu bootes comme maintenant sur la machine réseau bien chargée, avec tous les binaires nécessaires à ta séquence de boot, et en fin d’init, tu charges en ramdisk un autre rootfs (avec les binaires minimum pour continuer à tourner), puis tu switch dessus.

bon, c’est bien ça, ce dont tu as besoin etait en tête de l’article.
Le reste concerne la constitution et l’optimisation d’un systême embarqué (et fun):

  • patchage du noyau avec squashfs (utilisation en mêmoire du rootfs compressé)
  • busybox comme shell (bb, suivant le nom sous lequel il est appelé, est aussi la commande mount, ls, file, etc, et il se suffit à lui même comme systême minimal, pas besoin d’installer autrechose)
  • patchage bootsplash (pour le fun donc)
    et le reste concerne l’install d’autres fonctionnalités, y compris X, qui mène à un systême sur 210 Mo (mais sans X, ça doit vraiment faire beaucoup moins).
    Enfin voilà.

voila c’est exactement cela qu’il me faut car je ne peut rien modifier au niveau du boot et je ne peut pas non plus modifier mon kernel.

Je vais regarder sur ce niveau car s’il faut seulement ce programme se serait génial.

Par contre un truc, qu’appelle tu rootfs ?

c’est en local ( heureusement sinon se serait la mort avec ma connexion 1mbps )

voila c’est exactement cela qu’il me faut car je ne peut rien modifier au niveau du boot et je ne peut pas non plus modifier mon kernel.[/quote]
Pas de passage d’argument au noyau ?
Pourquoi ne peux tu modifier ton noyau ?

Je vais regarder sur ce niveau car s’il faut seulement ce programme se serait génial.[/quote]c’est un incontournable de l’embarqué.[quote=“totol”]
Par contre un truc, qu’appelle tu rootfs ?[/quote]/[quote=“totol”][quote]sinon totol, j’ai pas tout bien compris de ce qui se passait ACTUELLEMENT une fois que tu as lancé ton kernel: tu va chercher un rootfs sur ta machine en réseau LOCAL ou par ADSL ? [/quote]
c’est en local ( heureusement sinon se serait la mort avec ma connexion 1mbps )[/quote]pas sûr. C’est à peine, si je me souviens bien, 100 fois plus lent que le débit d’un HD. La plupart des executables nux ne depassent pas quelques Ko. Même sur une connection lente, ça doit être jouable.

[quote]Pas de passage d’argument au noyau ?
Pourquoi ne peux tu modifier ton noyau ? [/quote]
je ne peut pas modifier mon noyau et tout ce qu’il faut pour booter est contenu dans le fichier qu’exécute la gamecube à son lancement, et ce fichier je ne peut pas le modier.

apart ce programme qu’est ce que je doit aussi prendre absolument ?
As tu un site qui pourai expliquer toutes les manips à faire ?

As je ne pensai pas , mais le problème c’est que j’ai une déconnexion toutes les 24 heures donc même si je me reconnecte tout de suite après, la gamecube n’est plus synchronisé. en tout cas, je vais faire avec un ramdisk sa me semble le mieu. il faut juste que je me renseigne dessu et savoir quoi mettre exactement.

je n’ai pas d’autre réference que l’article que j’ai cité, désolé.
Sinon, le contenu de l’initrd, c’est simplement ton futur / !
Mais si tu ne peux pas modifier ton boot…
Tu n’es d’ailleurs pas allé jusqu’au bout de ton explication: pkoi ne peux tu pas modifier le fichier dans lequel se trouve le kernel que tu ne peux pas modifier ?
Parcequ’il va bien falloir trouver un moyen de lui passer des arguments, de toutes façons.

sur l’utilisation de pivot_root:
man 8 pivot_root

AMHA, tu peux déja faire des tests “à la mano” en chargeant ton systême dans un ramdisk, en pivotant dessus, puis en débranchant ton cable pour voir si ça survit.
Aprés, tu pourra te faire un systême plus petit sur lequel tu automatiseras le pivot.