읽기 전용 SD 카드에서 실행


20

XBMC를 실행하도록 Raspberry Pi를 설정했으며 SD 카드에서 항상 재생 목록과 파일을 재생하도록 부팅하고 싶습니다. Raspbmc 자동 업데이트를 해제했습니다. SD 카드를 "잠금"위치로 전환해도 여전히 작동합니다. 이제 내 질문은 :

  1. "읽기 전용"SD 카드 시스템이 내 응용 프로그램에서 항상 작동합니까?

  2. SD 카드는 항상 읽기 전용 모드이므로 shutdown 명령을 사용하지 않고 전원 스위치를 끄면 시스템이 손상됩니까?

  3. 이것이 안정적으로 작동하더라도 "Raaspbmc가 올바르게 종료되지 않았습니다"라는 메시지가 항상 나타납니다. Pi가 켜질 때이 메시지를 비활성화 할 수있는 방법이 있습니까?


1
이것이 안정적으로 작동하기 위해서는 적절한 파일 시스템이 읽기 전용으로 마운트되어 있는지 확인해야합니다.
Jivings

답변:


14

나는 비슷한 용도로 사용했다. 건물 입구에서 웹 페이지를 좁히기 위해 Pi를 사용하고 있습니다. TV의 USB 포트를 통해 Pi 전원 공급.

마운트 / 읽기 전용.

파워 손실 방지를 위해 라인을 변경하여 마운트 / 읽기 전용 /etc/fstab

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

꽤 간단합니다. 그러나 기능적 시스템의 일부 프로세스는 작성 해야 합니다.

/ tmp를 메모리에 마운트하십시오.

많은 것들이 쓰여 /tmp지므로 줄을 추가하여 메모리에 마운트했습니다./etc/fstab

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

512MB Pi를 사용할 수 있었으므로 / tmp 30M을 크게 만들었습니다.

해당 쓰기가 필요없는 서비스를 비활성화하십시오.

나는 rsyslog로깅을 멈추고 dphys-swapfile쓸 곳이 없으므로 비활성화 했습니다 . 스왑없이 실행하면 메모리를 많이 사용하는 무거운 물건을 들어 올리면 문제가 발생합니다. 제 경우에는 하루 동안 단일 미도리 프로세스를 실행하지 않습니다. cat /etc/rc2.d/README그 방법에 대한 파이에. (raspbian은 기본적으로 런레벨 2에서 시작하며 raspbmc는 다를 수 있습니다)

내가 쓰는 서비스 가짜 쓰기 필요합니다.

live-cd와 같은 방식으로 메모리의 파일 시스템에 대한 쓰기 액세스를 제공 할 수 있습니다. 로모그래퍼 조합 마운트 . 그러나 unionfs 또는 이후의 aufs에 대해 내 커널을 크로스 컴파일하는 것을 좋아하지 않았습니다 . 다행히도 unionfs-fuse사전 구축되어 있습니다. 그것은 마운트 할 수 없지만 /실제로 필요합니까?

미도리를 실행하려면 X가 필요합니다. X는 /home/pipi /var로 자동 로그인 할 때 쓰고 싶습니다. 그리고 나는 두 곳에서 unionfs를 사용하여 장소에 마운트하기로 결정했습니다.

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

에 두 줄을 추가 /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

/ var, / home 및 / tmp에 대한 쓰기는 모두 / tmp에 있습니다. 그러나 8 ~ 10 시간 동안 기계를 가동하면 전원이 차단됩니다. 그렇게 할 것입니다.

내용을 조정할 때 읽기 / 쓰기 다시 마운트

네트워크를 변경했을 때 /etc/resolv.confdhclient가 작성한 것은 더 이상 작동하지 않았습니다.

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

rw를 ​​다시 마운트 한 후 깨끗하게 종료하거나 ro를 다시 마운트하는 것을 잊지 마십시오.

추신

독일어를 읽을 수 있다면 (archive.org에서) 더 깔끔한 방법이 있습니다. Deutsche Gründlichkeit ...


4

SD 카드 잠금 위치 핀이 PCB에 전혀 연결되어 있지 않으므로 카드에 내부 잠금 메커니즘이없는 한 잠금은 가상입니다. 잠겨있는 동안 SD 카드에 아무 것도 쓰지 말고 직접 확인하십시오.


4

SD의 읽기 전용 스위치는 기껏해야 소프트웨어 옵션입니다. 내가 가지고있는 거의 모든 장치는 무시하고 avra의 의견이 정확하면 Raspberry Pi가 켜져 있는지 여부를 알 수있는 방법이 없을 수 있습니다. 따라서 귀하의 질문에 :

  1. 예, 읽기 전용이 아니기 때문에 작동합니다.
  2. 예, 시스템이 손상 될 수 있습니다. 루트 읽기 전용 마운트와 리눅스가 추적해야 할 것들을위한 작은 램 / 템프 파일 시스템이 필요합니다.
  3. 아니요, 파일 시스템이 손상되었을 가능성이 큽니다.

