Saya memerlukan distro Linux yang akan memberi saya hal berikut:
- Jalankan dengan Raspberry Pi
- Dapat andal bertahan dari kehilangan daya (seperti melalui sistem file read-only)
Saya sudah bisa memburu beberapa dokumentasi tentang cara mengubah distro Linux biasa menjadi mode read-only. Saya berharap bahwa akan ada distro yang sudah dibangun yang dirancang untuk berjalan di lingkungan yang tertanam.
Saya tidak perlu banyak paket atau driver, cukup cukup agar Pi bekerja dengan USB / Ethernet. Saya tidak memerlukan antarmuka GUI atau apa pun, ini hanya akan menjalankan layanan khusus yang dibangun di C.
Adakah yang tahu distro yang cocok?
linux
linux-distributions
embedded
raspberry-pi
Dan Harper
sumber
sumber
Jawaban:
Sebagian besar sistem embedded menggunakan kernel yang dibuat khusus. Salah satu alat untuk memfasilitasi itu adalah Buildroot , satu set skrip untuk membangun GNU gcc toolchain, pustaka uClibc menggantikan libc GNU (besar), kernel Linux, BusyBox dan utilitas / paket lainnya untuk sistem file root board tertanam. RaspberryPi adalah papan yang relatif baru, jadi dukungannya dalam Buildroot masih dalam pengembangan, tetapi tampaknya ada proyek , proyek lain , dan pekerjaan individu . Mungkin akan ada lebih banyak ketika manufaktur RP meningkat dan distribusi meningkat.
Menggunakan Buildroot, Anda dapat membangun kernel Linux dan root filesystem persis seperti yang Anda jelaskan dalam pertanyaan Anda. Tergantung pada kecepatan koneksi Internet Anda dan kemampuan PC pengembangan Anda, Anda mungkin memiliki biner dalam 1 hingga 4+ jam. Kelemahannya adalah bahwa binari yang dihasilkan tidak diuji atau dijamin untuk berhasil boot & dieksekusi. Konsol sistem wajib untuk men-debug urutan boot. Lihat jawaban saya untuk Bagaimana saya bisa mengakses mini-pc saya (RaspberryPi / MK802 / Mele A1000 / VIA APC) melalui ethernet / wifi tanpa memiliki Monitor? Tetapi mengingat bahwa RaspberryPi dirancang untuk tidak bisa ditutup , downside ini seharusnya tidak menjadi penghalang untuk membangun kernel dan RFS khusus Anda.
Mengenai "bertahan daya yang hilang": Pemilihan sistem file yang tepat biasanya dapat meringankan masalah ini. Lapisan perangkat MTD ditambah sistem file penjurnalan (misalnya jffs2) telah terbukti cukup kuat dari pengalaman. Untuk perlindungan yang hampir absolut, ada initramfs yang menggunakan
ramfs
(bukan ramdisk berukuran tetap) tanpa peralihan ke sistem file R / W.Tambahan
Intro 30-slide pada fitur Buildroot ada di sini.
Pada akhirnya (# 27) disebutkan beberapa alat yang mirip dan alternatif untuk membangun sistem embedded.
sumber
TinyCoreLinux hanya dibaca secara default (ketekunan adalah opsional): http://www.tinycorelinux.net/ports.html
sumber
Setelah memiliki Seagate Dockstar dengan akses konsol, saya menginstal Debian memerasnya. Sebagai titik awal untuk membuatnya berjalan pada read-only root, saya menggunakan artikel 1 yang bagus ini oleh Jeff Doozan. Strategi dasar melibatkan pembuatan skrip yang, pada setiap boot, me-mount direktori-direktori yang dapat ditulis sebagai tmpfs. Saya mengutip naskah oleh Jeff 2 di sini (pujian kepada Jeff!)
Simpan baris di atas sebagai skrip yang disebut / sbin / init-ro di rootfs target Anda dan buatlah itu dapat dieksekusi.
Untuk menggunakan skrip ini saat boot-time, Anda harus menyiapkan sistem rootfs sedikit (semua dikutip dari skrip Jeff 2 (beradaptasi
$ROOT
dengan lokasi sebenarnya dari rootfs yang Anda pasang).Setelah menyiapkan rootfs seperti di atas, Anda dapat me-mount rootfs read-only di / etc / fstab (ganti ext2 dengan sistem file yang Anda gunakan atau gunakan saja rootfs sebagai gantinya).
Akhirnya, Anda harus menambahkan yang berikut ini ke parameter kernel Anda (yaitu di /boot/cmdline.txt pada Raspi) untuk menjalankan skrip sebelum aktual / sbin / init . (berikut ini hanyalah contoh dari parameter root dan rootdelay . bagian penting yang harus ditambahkan ke baris di cmdline.txt adalah
init=/sbin/init-ro
.)Tetapi ketahuilah bahwa untuk perangkat lunak apa pun yang memerlukan akses tulis di rootfs Anda harus memasang lokasi tmpfs yang sesuai atau menulis ke penyimpanan eksternal.
sumber
2 sen saya, jauh lebih mudah (dan lebih bagus pada akhirnya) untuk membuat cadangan baterai yang andal untuk Pi daripada hidup dengan OS hanya baca. Tentu saja, itu berarti Anda akan memerlukan pengetahuan yang sangat mendasar tentang elektronik (dan maksud saya BASIC; kita berbicara 3-4 komponen). Orang ini membuat yang mewah hanya dengan beberapa: /raspberrypi/1360/how-do-i-build-a-ups-like-battery-backup-system
Jika Anda melakukan ini, JANGAN gunakan LiPo; NiCad adalah apa yang Anda inginkan. LiPo tidak dapat mengambil konstan atas pengisian daya; Anda sudah diperingatkan.
Juga, Anda tampaknya sangat khawatir tentang sesuatu yang, menurut pengalaman saya, adalah masalah yang sangat kecil. Saya meronta-ronta kotak Linux saya sepanjang waktu dan shutdown mendadak yang tidak terjadwal adalah masalah tentu saja ketika saya tidak dapat diganggu. Jika Anda menonaktifkan log maka Anda bahkan jarang mendapatkan keluhan tentang melakukan itu.
Untuk menonaktifkan semua log, Anda dapat menambahkan baris berikut sebagai aturan pertama di /etc/rsyslog.conf:
Bahkan ketika ada masalah, 99,9999% dari waktu (maksud saya hampir setiap kali dalam pengalaman pribadi saya) masalah itu diatasi ketika disk selanjutnya dipindai. Ketika itu terjadi terutama tergantung pada cuaca OS memperhatikan apa yang Anda lakukan (anehnya biasanya tidak). Karena Pi menggunakan kartu SD, saya membayangkan ini terjadi lebih sedikit pada Pi daripada di PC saya.
sumber
Jika saya ingat benar sistem file read-only tidak akan 'mengamankan' kartu-SD. Saya memiliki 10 Pi beroperasi pada pelanggan (waktu aktif lebih dari 80 hari untuk setengah dari mereka) di mana daya tidak stabil seperti yang Anda harapkan / inginkan. Butuh waktu beberapa saat untuk menemukan catu daya (pengisi daya murah berperingkat 3A dan pengisi daya iPad 'mahal' diberi peringkat 2.3A) yang sebenarnya dapat menjaga Pi berjalan lebih dari beberapa hari, sebelum itu saya memiliki semua jenis masalah korupsi SD , termasuk dengan yang hanya digunakan read-only IIRC.
Masalah saya sebagian besar terpecahkan sekarang (karena persediaan baru), tetapi untuk proyek masa depan saya sedang mencari untuk melakukan filesystem root NFS. Ada banyak tutorial tentang hal ini, sebagian besar diselesaikan di sekitar gambar Pi fs normal, tetapi cukup mudah untuk melakukan debootstrap minimal dan mengubahnya menjadi sistem file root hanya baca melalui NFS. Pasangkan ini dengan uboot untuk Pi dan skrip uboot yang pintar, dan SD-card Anda hanya akan berisi beberapa firmware RPi, uboot image dan skrip uboot.
sumber
Saya telah mendengar hal-hal baik tentang Puppy Linux untuk ini. Walaupun saya harus mengakui bahwa saya belum mencobanya.
Itu dapat diatur untuk tidak menulis kembali ke kartu SD.
sumber
Ada empat gambar yang tersedia dari halaman unduhan raspberrypi.org :
Dan di sini adalah satu-satunya yang hanya dibaca secara default (tapi itu bisa diubah jika diperlukan):
Semoga salah satunya memenuhi kebutuhan Anda.
sumber