Berjalan di kartu SD hanya baca


20

Saya telah mengatur Raspberry Pi untuk menjalankan XBMC, dan saya ingin boot untuk selalu memutar daftar putar dan file pada kartu SD. Saya telah mematikan pembaruan otomatis Raspbmc. Ini masih berjalan dengan baik ketika saya mengganti kartu SD ke posisi "kunci". Sekarang pertanyaan saya adalah:

  1. Apakah sistem kartu SD "read-only" berfungsi sepanjang waktu di aplikasi saya?

  2. Karena kartu SD selalu dalam mode read-only, jika saya tidak menggunakan perintah shutdown, dan matikan saja sakelar daya, apakah akan merusak sistem saya?

  3. Bahkan jika ini berfungsi dengan baik, ia akan selalu memunculkan pesan "Raaspbmc tidak dimatikan dengan benar". Apakah ada cara untuk menonaktifkan pesan ini ketika Pi menyala?


1
Jika Anda ingin ini berfungsi dengan baik, Anda harus memastikan sistem file yang sesuai juga dipasang sebagai hanya baca.
Jivings

Jawaban:


14

Saya memiliki penggunaan yang serupa. Saya menggunakan Pi untuk mempersempit halaman web di pintu masuk gedung. Memberi daya pada Pi melalui port USB di TV.

Mount / read-only.

Untuk membuatnya powerloss proof saya dipasang / baca-saja dengan mengubah baris /etc/fstab

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

Cukup mudah. Tetapi beberapa proses pada mesin fungsional perlu menulis.

Pasang / tmp di memori.

Banyak hal yang saya tulis /tmpjadi saya memasangnya di memori dengan menambahkan baris/etc/fstab

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

Saya memiliki Pi 512MB yang tersedia jadi saya membuat / tmp 30M besar.

Nonaktifkan layanan Saya tidak perlu menulis itu.

Saya menonaktifkannya rsyslogagar tidak bisa masuk dan dphys-swapfilekarena tidak ada tempat untuk menulis. Berlari tanpa swap akan menimbulkan masalah jika Anda melakukan tugas berat yang intensif memori. Dalam kasus saya menjalankan proses midori tunggal selama sehari, tidak. cat /etc/rc2.d/READMEpada Pi Anda tentang cara melakukan itu. (raspbian dimulai pada runlevel 2 secara default, raspbmc mungkin berbeda)

Mari layanan yang saya lakukan perlu faux-write.

Anda dapat memberikan akses tulis ke sistem file dalam memori seperti live-cd melakukannya; dengan union mount . Tapi saya tidak suka prospek kompilasi silang kernel saya sendiri untuk unionfs atau aufs selanjutnya . Untungnya unionfs-fusetersedia prebuilt. Itu tidak dapat di-mount /, tetapi apakah saya benar-benar membutuhkannya?

Menjalankan midori, saya perlu X untuk bekerja. X ingin menulis /home/piketika saya autologin sebagai pi dan ke beberapa tempat di /varsaya memutuskan untuk memasang mereka ke tempat-tempat menggunakan unionfs.

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

dan ditambahkan 2 baris ke /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

Ini cukup buruk, seperti menulis ke / var, / home dan / tmp semua endup di / tmp. Tapi saya hanya perlu mesin saya untuk menjalankan selama 8 hingga 10 jam, dan kemudian daya terputus. Jadi ini akan berhasil.

Menghitung baca-tulis saat mengutak-atik hal

Ketika saya mengganti jaringan, /etc/resolv.confyang ditulis dhclient tidak berfungsi lagi.

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

Jangan lupa untuk shutdown dengan bersih, atau remounting setelah remount.

PS

Jika Anda dapat membaca bahasa Jerman, ada cara yang lebih bersih (dari archive.org). Deutsche Gründlichkeit ...


4

Pin posisi kunci kartu SD tidak terhubung sama sekali pada pcb, jadi penguncian Anda virtual kecuali jika kartu memiliki mekanisme penguncian internal. Cobalah untuk menulis apa saja ke kartu SD saat terkunci dan periksa sendiri.


4

Saklar baca-saja SD, paling-paling, adalah opsi perangkat lunak. Hampir setiap perangkat yang saya miliki akan mengabaikannya, dan jika komentar avra benar, Raspberry Pi mungkin tidak memiliki cara untuk mengetahui apakah itu hidup atau mati. Jadi, untuk pertanyaan Anda:

  1. Ya, itu akan berhasil, karena itu tidak hanya baca.
  2. Ya, itu akan merusak sistem Anda. Anda perlu melihat pemasangan root read-only, dan memiliki sistem file ram / tempfs kecil untuk hal-hal yang perlu diperhatikan oleh Linux.
  3. Tidak, karena ada kemungkinan Anda merusak sistem file.

