Partisi SD Card yang sembuh sendiri


9

Banyak kartu sd agak rapuh. Saya telah memiliki pi selama sekitar 2 tahun sekarang dan kegagalan utama adalah karena kartu sd rusak karena suatu alasan.

Saya ingin tahu apakah ada beberapa pengembangan yang dilakukan untuk "memperkuat" kartu sd saat boot. Saya ingat memiliki sesuatu seperti ini dalam proyek masa lalu, di mana uboot akan memilih antara 12 tarbal jika salah satu dari mereka memiliki checksum crc32 yang tidak valid. Kemudian akan menyalin kembali yang divalidasi ke semua yang lain yang dimodifikasi setelah boot berhasil.

Saya ingin menggunakan pi saya dalam pengaturan "permanen" dan akan lebih bagus jika itu bisa bekerja tanpa harus mem-flash kartu.

Apakah sudah ada pengembangan yang dilakukan dengan cara ini? Walaupun ide umumnya agak sepele, membuat uboot berfungsi dengan baik biasanya merupakan proses yang agak menyakitkan yang ingin saya hindari.

EDIT:

Setelah menggali lebih dalam, tampaknya apa yang saya bayangkan mungkin tidak mungkin, atau mungkin dengan cara yang akan memberikan keuntungan yang berarti. Di sini proses boot dijelaskan . Kode yang saya kerjakan berjalan pada tingkat boot pertama karena board saya memiliki flash yang dapat diprogram untuk ini. Dengan pi, ini disimpan dalam ROM dari pabrik. Segala sesuatu yang lain berasal dari kartu sd jadi jika kartu rusak, bootloader tahap kedua memiliki banyak peluang untuk dihancurkan seperti partisi lainnya.

Mungkin dimungkinkan untuk menyalahgunakan boot loader ROM untuk tujuan ini, tetapi sulit untuk mengatakan caranya. Kode ini juga tampaknya berpemilik.

Edit 2:

Penjelasan proses boot yang sebenarnya bertentangan tergantung pada sumbernya. Saya akan mencoba membaca lebih lanjut tentang itu

Jawaban:


9

Jika Anda memiliki masalah dengan kartu SD, Anda harus mencoba (secara berurutan):

  1. Gunakan catu daya lain (lebih besar).
  2. Sambungkan hub yang aktif di antara Raspberry dan perangkat USB apa pun yang Anda miliki.
  3. Gunakan kartu SD dari merek-merek terkenal.
  4. Gunakan kartu SD yang lebih besar (untuk leveling keausan yang didistribusikan).
  5. Atur rootfs Anda menjadi read-only dan karenanya hindari menulis ke kartu-SD.
  6. Gunakan distro "langsung" yang sepenuhnya menggunakan RAM. Proyek saya Nard SDK adalah salah satunya (tetapi ada juga yang lain). Dengan Nard, kartu SD hanya digunakan saat boot. Setelah menjalankan dan menjalankan filesystem tidak pernah digunakan lagi, Anda bahkan dapat menyambungkan kartu SD ...

Lihat: http://www.arbetsmyra.dyndns.org/nard/


Saya akan menambahkan bahwa Anda juga dapat menjalankan OS dari HDD yang terhubung dengan usb - sama seperti item Anda # 6.
Phil B.

Terima kasih atas sarannya. Namun kartu sd dapat rusak ketika daya hilang. Mungkin meletakkan kartu di baca hanya akan membantu. Saya setuju bahwa mencegah korupsi pada awalnya adalah solusi yang lebih baik, tetapi sulit sepenuhnya dicegah.
Eric

Jika korupsi karena kehilangan kekuasaan adalah masalah maka distro langsung adalah obatnya.
Ronny Nilsson

1

Anda seharusnya tidak sering mengalami korupsi dramatis, bahkan jika kekuatannya sesekali hilang.

Jika sistem file memiliki nilai bukan nol di kolom keenam /etc/fstab, ia akan diperiksa untuk melihat apakah perlu untuk memindai kesalahan sebelum dipasang. Distro pi reguler (harus) memiliki set ini untuk /dev/mmcblk0p1dan partisi sistem file root (pada Raspbian, mmcblk0p2). Apa artinya ini untuk sistem file ext4 (seperti root fs) adalah bahwa ini terjadi terlepas dari setiap N mounts; untuk nilai N, lihat "Jumlah pemasangan maksimum" pada output dari tune2fs -l /dev/[partition]; Anda dapat menyesuaikan nilai ini menggunakan tune2fs -c(lihat man tune2fs).

