In esecuzione su scheda SD di sola lettura


20

Ho configurato Raspberry Pi per eseguire XBMC e lo voglio avviare per riprodurre sempre una playlist e file sulla scheda SD. Ho disattivato l'aggiornamento automatico di Raspbmc. Funziona ancora bene quando cambio la scheda SD in posizione "blocco". Ora le mie domande sono:

  1. Il sistema di schede SD "sola lettura" funziona sempre nella mia applicazione?

  2. Poiché la scheda SD è sempre in modalità di sola lettura, se non utilizzo il comando di spegnimento e spengo semplicemente l'interruttore di alimentazione, danneggerebbe il mio sistema?

  3. Anche se funziona in modo affidabile, si aprirà sempre il messaggio "Raaspbmc non si è chiuso correttamente". C'è un modo per disabilitare questo messaggio quando il Pi si accende?


1
Se vuoi che funzioni in modo affidabile dovrai assicurarti che anche i filesystem appropriati siano montati in sola lettura.
Jivings,

Risposte:


14

Ho avuto un uso simile. Sto usando il Pi per restringere le pagine web in un ingresso dell'edificio. Alimentazione del Pi tramite la porta USB della TV.

Montare / sola lettura.

Per renderlo a prova di perdita di potenza ho montato / sola lettura cambiando una linea in /etc/fstab

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

Abbastanza semplice. Ma alcuni processi su una macchina funzionale devono scrivere.

Montare / tmp in memoria.

Molte cose scrivono, /tmpquindi l'ho montato in memoria aggiungendo una riga a/etc/fstab

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

Avevo un Pi disponibile da 512 MB, quindi ho reso grande / tmp 30M.

Disabilita i servizi che non mi servono per scrivere.

Ho disabilitato rsyslogper impedirne la registrazione e dphys-swapfilepoiché non ha un posto reale in cui scrivere. Correre senza cambiare darà problemi se si fa un sollevamento pesante che richiede molta memoria. Nel mio caso, eseguire un singolo processo midori per un giorno non lo è. cat /etc/rc2.d/READMEsul tuo Pi su come farlo. (raspbian si avvia nel runlevel 2 per impostazione predefinita, raspbmc potrebbe essere diverso)

Lasciate che i servizi mi faccio bisogno finto-scrittura.

Puoi fornire l'accesso in scrittura a un filesystem in memoria come fa un live-cd; con un attacco per unione . Ma non mi piaceva la prospettiva di compilare in modo incrociato il mio kernel per unionfs o i successivi aufs . Fortunatamente unionfs-fuseè pre-costruito disponibile. Non può montare il sindacato /, ma ne ho davvero bisogno?

Con Midori ho bisogno di X per funzionare. X vuole scrivere /home/pimentre mi autologo come pi e in un paio di posti in /varho deciso di montarli in posti usando unionfs.

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

e ha aggiunto 2 righe a /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

Questo è piuttosto brutto, come scrive in / var, / home e / tmp tutto finisce in / tmp. Ma ho solo bisogno che la mia macchina funzioni da 8 a 10 ore, quindi l'alimentazione viene interrotta. Quindi questo farà.

Rievocare la lettura-scrittura quando si modificano le cose

Quando ho cambiato rete, il /etc/resolv.confdhclient scritto non funzionava più.

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

Non dimenticare di spegnere in modo pulito o di rimontare ro dopo aver rimontato rw.

PS

Se riesci a leggere il tedesco, c'è un modo più pulito (da archive.org). Deutsche Gründlichkeit ...


4

Il pin della posizione di blocco della scheda SD non è affatto collegato sul pcb, quindi il blocco è virtuale a meno che la scheda non abbia un meccanismo di blocco interno. Prova a scrivere qualsiasi cosa sulla scheda SD mentre è bloccata e controllala tu stesso.


4

L'interruttore di sola lettura di SD è, nella migliore delle ipotesi, un'opzione software. Quasi ogni dispositivo che possiedo lo ignorerà e, se il commento di avra è corretto, il Raspberry Pi potrebbe non avere modo di sapere se è acceso o spento. Quindi, alle tue domande:

  1. Sì, funzionerà perché non è di sola lettura.
  2. Sì, danneggerà il tuo sistema. Dovrai esaminare il montaggio di root in sola lettura e avere un piccolo file system ram / tempfs per le cose di cui Linux deve tenere traccia.
  3. No, perché c'è una buona probabilità che tu abbia danneggiato il filesystem.