Jawaban @avra benar karena sakelar fisik yang mendeteksi posisi bilah geser pelindung-tulis pada Kartu SD ukuran standar yang digunakan dalam RP sebelumnya (saya tidak yakin dengan kartu ukuran mikro, milik saya sepertinya tidak memiliki hal seperti itu) tidak terhubung ke apa pun (yaitu kontak di sisi dudukan kartu) saklar lain (di bagian bawah dudukan kartu) adalah saklar "memasukkan kartu" dan yang dipantau oleh RPi.
SlySven

2
  1. Saya belum pernah menggunakan XBMC, tetapi ini bukan ide yang baik WRT ke sistem operasi normal kecuali jika Anda berusaha keras untuk mengaturnya untuk tujuan itu. Implikasinya, jika XBMC tidak diatur secara eksplisit, maka itu juga bukan ide yang baik untuk itu.

  2. Jika kartu benar-benar hanya baca , sebenarnya itu TIDAK akan merusak sistem Anda, namun, jika benar-benar hanya dibaca, Anda tidak mungkin sampai pada titik di mana Anda dapat menjalankan 'shutdown'. Jika Anda melakukannya (artinya lagi, Anda yakin seluruh kartu benar-benar hanya baca!), Jangan repot-repot menjalankan shutdown. Tarik saja colokannya. Karena tidak ada pada kartu yang dapat berubah, tidak masalah apa yang Anda lakukan.

  3. Tentu, Anda dapat menemukan file init yang bertanggung jawab dan mengeditnya (jelas, sistem file harus dapat ditulisi untuk melakukan itu).

Secara realistis, jika Anda me-mount filesystem root read-only (yang mungkin lebih sulit daripada hanya menggunakan toggle kunci), Anda mungkin tidak akan mendapatkan boot yang sukses, karena OS memang perlu menulis ke disk. NAMUN, jika Anda melakukannya, maka jangan ragu untuk melakukan apa pun yang Anda inginkan (dan dapat lolos). Jika kartu hanya-baca itu tidak dapat diubah, jadi Anda tidak dapat melakukan kesalahan apa pun.


2

Jika Anda melakukannya

1.

/ dev / mmcblk0p2 / ext4 default, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat default, noatime, ro 0 1
Anda memiliki sistem read only penuh.

2.

Anda dapat menjalankan Xorg dengan: -logfile /tmp/Xorg.log, dan menemukan layanan lain yang membutuhkan akses tulis, mengarahkan mereka ke / tmp

3.

Seperti yang telah disebutkan, nonaktifkan layanan yang tidak Anda perlukan

insserv -r dphys-swapfile
insserv -r rsyslog
insserv -r samba (jika terpasang) dll

maka seharusnya tidak ada masalah sama sekali. Pertanyaan yang bagus adalah apakah benar-benar tidak ada kerusakan pada kartu SD sama sekali jika RO saja dan plugin / power out sepanjang waktu ...

Akhirnya, layar splash yang indah dan di sana Anda pergi, Anda memiliki alat mandiri murah kustom. :) Dan saya suka Ide untuk menyalakan PI melalui port USB dari TV. Tetapi apakah itu tidak terbatas pada 500mA? Tidak yakin, tetapi PI membutuhkan kira-kira 1A atau tidak?


dhcpclient perlu menulis /etc/resolv.conf dan mungkin lokasi lain di / var. Bagus bahwa Anda menyebutkan perintah insserv, saya membutuhkannya; Saya sedang membangun kembali peralatan kami untuk mendapatkan sertifikat-ca baru.
Chris Wesseling

1

Pandangan cepat ke online ini menunjukkan bahwa tidak ada yang memposting solusi apa pun untuk ini untuk versi terbaru XBMC.

Masalah utama seperti yang ditunjukkan Goldilocks adalah XBMC tidak dirancang dengan tujuan membuatnya hanya dibaca. Poin ini berlanjut jika Anda melihat utas ini di Forum Media Center OpenELEC. Konsensus umum di sana adalah tidak mungkin untuk membuat Kodi hanya membaca.

Alasannya menurut pengguna klojum adalah:

Agar OpenELEC berfungsi pada perangkat yang hanya bisa dibaca tidak akan terjadi. Kodi perlu menyimpan / memperbarui basis datanya dengan informasi video. Partisi sistem diatur sebagai hanya dapat dibaca karena suatu alasan. Semua pengaturan melalui partisi ke-2, / penyimpanan. Jadi menghapus itu, melalui cmdline atau bukan, bukanlah suatu pilihan. Memulihkan sistem setelah setiap reboot adalah gila. Instal OE, buat sesuai keinginan Anda dan buat cadangan / gambar penuh. Kembalikan jika terjadi masalah

Mungkin ada jalan keluarnya karena orang telah menemukan solusi untuk versi yang lebih lama, tetapi secara umum saya tidak berpikir ada kebutuhan untuk itu.

