Raspberry Pi'de kolayca “gömülü stil” çalıştıracak bir Linux dağıtımı var mı? [kapalı]


9

Bana aşağıdakileri verecek bir Linux dağıtımına ihtiyacım var:

  • Raspberry Pi ile koş
  • Güç kaybından güvenilir bir şekilde kurtulabilir (salt okunur bir dosya sistemi gibi)

Normal bir Linux dağıtımının salt okunur moda nasıl değiştirileceğine dair bazı belgeleri avlayabildim. Yerleşik bir ortamda çalışmak üzere tasarlanmış bir dağıtımın olmasını umuyordum.

Pi'nin USB / Ethernet ile çalışmasını sağlayacak kadar pakete veya sürücüye ihtiyacım yok. Herhangi bir GUI arayüzüne veya başka bir şeye ihtiyacım yok, bu sadece C'de yerleşik özel bir hizmet çalıştırıyor olacak.

Herkes uygun bir dağıtım biliyor mu?


Bu, gömülü bir uygulama için göz önüne alındığında, not etmek isteyebileceğiniz iki hızlı şey. İlk olarak, Linux yoluna gitmeye karar verirseniz, sisteminizin yeterince hızlı yanıt verebilmesini sağlamak için gerçek zamanlı bir çekirdek kullanmayı düşünün. İkinci olarak, herhangi bir yazılım döngüsü / hatası durumunda harekete geçmek için bekçi zamanlayıcısını ayarlamak da isteyebilirsiniz.
Etkileme

Raspberrypi.stackexchange.com göz atın ama bir alışveriş türü soru olduğu gibi bu sorunun da konu dışı olduğunu düşünüyorum,
Kevin Panko

Yanıtlar:


3

Çoğu gömülü sistem, özel olarak oluşturulmuş bir çekirdek kullanır. Bunu kolaylaştırmak için bir araç olan Buildroot , GNU gcc araç zincirini oluşturmak için bir dizi komut dosyası, (büyük) GNU libc yerine uClibc kütüphanesi, Linux çekirdeği, BusyBox ve gömülü bir kartın kök dosya sistemi için diğer yardımcı programlar / paketlerdir. RaspberryPi nispeten yeni bir kurul, bu yüzden Buildroot'ta desteği hala geliştiriliyor, ancak görünüşe göre bir proje , başka bir proje ve bireyin çalışması var . RP üretimi arttıkça ve dağıtım arttıkça muhtemelen daha fazlası olacaktır.

Buildroot'u kullanarak, tam olarak sorunuzda açıklandığı gibi bir Linux çekirdeği ve kök dosya sistemi oluşturabilirsiniz. İnternet bağlantı hızınıza ve geliştirme bilgisayarınızın yeteneklerine bağlı olarak, ikili dosyalarınızı 1 ila 4 saatten fazla sürebilir. Dezavantajı, sonuçta ortaya çıkan ikili dosyaların başarılı bir şekilde önyükleme ve yürütme için test edilmemesi ve garanti edilmemesidir. Önyükleme sırasında hata ayıklamak için bir sistem konsolu zorunludur. Benim cevap bakınız nasıl Monitor kalmadan ethernet / wifi üzerinden benim mini pc (Raspberry Pi / MK802 / Mele A1000 / VIA APC) erişebilir? Ancak RaspberryPi'nin kırılmaz olarak tasarlandığı göz önüne alındığında , bu olumsuz, özel çekirdeğinizi ve RFS'nizi oluşturmak için caydırıcı olmamalıdır.

"Güç kaybından kurtulun" ile ilgili: Dosya sisteminin uygun seçimi genellikle bu endişeyi hafifletebilir. MTD aygıt katmanı ve günlük kaydı dosya sisteminin (örn. Jffs2) deneyimden oldukça sağlam olduğu gösterilmiştir. Neredeyse mutlak koruma için, ramfsR / W dosya sistemine geçiş yapmadan (sabit boyutlu bir ramdisk değil) kullanan initramfs vardır .

