Raspberry Pi에서 "임베디드 스타일"을 쉽게 실행할 수있는 Linux 배포판이 있습니까? [닫은]


9

다음을 제공하는 Linux 배포판이 필요합니다.

  • 라즈베리 파이에서 실행
  • 읽기 전용 파일 시스템을 통해와 같이 전력 손실을 안정적으로 견딜 수 있습니다.

일반 Linux 배포판을 읽기 전용 모드로 변경하는 방법에 대한 일부 문서를 찾아 볼 수있었습니다. 임베디드 환경에서 실행되도록 설계된 배포판이 이미 있기를 바랐습니다.

Pi가 USB / 이더넷으로 작동하기에 충분한 패키지 나 드라이버가 필요하지 않습니다. GUI 인터페이스 나 다른 것이 필요하지 않습니다. 이것은 C로 작성된 사용자 정의 서비스를 실행합니다.

누구나 적합한 배포판을 알고 있습니까?


이것은 임베디드 응용 프로그램에 대한 것이므로 두 가지 빠른 참고 사항이 있습니다. 먼저 Linux 경로를 사용하기로 결정한 경우 실시간 커널을 사용하여 시스템이 충분히 빠르게 응답 할 수 있는지 확인하십시오. 둘째, 소프트웨어 루프 / 오류 발생시 조치를 취하도록 워치 독 타이머를 설정할 수도 있습니다.
획기적인

raspberrypi.stackexchange.com을 확인하십시오. 그러나이 질문은 쇼핑 유형의 질문이므로 주제가 아닌 것 같습니다.
Kevin Panko

답변:


3

대부분의 임베디드 시스템은 맞춤형 커널을 사용합니다. 이를 촉진하기위한 도구 중 하나 는 GNU gcc 툴체인, uClibc 라이브러리, (거대한) GNU libc, Linux 커널, BusyBox 및 임베디드 보드의 루트 파일 시스템을위한 기타 유틸리티 / 패키지를 빌드하는 스크립트 세트 인 Buildroot 입니다. RaspberryPi는 비교적 새로운 보드이므로 Buildroot에서 해당 보드에 대한 지원은 아직 개발 중이지만 분명히 프로젝트 , 다른 프로젝트개인의 작업이 있습니다. RP 제조업이 증가하고 유통이 개선됨에 따라 더 많을 것입니다.

Buildroot를 사용하면 질문에 설명 된대로 정확하게 Linux 커널 및 루트 파일 시스템을 구축 할 수 있습니다. 인터넷 연결 속도 및 개발 PC의 기능에 따라 1-4 시간 이상 이진 파일이있을 수 있습니다. 단점은 결과 바이너리가 성공적으로 부팅 및 실행되는지 테스트되거나 보장되지 않는다는 것입니다. 부팅 순서를 디버깅하려면 시스템 콘솔이 필수적입니다. 에 대한 내 대답을 참조하십시오 어떻게 모니터를 필요없이 이더넷 / 무선 랜을 통해 내 미니 PC (라즈베리 파이 / MK802 / 멜 A1000 / VIA APC)에 액세스 할 수 있습니까? 그러나 RaspberryPi가 깨지지 않도록 설계 되었으므로이 단점은 사용자 지정 커널 및 RFS를 구축하는 데 방해가되어서는 안됩니다.

"생존하는 전력 손실"과 관련하여 : 파일 시스템을 올바르게 선택하면 일반적으로이 문제를 완화 할 수 있습니다. MTD 디바이스 계층과 저널링 파일 시스템 (예 : jffs2)은 경험상 상당히 견실 한 것으로 나타났습니다. 거의 완벽한 보호 ramfs를 위해 R / W 파일 시스템으로 전환하지 않고 고정 크기 램 디스크가 아닌 initramfs를 사용합니다 .

추가

