เล่นบนการ์ด SD แบบอ่านอย่างเดียว


20

ฉันได้ติดตั้ง Raspberry Pi เพื่อเรียกใช้ XBMC แล้วและฉันต้องการให้บูตขึ้นเพื่อเล่นเพลย์ลิสต์และไฟล์บนการ์ด SD ฉันปิดการอัพเดทอัตโนมัติของ Raspbmc มันยังคงทำงานได้ดีเมื่อฉันเปลี่ยนการ์ด SD ไปยังตำแหน่ง "ล็อค" ตอนนี้คำถามของฉันคือ:

  1. ระบบการ์ด SD "อ่านอย่างเดียว" จะทำงานตลอดเวลาในแอปพลิเคชันของฉันหรือไม่

  2. เนื่องจากการ์ด SD อยู่ในโหมดอ่านอย่างเดียวเสมอหากฉันไม่ได้ใช้คำสั่งปิดเครื่องและเพิ่งปิดสวิตช์ไฟจะทำให้ระบบของฉันเสียหายหรือไม่

  3. แม้ว่าสิ่งนี้จะทำงานได้อย่างน่าเชื่อถือ แต่ก็จะปรากฏข้อความ "Raaspbmc ไม่ได้ปิดลงอย่างถูกต้อง" เสมอ มีวิธีการปิดการใช้งานข้อความนี้เมื่อ Pi อำนาจขึ้น?


1
หากคุณต้องการให้สิ่งนี้ทำงานได้อย่างน่าเชื่อถือคุณจะต้องตรวจสอบให้แน่ใจว่าระบบไฟล์ที่เหมาะสมนั้นถูกเมาท์เป็นแบบอ่านอย่างเดียว
Jivings

คำตอบ:


14

ฉันมีการใช้งานที่คล้ายกัน ฉันใช้ Pi เพื่อ จำกัด หน้าเว็บให้แคบลงในทางเข้าอาคาร เปิดเครื่อง Pi ผ่านพอร์ต USB บนทีวี

เมานต์ / อ่านอย่างเดียว

เพื่อให้เป็นที่พิสูจน์แล้วว่า powerloss ฉันติดตั้ง / อ่านอย่างเดียวโดยการเปลี่ยนสาย /etc/fstab

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

ค่อนข้างง่าย แต่กระบวนการบางอย่างบนเครื่องทำงานจำเป็นต้องเขียน

เมานต์ / tmp ในหน่วยความจำ

มีหลายสิ่งที่เขียนถึง/tmpดังนั้นฉันจึงติดตั้งในหน่วยความจำโดยเพิ่มบรรทัดลงไป/etc/fstab

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

ฉันมี Pi ขนาด 512MB ดังนั้นฉันจึงทำ / tmp 30M ใหญ่

ปิดใช้งานบริการฉันไม่ต้องการเขียน

ฉันปิดการใช้งานrsyslogเพื่อหยุดการบันทึกและdphys-swapfileเนื่องจากมันไม่มีที่เขียนจริง การรันโดยไม่มีการสลับจะทำให้เกิดปัญหาหากคุณยกของหนักที่ต้องใช้ความจำมาก ในกรณีของฉันใช้กระบวนการ midori เพียงวันเดียวไม่ใช่ cat /etc/rc2.d/READMEใน Pi ของคุณเกี่ยวกับวิธีการทำเช่นนั้น (raspbian เริ่มทำงานใน runlevel 2 โดยค่าเริ่มต้น raspbmc อาจแตกต่างกัน)

ให้บริการผมไม่ต้องเขียนมารยาท

คุณสามารถให้สิทธิ์การเขียนในระบบไฟล์ในหน่วยความจำแบบที่ live-cd ทำได้ ด้วยยูเนี่ยนเมาท์ แต่ผมไม่ชอบความคาดหวังของข้ามรวบรวมเคอร์เนลของตัวเองสำหรับunionfsหรือในภายหลังaufs โชคดีที่unionfs-fuseสร้างไว้ล่วงหน้า มันไม่สามารถรวมการเมาน/ต์ แต่ฉันต้องการมันจริงหรือ