La risposta di @avra è corretta in quanto l'interruttore fisico che ha rilevato la posizione del cursore di protezione da scrittura sulle schede SD di dimensioni standard utilizzate nei precedenti RPi (non sono sicuro delle schede micro dimensioni, la mia non sembra avere una cosa del genere) non è collegato a nulla (ovvero i contatti sul lato del titolare della carta) l'altro interruttore (nella parte inferiore del titolare della carta) è l'interruttore "inserto carta" e che viene monitorato dal RPI.
SlySven

2
  1. Non ho usato XBMC, ma questa non è una buona idea WRT su un normale sistema operativo a meno che non si faccia un po 'di tempo per configurarlo a tale scopo. Implicitamente, se XBMC non è impostato in modo esplicito, non è nemmeno una buona idea.

  2. Se la scheda è davvero di sola lettura , in realtà NON danneggerà il tuo sistema, tuttavia, se fosse davvero di sola lettura, è improbabile che arrivi al punto in cui potresti eseguire lo "spegnimento". Se lo hai fatto (ancora una volta, sei sicuro che l'intera scheda è davvero di sola lettura!), Non preoccuparti di eseguire l'arresto. Basta staccare la spina. Dato che nulla sulla carta può cambiare, non importa cosa fai.

  3. Certo, potresti trovare i file init responsabili e modificarli (ovviamente, il file system dovrà essere scrivibile per farlo).

Realisticamente, se monti il ​​filesystem di root in sola lettura (che potrebbe essere più difficile del semplice utilizzo del blocco / attivazione), probabilmente non otterrai un avvio riuscito, perché il sistema operativo deve scrivere su disco. TUTTAVIA, se lo fai, sentiti libero di fare quello che vuoi (e puoi cavartelo). Se la scheda è di sola lettura non può essere cambiata, quindi non puoi fare alcun danno.


2

Se lo fai e basta

1.

/ dev / mmcblk0p2 / ext4 valori predefiniti, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat valori predefiniti, noatime, ro 0 1
si dispone di un sistema di sola lettura.

2.

Puoi avviare Xorg con: -logfile /tmp/Xorg.log e trovare altri servizi che richiedono l'accesso in scrittura, reindirizzarli a / tmp

3.

Come già accennato, disabilitare il servizio di cui non è necessario

insserv -r dphys-swapfile
insserv -r rsyslog
insserv -r samba (se installato) ecc

allora non ci dovrebbero essere problemi. La buona domanda è se non ci saranno davvero danni alla scheda SD se solo RO e plug-in / power sempre ...

Finalmente, una bella schermata iniziale e il gioco è fatto, hai un apparecchio standalone economico personalizzato. :) E adoro l'idea di alimentare il PI tramite la porta USB dalla TV. Ma questo non è limitato a 500mA? Non sei sicuro, ma PI ha bisogno di circa 1A o no?


dhcpclient deve scrivere il file /etc/resolv.conf e probabilmente altre posizioni in / var. Bello che tu abbia menzionato i comandi insserv, ne avevo bisogno; Sto ricostruendo i nostri apparecchi per ottenere nuovi certificati ca.
Chris Wesseling,

1

Un rapido sguardo a questo online suggerisce che nessuno ha pubblicato alcuna soluzione a questo per l'ultima versione di XBMC.

Il problema principale, come sottolineato da Goldilocks, è che XBMC non è stato progettato con l'intenzione di renderlo di sola lettura. Questo punto viene ulteriormente approfondito se dai un'occhiata a questa discussione sul forum di OpenELEC Media Center. Il consenso generale non è possibile rendere Kodi di sola lettura.

Il motivo secondo l'utente klojum era:

Far funzionare OpenELEC su un dispositivo di sola lettura non accadrà. Kodi deve archiviare / aggiornare i suoi database con informazioni video. La partizione di sistema impostata come sola lettura per un motivo. Tutte le impostazioni passano tramite la seconda partizione / storage. Quindi rimuovere ciò, tramite la cmdline o altro, non è un'opzione. Il ripristino del sistema dopo ogni riavvio è folle. Installa OE, eseguilo secondo i tuoi desideri ed esegui un backup / immagine completo. Ripristinalo in caso di problemi

Potrebbe esserci un modo per aggirare questo dato che le persone hanno trovato soluzioni alternative per le versioni precedenti, ma in generale non penso che sia necessario.

Posso capire come qualcuno che ha usato Kodi per un paio d'anni il fastidio di una scheda SD che si corrompe. Ma ci sono altri modi più semplici per mitigare il problema che non includevano armeggi di codice di basso livello.