Buildroot의 기능에 대한 30- 슬라이드 소개가 여기 있습니다
(# 27) 임베디드 시스템을 구축하기위한 몇 가지 유사하고 대체 도구에 대한 언급이 있습니다.



1

콘솔에 액세스 할 수있는 Seagate Dockstar가있는 데 데비안 스퀴즈를 설치했습니다. 읽기 전용 루트에서 실행하기위한 출발점 으로 Jeff Doozan 의이 훌륭한 기사 1 을 사용했습니다 . 기본 전략에는 매 부팅마다 필요한 쓰기 가능 디렉토리를 tmpfs로 마운트하는 스크립트를 작성하는 것이 포함됩니다. 나는 Jeff 2 의 스크립트를 여기 인용합니다 (Jeff to 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

위의 행을 대상 rootfs에 / sbin / init-ro 라는 스크립트로 저장하고 실행 가능하게 만드십시오.

chmod 755 /sbin/init-ro

부팅시이 스크립트를 사용하려면 시스템 rootfs를 약간 준비해야합니다 (모두 Jeff의 스크립트 2 에서 인용 한 $ROOT것 (마운트 된 rootfs의 실제 위치에 맞게 조정 )).

# 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/*

위에서와 같이 rootfs를 준비한 후, / etc / fstab에서 rootfs를 읽기 전용으로 마운트 할 수 있습니다 ( ext2 를 사용중인 파일 시스템으로 바꾸 거나 대신 rootfs를 사용하십시오).

/dev/root  /                 ext2  noatime,ro   0 1

마지막으로 실제 / sbin / init 전에 스크립트를 실행하려면 커널 매개 변수 (예 : Raspi의 /boot/cmdline.txt)에 다음을 추가 해야합니다 . (다음은 단지 일례이다 루트rootdelay 파라미터. 상기 라인에 추가되어야하는 중요한 부분 cmdline.txt가 있다 .)init=/sbin/init-ro

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

그러나 rootfs에서 쓰기 액세스가 필요한 소프트웨어의 경우 적절한 tmpfs 위치를 마운트하거나 외부 스토리지에 기록해야합니다.


1

내 2 센트, 읽기 전용 OS로 사는 것보다 Pi의 안정적인 배터리 백업을 만드는 것이 훨씬 쉽습니다 (결국 더 좋았습니다). 물론, 그것은 전자에 대한 매우 기본적인 지식이 필요하다는 것을 의미합니다 (그리고 BASIC을 의미합니다. 이 사람은 몇 가지 더 멋진 사람을 만들었습니다 : /raspberrypi/1360/how-do-i-build-a-ups-like-battery-backup-system

이렇게하면 LiPo를 사용하지 마십시오. NiCad는 당신이 원하는 것입니다. LiPo는 과도하게 충전 할 수 없습니다. 당신은 경고를 받았습니다.

또한, 당신은 내 경험상 매우 사소한 문제에 대해 매우 걱정하는 것 같습니다. 나는 항상 내 리눅스 박스를 때리고 갑자기 예약되지 않은 종료는 귀찮게 할 수없는 일이다. 로그를 비활성화하면 그 작업에 대한 불만이 거의 없습니다.

모든 로그를 비활성화하려면 /etc/rsyslog.conf의 첫 번째 규칙으로 다음 줄을 추가하면됩니다.

*.* ~

문제가 발생하더라도 99.9999 % (개인 경험에서 거의 모든 시간을 의미 함)는 디스크를 다음에 스캔 할 때 문제를 해결합니다. 그 일이 주로 날씨에 달려있을 때 OS는 당신이 한 일을 알아 차 렸습니다 (일반적으로 충분하지 않습니다). Pi는 SD 카드를 사용하기 때문에 PC에서보다 Pi에서 덜 발생한다고 상상할 수 있습니다.


1

올바르게 기억한다면 읽기 전용 파일 시스템은 SD 카드를 '보안'하지 않습니다. 10 Pi가 고객이 기대하고 / 원하는만큼 안정적이지 않은 고객 (반나절 동안 80 일 동안 현재 가동 시간)에서 실행 중입니다. 모든 종류의 SD 손상 문제가 발생하기 전에 실제로 며칠 이상 Pi의 작동을 유지할 수있는 전원 공급 장치 (3A 등급의 저렴한 충전기 및 2.3A 등급의 '고가'iPad 충전기)를 찾는 데 시간이 걸렸습니다. 읽기 전용 IIRC 만 사용 된 것을 포함하여.

내 문제는 대부분 새로운 소모품으로 인해 현재 해결되었지만 향후 프로젝트에서는 NFS 루트 파일 시스템을 수행하려고합니다. 이미 일반적인 Pi fs 이미지를 해결하는 방법에 대한 많은 자습서가 있지만 최소한의 부트 스트랩을 수행하고 NFS를 통해 읽기 전용 루트 파일 시스템으로 변경하는 것은 매우 쉽습니다. 이것을 파 이용 uboot 및 스마트 uboot 스크립트와 페어링하면 SD 카드에 RPi 펌웨어, uboot 이미지 및 uboot 스크립트가 포함됩니다.


0

Puppy Linux 에 대해 좋은 소식을 들었습니다 . 나는 그것을 시도하지 않았다는 것을 인정해야하지만.

SD 카드에 다시 쓰지 않도록 설정할 수 있습니다.


-1

raspberrypi.org의 다운로드 페이지 에는 4 가지 이미지가 있습니다 .

  • 데비안 "wheezy"
  • 소프트 플로트 데비안 "wheezy"
  • 아치 리눅스 ARM
  • QtonPi

그리고 기본적으로 읽기 전용이지만 여기에 필요한 경우 변경할 수 있습니다 :

이 중 하나가 귀하의 요구를 충족시키기를 바랍니다.


이들 중 어느 것도 기본적으로 읽기 전용이 아닙니다.
Alex Chamberlain

@alex, 좋은 지적입니다.
Yedric

TinyCoreLinux가 목록에 추가되었습니다. 기본적으로 만 읽습니다.
avra December
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.