Saya bisa mengerti sebagai seseorang yang telah menggunakan Kodi selama beberapa tahun gangguan kartu SD menjadi rusak. Tetapi ada cara lain yang lebih sederhana untuk mengurangi masalah yang tidak termasuk bermain-main kode tingkat rendah.

Alasan nomor satu kartu SD akan rusak adalah jika ada pemadaman listrik mendadak. Ada beberapa alasan mengapa ini bisa terjadi. Entah seseorang memutus daya ke Pi di tengah jalan melalui penulisan ke kartu SD. Atau sistem membeku dan Anda harus memutuskan daya. Meskipun, saya pikir alasan kedua lebih kecil kemungkinannya menyebabkan korupsi. Atau itu menunjukkan ada kesalahan lain yang sedang dimainkan.

Pada hari-hari awal Pi sirkuit pengiriman daya di papan tentu meninggalkan sesuatu yang diinginkan. Saya ingat hari-hari menyebabkan sistem crash hanya dengan mencolokkan dongle USB ke Pi saat dinyalakan. Jika Anda tidak percaya saya melihat masalah menjalankan XBMC pada 2011 Raspberry Pi . Masalah lainnya adalah perangkat lunak di masa-masa awal belum sepenuhnya matang. Pi berbeda pendapat tentang apa yang bisa dilakukan komputer desktop dan menyelesaikan masalah perangkat lunak membutuhkan waktu. Jadi, versi Kodi yang jauh lebih baru lebih kecil kemungkinannya menderita pembekuan sistem acak.

Untuk mengatasi masalah kehilangan daya yang tiba-tiba, berikan daya pada Pi Anda melalui semacam catu daya tak terputus (UPS). UPS biasa akan bekerja tetapi sebenarnya ada UPS yang dirancang khusus oleh Pi. Seperti Catu Daya Tanpa Gangguan ini untuk Raspberry Pi . Jika pembekuan sistem terjadi, itu harus menjadi sesuatu yang Anda siapkan. Ini berarti mengatur OS dengan semua pengaturan dan aplikasi dan preferensi sesuai selera Anda dan kemudian membuat gambar kartu SD. Jadi, jika terjadi kesalahan, Anda dapat mem-gambar ulang kartu SD.

Alasan lain kartu SD akan gagal adalah karena kartu itu aus. Namun, ini bukan masalah yang saya alami sendiri. Jika Anda menggunakan kartu SD berkualitas tinggi dari merek terkemuka, saya pikir Anda mungkin setengah jalan ke sana untuk menyelesaikan masalah itu. Untuk meminimalkan keausan kartu SD berarti memastikan kartu SD melakukan minimum absolut. Seharusnya tidak digunakan sebagai ruang penyimpanan untuk koleksi film Anda yang besar dll.

Opsi yang akan bekerja dengan OpenELEC menjalankannya dari drive USB. Tentu saja semua file boot harus tetap berada di kartu SD. Ada sejumlah tutorial tentang cara melakukan ini. Ada satu yang terlihat cukup mudah untuk diikuti di sini , tetapi untuk kelengkapannya saya akan memberi Anda gambaran:

Langkah pertama adalah mengatur kartu SD dan drive USB. Menggunakan program seperti MiniTool Partition Wizard memformat kartu SD sebagai FAT32 dengan partisi aktif utama 150MB atau lebih besar, pada kenyataannya seluruh kartu SD dapat diformat sebagai FAT32. Pastikan partisi diatur ke aktif utama. Mungkin juga berguna untuk memberi label kartu SD sebagai sesuatu seperti SISTEM sehingga Anda ingat untuk apa kartu ini di masa depan. Kemudian format seluruh drive USB sebagai satu partisi aktif primer dengan tipe sistem file sebagai EXT4, lagi-lagi layak diberi label sebagai sesuatu seperti STORAGE.

Setelah Anda mengunduh dan mengekstrak OpenELEC, pergi ke folder root. Dan pilih file-file ini:

openelec.ico
README.md

Dan salin ke akar kartu SD.

Selanjutnya dari targetfolder salin file:

KERNEL
SYSTEM

Dan lagi tempelkan ke direktori root kartu SD.

Kemudian dari 3rdparty/bootloaderfolder salin file:

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

Dan rekatkan ke direktori root kartu SD.

Langkah terakhir adalah mengubah nama file file KERNELpada kartu SD menjadi kernel.img.

Untuk membuat file startup, di direktori root kartu SD buat file yang dipanggil cmdline.txtdan tambahkan baris berikut untuk itu:

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

Pastikan untuk menutup file dengan menyimpannya. Dan dari sana Anda baik untuk pergi. Sumber informasi menyarankan untuk menjalankan XBMC dari drive USB yang meningkatkan respons. Saya tidak begitu yakin tentang klaim ini, tetapi Anda tidak akan melihat penurunan kinerja apa pun akibat menggunakan metode ini.

Adapun koleksi media Anda, saya sarankan menyimpannya di drive kedua apakah itu USB atau lokasi jaringan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.