Il numero uno dei motivi per cui una scheda SD verrà danneggiata è se si verifica un'interruzione improvvisa dell'alimentazione. Ci sono un paio di ragioni per cui questo può accadere. O qualcuno disconnette l'alimentazione al Pi a metà strada attraverso una scrittura sulla scheda SD. Oppure il sistema si blocca e devi scollegare l'alimentazione. Tuttavia, penso che la seconda ragione abbia meno probabilità di causare corruzione. O suggerisce che c'è un altro difetto in gioco.

All'inizio del Pi il circuito di erogazione della potenza sulla scheda lasciava certamente a desiderare. Ricordo i giorni in cui si è verificato un arresto anomalo del sistema semplicemente collegando un dongle USB al Pi mentre era acceso. Se non mi credi vedi problemi con XBMC su Raspberry Pi 2011 . L'altro problema è che il software all'inizio non era completamente maturo. Il Pi era diverso da quello che poteva essere un computer desktop e risolvere i problemi del software richiede tempo. Quindi, molte versioni più recenti di Kodi hanno meno probabilità di soffrire di blocchi casuali del sistema.

Per risolvere l'improvviso problema di perdita di potenza, alimenta il tuo Pi attraverso una sorta di gruppo di continuità (UPS). Un normale UPS funzionerebbe, ma in realtà ci sono UPS specificamente progettati per Pi. Come questo alimentatore ininterrotto per Raspberry Pi . Se si verifica un blocco del sistema, dovrebbe essere qualcosa per cui sei preparato. Ciò significa configurare il sistema operativo con tutte le impostazioni, le app e le preferenze secondo i propri gusti e quindi creare un'immagine della scheda SD. Quindi, se qualcosa va storto, puoi semplicemente ricreare l'immagine della scheda SD.

L'altro motivo per cui una scheda SD non funzionerà è dovuto al logorio. Tuttavia, questo non è un problema che ho sperimentato. Se usi una scheda SD di alta qualità di un marchio affidabile, penso che probabilmente sei a metà strada per risolvere quel problema. Ridurre al minimo l'usura della scheda SD significa assicurarsi che la scheda SD stia facendo il minimo assoluto. Non dovrebbe essere usato come spazio di archiviazione per la tua vasta collezione di film ecc.

Un'opzione che funzionerà con OpenELEC è eseguirla da un'unità USB. Naturalmente tutti i file di avvio dovranno rimanere sulla scheda SD. Esistono numerosi tutorial su come eseguire questa operazione. Ce n'è uno che sembra abbastanza facile da seguire qui , ma per completezza ti darò una panoramica:

Il primo passo è configurare la scheda SD e l'unità USB. Utilizzando un programma come MiniTool Partition Wizard formattare la scheda SD come FAT32 con una partizione attiva primaria di 150 MB o superiore, infatti l'intera scheda SD potrebbe essere formattata come FAT32. Assicurati solo che la partizione sia impostata su primaria attiva. Potrebbe anche essere utile etichettare la scheda SD come qualcosa di simile a SISTEMA in modo da ricordare a cosa serve in futuro. Quindi formatta l'intera unità USB come una partizione attiva primaria con il tipo di filesystem come EXT4, di nuovo vale la pena etichettarlo come qualcosa di simile a STORAGE.

Dopo aver scaricato ed estratto OpenELEC, vai alla cartella principale. E seleziona questi file:

openelec.ico
README.md

E copiarli nella radice della scheda SD.

Avanti dalla targetcartella copiare i file:

KERNEL
SYSTEM

E di nuovo incollali nella directory principale della scheda SD.

Quindi dalla 3rdparty/bootloadercartella copia i file:

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

E incollali nella directory principale della scheda SD.

Il passaggio finale consiste nel modificare il nome file del file KERNELsulla scheda SD inkernel.img .

Per creare i file di avvio, nella directory principale della scheda SD creare un file chiamato cmdline.txte aggiungere la seguente riga ad esso:

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

Assicurati di chiudere il file con il salvataggio. E da lì sei a posto. La fonte delle informazioni ha suggerito di eseguire XBMC da un'unità USB per una maggiore reattività. Non sono così sicuro di questa affermazione, ma non vedrai alcun degrado delle prestazioni a seguito dell'utilizzo di questo metodo.

Per quanto riguarda la tua raccolta multimediale, ti suggerisco di archiviarlo su una seconda unità, che si tratti di USB o di un percorso di rete.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.