ทำงาน midori ฉันต้องการ X เพื่อทำงาน X ต้องการที่จะเขียนใน/home/piขณะที่ฉัน autologin เป็น pi และสถานที่สองแห่งใน/varฉันตัดสินใจที่จะติดตั้งเหล่านั้นไปยังสถานที่โดยใช้ unionfs

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

และต่อท้าย 2 บรรทัดไปที่ /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 endup ทั้งหมดใน / tmp แต่ฉันต้องการเพียงเครื่องของฉันที่จะทำงานเป็นเวลา 8 ถึง 10 ชั่วโมงจากนั้นพลังงานจะถูกตัดออก ดังนั้นสิ่งนี้จะทำ

การนับการอ่าน - เขียนใหม่เมื่อปรับแต่งสิ่งต่างๆ

เมื่อฉันเปลี่ยนเครือข่าย/etc/resolv.confdhclient ที่เขียนนั้นไม่ทำงานอีกต่อไป

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

อย่าลืมปิดเครื่องให้เรียบร้อยหรือติดตั้ง ro ใหม่อีกครั้งหลังจากติดตั้ง rw ใหม่

PS

หากคุณสามารถอ่านภาษาเยอรมันมีวิธีที่สะอาดกว่า (จาก archive.org) Deutsche Gründlichkeit ...


4

พินตำแหน่งล็อคการ์ด SDไม่ได้เชื่อมต่อกับ pcb เลยดังนั้นการล็อคของคุณจึงเสมือนจริงยกเว้นว่าการ์ดนั้นมีกลไกการล็อคภายใน ลองเขียนอะไรไปยังการ์ด SD ในขณะที่มันถูกล็อคและตรวจสอบด้วยตัวเอง


4

สวิตช์แบบอ่านอย่างเดียวของ SD เป็นตัวเลือกซอฟต์แวร์ที่ดีที่สุด อุปกรณ์เกือบทุกตัวที่ฉันจะเพิกเฉยและถ้าความคิดเห็นของ avra ถูกต้อง Raspberry Pi อาจไม่มีทางบอกได้ว่ามันเปิดหรือปิดอยู่ ดังนั้นสำหรับคำถามของคุณ:

  1. ใช่มันใช้งานได้เพราะไม่ใช่แบบอ่านอย่างเดียว
  2. ใช่มันจะสร้างความเสียหายให้ระบบของคุณ คุณจะต้องดูที่การเมาท์รูทแบบอ่านอย่างเดียวและมีระบบไฟล์ ram / tempfs ขนาดเล็กสำหรับสิ่งต่าง ๆ ที่ Linux ต้องติดตาม
  3. ไม่เพราะมีโอกาสที่ดีที่คุณจะเสียหายระบบไฟล์

คำตอบของ @avra นั้นถูกต้องตรงที่สวิตช์ทางกายภาพที่ตรวจพบตำแหน่งของแถบเลื่อนการป้องกันการเขียนบนการ์ด SD ขนาดมาตรฐานที่ใช้ใน RPis ก่อนหน้านี้ (ฉันไม่แน่ใจเกี่ยวกับการ์ดขนาดจิ๋วฉันดูเหมือนจะไม่ มีสิ่งดังกล่าว) ไม่ได้ต่อสายเข้ากับสิ่งใด ๆ (นั่นคือหน้าสัมผัสที่ด้านข้างของที่ใส่การ์ด) สวิตช์อื่น ๆ (ที่ด้านล่างของที่ใส่การ์ด) คือสวิตช์ "ใส่การ์ด" และตรวจสอบโดย RPI
SlySven