Itu juga akan dipindai jika sistem file tidak di-unmount dengan benar. Ini dilakukan dengan e2fsck. Dalam kebanyakan kasus, semuanya akan beres. Namun, ada kemungkinan Anda kehilangan data karena korupsi; bukti ini akan ditinggalkan /lost+found. Jika memungkinkan (dan biasanya demikian), sistem file masih akan dibiarkan dalam keadaan yang dapat digunakan, tidak rusak setelahnya. Pertanyaannya kemudian adalah apakah beberapa komponen kritis hilang dalam perbaikan - tetapi sekali lagi, ini akan sangat tidak biasa.

Alasan mengapa hal itu tidak mungkin mempengaruhi sesuatu yang kritis adalah bahwa sebagian besar dari hal-hal itu, sementara secara teknis tidak hanya baca, tidak berubah dalam hal-hal normal. Sistem ini memiliki banyak hal dari /bindan /libdimuat ke memori pada titik tertentu, tetapi tidak ada niat untuk mengubah sumbernya pada disk, jadi tidak ada kemungkinan disk tidak akan sinkron dengan perubahan yang tidak ada.

Walaupun saya tidak tahu apa aturannya untuk partisi vfat pertama yang berisi kernel dan firmware (karena tidak diformat ext), saya berasumsi beberapa pemeriksaan serupa mungkin dilakukan, dan dalam hal apapun, logika paragraf terakhir berlaku - hal-hal itu hanya berubah untuk pembaruan sistem. Faktanya, jika Anda ingin menjadi benar-benar paranoid, Anda bisa membuatnya terpasang read-only kecuali untuk pembaruan (atau tidak dipasang sama sekali, karena itu tidak diperlukan setelah boot normal selesai).

Setelah semua ini, Anda seharusnya tidak pernah mengalami korupsi serius kecuali Anda benar-benar sering melempar dadu dengan memotong kekuatan (dan itupun harus jarang). Jika Anda memang sering mengalami korupsi, ada sesuatu yang sangat serius salah. Setidaknya ada beberapa orang di sini melaporkan masalah korupsi bahkan ketika menggunakan sistem file read-only , yang agak membingungkan. Ini menyiratkan korupsi secara sewenang-wenang disebabkan oleh perangkat keras yang rusak, atau bug perangkat lunak.

Dan memang, saya pikir ada bug seperti itu yang mungkin telah mempengaruhi pis secara sewenang-wenang dari sekitar tahun 2013 hingga sekitar pertengahan akhir 2014 (anggap OS tetap diperbarui). Saya punya firasat kami memiliki lebih sedikit "Kartu SD saya rusak!" posting dalam 4-6 bulan terakhir (tetapi Nb. Saya belum melakukan akuntansi nyata untuk mengkonfirmasi itu).


1

Anda mungkin ingin menggunakan USB flash drive / USB hard drive.

Mereka benar-benar lebih dapat diandalkan daripada kartu SD

Inilah utas yang menjelaskan cara melakukannya


0

Penyembuhan diri adalah masalah dengan distribusi Linux di mana fsck berada pada sistem file yang paling rentan terhadap korupsi. Itu adalah masalah raspbian berbagi dengan hampir semua distribusi Linux - hari ini mereka suka meletakkan semuanya [termasuk / boot dalam kasus Ubuntu !! ??] pada satu partisi ext4 besar.

Partisi root read-only melakukan keajaiban untuk menghindari masalah boot-boot di mana Linux mengalami masalah sistem file sebelum memiliki kesempatan untuk menjalankan fsck.

Tetapi bahkan baca / tulis root yang jarang diperbarui adalah langkah besar ke depan.

Raspbian berfungsi dengan baik pada root read-only. Dibutuhkan sedikit usaha untuk mengatur, dan tentu saja Anda harus siap untuk "mount -o remount, rw /" sebelum ada perubahan pada sistem file root.

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.