ek

Buildroot'un özelliklerine ilişkin 30 slaytlık bir giriş burada
Sonunda (# 27) gömülü sistemler oluşturmak için birkaç benzer ve alternatif araçtan bahsediliyor.



1

Konsol erişimi olan bir Seagate Dockstar'ına sahip olduktan sonra, Debian sıkmasını taktım. Salt okunur kök üzerinde çalışmasını sağlamak için bir başlangıç ​​noktası olarak, Jeff Doozan'ın bu mükemmel 1. makalesini kullandım. Temel strateji, her önyüklemede gerekli yazılabilir dizinleri bir tmpfs olarak bağlayan bir komut dosyası oluşturmayı içerir. Komut dosyasını burada Jeff 2'den alıntı yapıyorum (Jeff için kudos!)

#!/bin/bash
DIRS="/tmp /var/log /var/run /var/lock /var/tmp /var/lib/urandom /var/lib/dhcp /etc/network/run"
for DIR in $DIRS; do
  echo "Mounting $DIR as tmpfs"
  mount -n -t tmpfs tmpfs $DIR
  if [ -d "$DIR-saved" ]; then
    echo "Restoring $DIR-saved to $DIR"
    tar -C "$DIR-saved" -cf - ./ | tar -C "$DIR" -xpf -
  fi
done

echo "nameserver 4.2.2.1" > /var/tmp/resolv.conf
touch /var/lib/dhcp/dhcpd.leases

exec /sbin/init

Yukarıdaki satırları / sbin / init-ro adlı bir komut dosyası olarak hedef kök dosyalarınıza kaydedin ve çalıştırılabilir yapın.

chmod 755 /sbin/init-ro

Bu komut dosyasını önyükleme süresi boyunca kullanmak için, sistem köklerini biraz hazırlamanız gerekir (tümü Jeff'in komut dosyası 2'den alıntılanır ( $ROOTbağlı kök dosyalarınızın gerçek konumuna uyarlanır ).

# Configure dhcp-client to write resolv.conf to /tmp instead of /etc
sed -i 's/\/etc\/resolv.conf/\/var\/tmp\/resolv.conf/' $ROOT/sbin/dhclient-script > /dev/null 2>&1
rm $ROOT/etc/resolv.conf
ln -s /var/tmp/resolv.conf $ROOT/etc/resolv.conf


# make /etc/network/run/ a symlink to /tmp/network/
rm -rf $ROOT/etc/network/run
ln -s /var/tmp/network $ROOT/etc/network/run


# Fixes from http://wiki.debian.org/ReadonlyRoot

rm $ROOT/etc/blkid.tab  > /dev/null 2>&1
ln -s /dev/null $ROOT/etc/blkid.tab

rm $ROOT/etc/mtab  > /dev/null 2>&1
ln -s /proc/mounts $ROOT/etc/mtab

rm $ROOT/etc/rcS.d/S12udev-mtab

rm -rf $ROOT/var/log/*

Yukarıdaki gibi rootfs hazırladıktan sonra, rootfs / etc / fstab içine salt okunur bağlayabilirsiniz ( ext2'yi kullandığınız dosya sistemiyle değiştirin veya bunun yerine rootfs kullanın).

/dev/root  /                 ext2  noatime,ro   0 1

Son olarak, betiği gerçek / sbin / init'ten önce çalıştırmak için çekirdek parametrelerine ( Raspi'de /boot/cmdline.txt dosyasında) aşağıdakileri eklemeniz gerekir . (Aşağıdaki sadece bir örnektir kök ve rootdelay parametreleri. hat eklenecek vardır önemli parçası Cmdline.txt olduğunu .)init=/sbin/init-ro

root=/dev/mmcblk0p2 rootdelay=2 init=/sbin/init-ro

Ancak kök dosyalarında yazma erişimi gerektiren herhangi bir yazılım için uygun tmpfs konumlarını bağlamanız veya harici depolama birimine yazmanız gerektiğini unutmayın.


1

2 sentim, Pi için güvenilir bir pil yedeklemesi yapmak salt okunur bir işletim sistemiyle yaşamaktan çok daha kolay (ve sonunda daha güzel). Tabii ki, bu, çok temel bir elektronik bilgisine ihtiyacınız olacağı anlamına gelir (ve BASIC demek istiyorum; 3-4 bileşenden bahsediyoruz). Bu adam sadece birkaç tane daha süslü biri yaptı: /raspberrypi/1360/how-do-i-build-a-ups-like-battery-backup-system

Bunu yaparsanız, LiPo'yu KULLANMAYIN; NiCad istediğin şey. LiPo şarjı sürekli olarak alamaz; uyarılmıştın.

Ayrıca, deneyimlerime göre, çok küçük bir sorun olan bir şey hakkında çok endişeli görünüyorsunuz. Linux kutularımı her zaman çöpe atıyorum ve ani planlanmamış bir kapanma elbette rahatsız edilemediğim bir konudur. Günlükleri devre dışı bırakırsanız, nadiren bunu yapmakla ilgili herhangi bir şikayet alırsınız.

Tüm günlükleri devre dışı bırakmak için /etc/rsyslog.conf dosyasında ilk kuralı aşağıdaki satırı ekleyebilirsiniz:

*.* ~

Bir sorun olsa bile, zamanın% 99.9999'u (bununla kişisel deneyimimde neredeyse her seferinde kastediyorum), diskin bir sonraki taranmasında bu sorunla ilgilenilir. Bu gerçekleştiğinde esas olarak hava durumuna bağlı olarak işletim sistemi ne yaptığınızı fark etti (garip bir şekilde genellikle değil). Bir Pi SD kartları kullandığından, bunun bir Pi'de bilgisayarımda olduğundan daha az olduğunu hayal ediyorum.


1

Doğru bir şekilde hatırlıyorsam, salt okunur bir dosya sistemi SD kartı 'güvenli' hale getirmez. Gücün beklediğiniz / istediğiniz kadar kararlı olmadığı bir müşteriye (bunların yarısı için 80 günden fazla mevcut çalışma süresi) sahip 10 Pi var. Pi'nin birkaç günden daha uzun süre çalışmasını sağlayabilecek güç kaynakları (3A değerinde ucuz şarj cihazları ve 2.3A değerinde 'pahalı' iPad şarj cihazları) bulmam için biraz zaman aldı. yalnızca salt okunur IIRC kullanılan biri dahil.

Sorunum çoğunlukla (yeni malzemeler nedeniyle) çözüldü, ancak gelecekteki projeler için bir NFS kök dosya sistemi yapmayı düşünüyorum. Bununla ilgili, çoğunlukla normal Pi fs görüntüleri etrafında çözülen birçok öğretici var, ancak minimal bir debootstrap yapmak ve bunu NFS üzerinden salt okunur bir kök dosya sistemine dönüştürmek oldukça kolaydır. Bunu Pi için uboot ve akıllı bir uboot betiği ile eşleştirdiğinizde SD kartınız sadece birkaç megabayt RPi ürün yazılımı, uboot görüntüsü ve uboot betiği içerir.


0

Bunun için Puppy Linux hakkında iyi şeyler duydum . Her ne kadar denemedim itiraf etmeliyim.

SD karta geri yazılmayacak şekilde ayarlanabilir.


-1

Raspberrypi.org'un indirme sayfasından dört resim var :

  • Debian "wheezy"
  • Yumuşak şamandıra Debian "wheezy"
  • Arch Linux ARM
  • QtonPi

Ve sadece varsayılan olarak okunan tek şey (ancak gerekirse değiştirilebilir):

Umarım, bunlardan biri ihtiyaçlarınızı karşılar.


Bunların hiçbiri varsayılan olarak salt okunur değildir.
Alex Chamberlain

@alex, İyi nokta.
Yedric

TinyCoreLinux listeye eklendi. Yalnızca varsayılan olarak okunur.
avra
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.