View previous topic :: View next topic |
Author |
Message |
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Sat Feb 19, 2005 8:09 pm Post subject: [HOWTO] Come montare / nella RAM |
|
|
Ho tradotto questo HOWTO perché mi sembrava estremamente interessante . Per adesso non l'ho ancora provato, quindi mi raccomando riportate le vostre esperienze. L'originale lo trovate qua.
Attenzione: dato che in 2 giorni é stato modificato 22 volte, aspettatevi frequenti aggiornamenti, e se vi accorgete che é stato aggiornato senza che lo sia anche questo, segnalatemelo per favore. Per lo stesso motivo non assicuro niente sul lato della stabilità e della correttezza della procedura.
-------------------------------------
Questo HOWTO é immaginato a partire da questo (ndt: boh... chi mi illumina sul legame tra i due??)
Vuoi montare / nella RAM per un sistema super-veloce?
Qui c'é quello di cui hai bisogno per far volare la tua gentoo
Requisiti:
- Le seguenti directory in partizioni separate:
/usr
/home (se molto pesante o usata per depositare dati)
/root (come per /home)
/var (cosi da evitare di mettere nella RAM i log o la cache di portage)
- una directory chiamata /newroot
- una partizione disponibile per depositarci dentro i tarballs (non può essere root) Magari usa la partizione che é stat / durante l'installazione
- 176MB di RAM disponibili (dipende da quanto si vuole caricare nella RAM)
Il miglioramento di prestazioni é questo (in ordine di importanza):
Code: | /usr/lib
/lib
/usr/bin
/bin
/usr/sbin & /sbin |
Step 1
Installa normalmente
Step 2
Genera i tarballs che vuoi caricare nella RAM.
Salvalo come /sbin/update-balls (controlla che STORE sia montato, e che sia una dir adatta allo scopo):
Code: | #!/bin/sh
CURRDIR=`/bin/pwd`
STORE="root"
cd /
#Exclude anything that's on it's own partition here
tar cfp ${STORE}/fs.tar * --exclude=usr/* --exclude=root/* --exclude=home/* \
--exclude=proc/* --exclude=sys/* --exclude=tmp/* --exclude=var/* \
--exclude=opt/*
cd /usr/
# rm -fr /usr/bin /usr/sbin /usr/lib
# cp -a /usr/.bin /usr/bin
# cp -a /usr/.sbin /usr/sbin
# cp -a /usr/.lib /usr/lib
cd bin && tar cfp /${STORE}/usr_bin.tar *
cd ../sbin && tar cfp /${STORE}/usr_sbin.tar *
cd ../lib && tar cfp /${STORE}/usr_lib.tar *
# rm -fr /usr/bin /usr/sbin /usr/lib
# mkdir /usr/bin /usr/sbin /usr/lib
cd $CURRDIR |
Per farlo eseguire ad ogni riavvio:
Code: | echo /sbin/update-balls >> /etc/conf.d/local.stop |
Step 3
Adesso dobbiamo creare un initrd per migliorare l'occupazione del nostro drive RAM prima di caricare init:
Code: | mount /boot #se necessario
touch /boot/initrd
dd if=/dev/zero of=/boot/initrd bs=1024k count=8
losetup /dev/loop0 /boot/initrd
mke2fs /dev/loop0 |
Adesso abbiamo loop0 montato come initrd. Per occuparlo:
Code: | mkdir /mnt/initrd
mount /dev/loop0 /mnt/initrd
cd /mnt/initrd
mkdir etc dev lib bin proc new store
touch linuxrc etc/mtab etc/fstab
chmod +x linuxrc
for I in sh cat mount umount mkdir chroot tar; do cp /bin/$I bin/; done
cp /sbin/pivot_root bin/ |
Adesso dobbiamo copiare tutte le librerie per ogni binario che usiamo. Puoi determinare quali copiare cosi:
Code: | ldd /bin/sh
linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7fe2000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7eca000)
/lib/ld-linux.so.2 (0xb7feb000) |
Significa che per usare /bin/sh abbiamo bisogno di /lib/libdl.so.2 /lib/tls/libc.so.6, lib/ld-linux.so.2
Questo é tutto quello di cui abbiamo bisogno:
Code: | ls -R lib
lib:
ld-linux.so.2 libblkid.so.1 libdl.so.2 libuuid.so.1 tls
lib/tls:
libc.so.6 libpthread.so.0 librt.so.1 |
Controlla ogni binario, secondo le tue necessità. Usa a questo scopo lo script linuxrc (/mnt/initrd/linuxrc):
Code: | #!/bin/sh
export PATH=/bin
STOREDEV=/dev/hda10
STORE=/store
ROOTSIZE=128m
# Get kernel CMDLINE
mount -t proc none /proc
CMDLINE=`cat /proc/cmdline`
umount /proc
mount $STOREDEV $STORE
# Mount root and create read-write directories
mount -t tmpfs -o size=$ROOTSIZE none /new/ > /dev/null 2>&1
cd /new/ && tar xpf $STORE/fs.tar > /dev/null 2>&1
umount $STOREDEV
# Pivot root and start real init
cd /new
pivot_root . newroot
exec chroot . /bin/sh <<- EOF >dev/console 2>&1
exec /sbin/init ${CMDLINE}
EOF |
Una volta fatto questo, abbiamo bisogno di creare i nodi dei device che vogliamo usare:
Code: | mknod /mnt/initrd/dev/console c 5 1
mknod /mnt/initrd/dev/null c 1 3
mknod /mnt/initrd/dev/hda b 3 0
mknot /mnt/initrd/dev/hda4 b 3 4
mknod /mnt/initrd/dev/hda10 b 3 10 |
Hai solo bisogno dei nodi dei device che lo script linuxrc usa (vedi /usr/src/linux/Documentation/devices.txt)
E questo é per l'initrd:
Step 4
Modifica /etc/init.d/localmount
Code: | start() {
USRBINSIZE=32m
USRSBINSIZE=2m
USRLIBSIZE=256m
# Mount local filesystems in /etc/fstab.
ebegin "Mounting local filesystems"
mount -at nocoda,nonfs,noproc,noncpfs,nosmbfs,noshm >/dev/null
eend $? "Some local filesystem failed to mount"
ebegin "Mounting RAM filesystems"
mount -t tmpfs -o size=$USRBINSIZE none /usr/bin > /dev/null 2>&1
mount -t tmpfs -o size=$USRSBINSIZE none /usr/sbin > /dev/null 2>&1
mount -t tmpfs -o size=$USRLIBSIZE none /usr/lib > /dev/null 2>&1
cd /usr/bin && tar xpf /root/usr_bin.tar > /dev/null 2>&1
cd /usr/sbin && tar xpf /root/usr_sbin.tar > /dev/null 2>&1
cd /usr/lib && tar xpf /root/usr_lib.tar > /dev/null 2>&1
eend $? "Some RAM filesystems did not mount" |
Step 5
Modifica la conf del bootloader (in questo caso grub)
Code: | timeout 3
default 0
# For booting GNU/Linux from an existing install (rescue)
title Gentoo
root (hd0,0)
kernel /bzImage root=/dev/ram0 rw init=linuxrc video=vesafb:ywrap,pmipal,1024x768-16@70
initrd /initrd |
Step 6
Se trovi che /usr/lib é troppo grande da mettere nella RAM, magari puoi muovere alcune cose in /usr/local/lib e linkarle, per esempio:
Code: | cd /usr/lib
for I in perl5 python2.3 portage modules gcc gcc-lib; do
mv $I ../local/lib/
ln -s ../local/lib/$I $I
done |
Mettere portage nella RAM é sicuramente un notevole incremento di velocità.
Code: | time /usr/bin/emerge -s mozilla
real 0m3.680s
user 0m2.978s
sys 0m0.131s |
Step 7
Finializziamo
Code: | mv /usr/sbin /usr/.sbin
mv /usr/bin /usr/.bin
mv /usr/lib /usr/.lib
reboot |
A parte:
Se vuoi caricare solo alcune applicazioni nella RAM, fai qualcosa del genere:
Code: | ##fai questo prima
tar cpf /root/preload.tar /usr/bin/firefox /lib/and /lib/all /usr/lib/of /usr/lib/the /lib/raries/ it's/dependent /lib/on
##rimpiazza tutte i binari originali e le librerie con link a /preload/foo
##Quindi metti questo in /etc/conf.d/local.start
mount -t tmpfs -o size=128m none /preload > /dev/null 2>&1
cd /preload && tar xfp /root/preload.tar |
Enjoy!!
Last edited by Dhaki on Sun Feb 20, 2005 11:52 am; edited 1 time in total |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31345 Location: here
|
Posted: Sat Feb 19, 2005 8:44 pm Post subject: |
|
|
Aggiunto ai post utilissimi sezione howto. Se puoi mettilo pure su wiki.gentoo-italia.net _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun Feb 20, 2005 1:32 am Post subject: |
|
|
ricordatevi di comprarvi un UPS buono
EDIT: due critiche:
- vedo che usi tmpfs. a differenza di ramfs, tmpfs usa prima la ram, se la piena passa a scrivere sui dischi. non credo sia quello che tu vuoi (o sbaglio, magari come misura cautelativa?)
- vedo che usi, dopo aver montato i dischi ram, un comando eend generico: per una cosa delicata come un disco, "some filesystems" non puo' essere considerato un'opzione valida. che ne dici di creare un loop per ogni disco e mettere l'eend dentro il loop? _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
Guglie Apprentice
Joined: 01 Mar 2004 Posts: 240 Location: switzerland - zürich
|
Posted: Sun Feb 20, 2005 10:36 am Post subject: Re: [HOWTO] Come montare / nella RAM |
|
|
Dhaki wrote: | Questo HOWTO é immaginato a partire da questo (ndt: boh... chi mi illumina sul legame tra i due??) |
l'howto originale sarebbe questo vero?
https://forums.gentoo.org/viewtopic-t-296892.html
bet1m wrote: | or only /lib and /usr/lib to put in ram, Firefox will load on 0.01 sec. |
da me sono poi "solo" circa 585 Mb, si potrebbe anche fare..
Dhaki wrote: | Per farlo eseguire ad ogni riavvio:
Code: | echo /sbin/update-balls >> /etc/conf.d/local.stop |
|
non sarebbe local.start? _________________ A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath! |
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Sun Feb 20, 2005 11:51 am Post subject: |
|
|
FonderiaDigitale wrote: | ricordatevi di comprarvi un UPS buono
EDIT: due critiche:
- vedo che usi tmpfs. a differenza di ramfs, tmpfs usa prima la ram, se la piena passa a scrivere sui dischi. non credo sia quello che tu vuoi (o sbaglio, magari come misura cautelativa?)
- vedo che usi, dopo aver montato i dischi ram, un comando eend generico: per una cosa delicata come un disco, "some filesystems" non puo' essere considerato un'opzione valida. che ne dici di creare un loop per ogni disco e mettere l'eend dentro il loop? |
Allora, dato che ho solamente tradotto non saprei risponderti sulla prima domanda, dato che la differenza tra ramfs e tmpfs non mi é chiara del tutto. In che senso "a differenza di ramfs"? ramfs non scrive prima sulla ram?
Per la questione dell'eend ho piu o meno capito quello che intendi, solo che temo di fare una cosa poco pulita. Bé, io ci provo e mi correggete.
@Guglie: si che idiota mi sono dimenticato di citare la fonte...
In quanto alla dimensione delle lib... bé, ognuno carica in ram quello che può. È ovvio che non tutti abbiamo 2 GB....
In quanto al local.[stop/start], penso tu abbia ragione, anche se non ne sono troppo sicuro. Ecco, magari dovrei provarlo questo HOWTO... |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Sun Feb 20, 2005 2:37 pm Post subject: |
|
|
secondo me invece e' il local.stop visto che se per caso emergi qsa di nuovo lui ad ogni spegnimento aggiorna e la volta dopo hai un sistema in ram aggiornato... ma potrei nn aver capito un tubo. Aspetto che il tutto mi sia un po' piu' chiaro e poi provero' sicuramente, mi sn gia' procurato un disco x gli esperimenti visto che c'e' da smanettare cn le partizioni... _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
kattivo Guru
Joined: 28 Jan 2005 Posts: 450 Location: Treviso
|
Posted: Tue Feb 07, 2006 2:48 pm Post subject: |
|
|
Volevo ricordare l'esistenza dello slot i-ram pci, con batteria.....se per caso si stakka la spina...non si bestemmia _________________ Eurostep Consulting S.r.l.
Andrea P. <andrea@eurostep.it> |
|
Back to top |
|
|
Dr.Dran l33t
Joined: 08 Oct 2004 Posts: 766 Location: Imola - Italy
|
Posted: Wed Feb 08, 2006 6:21 pm Post subject: |
|
|
kattivo wrote: | Volevo ricordare l'esistenza dello slot i-ram pci, con batteria.....se per caso si stakka la spina...non si bestemmia |
mmm... interessante praticamente un hdd a tutti gli effetti basato su memorie RAM volatili... voglio darci proprio una buona occhiata _________________ :: [Dr.Dran] Details ::
- Linux User # 286282
- IT FreeLance Consultant
- President of ImoLUG [Imola & Faenza Linux User Group] |
|
Back to top |
|
|
Truzzone Guru
Joined: 16 Oct 2003 Posts: 492 Location: Italy
|
Posted: Wed Feb 08, 2006 6:41 pm Post subject: |
|
|
kattivo wrote: | Volevo ricordare l'esistenza dello slot i-ram pci, con batteria.....se per caso si stakka la spina...non si bestemmia |
Vedo sprecato una cosa del genere poichè il tutto è limitato alla connessione SATA, se si pensa a 4gb "diretti" negli slot ram
Ciao by Truzzone |
|
Back to top |
|
|
kattivo Guru
Joined: 28 Jan 2005 Posts: 450 Location: Treviso
|
Posted: Wed Feb 08, 2006 7:17 pm Post subject: |
|
|
DranXXX wrote: | kattivo wrote: | Volevo ricordare l'esistenza dello slot i-ram pci, con batteria.....se per caso si stakka la spina...non si bestemmia |
mmm... interessante praticamente un hdd a tutti gli effetti basato su memorie RAM volatili... voglio darci proprio una buona occhiata |
io ne ho fatto delle prove con uno economico della gigabyte..che puo' tenere fino a 4 gb di ram....è un hd a tutti gl'effetti...
li ho provati su un controller SATA della 3ware... in stripping.....volava..! _________________ Eurostep Consulting S.r.l.
Andrea P. <andrea@eurostep.it> |
|
Back to top |
|
|
netarrow n00b
Joined: 21 Feb 2006 Posts: 15
|
Posted: Wed Jun 07, 2006 4:38 pm Post subject: montare gentoo sulla ram? |
|
|
Ciao a tutti, sono giorni che cerco su gentoo.org, wiki gentoo, sul forum ma non riesco a ripescare quella guida che diceva come montare gentoo sulla ram o qualcosa di simile e che apriva mozilla in 0.2 secondi... so che magari è un po dispersiva come domanda ma non ho neanche trovato le giuste keywords per cercare nel forum o da altre parti; se qualcuno ha capito e si ricorda il tutorial a cui mi riferisco e me lo linka mi fa un favore.
grazie ciao! |
|
Back to top |
|
|
ProT-0-TypE Veteran
Joined: 20 Dec 2003 Posts: 1624 Location: Cagliari
|
|
Back to top |
|
|
netarrow n00b
Joined: 21 Feb 2006 Posts: 15
|
Posted: Wed Jun 07, 2006 5:46 pm Post subject: |
|
|
SI! grazie mille |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Wed Jun 07, 2006 6:00 pm Post subject: |
|
|
Ho fatto il merge con il topic indicato da ProT-0-TypE. _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
misterwine Guru
Joined: 14 Nov 2005 Posts: 341 Location: Zelarino (VE)
|
Posted: Thu Jun 08, 2006 9:29 am Post subject: |
|
|
Bisogna proprio avere partizioni separate come indicato all' inizio del tip?
Scusate l'ignoranza, ma avendo io queste partizioni:
/
/boot
/home
swap
non posso farci nulla?
[OT] Ho provato prelink seguendo questa guida, ma non ho notato nessun miglioramento in velocità purtroppo. _________________ "Se in un primo momento l' idea non è assurda,
allora non c'è nessuna speranza che si realizzi." (A.Einstein) |
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Wed Jan 17, 2007 3:17 pm Post subject: |
|
|
fbcyborg wrote: | Salve a tutti,
ho la necessità di montare una directory e tutto il suo contenuto in RAM...
sto facendo così ma poi non vedo nulla montato:
Code: | mount -t tmpfs /dir/da/montare/ -o size=4000M,mode=777 /mnt/tmpfs |
Perché se faccio ls /mnt/tmpfs non vedo il contenuto della directory da montare?
Mi serve per velocizzare l'accesso ad una directory momentaneamente.
Grazie. |
Con quel comando monti una partizione tmpfs vuota sopra /dir/da/montare ... _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Wed Jan 17, 2007 4:06 pm Post subject: |
|
|
fbcyborg wrote: | OK, poi ho copiato quello che mi serviva "in ram" con un cp verso il punto di mount.. ma non ho risolto molto... le prestazioni mi sembra siano le stesse... |
Le prestazioni non cambiano di una virgola, quello che cambia è il tempo di caricamento dell'applicazione.
/EDIT:scusa, non avevo letto bene quello che avevi scritto ... descrivi meglio il tuo problema, cosa hai copiato in ram e come fai a dire che le prestazioni sono le stesse ? _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
napass n00b
Joined: 21 Oct 2007 Posts: 33
|
Posted: Mon Jan 14, 2008 12:29 pm Post subject: |
|
|
boolean RIESUMAZIONE_THREAD = true;
a parte gli scherzi, mi sembra un buon howto... qualcuno ci ha provato davvero??
non ci sono rischi nel caso vada via la corrente e si ha un pc senza UPS ??
accetto vari consigli...
grazie!!
ciao ciao _________________ Gentoo Rulez! |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Mon Jan 14, 2008 12:40 pm Post subject: |
|
|
napass wrote: | boolean RIESUMAZIONE_THREAD = true;
a parte gli scherzi, mi sembra un buon howto... qualcuno ci ha provato davvero??
non ci sono rischi nel caso vada via la corrente e si ha un pc senza UPS ??
accetto vari consigli...
grazie!!
ciao ciao |
Innanzi tutto sappi che hai rischi se va via la corrente e non hai un UPS a prescindere da questo howto.
Io mi ci sono trovato benissimo, ho provato qualche variazione sul tema ma in linea di massima non ho mai avuto problemi (io ho un UPS). _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
napass n00b
Joined: 21 Oct 2007 Posts: 33
|
Posted: Mon Jan 14, 2008 12:57 pm Post subject: |
|
|
Kernel78 wrote: |
Innanzi tutto sappi che hai rischi se va via la corrente e non hai un UPS a prescindere da questo howto.
Io mi ci sono trovato benissimo, ho provato qualche variazione sul tema ma in linea di massima non ho mai avuto problemi (io ho un UPS). |
bhè allora mi sa che devo abbandonare l'idea... non è frequente che capiti un'interruzione di corrente ma può sempre accadere...
grazie! _________________ Gentoo Rulez! |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Mon Jan 14, 2008 1:09 pm Post subject: |
|
|
napass wrote: | Kernel78 wrote: |
Innanzi tutto sappi che hai rischi se va via la corrente e non hai un UPS a prescindere da questo howto.
Io mi ci sono trovato benissimo, ho provato qualche variazione sul tema ma in linea di massima non ho mai avuto problemi (io ho un UPS). |
bhè allora mi sa che devo abbandonare l'idea... non è frequente che capiti un'interruzione di corrente ma può sempre accadere...
grazie! |
Ribadisco che se va via la corrente (o se ci sono sbalzi) e non hai un UPS corri sempre dei rischi che si sputtani qualcosa a livello di software o di hardware.
Usare questo metodo ti espone solo a qualche rischio in più.
Io consiglio l'UPS a tutti ... _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
|