05 Maja 2024 16:43:20
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· [HOWTO] Kompilacja "...
· [Howto] Xpenology na...
· nju swiatło pytania
· konfiguracja router ...
· Asus TUF-AX3000_V2 p...
· Jaki router kupić? ...
· Szukam zaproszenia n...
· dodatkowe złącza s...
· RT-N18U - nie można...
· [MOD] Tomato64 (x86-64)
· Firewall nie zawsze ...
· [MOD] FreshTomato-AR...
· Optware na CIFS
· RT-AX56U - Status kl...
· [MOD] FreshTomato-MI...
· Multiroom N z wykorz...
· [S] Asus RT-AC68U E1
· [S] ASUS RT-AC68U
· Rozłączanie klient...
· serwer VPN za wan'em
Najpopularniejsze obecnie wątki
· [HOWTO] Kompilacj... [65]
· [Howto] Xpenology... [22]
· nju swiatło pytania [4]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [216 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 416
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.144.161.116
Zobacz wątek
OpenLinksys » :: PORTAL :: » Tutoriale
 Drukuj wątek
[HOW-TO] XBMCLive na Ramdysku - krok po kroku
neotix
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]

Cytat

sudo nano /etc/fstab


Dodajemy na końcu i zapisujemy

Cytat

# XBMC Ramdisk
none /dev/xbmcramdisk tmpfs defaults,size=2048m 0 0


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.

Edytujemy fstab

Cytat

sudo nano /etc/fstab


Dodajemy

Cytat

# Synchronizacja Ramdysku
UUID=tutaj wklejamy zapisany numer /home/xbmc/xbmcsync ext4 defaults 0 2

Zapisujemy zmiany

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
 
b3rok
@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
 
shibby
Uruchamiamy XBMC
sudo service xbmc-live stop

cos mi tu nie pasuje Wink
Proxmox VE: i7-7700T, 64GB RAM, 3x2TB SSD, 1x1TB SSD, 512GB NVMe, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology DS920+
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
 
neotix
@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
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 9

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

Adooni
26-04-2024 14:41
jaki router RMerlin nie pociagne, tomato/ openwrt tak non hilink,

tamtosiamto
23-04-2024 12:35
modem bez smilocka?

man1
22-04-2024 23:27
Czy próbował ktoś uzywac karty voice (z nolimit GB) od tmobile w modemie /routerze? Da się jakoś to zrobić? Bo u mnie neta brak. E3372 Sad

tamtosiamto
31-03-2024 12:54
Wesolego jajka wszytskim forumowiczom Grin

tamtosiamto
28-03-2024 23:24
tak, tak zgadza sie, ale ja pytam o wykluczenie noda na guest network w first set, i to nie dziala

Adooni
24-03-2024 13:16
Guest network is currently designed to allow the first set of each band (2.4G, 5G, 5G-1) available to the AiMesh node

tamtosiamto
24-03-2024 03:03
ale w 1 jest opcja do wyboru - dla calej sieci albo rutera only i wlasnie o tym mowie, ze nie dziala

Adooni
23-03-2024 16:31
w dokumencie asusa jest ze wlasnie dla 1 ma dzialac na nodach tez

tamtosiamto
23-03-2024 15:39
tak, ale nie zmienia to faktu, ze w pierwszej nie dziala wylaczanie aimesh dla goscinnej( a powinno), czyli jest jakis bug. Mam start soft, bo to dsl-ac68 ktory nie jest juz updateowany

Adooni
22-03-2024 18:07
nie, 1 wsza bedzie wszedzie trzeba 2ga zrobic dla kazdego pasma te nie sa przenoszone

71,586,029 unikalnych wizyt