web-dev-qa-db-fra.com

Distro que je peux charger dans la RAM?

Existe-t-il une version modifiée d'Ubuntu que je peux choisir de charger sur RAM au démarrage? Un peu comme le LiveCD, mais cela peut être facilement modifié (par exemple: je peux installer des choses) lorsque je choisis de démarrer à partir du disque.

L'idée est de l'installer sur un lecteur USB. Je sais qu'il y a quelque chose de similaire mais la slax fait défaut dans de nombreux départements. Une version "complète" d'Ubuntu serait préférable.

Une installation LiveUSB semble être assez proche de ce que je veux, mais apparemment, je dois choisir si elle sera persistante ou non au moment de l’installer. Je veux pouvoir choisir cela chaque fois que je démarre.

14

Il y a le paramètre toram, que vous pouvez donner aux livecd Ubuntu récents au moment du démarrage, ce qui signifie 10.04 ou plus récent. Cela chargera tout sur RAM (en supposant que vous ayez assez de RAM pour le conserver), puis vous pourrez retirer le CD (ou la clé USB) et continuer à utiliser Ubuntu normalement.

17
Olli

Cette réponse comprend du texte que j'ai utilisé pour répondre à une question différente, mais il est placé ici afin d'illustrer et de donner un guide visuel, que vous possédez probablement déjà.

Dans la majorité des cas, Ubuntu (presque toutes les versions) fonctionnera parfaitement en session live et placé sur une clé USB avec des options de données "Persistent", vous aurez ce que vous souhaitez.

Le problème sera que, lorsque vous débranchez la clé USB/le disque dur, le disque sera démonté, et de cette façon, même lorsque vous le rebranchez, la clé USB sera inaccessible, à moins que vous ne fassiez quelque chose pour restaurer le point de montage. l'USB.

Néanmoins, toutes les applications en cours continueront à fonctionner même si vous débranchez ou démontez le périphérique USB.

Une bonne idée d'essayer est de vous assurer que tous les processus dont vous avez besoin sont chargés au démarrage, ce qui garantira leur exécution au moment où vous débranchez le périphérique USB.

Moi-même, je l'ai fait avec quelques applications seulement. J'utilise Israel Remix Team distro qui est déjà pré-chargé avec de nombreuses applications à l'avance. Ainsi, lorsque l'application est chargée, je peux débrancher la clé USB et le programme continue.

Je n'ai pas essayé de programmes exigeants en ressources, mais dans mon cas:

  1. Le partage de fichiers continue de fonctionner et de partager des fichiers, même lorsque ces fichiers se trouvent sur un lecteur de disque dur fixe, autre que le système de fichiers USB.
  2. VLC continue de diffuser sans problème une station de radio,
  3. Yakuake continue le travail et fait ce que je demande à moins que je souhaite quelque chose de la clé USB débranchée
  4. Google Chrome continue de naviguer sur le Web et me permet d'effectuer plusieurs tâches, telles que la surveillance des caméras IP.

Le seul problème, c’est lorsque j’essaie de brancher la clé USB pour exécuter une nouvelle application, ce qui ne sera pas réalisé par l’instance actuelle du système d’exploitation. Je dois donc redémarrer pour pouvoir démarrer une nouvelle application à côté de celles qui sont chargées à Commencez.