2
  1. ฉันไม่ได้ใช้ XBMC แต่นี่ไม่ใช่ความคิดที่ดีสำหรับระบบปฏิบัติการปกติเว้นแต่ว่าคุณจะใช้ความยาวในการตั้งค่าเพื่อจุดประสงค์นั้น โดยนัยถ้า XBMC ไม่ได้ตั้งค่าไว้อย่างชัดเจนดังนั้นจึงไม่ใช่ความคิดที่ดีสำหรับมัน

  2. หากการ์ดอ่านอย่างเดียวจริงๆแล้วมันจะไม่ทำให้ระบบของคุณเสียหาย แต่ถ้าเป็นแบบอ่านอย่างเดียวคุณไม่น่าจะไปถึงจุดที่คุณสามารถเรียกใช้ 'ปิดระบบ' ได้ ถ้าคุณทำ (หมายถึงอีกครั้งคุณจะแน่ใจว่าการ์ดทั้งหมดเป็นแบบอ่านอย่างเดียว!) อย่ากังวลกับการปิดระบบ เพียงแค่ดึงปลั๊ก เนื่องจากไม่มีสิ่งใดในการ์ดสามารถเปลี่ยนแปลงได้จึงไม่สำคัญว่าคุณจะทำอะไร

  3. แน่นอนว่าคุณสามารถค้นหาไฟล์ init ที่รับผิดชอบและแก้ไขได้ (แน่นอนว่าระบบไฟล์จะต้องสามารถเขียนได้)

หากคุณติดตั้งระบบไฟล์รูทเป็นแบบอ่านอย่างเดียว (ซึ่งอาจจะยากกว่าการใช้การสลับการล็อก) คุณอาจจะไม่สามารถบูตได้สำเร็จเนื่องจากระบบปฏิบัติการจำเป็นต้องเขียนลงดิสก์ อย่างไรก็ตามถ้าคุณทำแล้วรู้สึกอิสระที่จะทำสิ่งที่คุณต้องการ (และสามารถหนีไปด้วย) หากการ์ดเป็นแบบอ่านอย่างเดียวจะไม่สามารถเปลี่ยนแปลงได้ดังนั้นคุณจะไม่ได้รับอันตรายใด ๆ


2

ถ้าคุณทำ

1

/ dev / mmcblk0p2 / ค่าเริ่มต้น ext4, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat ค่าเริ่มต้น, noatime, ro 0 1
คุณมีระบบแบบอ่านอย่างเดียว

2

คุณสามารถเริ่ม Xorg ด้วย: -logfile /tmp/Xorg.log และค้นหาบริการอื่น ๆ ที่ต้องการการเข้าถึงเพื่อเขียนเปลี่ยนเส้นทางไปยัง / tmp

3

ดังกล่าวแล้วปิดการใช้งานบริการที่คุณไม่ต้องการ

insserv -r dphys-swapfile
insserv -r rsyslog
insserv -r samba (หากติดตั้ง) เป็นต้น

ไม่น่าจะมีปัญหาอะไร คำถามที่ดีคือถ้าจะไม่เกิดความเสียหายกับการ์ด SD เลยถ้า RO เท่านั้นและปลั๊กอิน / พลังออกตลอดเวลา ...

ในที่สุดหน้าจอสาดที่สวยงามและคุณไปคุณมีเครื่องใช้ไฟฟ้าราคาถูกแบบกำหนดเอง :) และฉันชอบไอเดียในการขับเคลื่อน PI ผ่านพอร์ต USB จากทีวี แต่นั่นไม่ จำกัด เพียง 500mA ไม่แน่ใจ แต่ PI ต้องการประมาณ 1A หรือไม่


dhcpclient ต้องเขียน /etc/resolv.conf และอาจเป็นตำแหน่งอื่นใน / var ยินดีที่คุณพูดถึงคำสั่ง insserv ฉันต้องการสิ่งเหล่านั้น ฉันกำลังสร้างอุปกรณ์ขึ้นใหม่เพื่อรับใบรับรอง ca ใหม่
คริส Wesseling

1

ดูอย่างรวดเร็วในออนไลน์นี้แสดงให้เห็นว่าไม่มีใครโพสต์วิธีแก้ไขปัญหานี้สำหรับ XBMC รุ่นล่าสุด