@avra의 대답은 이전 RPis에 사용 된 표준 크기 SD 카드에서 쓰기 방지 슬라이더의 위치를 ​​감지 한 물리적 스위치가 정확하다는 것입니다 (마이크로 크기 카드는 확실하지 않습니다. 카드 홀더의 측면에있는 접촉부와 카드 홀더의 하단에있는 다른 스위치는 "카드 삽입"스위치이며, RPi.
SlySven 2016 년

2
  1. XBMC를 사용하지는 않았지만 일반적인 운영 체제에서 WRT를 사용하지 않는 것이 좋습니다. 암시 적으로 XBMC가 명시 적으로 설정되어 있지 않은 경우에도 좋은 생각이 아닙니다.

  2. 카드가 있다면 정말 읽기 전용 , 실제로는 되지 않습니다 그것은 정말 읽기 전용 있다면, 당신은 당신이 '종료'를 실행할 수있는 지점에 도착하지 않을 수 있습니다, 그러나, 시스템을 손상. 만약 당신이 (다시 의미, 당신은 전체 카드가 실제로 읽기 전용입니다 확신 합니다!), 종료 종료를 귀찮게하지 마십시오. 플러그를 뽑기 만하면됩니다. 카드의 아무 것도 변경할 수 없으므로 수행 한 작업은 중요하지 않습니다.

  3. 확실히, 당신은 책임있는 init 파일을 찾아서 편집 할 수 있습니다 (물론, 파일 시스템은 쓰기 가능해야합니다).

루트 파일 시스템을 마운트 할 경우 현실적으로, 읽기 전용, 당신은 (즉, 열심히 단지 잠금 토글을 사용하는 것보다 수 있습니다) 아마 OS가 디스크에 기록 할 필요가 않기 때문에, 성공적으로 부팅을받지 않습니다. 그러나, 그렇게한다면 원하는 것을 자유롭게 할 수 있습니다. 카드가 읽기 전용이면 변경할 수 없으므로 해를 끼치 지 않습니다.


2

당신이 방금 할 경우

1.

/ dev / mmcblk0p2 / ext4 기본값, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat 기본값, noatime, ro 0 1
전체 읽기 전용 시스템이 있습니다.

2.

-logfile /tmp/Xorg.log로 Xorg를 시작하고 쓰기 액세스가 필요한 다른 서비스를 찾아서 / tmp로 경로 재 지정할 수 있습니다.

삼.

이미 언급했듯이 필요없는 서비스를 비활성화하십시오.

insserv -r dphys-swapfile
insserv -r rsyslog
insserv -r samba (설치된 경우) 등

그런 다음 전혀 문제가 없습니다. 좋은 질문은 RO 만 있고 플러그인 / 출력 전원이 항상 SD 카드에 전혀 손상이 없을지 여부입니다 ...

마지막으로, 아름다운 스플래시 화면으로 이동하면 사용자 정의 저렴한 독립형 어플라이언스가 있습니다. :) 그리고 나는 TV에서 PI over USB 포트에 전원을 공급하는 아이디어를 좋아합니다. 그러나 500mA로 제한되지 않습니까? 확실하지 않지만 PI에 약 1A가 필요합니까?


dhcpclient는 /etc/resolv.conf 및 / var의 다른 위치를 작성해야합니다. insserv 명령을 언급 한 것이 좋았습니다. 새 인증서를 얻기 위해 어플라이언스를 재구성하고 있습니다.
Chris Wesseling 2016 년

1

이 온라인을 간단히 살펴보면 최신 버전의 XBMC에 대한 솔루션을 게시 한 사람이 아무도 없습니다.

Goldilocks가 지적한 주요 문제는 XBMC가 읽기 전용으로 설계되지 않았다는 것입니다. OpenELEC Media Center 포럼 에서이 스레드 를 살펴보면이 점이 더욱 향상됩니다 . 일반적인 합의는 Kodi를 읽기 전용으로 만들 수 없습니다.

사용자 klojum에 따른 이유는 다음과 같습니다.

읽기 전용 장치에서 OpenELEC 작업을 수행 할 수 없습니다. Kodi는 비디오 정보로 데이터베이스를 저장 / 업데이트해야합니다. 시스템 파티션이 이유로 읽기 전용으로 설정되었습니다. 모든 설정은 두 번째 / storage 파티션을 통해 이루어집니다. 따라서 cmdline 또는 다른 방법으로 제거하는 것은 옵션이 아닙니다. 재부팅 할 때마다 시스템을 복원하는 것은 제정신입니다. OE를 설치하고 원하는대로 실행하고 전체 백업 / 이미지를 만듭니다. 문제가 발생했을 때 복원

사람들이 이전 버전에 대한 해결 방법을 찾음 으로써이 문제를 해결할 방법이있을 수 있지만 일반적으로 필요가 없다고 생각합니다.

나는 몇 년 동안 Kodi를 사용한 사람으로서 SD 카드의 성가심이 손상되었다는 것을 이해할 수 있습니다. 그러나 저수준 코드 땜질을 포함하지 않는 문제를 완화하는 다른 간단한 방법이 있습니다.