Une autre bonne idée serait d’utiliser la fonction "Mémoriser les applications en cours d’exécution" dans la fenêtre de préférences "Système/Préférences/Applications de démarrage". Qui (lorsqu'il est activé) "se souviendra" de tous les programmes que vous utilisez et les rouvrira après un redémarrage ou lors du démarrage du système pour la première fois de la journée.

Si vous souhaitez supprimer une application de cette fonctionnalité, fermez-la et accédez à cette fonction, puis appuyez sur la touche "Mémoriser l'application en cours d'exécution" afin d'actualiser la liste des programmes qui seront ouverts la prochaine fois.

Une capture d'écran est placée ici afin d'illustrer.

enter image description here

Ensuite, en tenant compte de ce que je dis ci-dessus, il vaut la peine d'effectuer la prochaine expérience:

Guide de la disquette de démarrage USB:

Tout d'abord, vous pouvez créer une disquette de démarrage USB à l'aide d'une interface graphique, ce qui facilitera la tâche. Malheureusement, cela ne peut être fait que lorsque, à l'intérieur d'un système Ubuntu, la session en direct ou le système installé peuvent faire l'affaire.

Je sais que les gens peuvent vous suggérer de suivre quelques autres procédures réussies, mais dans mon cas, je parlerai du "Créateur de disque de démarrage".

Dans plusieurs distributions Linux, vous pouvez trouver cet outil dans "Système/Administration/Créateur de disque de démarrage". Je vous suggère fortement d'essayer le Israel Remix Team , celui que j'utilise, mais presque toutes les distributions devraient comporter cet outil.

Une capture d'écran est placée ici pour que vous puissiez voir l'outil récemment ouvert:

enter image description here

Assurez-vous d'avoir téléchargé votre distribution Ubuntu préférée avant de l'essayer lors d'une session en direct.

Dans la fenêtre "Créer une disquette de démarrage", cliquez sur le bouton "Autre" en haut à droite afin de choisir l'iso de votre distribution Linux que vous avez précédemment téléchargée et que vous avez déjà inséré la clé USB que vous allez utiliser pour le processus. Les fichiers ".iso" et USB doivent apparaître dans leurs zones respectives.

enter image description here

REMARQUE: Si vous envisagez d’utiliser un DVD pré-gravé pour le processus, insérez simplement le DVD dans le tiroir. Il sera alors répertorié dans la liste des sources, comme indiqué dans l’image suivante:

enter image description here

Dans mon cas, une session live est déjà installée sur ma mémoire USB de 4 Go. Ce que je vais faire en premier lieu, c’est de cliquer sur le bouton "Effacer le disque" afin de rassembler suffisamment d’espace pour le système, après quoi les options me seront proposées. pour le traitement des données, sur lequel je vais choisir la taille de disque que je souhaite utiliser pour sauvegarder des données et des configurations (comme l'installation de programmes, etc.), je vais utiliser 1,4 Go à cette fin.

enter image description here

Maintenant, je clique sur "Créer une disquette de démarrage" et le processus de copie va avoir lieu.

enter image description here

Après quoi, le GRUB devrait également être installé. Malheureusement, le processus d'installation de GRUB était trop rapide, je ne pouvais donc pas prendre de photos.

Le fichier de persistance sera créé.

enter image description hereenter image description here

Ensuite, vous pourrez commencer à partir de cette clé USB. Notez que vous pouvez utiliser à la fois des clés USB ou des disques durs USB, même avec un adaptateur, IDE-à-USB ou SATA-à-USB.

enter image description here

Cela devrait fonctionner comme vous le souhaitez, au moins cela me rend heureux avec les résultats.

Bonne chance!

7

Je travaille sur JUST this. Une installation de livecd à usb ne fonctionnait pas très bien pour moi. J'ai créé une version modifiée du script "local" pour le serveur Ubuntu 11.04. Après l’application du correctif (ou de l’édition locale avec les modifications de cours), vous n’avez besoin que de update-iniramfs -u, et démarrez Linux avec un argument de noyau "ramboot", et votre système démarrera complètement un système Linux normal en RAM. Effectuer des modifications persistantes est aussi simple que de synchroniser le système de fichiers du disque mémoire sur le périphérique d’amorçage. Dans mon cas, un stylo USB, mais il pourrait facilement s'agir d'un périphérique bloc amorçable approprié. Vous pouvez, bien sûr, simplement redémarrer sans l'argument "ramboot" et apporter des modifications, car vous serez de retour sur le périphérique bloc, puis redémarrez à nouveau avec ramboot, mais cela n'est pas nécessaire, sauf que cela est très clair lorsque vous êtes connecté. dans quel état.

0) "Sudo su"

(Vous n'êtes pas obligé de faire cette étape, mais vous devrez alors vous assurer que Sudo dispose de tout ce qui pourrait l'exiger). J'ai tendance à simplement "Sudo su" lorsque je modifie ce type de système.

1) télécharger ou copier/coller le contenu de ce patch dans un fichier:

"/usr/share/initramfs-tools/scripts/ramboot.patch" - ne pourrait inclure Pastebin, débutant. inclus à la fin

2) cd/usr/share/initramfs-tools/scripts; cp local local.bak # juste au cas où

3) patch local ramboot.patch

Cela applique les modifications définies dans ramboot.patch à votre script local./usr/share/initramfs-tools/scripts/local est le configurateur de script de démarrage normal qui configure la fonction rootmount pour init. Le patch a été créé par "diff local local.modified> ramboot.patch"

4) cp/bin/busybox/usr/lib/initramfs-tools/bin/busybox

Cela rend votre fichier initramfs.img légèrement plus gros qu’il ne le serait normalement, mais la différence est d’environ 1,5 mégaoctets, pas majeure. Je voulais la sortie lisible par l'homme de df -h, ce que ne prend pas en charge le df de busybox dépouillé. Si vous souhaitez conserver la version 300k de busybox, assurez-vous de bien cp/usr/lib/initramfs-tools/bin/busybox/small_busybox, puis rétablissez-la à son ancien nom/emplacement après l'étape 5.

