POST ZOSTAŁ EDYTOWANY PONIEWAŻ WYPRÓBOWAŁEM METODĘ I DZIAŁA.
UWAGA: Tutorial został przeze mnie sprawdzony i nie wystąpiły komplikacje. Niemniej każdy kto postanowi wykorzystać go, robi to na swoją odpowiedzialność. Nie odpowiadam za żadne problemy ze sprzętem ani utratę danych wynikających z użycia poniższego tutoriala. Także proszę o krytyczne podejście do poniższego tekstu, a szczególnie pod względem ewentualnych błędów.
Niedawno trafiłem na temat traktujący o przeniesieniu XBMC do Ramdysku
Na jego podstawie postanowiłem zrobić tutorial lepiej opisany i zrozumiały dla laika.
Instalacja XBMCLive
Tutaj nie ma co pisać bo jest to proces intuicyjny i szeroko opisany. Całość polega praktycznie na zatwierdzeniu instalacji i czekaniu każ się wszystko sfinalizuje. Jedynie partycjonowanie wymaga naszej uwagi. Ja instalując na pendrive użyłem całego dostępnego miejsca na partycję podstawową ext4 z dodatkową flagą noatime dla wydłużenia żywotności. Swapa nie robiłem.
Utworzenie Ramdysku
XBMCLive bazuje na Ubuntu, a więc już na starcie mamy do dyspozycji dynamiczny Ramdysk, który zamontowany jest w /dev/shm/
Jednak wiele osób (w tym ja) woli utworzyć odrębny Ramdysk dla XBMC z góry określoną maksymalną wielkością.
Tworzymy katalog dla naszego RAMDysku:
Cytat
sudo mkdir /dev/xbmcramdisk
Może to być dowolny katalog w dowolnym miejscu, ale dla porządku chyba lepiej jest stworzyć go w tym miejscu.
Edytujemy fstab [odpowiedzialny za montowanie partycji przy starcie systemu]
size=2048m oznacza utworzenie Ramdysku o pojemności 2GB. Wartość tę można dowolnie modyfikować w zależności jaką pojemność chce się uzyskać.
Można również użyć ramfs zamiast tmpfs. Główna różnica jest taka, że ramfs rozrasta się dynamicznie w zależności od ilości danych (w ostateczności może zapchać cały ram) zaś tmpfs nie pozwoli na zapis powyżej ustawionej wielkości ramdysku.
Zostaje jeszcze tylko zamontować Ramdysk i przydzielić uprawnienia
Cytat
sudo mount -a
sudo chown -R xbmc:xbmc /dev/xbmcramdisk
sudo chmod -R 755 /dev/xbmcramdisk
Teraz mamy Ramdysk o wielkości 2GB automatycznie tworzony i montowany do katalogu /dev/xbmcramdisk przy każdym starcie systemu.
Utrwalenie RAMDysku
Jak wiadomo RAM ma to do siebie, że traci dane przy każdym restarcie. Tak więc by tego uniknąć trzeba synchronizować je pomiędzy Ramdyskiem, a HDD. Wtedy przy każdym wyłączeniu kompa dane z Ramdysku będą zgrywane na dysk twardy i po włączeniu przywracane z powrotem.
Ja do synchronizacji danych użyłem innego pendrive ze względu na to, że dyski chciałem mieć niezależne z bezproblemową możliwością ich odpięcia.
Jeśli ktoś chce użyć partycji z systemem to może pominąć ten etap:
Po włożeniu pendrive do USB należy zostanie on automatycznie wykryty i zamontowany w katalogu /media. Nas to jednak nie urządza ponieważ montowanie to odbywa się z poziomu XBMC a więc za późno. Musimy ręcznie ustawić montowanie w fstab.
Zidentyfikowanie pena
Cytat
sudo blkid
Pojawi się lista wszystkich podpiętych dysków, a wśród nich będzie również nasz podpięty pendrive. Najprawdopodobniej będzie on sformatowany na FAT32 lub NTFS i po tym najłatwiej go rozpoznać. Ewentualnie wyjmujemy go, sprawdzamy listę i porównujemy, którego brakuje.
Jeśli już wiemy, który to nasz pendrive to zapisujemy sobie jego UUID (bez cudzysłowu). Jeśli na penie nie ma partycji linuksowej to numeru UUID może nie być. W takim przypadku należy ją utworzyć. Zapisujemy sobie jak nazwany jest nasz pen (przykładowo /dev/sdd). Jest to ważne ponieważ przez pomyłkę można utracić dane na innym dysku.
Partycjonowanie
Cytat
sudo fdisk /dev/sdd
Usuwamy zbędne partycje
Cytat
d
i podajemy numer partycji. Robimy to tyle razy aż usuniemy wszystkie partycje na pendrive (u mnie w przypadku NTFS było ich 4).
Tworzymy nową partycję
Cytat
n
Wybieramy partycję podstawową
Cytat
p
Numer partycji
Cytat
1
First Cylinder oraz Last Cylinder bez wpisywania zatwierdzamy enterem
Robimy podgląd czy dobrze nam wszystko utworzyło
Cytat
p
Jeśli coś jest nie tak to wracamy do początku. Usuwamy partycje i tworzymy od nowa.
Zatwierdzamy zmiany
Cytat
w
Wychodzimy z programu
Cytat
q
Formatujemy nową partycję
Cytat
mkfs.ext4 -L "xbmcsync" /dev/sdd1
Teraz sprawdzamy UUID nowej partycji (będzie nazwana xbmcsync) i zapisujemy ją sobie.
W tej chwili mamy automatycznie montowany pendrive do katalogu /home/xbmc/xbmcsync
Dla pewności czy wszystko działa radze zrestartować system i sprawdzić czy partycja montuje się tam gdzie powinna. oraz czy Ramdysk został utworzony tak jak chcieliśmy.
Tworzymy katalog do synchronizacji naszego Ramdysku
Cytat
mkdir /home/xbmc/xbmcsync/.xbmcramdisk.disk
Teraz tworzymy skrypt do synchnonizacji
Cytat
sudo nano /etc/init.d/xbmcramdisk.sh
W skrypcie wklejamy
Cytat
#! /bin/sh
# /etc/init.d/xbmcramdisk.sh
#
case "$1" in
start)
echo "Copying files from HDD to xbmcramdisk"
echo [`date +"%Y-%m-%d %H:%M:%S"`] Poweron - Ramdisk synched from HDD: start >> /var/log/xbmcramdisk_sync.log
rsync -av /home/xbmc/xbmcsync/.xbmcramdisk.disk/ /dev/xbmcramdisk/
echo [`date +"%Y-%m-%d %H:%M:%S"`] Poweron - Ramdisk synched from HDD: ready >> /var/log/xbmcramdisk_sync.log
;;
sync)
echo "Synching files from xbmcramdisk to HDD"
echo [`date +"%Y-%m-%d %H:%M:%S"`] Running - Ramdisk synched to HDD: start >> /var/log/xbmcramdisk_sync.log
rsync -av --delete --recursive --force /dev/xbmcramdisk/ /home/xbmc/xbmcsync/.xbmcramdisk.disk/
echo [`date +"%Y-%m-%d %H:%M:%S"`] Running - Ramdisk synched to HDD: ready >> /var/log/xbmcramdisk_sync.log
;;
stop)
echo "Synching files from xbmcramdisk to HDD"
#echo [`date +"%Y-%m-%d %H:%M:%S"`] Poweroff - Ramdisk synched to HDD: start >> /var/log/xbmcramdisk_sync.log
rsync -av --delete --recursive --force /dev/xbmcramdisk/ /home/xbmc/xbmcsync/.xbmcramdisk.disk/
#echo [`date +"%Y-%m-%d %H:%M:%S"`] Poweroff - Ramdisk synched to HDD: ready >> /var/log/xbmcramdisk_sync.log
;;
*)
echo "Usage: /etc/init.d/xbmcramdisk.sh {start|stop|sync}"
exit 1
;;
esac
exit 0
Nadajemy uprawnienia
Cytat
sudo chmod +x /etc/init.d/xbmcramdisk.sh
Wrzucamy coś do Ramdysku (jakieś dowolne pliki)
Testujemy
Cytat
sudo /etc/init.d/xbmcramdisk.sh sync
Jeśli nie wywaliło błędów to dane z Ramdysku powinny znaleźć się na pendrive.
Dodajemy do rc by skrypt synchronizacji uruchamiał się przy starcie systemu
Cytat
sudo update-rc.d xbmcramdisk.sh defaults 00 99
W rezultacie powinniśmy otrzymać Ramdsyk, który będzie przywracany przy każdym restarcie kompa.
Dla bezpieczeństwa powinno się dodać zadanie dla Crona by synchronizacja danych z Ramdysku na HDD odbywała się cyklicznie co jakiś czas.
Edytujemy tablicę crontab
Cytat
sudo crontab -e
Dodajemy
Cytat
* */6 * * * /etc/init.d/xbmcramdisk.sh sync
Synchronizacja będzie odbywać się automatycznie co 6 godzin. Dla mnie jest wystarczający czas, ale jak ktoś chce to może sobie ustawić dowolny harmonogram.
Przeniesienie XBMC do Ramdysku
Zatrzymujemy XBMC
Cytat
sudo service xbmc-live stop
Kopiujemy XBMC do Ramdysku
Cytat
cp -a /home/xbmc/.xbmc /dev/xbmcramdisk
Zachowyjemy XBMC znajdujący się na dysku w xbmc_backup (zawsze dobrze mieć kopię bezpieczeństwa)
Cytat
mv /home/xbmc/.xbmc /home/xbmc/.xbmc_backup
Tworzymy link przekierowujący do XBMC w Ramdysku
Cytat
ln -s /dev/xbmcramdisk/.xbmc /home/xbmc/.xbmc
Synchronizujemy pliki
Cytat
sudo /etc/init.d/xbmcramdisk.sh sync
Uruchamiamy XBMC
Cytat
sudo service xbmc-live start
Powinien wystartować z Ramdysku.
U mnie zaowocowało to zwiększoną responsywnością XBMC.
UWAGA: Największym mankamentem owej metody jest to, że start XBMC i skryptu synchronizującego są niezależne. Może się zdarzać, że system będzie chciał uruchomić XBMC zanim się on w pełni zsynchronizuje w Ramdysku.
U mnie jednak przy katalogu XBMC o wadze około 700MB póki co nie ma problemów. Jeśli wystąpią to przeniosę katalog synchronizacji na dysk, który ma dużo szybszy odczyt niż pendrive.
Edytowany przez neotix dnia 18-07-2011 15:02
@neotix - fajny tutorial, ale szkoda, że usunąłeś wcześniejszy wstęp. Z tego co pamiętam to pisałeś czemu/po co ramdysk, że szybciej itp. No i brakuje podsumowania jak to rozwiązanie się sprawuje.
I. Huawei HG8240 + 1x Netgear r7000 @FreshTomato + Synology DS1512+
II. TP-Link TL-WDR4300 @Obsy OpenWRT Gargoyle
III. TP-Link TL-WDR3600 @Obsy OpenWRT Gargyle
@b3rok - cały wstęp jest w wątku źródłowym, do którego link podał house. Tutaj tekst przerobiłem z formy pytania na formę tutoriala.
Podsumowanie też jest
Cytat
U mnie zaowocowało to zwiększoną responsywnością XBMC.
Fakt, że trochę mało rozwinięte, ale nie ma bardzo co dodać. Wcześniej XBMC mulił strasznie. Wczytanie biblioteki, przechodzenie z karty na kartę, otwieranie menu podczas odtwarzania filmu, ściąganie informacji z netu itp. To wszystko było masakrą w moim mniemaniu (przyzwyczaiłem się do responsywności systemy postawionego na ssd). Teraz wszystko działa natychmiast, nie czekam aż mi się pojawi jakieś okienko.
Jedynie co nadal jest problemem to niektóre okładki filmów (większość jest wyświetlana bez widocznego jakiegokolwiek wczytywania). Jeszcze nie rozgryzłem problemu. Może są za duże, może w złym formacie. Niemniej i one wyraźnie przyspieszyły. Wcześniej czekałem z 5 sek. aż się pojawią, a teraz nie trwa to dłużej niż 1sek. Będę musiał jeszcze w nich pogrzebać i zobaczyć czym się różnią od pozostałych wczytywanych natychmiast.
Zauważyłem jeszcze jedną rzecz. Jako, że XBMCLive mam w wersji 32bit to widzi mi tylko 3GB ramu. Jednak Ramdysk nie pochłania tej przestrzeni, a rezerwuje tą nie widzianą. Tak więc mam 700MB w Ramdysku i 3GB dla systemu. Zastanawiam się czy nie przerzucić do Ramdysków innych elementów systemu by go trochę ożywić.
@shibby - już poprawione. Małe przeoczenie przy kopiowaniu podobnych komend.
Netgear WNR3500L + tomato-K26USB-1.28.9052RAF-EN-MIPSR2-031H-Ext by shibby
· Łącznie użytkowników: 24,115 · Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.
Maniek91PL
06-11-2024 22:37
dzięki !
maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia
Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa
overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.
maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.
overflow2
30-09-2024 20:53
Jaki aktualnie najtańszy router do tomato do openvpn?
maxikaaz
27-07-2024 15:07
@servee - na początek router do rozebrania i obejrzenia, ciężko wróżyć tak tylko po objawach
maxikaaz
27-07-2024 14:55
@servee - cały kontroler nie pada tak sobie z powodu "zbiegu okoliczności", więc prawdopodobnie gdzieś przepięcie.
servee
25-07-2024 13:33
@maxikaaz: działało, aż pewnego pięknego dnia przestało działać. W tym dniu była też burza, ale to raczej zbieg okoliczności.
maxikaaz
25-07-2024 11:38
@servee - o ile problem jest w obrębie samych wyjść (dławiki, warystory), to naprawialne, ale jeśli w samym SoC - to nienaprawialne ze względu na koszta. A co było przyczyną?