Działa na karcie SD tylko do odczytu


20

Skonfigurowałem Raspberry Pi do uruchamiania XBMC i chcę go uruchomić, aby zawsze odtwarzać listę odtwarzania i pliki na karcie SD. Wyłączyłem automatyczną aktualizację Raspbmc. Nadal działa dobrze, gdy przełączę kartę SD w pozycję „blokady”. Teraz moje pytania to:

  1. Czy system kart SD „tylko do odczytu” będzie działał przez cały czas w mojej aplikacji?

  2. Ponieważ karta SD jest zawsze w trybie tylko do odczytu, jeśli nie użyję polecenia zamknięcia, a po prostu wyłączysz wyłącznik zasilania, czy spowoduje to uszkodzenie mojego systemu?

  3. Nawet jeśli działa to niezawodnie, zawsze wyświetli się komunikat „Raaspbmc nie zamknął się poprawnie”. Czy jest jakiś sposób, aby wyłączyć ten komunikat, gdy Pi się włącza?


1
Jeśli chcesz, aby działało to niezawodnie, musisz upewnić się, że odpowiednie systemy plików są również zamontowane jako tylko do odczytu.
Jivings

Odpowiedzi:


14

Miałem podobne zastosowanie. Używam Pi do zawężania stron internetowych przy wejściu do budynku. Zasilanie Pi za pośrednictwem portu USB w telewizorze.

Montuj / tylko do odczytu.

Aby był odporny na utratę zasilania zamontowałem / tylko do odczytu, zmieniając wejście liniowe /etc/fstab

/dev/mmcblk0p2  /               ext4    defaults,noatime,ro  0       1

Dość proste. Ale niektóre procesy na funkcjonalnej maszynie wymagają zapisu.

Zamontuj / tmp w pamięci.

Wiele rzeczy pisze, /tmpwięc umieściłem to w pamięci, dodając wiersz do/etc/fstab

tmpfs           /tmp            tmpfs   defaults,size=30M    0       0

Miałem 512 MB Pi, więc zrobiłem / tmp 30M duży.

Wyłącz usługi, których nie potrzebuję.

Wyłączyłem, rsyslogaby zatrzymać rejestrowanie i dphys-swapfileponieważ nie ma tam prawdziwego miejsca do pisania. Bieganie bez zamiany sprawi problemy, jeśli wykonasz ciężkie podnoszenie wymagające dużej ilości pamięci. W moim przypadku uruchomienie jednego procesu midori na jeden dzień nie jest. cat /etc/rc2.d/READMEna twoim Pi, jak to zrobić. (raspbian domyślnie uruchamia się na poziomie 2, raspbmc może się różnić)

Niech usługi, których potrzebuję , wymagają faux-write.

Możesz zapewnić dostęp do zapisu do systemu plików w pamięci tak, jak robi to live-cd; z mocowaniem związkowym . Ale nie podobała mi się perspektywa kompilacji mojego własnego jądra dla unionfs lub późniejszych aufs . Na szczęście unionfs-fusejest już dostępny. Nie można zamontować związku /, ale czy naprawdę tego potrzebuję?

Uruchamiając midori potrzebuję X do pracy. X chce pisać, /home/pigdy autologuję jako pi, i do kilku miejsc w /varpostanowiłem zamontować je w miejscach za pomocą unionfs.

# move original /var and /home aside
mkdir /ro
mv /var /ro
mv /home /ro
# create mount points
mkdir /var /home

i dodał 2 linie do /etc/fstab

unionfs-fuse#/tmp=rw:/ro/var=ro  /var  fuse   cow,allow_other,nonempty
unionfs-fuse#/tmp=rw:/ro/home=ro  /home  fuse   cow,allow_other

Jest to dość nieprzyjemne, ponieważ zapisy do / var, / home i / tmp kończą się w / tmp. Ale potrzebuję tylko mojej maszyny, aby działała przez 8 do 10 godzin, a następnie zasilanie zostaje odcięte. Tak to zrobi.