5) update-initramfs -u

6) optionnel vous souhaiterez probablement créer un fichier /etc/grub.d/06_custom, avec l'argument du noyau "ramboot" inclus, et un titre qui implique cela.

(ou 40_custom si vous souhaitez que l'entrée de menu racine soit à la fin de la liste, au lieu de la partie supérieure) 06_custom - impossible d'inclure le lien Pastebin, débutant ici.

vous devrez renseigner votre version correcte du noyau et initrd.img-verion, ainsi que le système de fichiers uuid de votre périphérique racine dans ce fichier 06_custom, sans quoi cela ne fonctionnera pas.

vous pouvez trouver les informations sur le noyau/initrd.img en cherchant simplement dans/boot/avec "ls/boot" et la commande suivante devrait afficher votre système de fichiers racine uuid:

blkid | grep `df/| grep dev | cut -d '' -f1` | cut -d '"' -f2

Une fois que votre 06_custom a les chemins et noms de fichiers uuid, kernel et initrm.img corrects, vous pouvez mettre à jour grub et l'essayer!

7) update-grub pour ajouter les entrées personnalisées à votre fichier /boot/grub/grub.cfg.

Remarque: j'ai un petit système avec une partition racine comprenant seulement environ 1,2 g de données à copier dans la RAM. Si votre système ne dispose pas de suffisamment de mémoire de secours, ce script démarrera normalement en toute sécurité (ou du moins, essayez!). J'ai trouvé remastersys et les installations persistantes de USB-Casper ne répondent pas exactement à mes besoins.

Ceci est actuellement utilisé sur un serveur scst-iscsi, et sa seule faiblesse est que, si vous n'enregistrez pas les modifications apportées au système et perdez de la puissance, ou une autre erreur (init 0, oh non, j'ai oublié de vérifier mes retournez à Subversion! désastre!), le système ramdisk ne fait rien de persistant. Je n'ai pas encore beaucoup de temps d’antenne sur cette configuration, mais comme j’avais cherché ce type d’informations, trouvé de nombreuses façons qui ne convenaient pas ou qui me déroutaient tout simplement, je pensais mettre ceci dehors là. peut-être que cela sauvera un peu les dents en tirant * 8 ^)

remastersys et les scripts root-ro m'ont aidé à ce stade. Ce sont des projets utiles mais différents. remastersys crée un package pour votre système en cours d'exécution, à déployer/cloner, ou simplement exécuter en tant que version live.iso du système, ou sauvegarde, je suppose. root-ro est un style d'union monté sur un système de fichiers blockdevice à deux disques RAM, avec le disque RAM enregistrable et le fichier blockdev en lecture seule. ensuite, pour synchroniser, vous pouvez remonter le blockdev rw, rsync une branche à l’autre et le remonter ro. C'était presque parfait, mais je voulais que le stylo usb soit démonté/puisse être retiré et que le système conserve son état, comme le fait cette solution.

root-ro bottom of the page - https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash

remastersys - http://www.geekconnection.org/remastersys/ubuntu.html

Vous pouvez facilement rsync ou copier -r à partir du ramboot (monté sur /) et du disque/périphérique dont il provenait à l'origine lors de l'exécution en RAM, pour rendre cette modification "persistante". Je sauve l'uuid de l'appareil à partir duquel le ramboot a démarré, afin que vous puissiez toujours le retrouver plus tard. Il se trouve dans /.bootdisk_byuuid sur le disque virtuel et vous pouvez facilement définir un script pour monter ce périphérique quelque part, effectuer la rsync, puis le démonter à nouveau et appeler ce script "ramtodisk" ou autre chose du genre.

NB! vous souhaiterez peut-être sauvegarder votre fichier /boot/initrd.img afin que, en cas de problème, votre système soit toujours amorçable. J'ai sauvegardé le mien dans/boot/initrd en travaillant dessus. quand j'ai eu des problèmes avec grub/init, je viens de modifier mon initrd pour qu'il pointe vers le fichier backup/boot/initrd et je suis revenu au débogage. Quoi qu'il en soit, je suppose que ce ne sont plus des directives, pas un livre de recettes. s'amuser! cela prend mon système 1.2gig à 9: 30 pour démarrer sur USB 1.1, à 1: 30-45 sur USB 2.0 et ~ = 35 secondes sur USB 3.0 pour charger dans le RAM. de plus en plus juteux chaque année! * 8 ^)

voici ramboot.patch