ปัญหาหลักที่ Goldilocks ชี้ให้เห็นคือ XBMC ไม่ได้ออกแบบมาเพื่อให้อ่านได้อย่างเดียว ประเด็นนี้จะได้รับการเพิ่มเติมหากคุณดูที่กระทู้นี้ในฟอรัม OpenELEC Media Center ฉันทามติทั่วไปไม่มีความเป็นไปได้ที่จะทำให้ Kodi อ่านได้อย่างเดียว

เหตุผลตามผู้ใช้ klojum คือ:

หากต้องการให้ OpenELEC ทำงานบนอุปกรณ์แบบอ่านอย่างเดียวจะไม่เกิดขึ้น Kodi จำเป็นต้องจัดเก็บ / อัพเดทฐานข้อมูลด้วยข้อมูลวิดีโอ พาร์ติชันระบบตั้งค่าแบบอ่านอย่างเดียวด้วยเหตุผล การตั้งค่าทั้งหมดดำเนินการผ่านพาร์ติชั่นที่ 2 / ที่เก็บข้อมูล ดังนั้นการลบสิ่งนั้นผ่านทาง cmdline หรืออย่างอื่นนั้นไม่ใช่ตัวเลือก การกู้คืนระบบหลังจากการรีบูตแต่ละครั้งเป็นบ้า ติดตั้ง OE ทำให้มันเป็นไปตามความต้องการของคุณและทำการสำรองข้อมูล / อิมเมจเต็มรูปแบบ คืนค่านั้นในกรณีที่เกิดปัญหา

อาจมีวิธีนี้ในขณะที่ผู้คนพบวิธีแก้ปัญหาสำหรับรุ่นเก่า แต่โดยทั่วไปฉันไม่คิดว่ามีความต้องการ

ฉันสามารถเข้าใจได้ว่าเป็นคนที่ใช้ Kodi มาสองสามปีแล้วที่ความน่ารำคาญของการ์ด SD เกิดความเสียหาย แต่มีวิธีอื่นที่ง่ายกว่าในการลดปัญหาที่ไม่ได้รวมการแก้ไขโค้ดระดับต่ำ

จำนวนหนึ่งเหตุผลที่การ์ด SD จะเสียหายคือหากเกิดไฟฟ้าดับโดยฉับพลัน มีสาเหตุสองประการที่ทำให้สิ่งนี้เกิดขึ้นได้ อาจมีบางคนตัดการเชื่อมต่อพลังงานไปยัง Pi ทางกลางผ่านการเขียนไปยังการ์ด SD หรือระบบค้างและคุณต้องถอดปลั๊กไฟออก แม้ว่าฉันคิดว่าเหตุผลที่สองมีโอกาสน้อยที่จะทำให้เกิดความเสียหาย หรือมันแสดงให้เห็นว่ามีข้อผิดพลาดในการเล่นอีก

ในวันแรกของ Pi วงจรส่งพลังงานบนกระดานแน่นอนเหลืออะไรบางอย่างที่ต้องการ ฉันจำวันที่ทำให้ระบบล่มได้ง่ายๆโดยเสียบ USB dongle เข้ากับ Pi ในขณะที่เปิดเครื่อง ถ้าคุณไม่เชื่อฉันเห็นปัญหาในการรัน XBMC ที่ 2011 Raspberry Pi อีกประเด็นคือซอฟต์แวร์ในยุคแรก ๆ ยังไม่เต็มที่ Pi เป็นสิ่งที่แตกต่างในสิ่งที่คอมพิวเตอร์เดสก์ท็อปสามารถทำได้และการแก้ไขปัญหาซอฟต์แวร์ต้องใช้เวลา ดังนั้น Kodi รุ่นใหม่กว่ามากมีโอกาสน้อยที่จะประสบปัญหาการค้างระบบแบบสุ่ม