Ponowne podłączanie odczytu i zapisu podczas podkręcania

Kiedy zmieniłem sieci, /etc/resolv.confnapisany przez dhclient już nie działał.

$ sudo mount / -o remount,rw
$ ifdown eth0; ifup eth0
$ sudo reboot

Nie zapomnij o czystym wyłączeniu lub ponownym zamontowaniu ro po ponownym zamontowaniu rw.

PS

Jeśli umiesz czytać po niemiecku, istnieje prostszy sposób (z archive.org). Deutsche Gründlichkeit ...


4

Styk blokady karty SD nie jest w ogóle podłączony na płytce drukowanej, więc blokowanie jest wirtualne, chyba że karta ma wewnętrzny mechanizm blokujący. Spróbuj zapisać cokolwiek na karcie SD, gdy jest zablokowana, i sprawdź to sam.


4

Przełącznik SD tylko do odczytu jest co najwyżej opcją oprogramowania. Prawie każde urządzenie, które mam, zignoruje je, a jeśli komentarz Avry jest poprawny, Raspberry Pi może nie mieć sposobu, aby stwierdzić, czy jest włączony, czy wyłączony. Więc na twoje pytania:

  1. Tak, zadziała, ponieważ nie jest tylko do odczytu.
  2. Tak, spowoduje to uszkodzenie twojego systemu. Będziesz musiał spojrzeć na montowanie roota tylko do odczytu i posiadanie małego systemu plików ram / tempfs dla rzeczy, które Linux musi śledzić.
  3. Nie, ponieważ istnieje duża szansa, że ​​uszkodzisz system plików.

Odpowiedź @avra jest prawidłowa, ponieważ fizyczny przełącznik, który wykrył pozycję suwaka ochrony przed zapisem na standardowych kartach SD używanych we wcześniejszych RPis (nie jestem pewien co do kart mikro-rozmiarów, moje nie wydają się mieć coś takiego) nie jest podłączony do niczego (to znaczy styki z boku uchwytu karty) drugi przełącznik (na dole uchwytu karty) jest przełącznikiem „włóż kartę” i jest monitorowany przez RPi.
SlySven

2
  1. Nie korzystałem z XBMC, ale nie jest to dobry pomysł WRT do normalnego systemu operacyjnego, chyba że dołożysz wszelkich starań, aby go skonfigurować w tym celu. W konsekwencji, jeśli XBMC nie jest jawnie skonfigurowany, więc nie jest to również dobry pomysł.

  2. Jeśli karta naprawdę jest tylko do odczytu , tak naprawdę NIE uszkodzi twojego systemu, jednak gdyby była tak naprawdę tylko do odczytu, prawdopodobnie nie dojdziesz do punktu, w którym możesz uruchomić system. Jeśli zrobiłeś (co oznacza, że ​​jesteś pewien, że cała karta jest naprawdę tylko do odczytu!), Nie przejmuj się wyłączaniem. Po prostu wyciągnij wtyczkę. Ponieważ nic na karcie nie może się zmienić, nie ma znaczenia, co robisz.

  3. Jasne, możesz znaleźć odpowiedzialne pliki inicjujące i edytować je (oczywiście system plików będzie musiał nadawać się do zapisu).

Realistycznie, jeśli zamontujesz główny system plików tylko do odczytu (może to być trudniejsze niż tylko użycie przełącznika blokady), prawdopodobnie nie uda się uruchomić systemu, ponieważ system operacyjny musi zapisywać na dysk. JEDNAK, jeśli to zrobisz, możesz robić, co chcesz (i uciec). Jeśli karta jest tylko do odczytu, nie można jej zmienić, więc nie możesz wyrządzić żadnej szkody.


2

Jeśli tylko to zrobisz

1.

