Hi all,
toto je prvotny navod, uz mi to dlhsiu dobu funguje tak som sa rozhodol ze sa podelim. Ide len o scketch, mozno to casom opravim. Akekolvek otazky postnite do diskusie, mozno odpoviem ;)
good luck
Aj vy zobudzate pocitac na 5 minut len preto aby ste si pozreli na nete nejake info a hned to aj vypnete? 20x za den?
Robil som to aj ja, ale iritovali ma nutne load/unload cykly harddisku. Tak som sa rozhodol si to trosku zmenit a bezat s read-only root filesystemom z SD karty.
Ako to cele funguje?
SD karta nie je bootovatelna, potrebujeme USB kluc s grubom a vmlinuz/initrd ktore sa z neho nacitaju a nasledne nabootuju s SD karty.
SD karta bude obsahovat len standardny root filesystem, priecinky do ktorych je nutne pristupovat/zapisovat budu v RAMke a teda ako tmpfs.
Podme teda na to, ja pouzivam PCLinuxOS2009Beta2 (neuveritelne stabilne, aspon an mojom HW):
1.nainstalujte a nakonfigurujte si vasu instalaciu - root filesystem by mal byt ext2!!!!!
2.skopirujte celu / particiu, cez livecd/usb PartitionMagic alebo obdobne na SD kartu.
3.nutne upravy:
priecinky nutne zapisovatelne su: /tmp a /var a samozrejme /home /root
- /tmp vybabreme lahko, kedze ziadne subory s tohto priecinku nemusia byt zachovane po vypnuti PC
teda pridame do /etc/fstab:
tmpfs /tmp tmpfs defaults 0 0
- /var, /home a /root usposobime tak, aby sa pri boote nacital to ramky aj so ziadanym obsahom a to nasledovne
- /var premenujeme na /var2, /home na /home2 a /root na /root2
- vytvorime symlinky ln -s /home /dev/shm/home
- ln -s /root /dev/shm/root
- var obsahuje aj zlozku /var/lib ktora je staticka a nie je nutne do nej zapisovat, okrem toho ma 140MB(aspon u mna) ktore by som zbytocne drzal v ramke
- preto v priecinku /var vytvorime symlinky vsetkych priecinkov na prislusny priecinok v /dev/shm/var/xyz okrem /var/lib, ktory presunieme naspat do zlozky /var
- dalsim potrebnym zapisovatelnym suborom je /etc/mtab, vyriesime to jednoducho, rm /etc/mtab , ln -s /etc/mtab /proc/mounts
- priecinok /etc/resolvconf a subor resolv.conf by tiez rad bol zapisovatelny
- mkdir /etc/resolveshm
- mv /etc/resolvconf /etc/resolvshm
- mv /etc/resolv.conf /etc/resolvshm
- ln -s /etc/resolvconf /dev/shm/etc/resolvconf
- ln -s /etc/resolv.conf /dev/shm/etc/resolv.conf
- rm /etc/resolv.conf.save
- uz nam zostava len nastavit init tak, aby pri bootovani tieto priecinky boli v /dev/shm vytvorene a nakopirovany don spravny obsah. Viem, dalo by sa to vyriesit aj elegantnejsie, ale toto funguje ;)
- otvorte si: /etc/rc.d/rc.sysinit
- riadok 444 pridame nieco taketo, chown je nutny, priradte adekvatne cislo a nahradte xyz vasim username
- #modified to boot from SD ro
- cp -r /etc/resolveshm /dev/shm/etc
- cp -r /root2 /dev/shm/root
- cp -r /var2 /dev/shm/var
- cp -r /home2 /dev/shm/home
- chown -R 501 /dev/shm/home/xyz
dalej, okolo riadku 817:
upravte remount-rw na remount-ro
# Remount the root filesystem read-only, modified 4 SD boot, otherwise should be rw
if remount_needed ; then
action "Remounting root filesystem in read-only mode!!!!: " mount -n -o remount,ro /
fi
that is it.
Vybrat HDD, zmenit /etc/fstab aby:
#root filesystem
/dev/sda1 / ext2 noatime,ro 0 0
nabootvat z USB, potom ako sa nacita vmlinuz a initrd vybrat usb kluc (aby SD karte bolo priradeny identifier sda)
vychytavky:
mam k routru pripojeny HDD, takze zmeny, ktore si spravim v /home priecinku a chcem mat zachovane ak potrebujem reboot si tam mozem ukladat a pri boote nahrat naspat. samozrejme, pri velkych zmenach je idealne ich ulozit na SD kartu.
po urcitom case pouzivania, ked sa zaplni cache, nie je mozne spustit nijaku aplikaciu, resp. niektore ktore su narocne na ram, v konzole vyhodi Segmentation fault. Mozno to obist vyprazdnenim cache, ako root zadat: sync; echo 3 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches # free pagecache
[OR]
echo 2 > /proc/sys/vm/drop_caches # free dentries and inodes
[OR]
echo 3 > /proc/sys/vm/drop_caches # free pagecache, dentries and inodes
sync # forces the dump to be destructive
There are huge consequences to dumping these caches and running sync. If you are writing data at the time you run these commands, you’ll actually be dumping the data out of the filesystem cache before it reaches the disk, which could lead to very bad things.
While discussing the issue with a coworker, he found a different method for correcting the issue that was much safer. You can echo values into /proc/sys/vm/vfs_cache_pressure to tell the kernel what priority it should take when clearing out the inode/dentry caches. LinuxInsight explains the range of values well:
At the default value of vfs_cache_pressure = 100 the kernel will attempt to reclaim dentries and inodes at a “fair” rate with respect to pagecache and swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes.
In short, values less than 100 won’t reduce the caches very much as all. Values over 100 will signal to the kernel that you want to clear out the caches at a higher priority. I found that no matter what value you use, the kernel clears the caches at a slow rate. I’ve been using a value of 10000 on the server I talked about earlier in the article, and it has kept the caches down to a reasonable level.
/.Xauthority tiez do ram
/etc/X11/xorg.conf do ram
/usr/share/X11/xkb/compiled redirect link to /var/lib/xkb
/var/lib/xkb do ram a upravit link
No comments:
Post a Comment