เพื่อแก้ปัญหาการสูญเสียพลังงานอย่างฉับพลันให้อำนาจ Pi ของคุณผ่านแหล่งจ่ายไฟสำรอง (UPS) บางชนิด UPS ปกติจะใช้งานได้ แต่มีจริง ๆ โดยเฉพาะ Pi ออกแบบ UPS เช่นนี้ซัพพลายปราศจาก Power สำหรับราสเบอร์รี่ Pi หากระบบค้างเกิดขึ้นควรเป็นสิ่งที่คุณเตรียมไว้ นี่หมายถึงการตั้งค่าระบบปฏิบัติการด้วยการตั้งค่าและแอพและการตั้งค่าตามรสนิยมของคุณจากนั้นสร้างภาพของการ์ด SD ดังนั้นหากมีสิ่งผิดปกติคุณก็สามารถจำลอง SD การ์ดได้อีกครั้ง

เหตุผลอื่น ๆ ที่การ์ด SD จะล้มเหลวเกิดจากการชำรุด อย่างไรก็ตามนี่ไม่ใช่ปัญหาที่ฉันได้ประสบกับตัวเอง หากคุณใช้การ์ด SD ที่มีคุณภาพสูงจากแบรนด์ที่มีชื่อเสียงฉันคิดว่าคุณน่าจะมีวิธีแก้ปัญหานั้นได้ครึ่งทาง เพื่อลดการสึกหรอของการ์ด SD หมายถึงทำให้มั่นใจได้ว่าการ์ด SD กำลังทำขั้นต่ำที่สุด ไม่ควรใช้เป็นพื้นที่เก็บข้อมูลสำหรับชุดภาพยนตร์มากมาย ฯลฯ

ตัวเลือกที่จะทำงานกับ OpenELEC กำลังเรียกใช้งานจากไดรฟ์ USB แน่นอนว่าไฟล์สำหรับบู๊ตทั้งหมดจะต้องอยู่ในการ์ด SD มีบทเรียนจำนวนมากเกี่ยวกับวิธีการทำเช่นนี้ มีอยู่คนหนึ่งที่มีลักษณะค่อนข้างง่ายที่จะทำตามที่นี่แต่เพื่อความสมบูรณ์ฉันจะให้ภาพรวม:

ขั้นตอนแรกคือการตั้งค่าการ์ด SD และไดรฟ์ USB การใช้โปรแกรมเช่นตัวช่วยสร้างพาร์ติชัน MiniTool จัดรูปแบบการ์ด SD เป็น FAT32 ด้วยพาร์ติชันที่ใช้งานอยู่หลักของ 150MB หรือใหญ่กว่าในความเป็นจริงการ์ด SD ทั้งหมดสามารถจัดรูปแบบเป็น FAT32 เพียงตรวจสอบให้แน่ใจว่าพาร์ทิชันถูกตั้งค่าเป็นหลักที่ใช้งาน นอกจากนี้ยังอาจมีประโยชน์ในการติดป้ายกำกับการ์ด SD เป็นสิ่งที่คล้ายกับระบบดังนั้นคุณจึงจำได้ว่ามีประโยชน์อะไรในอนาคต จากนั้นฟอร์แมตไดรฟ์ 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

ขั้นตอนสุดท้ายคือการเปลี่ยนชื่อไฟล์ของไฟล์KERNELใน SD card kernel.imgไป

ในการสร้างไฟล์เริ่มต้นในไดเรกทอรีรากของการ์ด SD สร้างไฟล์ชื่อcmdline.txtและเพิ่มบรรทัดต่อไปนี้:

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

อย่าลืมปิดไฟล์ด้วยการบันทึก และจากที่นั่นคุณก็พร้อมที่จะไป แหล่งข้อมูลแนะนำให้เรียกใช้ XBMC จากไดรฟ์ USB เพิ่มการตอบสนอง ฉันไม่แน่ใจเกี่ยวกับการอ้างสิทธิ์นี้ แต่คุณจะไม่เห็นการเสื่อมประสิทธิภาพเนื่องจากการใช้วิธีนี้

สำหรับคอลเลคชั่นสื่อของคุณฉันแนะนำให้เก็บไว้ในไดรฟ์ที่สองไม่ว่าจะเป็น USB หรือที่ตั้งเครือข่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.