/ dev / mmcblk0p2 / ext4 defaults, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat defaults, noatime, ro 0 1
masz system tylko do odczytu.

2)

Możesz uruchomić Xorg za pomocą: -logfile /tmp/Xorg.log i znaleźć inną usługę, która wymaga dostępu do zapisu, przekieruj ją do / tmp

3)

Jak już wspomniano, wyłącz usługę, której nie potrzebujesz

insserv -r dphys-
swapfile insserv -r rsyslog
insserv -r samba (jeśli jest zainstalowany) itp

wtedy nie powinno być żadnego problemu. Dobrym pytaniem jest to, czy karta SD nie będzie w ogóle uszkodzona, jeśli tylko RO i zasilanie przez cały czas ...

Wreszcie piękny ekran powitalny i gotowe, masz niestandardowe tanie samodzielne urządzenie. :) I podoba mi się pomysł zasilania PI przez port USB z telewizora. Ale czy to nie jest ograniczone do 500mA? Nie jesteś pewien, ale PI potrzebuje około 1A czy nie?


dhcpclient musi napisać plik /etc/resolv.conf i prawdopodobnie inne lokalizacje w / var. Fajnie, że wspomniałeś o poleceniach insserv, potrzebowałem ich; Odbudowuję nasze urządzenia, aby uzyskać nowe certyfikaty ca.
Chris Wesseling

1

Szybkie spojrzenie na to online sugeruje, że nikt nie opublikował żadnego rozwiązania tego w najnowszej wersji XBMC.

Głównym problemem, jak wskazał Goldilocks, jest to, że XBMC nie został zaprojektowany z myślą o tym, aby był tylko do odczytu. Ten punkt jest pogłębiony, jeśli spojrzysz na ten wątek na forum OpenELEC Media Center. Ogólny konsensus mówi, że Kodi nie jest możliwe tylko do odczytu.

Powodem według użytkownika klojum było:

Praca OpenELEC na urządzeniu tylko do odczytu nie nastąpi. Kodi musi przechowywać / aktualizować swoje bazy danych o informacje wideo. Partycja systemowa skonfigurowana jako tylko do odczytu z jakiegoś powodu. Wszystkie ustawienia przechodzą przez 2. partycję / storage. Więc usunięcie tego, za pomocą cmdline lub w inny sposób, nie jest opcją. Przywracanie systemu po każdym ponownym uruchomieniu jest szalone. Zainstaluj OE, dostosuj go do swoich życzeń i wykonaj pełną kopię zapasową / obraz. Przywróć to w razie problemów

Może być na to sposób, ponieważ ludzie znaleźli obejścia dla starszych wersji, ale generalnie nie sądzę, że jest taka potrzeba.

Rozumiem jako osobę, która używa Kodi od kilku lat irytację powodującą uszkodzenie karty SD. Są jednak inne prostsze sposoby złagodzenia problemu, które nie obejmują majsterkowania kodu niskiego poziomu.

Pierwszym powodem, dla którego karta SD zostanie uszkodzona, jest nagła przerwa w zasilaniu. Istnieje kilka powodów, dla których tak się dzieje. Albo ktoś odłączy zasilanie do Pi w trakcie zapisu na karcie SD. Lub system zawiesza się i musisz odłączyć zasilanie. Chociaż myślę, że drugi powód jest mniej prawdopodobny, by spowodować korupcję. Lub sugeruje to, że gra ma inną wadę.

We wczesnych dniach Pi obwód zasilania na płycie z pewnością pozostawiał wiele do życzenia. Pamiętam dni powodowania awarii systemu po prostu przez podłączenie klucza USB do Pi, gdy był włączony. Jeśli nie wierzysz mi, widzę problemy z uruchomieniem XBMC na Raspberry Pi 2011 . Innym problemem jest to, że oprogramowanie na początku nie było w pełni dojrzałe. Pi był innym podejściem do tego, czym mógłby być komputer stacjonarny, a rozwiązywanie problemów z oprogramowaniem wymaga czasu. Tak więc znacznie nowsze wersje Kodi są mniej narażone na przypadkowe zawieszanie się systemu.