SD 카드가 손상되는 가장 큰 이유는 정전이 발생한 경우입니다. 이것이 발생할 수있는 이유에는 몇 가지가 있습니다. 누군가가 SD 카드에 쓰기를 통해 중간에 Pi의 전원을 끊습니다. 또는 시스템이 정지하고 전원을 분리해야합니다. 그러나 두 번째 이유는 부패를 일으킬 가능성이 적다고 생각합니다. 또는 다른 결함이 있음을 나타냅니다.

Pi의 초기에는 보드의 전력 공급 회로가 확실히 원하는 것을 남겼습니다. 전원이 켜진 상태에서 USB 동글을 Pi에 꽂기 만하면 시스템 충돌이 발생한 날을 기억할 수 있습니다. 믿지 않는다면 2011 Raspberry Pi에서 XBMC를 실행하는 데 문제가있는 것 입니다. 다른 문제는 초기 소프트웨어가 완전히 성숙되지 않았다는 것입니다. Pi는 데스크탑 컴퓨터가 될 수있는 것과는 다른 방식으로 소프트웨어 문제를 해결하는 데 시간이 걸립니다. 따라서 최신 버전의 Kodi는 임의 시스템 정지로 인해 어려움을 겪지 않습니다.

갑작스런 전원 손실 문제를 해결하려면 일종의 무정전 전원 공급 장치 (UPS)를 통해 Pi에 전원을 공급하십시오. 일반 UPS는 작동하지만 실제로 Pi로 설계된 UPS가 있습니다. 이처럼 라즈베리 파이 무정전 전원 공급 장치 . 시스템 정지가 발생하면 준비된 것이어야합니다. 즉, 취향에 맞게 모든 설정과 앱 및 환경 설정으로 OS를 설정 한 다음 SD 카드의 이미지를 만듭니다. 따라서 문제가 발생하면 SD 카드를 다시 이미지화하면됩니다.

SD 카드가 고장날 다른 이유는 카드가 닳아서 발생한 것입니다. 그러나 이것은 내가 경험 한 문제가 아닙니다. 평판이 좋은 브랜드의 고품질 SD 카드를 사용하는 경우 해당 문제를 해결하는 데 절반이 걸릴 것이라고 생각합니다. SD 카드 마모를 최소화한다는 것은 SD 카드가 절대 최소값을 유지하고 있음을 의미합니다. 방대한 영화 등을 저장할 수있는 저장 공간으로 사용해서는 안됩니다.

OpenELEC에서 작동하는 옵션은 USB 드라이브에서 실행 중입니다. 물론 모든 부팅 파일은 SD 카드에 남아 있어야합니다. 이를 수행하는 방법에 대한 여러 자습서가 있습니다. 여기 에 따라 가기는 쉽지만 완전성을 위해 개요를 알려 드리겠습니다.

첫 번째 단계는 SD 카드 및 USB 드라이브를 설정하는 것입니다. MiniTool Partition Wizard와 같은 프로그램을 사용하여 기본 활성 파티션이 150MB 이상인 SD 카드를 FAT32로 포맷하면 실제로 전체 SD 카드를 FAT32로 포맷 할 수 있습니다. 파티션이 기본 활성으로 설정되어 있는지 확인하십시오. SD 카드를 SYSTEM과 같은 레이블로 지정하면 나중에 그 내용을 기억할 수 있습니다. 그런 다음 전체 USB 드라이브를 파일 시스템 유형이 EXT4 인 하나의 기본 활성 파티션으로 포맷하고 다시 STORAGE와 같은 레이블을 붙입니다.

OpenELEC을 다운로드하고 추출하면 루트 폴더로 이동하십시오. 그리고이 파일들을 선택하십시오 :

openelec.ico
README.md

SD 카드의 루트에 복사하십시오.

다음으로 target폴더에서 파일을 복사하십시오.

KERNEL
SYSTEM

그리고 다시 SD 카드의 루트 디렉토리에 붙여 넣습니다.

그런 다음 3rdparty/bootloader폴더에서 파일을 복사하십시오.

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

SD 카드의 루트 디렉토리에 붙여 넣습니다.

마지막 단계는 KERNELSD 카드에있는 파일의 파일 이름을로 변경하는 것 kernel.img입니다.

시작 파일을 작성하려면 SD 카드의 루트 디렉토리에 파일을 작성 cmdline.txt하고 다음 행을 추가하십시오.

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

파일을 저장 한 후 닫으십시오. 그리고 거기에서 당신은 갈 수 있습니다. 이 정보의 출처는 USB 드라이브에서 XBMC를 실행하여 응답 성을 높였다 고 제안했습니다. 이 주장에 대해 잘 모르겠지만이 방법을 사용한 결과 성능이 저하되지는 않을 것입니다.

미디어 컬렉션은 USB 또는 네트워크 위치에 관계없이 두 번째 드라이브에 저장하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.