2a3,13
> parse_cmdline() {
>     RAM=""
>     for x in $(cat /proc/cmdline); do
>         case $x in
>           ramboot)
>               RAM="Yes" ;;
>             quiet)
>                 quiet=y ;;
>         esac
>     done
> }
66c77
<
---
>       parse_cmdline
90,91c101,164
<       # Mount root
<       mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
---
>       # Mount root - custom ramboot.patch
>       # By: Justin Perkins -- 4/25/12 Email: [email protected]
>       if [ -z "${RAM}" ]; then
>               mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
>       else
>               mkdir /ramboot
>               mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboot
>               log_begin_msg "Detecting system resources"
>               size=$(df|grep ramboot|tr -s ' '|cut -d ' ' -f3)
>               datasize=${size}
>               size=$(expr ${size} + ${size} / 20 )    #5% more to be sure
>               freespace=$(awk '/^MemFree:/{f=$2} /^Cached:/{c=$2} END{print f+c}' /proc/meminfo)
>               log_end_msg
>               if [ "${freespace}" -lt "${size}" ] ; then
>                       echo "Not enough system RAM, ${freespace}k > ${size}k."
>                       echo "Attempting normal rootmount."
>                       mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
>               else
>                       if [ "$quiet" != "y" ] ; then
>                               tstart_min=$(date|cut -d ' ' -f4|cut -d : -f2)
>                               tstart_sec=$(date|cut -d ' ' -f4|cut -d : -f3)
>                               mount -t tmpfs -o size=100% none ${rootmnt}
>                               cd ${rootmnt}
>                               size=$(df -h|grep ramboot|tr -s ' '|cut -d ' ' -f3)     #reuse size
>                               echo "System size: ${size} (${datasize}k) this may take a couple of minutes."
>                               log_begin_msg "Copying system files into RAM"
>                               echo -e -n "\b"
>                               cp -rfa /ramboot/* ${rootmnt} &
>                               pid=$!
>                               while [ ! ${pid} == "done" ] ; do
>                                       alive=$(ps -o pid,args|grep -E ${pid}|grep -v grep)
>                                       alive=$(echo ${alive}|cut -d ' ' -f1)
>                                       if [ -z ${alive} ] ; then pid="done" ; fi
>                                       printf "."
>                                       sleep 1
>                               done
>                               log_end_msg
>                               echo ${ROOT} > ${rootmnt}/.bootdisk_byuuid
>                               tend_min=$(date|cut -d ' ' -f4|cut -d : -f2)
>                               tend_sec=$(date|cut -d ' ' -f4|cut -d : -f3)
>                               if [ ${tend_sec} -lt ${tstart_sec} ] ; then
>                                       tend_sec=$(expr ${tend_sec} + 60)
>                                       tend_min=$(expr ${tend_min} - 1)
>                               fi
>                               if [ ${tend_min} -lt ${tstart_min} ] ; then
>                                       tend_min=$(expr ${tend_min} + 60)
>                           fi
>                           tduration_min=$(expr ${tend_min} - ${tstart_min})
>                           tduration_sec=$(expr ${tend_sec} - ${tstart_sec})
>                           echo "Copy complete, duration: $tduration_min minutes $tduration_sec seconds."
>                           freespace=$(awk '/^MemFree:/{f=$2} END{print f}' /proc/meminfo)
>                           freespace=$(expr ${freespace} + 425000)         #this accounts for the temporal settling issue
>                           echo "You have approximately ${freespace}k free RAM after loading the ramboot."
>                           if [ ${freespace} -lt "502400" ] ; then echo "Warning! you have critically low system RAM free after ramboot." ; fi
>
>                   else
>                           cp -rfa /ramboot/* ${rootmnt}
>                           echo ${ROOT} > ${rootmnt}/.bootdisk_byuuid
>                           freespace=$(awk '/^MemFree:/{f=$2} END{print f}' /proc/meminfo)
>                           if [ ${freespace} -lt "102400" ] ; then echo "Warning! you have critically low system RAM free after ramboot." ; fi
>                   fi
>           fi
>           umount /ramboot
>   fi      #end custom ramboot.patch

06_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
#uuid_<placeholder>, and vmlinuz-<placeholder>, and initrd.img-<placeholder> and
#set root='(hd0,2)' need to be replaced with your system's values, although, if you
#get the hd0,2 wrong, but the uuid correct, grub will grep around and find it anyhow. 
menuentry "Ubuntu, with Linux Custom-Ramboot" {
    recordfail
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set=root uuid_placeholder
    linux /boot/vmlinuz-<placeholder> root=UUID=<uuid-placeholder> ro ramboot
    initrd /boot/initrd.img-<placeholder>
}
2
Justin Perkins

Je pense que Puppy Linux est maintenant basé sur Ubuntu, et est très petit et se charge facilement dans la RAM.

1
tinhed