Aby rozwiązać problem nagłej utraty zasilania, zasil swój Pi za pomocą pewnego rodzaju zasilacza awaryjnego (UPS). Zwykły UPS działałby, ale w rzeczywistości istnieją specjalnie zaprojektowane UPS. Jak ten nieprzerwany zasilacz dla Raspberry Pi . Jeśli nastąpi zawieszenie systemu, powinno to być coś, na co jesteś przygotowany. Oznacza to skonfigurowanie systemu operacyjnego ze wszystkimi ustawieniami i aplikacjami oraz preferencjami według własnego gustu, a następnie zrobienie zdjęcia karty SD. Więc jeśli coś pójdzie nie tak, możesz po prostu ponownie zeskanować kartę SD.

Innym powodem awarii karty SD jest jej zużycie. Nie jest to jednak problem, którego sam doświadczyłem. Jeśli używasz wysokiej jakości karty SD renomowanej marki, myślę, że prawdopodobnie jesteś w połowie drogi do rozwiązania tego problemu. Aby zminimalizować zużycie karty SD, oznacza to, że karta SD robi absolutne minimum. Nie należy go używać jako miejsca do przechowywania ogromnej kolekcji filmów itp.

Opcją, która będzie działać z OpenELEC, jest uruchomienie go z napędu USB. Oczywiście wszystkie pliki rozruchowe będą musiały pozostać na karcie SD. Istnieje wiele samouczków, jak to zrobić. Jest jeden, który wydaje się dość łatwy do naśladowania tutaj , ale dla kompletności dam ci przegląd:

Pierwszym krokiem jest skonfigurowanie karty SD i napędu USB. Używając programu takiego jak MiniTool Partition Wizard sformatuj kartę SD jako FAT32 z podstawową aktywną partycją o wielkości 150 MB lub większej, w rzeczywistości cała karta SD może być sformatowana jako FAT32. Upewnij się tylko, że partycja jest ustawiona jako podstawowa aktywna. Przydatne może być również oznaczenie karty SD jako coś w rodzaju SYSTEMU, abyś pamiętał, do czego służy w przyszłości. Następnie sformatuj cały dysk USB jako jedną podstawową aktywną partycję z typem systemu plików EXT4, ponownie warto oznaczyć go jako coś w rodzaju STORAGE.

Po pobraniu i rozpakowaniu OpenELEC przejdź do folderu głównego. I wybierz te pliki:

openelec.ico
README.md

I skopiuj je do katalogu głównego karty SD.

Następnie targetskopiuj pliki z folderu:

KERNEL
SYSTEM

I ponownie wklej je do katalogu głównego karty SD.

Następnie z 3rdparty/bootloaderfolderu skopiuj pliki:

bootcode.bin
config.txt
fixup.dat
LICENCE.broadcom
start.elf

I wklej je do katalogu głównego karty SD.

Ostatnim krokiem jest zmiana nazwy pliku KERNELna karcie SD na kernel.img.

Aby utworzyć pliki startowe, w katalogu głównym karty SD utwórz plik o nazwie cmdline.txti dodaj do niego następujący wiersz:

boot=/dev/mmcblk0p1 disk=/dev/sda1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 ssh

Pamiętaj, aby zamknąć plik, zapisując go. I stamtąd możesz iść. Źródło informacji sugerowało wyłączenie XBMC z napędu USB, zwiększoną szybkość reakcji. Nie jestem pewien tego twierdzenia, ale nie zobaczysz żadnego spadku wydajności w wyniku użycia tej metody.

Jeśli chodzi o kolekcję multimediów, sugeruję przechowywanie tego na drugim dysku, niezależnie od tego, czy jest to USB, czy lokalizacja sieciowa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.