Come già sai, ogni giorno ci sono centinaia di nuove aggiunte al repository GitHub. Ma molti buoni progetti passano inosservati e non ricevono mai l'attenzione che meritano. Oggi mi sono imbattuto in un progetto interessante chiamato Ramroot . Usando Ramroot, possiamo eseguire Arch Linux interamente dalla RAM! Sì, avete letto bene.
Ramroot carica l'intero filesystem di root nella RAM all'avvio del sistema. È appositamente progettato per Arch Linux. L'ho provato in Ubuntu, ma non ha funzionato. Spero che lo sviluppatore riesca a farlo funzionare anche su altre distribuzioni Linux.
Esegui Arch Linux dalla RAM utilizzando Ramroot
Ramroot è disponibile in AUR , quindi puoi installarlo utilizzando qualsiasi programma di supporto AUR, ad esempio Paru o Sì .
$ Paru -S ramroot
Oppure,
$ yay -S ramroot
Quindi, abilita Ramroot usando il comando:
$ ramroot enable
Risultato di esempio:
:: Detected root UUID: 6517af02-68e9-484e-9dae-f0ed61822ad3 :: No /boot UUID detected. :: zram added to mkinitcpio.conf MODULES :: ext4 added to mkinitcpio.conf MODULES :: vfat added to mkinitcpio.conf MODULES :: ramroot added to mkinitcpio.conf HOOKS :: Enabling ramroot... [sudo] password for sk: ==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default' -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img ==> Starting build: 4.17.6-1-ARCH -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [ramroot] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img ==> Image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback' -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect ==> Starting build: 4.17.6-1-ARCH -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [ramroot] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: wd719x ==> WARNING: Possibly missing firmware for module: aic94xx -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img ==> Image generation successful :: ramroot enabled.
Se non funziona per qualsiasi motivo, prendi il binario Ramroot dal repository GitHub ed eseguilo come descritto di seguito.
Git clona il repository Ramroot usando il comando:
$ git clone https://github.com/arcmags/ramroot.git Cloning into 'ramroot'... remote: Counting objects: 94, done. remote: Compressing objects: 100% (52/52), done. remote: Total 94 (delta 41), reused 82 (delta 32), pack-reused 0 Unpacking objects: 100% (94/94), done.
Il comando precedente creerà una cartella denominata "ramroot" nella directory di lavoro corrente e salverà tutto il contenuto del progetto Ramroot in essa.
Quindi, vai al bin
di Ramroot directory:
$ cd ramroot/bin/
Rendi eseguibili i seguenti file:
$ chmod +x ramroot-build $ chmod +x ramroot-enable
Infine, esegui il comando seguente per abilitare Ramroot.
$ ./ramroot-enable
Inserisci il tuo sudo
o root
password quando richiesto.
Ora riavvia il sistema. Al processo di avvio, ti verrà chiesto di caricare il filesystem nella RAM. Digita "Sì" per procedere.
Carica il filesystem di root nella RAM
Tieni presente che per impostazione predefinita questa richiesta (s/n) è sì con un timeout di 15 secondi se 4G o viene rilevata una quantità maggiore di RAM. Dato che ho 2GiB di RAM, ho dovuto digitare "Y" per continuare.
Attendi qualche istante per completare il processo di caricamento. Ci vorranno diversi minuti per caricare l'intero filesystem di root nella RAM. Assicurati di avere sufficiente RAM installata sul tuo sistema.
Se vuoi mantenere tempi di sincronizzazione della RAM più rapidi, prova a mantenere un sistema pulito e ridotto. Rimuovi i pacchetti vecchi e non necessari e mantieni pulita la cartella della cache dei pacchetti.
Aggiornamento:
Se utilizzi la versione più recente di Ramroot, la dimensione della RAM installata dovrebbe essere almeno 500 MB in più rispetto alla dimensione del filesystem di root . Se sono presenti almeno 500 MB di RAM in più rispetto alla dimensione del filesystem, all'utente verrà chiesto di caricare il filesystem di root nella RAM. Se la dimensione del filesystem di root è inferiore alla memoria installata, l'ultima versione di Ramroot non caricherà il filesystem di root nella tua RAM. Non ti chiederà nemmeno se dovrebbe caricare il filesystem nella RAM o meno. Il filesystem verrà montato automaticamente nel disco locale e Arch Linux si avvierà normalmente.
Una volta che il filesystem di root è stato caricato nella RAM, verrai reindirizzato a rootfs
richiesta. Tieni presente che nulla verrà salvato dopo il riavvio . Perché il nostro Arch Linux si sta caricando interamente dalla RAM, non dal disco locale.
Filesystem di root caricato nella RAM
Visualizza la guida di Ramroot
Per visualizzare la sezione della guida di Ramroot, esegui:
$ ramroot --help
Risultato di esempio:
NAME ramroot - load root (and /boot) filesystem entirely to RAM during boot SYNOPSIS ramroot <ACTION> [OPTIONS] ACTIONS disable Remove ramroot from /etc/mkinitcpio.conf HOOKS. Remove ext4, vfat, and zram from /etc/mkinitcpio.conf MODULES. Rebuild linux cpio boot image. enable Rebuild build and runtime hooks in /usr/lib/initcpio. Add ramroot to /etc/mkinitcpio.conf HOOKS. Add ext4, vfat, and zram to /etc/mkinitcpio.conf MODULES. Rebuild linux cpio boot image. remove Disable ramroot. Remove build and runtime hooks from /usr/lib/initcpio. status Print ramroot and root filesystem status to screen. Return exit status 0 if enabled and currently loaded to RAM. Return exit status 1 if enabled and not loaded RAM. Return exit status 2 if disabled. OPTIONS -b, --boot <UUID> Specify /boot partition UUID to use when building hooks. -D, --dryrun Execute ACTION without making any changes. -F, --fstab Mount all other partitions in /etc/fstab normally. -H, --help Display help text and exit. -K, --keep Keep copies of new build and runtime hooks in ~/.cache/ramroot. -M, --message Print 'Arch on RAM' message at tty login by using custom /etc/issue. -N, --no Change startup prompt default to not load filesystem to RAM. -r, --root <UUID> Specify root partition UUID to use when building hooks. -t, --timeout <SECONDS> Set RAM boot prompt timeout (default=15).
Rimuovi Ramroot
Riavvia il sistema e digita "n" quando chiede di caricare il filesystem sulla RAM per accedere normalmente al tuo sistema Arch Linux. Vai a ramroot/bin
cartella e rendi eseguibili i seguenti file.
$ cd ramroot/bin/ $ chmod +x ramroot-disable $ chmod +x ramroot-remove
Infine, rimuovi Ramroot dal tuo sistema Arch Linux usando i comandi:
$ ./ramroot-disable $ ./ramroot-remove
Se hai installato Ramroot da AUR, rimuovilo usando i comandi:
$ ramroot disable
$ ramroot remove
E, infine, rimuovi il pacchetto Ramroot:
$ sudo pacman -Rns ramroot
Conclusione
Ramroot potrebbe essere utile per coloro che vogliono fare dei test sulla loro scatola Arch Linux. Inoltre, se vuoi una sessione privata per imparare i comandi di Linux, Ramroot è sicuramente utile. Fai un tentativo e non dimenticare di condividere le tue opinioni su questo progetto nella sezione commenti qui sotto.