Chạy trên thẻ SD chỉ đọc


20

Tôi đã thiết lập Raspberry Pi để chạy XBMC và tôi muốn nó khởi động để luôn phát danh sách phát và tệp trên thẻ SD. Tôi đã tắt cập nhật tự động Raspbmc. Nó vẫn chạy ổn khi tôi chuyển thẻ SD sang vị trí "khóa". Bây giờ qeustions của tôi là:

  1. Hệ thống thẻ SD "chỉ đọc" có hoạt động mọi lúc trong ứng dụng của tôi không?

  2. Vì thẻ SD luôn ở chế độ chỉ đọc, nếu tôi không sử dụng lệnh tắt máy và chỉ tắt công tắc nguồn, nó có làm hỏng hệ thống của tôi không?

  3. Ngay cả khi điều này hoạt động một cách tương đối, nó sẽ luôn bật lên thông báo "Raaspbmc không tắt đúng cách". Có cách nào để vô hiệu hóa tin nhắn này khi Pi bật nguồn không?


1
Nếu bạn muốn nó hoạt động một cách đáng tin cậy, bạn sẽ phải đảm bảo các hệ thống tập tin thích hợp cũng được gắn dưới dạng chỉ đọc.
Jivings

Câu trả lời:


14

Tôi đã sử dụng tương tự. Tôi đang sử dụng Pi để thu hẹp các trang web trong lối vào tòa nhà. Cấp nguồn cho Pi thông qua cổng USB trên TV.

Gắn kết / chỉ đọc.

Để làm cho nó bằng chứng powerloss tôi đã gắn / chỉ đọc bằng cách thay đổi một dòng trong /etc/fstab

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

Khá đơn giản. Nhưng một số quy trình trên một máy chức năng cần phải viết.

Gắn kết / tmp trong bộ nhớ.

Nhiều thứ ghi vào /tmpđể tôi gắn nó vào bộ nhớ bằng cách thêm một dòng vào/etc/fstab

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

Tôi đã có sẵn 512 MB vì ​​vậy tôi đã tạo ra / tmp 30M lớn.

Vô hiệu hóa các dịch vụ tôi không cần viết.

Tôi đã vô hiệu hóa rsyslogđể ngăn chặn nó đăng nhập và dphys-swapfilevì nó không có nơi thực sự để viết. Chạy mà không trao đổi sẽ gây ra vấn đề nếu bạn làm việc nặng mà tốn nhiều bộ nhớ. Trong trường hợp của tôi, chạy một quy trình midori duy nhất trong một ngày, thì không. cat /etc/rc2.d/READMEtrên Pi của bạn về cách làm điều đó. (raspbian bắt đầu trong runlevel 2 theo mặc định, raspbmc có thể khác nhau)

Hãy để dịch vụ tôi làm cần faux-ghi.

Bạn có thể cung cấp quyền truy cập ghi vào hệ thống tập tin trong bộ nhớ theo cách mà live-cd thực hiện; với một gắn kết công đoàn . Nhưng tôi không thích viễn cảnh của cross-biên dịch hạt nhân của riêng mình cho unionfs hoặc sau aufs . May mắn unionfs-fuselà có sẵn. Nó không thể gắn kết /, nhưng tôi thực sự cần điều đó?

Chạy midori tôi cần X để làm việc. X muốn viết /home/pikhi tôi tự nhận là pi và đến một vài nơi trong /vartôi đã quyết định gắn kết chúng vào những nơi bằng cách sử dụng unionfs.

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

và nối thêm 2 dòng vào /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

Điều này khá khó chịu, vì ghi vào / var, / home và / tmp tất cả endup in / tmp. Nhưng tôi chỉ cần máy của tôi chạy trong 8 đến 10 giờ, và sau đó nguồn bị cắt. Vì vậy, điều này sẽ làm.

Kể lại việc đọc-ghi khi tinh chỉnh công cụ

Khi tôi thay đổi mạng, /etc/resolv.confdhclient đã viết không hoạt động nữa.

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

Đừng quên tắt máy sạch sẽ, hoặc nhắc lại ro sau khi kết thúc rw.

PS

Nếu bạn có thể đọc tiếng Đức, có một cách sạch hơn (từ archive.org). Deutsche Gründlichkeit ...


4

Chốt vị trí khóa thẻ SD hoàn toàn không được kết nối trên pcb, vì vậy khóa của bạn là ảo trừ khi thẻ có cơ chế khóa bên trong. Cố gắng ghi bất cứ điều gì vào thẻ SD trong khi nó bị khóa và tự kiểm tra nó.


4

Công tắc chỉ đọc của SD, tốt nhất là một tùy chọn phần mềm. Hầu như mọi thiết bị tôi có sẽ bỏ qua nó và nếu nhận xét của avra là chính xác, Raspberry Pi có thể không có cách nào để biết nó bật hay tắt. Vì vậy, cho câu hỏi của bạn:

  1. Vâng, nó sẽ hoạt động, bởi vì nó không chỉ đọc.
  2. Có, nó sẽ làm hỏng hệ thống của bạn. Bạn sẽ cần xem xét việc gắn root chỉ đọc và có một hệ thống tệp ram / tempfs nhỏ cho những thứ mà Linux cần theo dõi.
  3. Không, bởi vì rất có thể bạn sẽ làm hỏng hệ thống tập tin.

Câu trả lời của @avra là chính xác ở chỗ công tắc vật lý đã phát hiện vị trí của thanh trượt Bảo vệ ghi trên Thẻ SD kích thước tiêu chuẩn được sử dụng trong RPis trước đó (Tôi không chắc chắn về thẻ kích thước vi mô, tôi dường như không có một thứ như vậy) không được nối với bất cứ thứ gì (đó là các tiếp điểm ở bên cạnh ngăn chứa thẻ) công tắc khác (ở dưới cùng của chủ thẻ) là công tắc "cắm thẻ" và được giám sát bởi IS RPi.
SlySven

2
  1. Tôi chưa sử dụng XBMC, nhưng đây không phải là một ý tưởng tốt WRT đối với một hệ điều hành bình thường trừ khi bạn đi đến một số độ dài để thiết lập nó cho mục đích đó. Theo ngụ ý, nếu XBMC không được thiết lập rõ ràng như vậy, thì đó cũng không phải là một ý tưởng tốt cho nó.

  2. Nếu thẻ thực sự chỉ được đọc , thực tế nó sẽ KHÔNG làm hỏng hệ thống của bạn, tuy nhiên, nếu nó chỉ thực sự được đọc, bạn không có khả năng đến điểm mà bạn có thể chạy 'tắt máy'. Nếu bạn đã làm (có nghĩa là một lần nữa, bạn chắc chắn toàn bộ thẻ thực sự chỉ được đọc!), Đừng bận tâm đến việc tắt máy. Chỉ cần rút phích cắm. Vì không có gì trên thẻ có thể thay đổi, nên bạn không làm gì.

  3. Chắc chắn, bạn có thể tìm thấy các tệp init chịu trách nhiệm và chỉnh sửa chúng (rõ ràng, hệ thống tệp sẽ phải ghi được để làm điều đó).

Trên thực tế, nếu bạn gắn kết hệ thống tập tin gốc chỉ đọc (có thể khó hơn so với chỉ sử dụng chuyển đổi khóa), bạn có thể sẽ không khởi động thành công, vì HĐH cần phải ghi vào đĩa. TUY NHIÊN, nếu bạn làm thế, thì hãy thoải mái làm bất cứ điều gì bạn muốn (và có thể thoát khỏi). Nếu thẻ chỉ đọc thì không thể thay đổi, vì vậy bạn không thể làm hại gì.


2

Nếu bạn chỉ làm

1.

/ dev / mmcblk0p2 / ext4 mặc định, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat mặc định, noatime, ro 0 1
bạn có hệ thống chỉ đọc đầy đủ.

2.

Bạn có thể bắt đầu Xorg với: -logfile /tmp/Xorg.log và tìm dịch vụ khác cần truy cập ghi, chuyển hướng chúng đến / tmp

3.

Như đã đề cập, vô hiệu hóa dịch vụ bạn không cần với

insserv -r dphys-
exchangefile insserv -r rsyslog
insserv -r samba (nếu được cài đặt) vv

sau đó không có vấn đề gì cả Câu hỏi hay là liệu thực sự sẽ không có thiệt hại gì đối với thẻ SD nếu chỉ có RO và hết / tắt nguồn ...

Cuối cùng, một màn hình giật gân tuyệt đẹp và ở đó bạn đi, bạn có một thiết bị độc lập giá rẻ tùy chỉnh. :) Và tôi thích Ý tưởng cung cấp năng lượng cho PI qua cổng USB từ TV. Nhưng điều đó không giới hạn ở 500mA? Không chắc chắn, nhưng PI cần xấp xỉ 1A hay không?


dhcpclient cần viết /etc/resolv.conf và có thể các vị trí khác trong / var. Rất vui vì bạn đã đề cập đến các lệnh không quan trọng, tôi cần chúng; Tôi đang xây dựng lại các thiết bị của chúng tôi để có được chứng chỉ ca mới.
Chris Wesseling

1

Một cái nhìn nhanh về trực tuyến này cho thấy rằng không ai đã đăng bất kỳ giải pháp nào cho phiên bản XBMC mới nhất này.

Vấn đề chính như Goldilocks đã chỉ ra là XBMC không được thiết kế với mục đích làm cho nó chỉ đọc được. Điểm này được tiếp tục nếu bạn xem chủ đề này trên Diễn đàn Trung tâm Truyền thông OpenELEC. Sự đồng thuận chung không thể làm cho Kodi chỉ đọc được.

Lý do theo người dùng klojum là:

Để OpenELEC hoạt động trên thiết bị chỉ đọc sẽ không xảy ra. Kodi cần lưu trữ / cập nhật cơ sở dữ liệu với thông tin video. Phân vùng hệ thống được thiết lập là chỉ đọc vì một lý do. Tất cả các cài đặt đi qua phân vùng 2, / lưu trữ. Vì vậy, loại bỏ điều đó, thông qua cmdline hoặc cách khác, không phải là một lựa chọn. Khôi phục hệ thống sau mỗi lần khởi động lại là điên rồ. Cài đặt OE, làm cho nó chạy theo mong muốn của bạn và tạo một bản sao lưu / hình ảnh đầy đủ. Khôi phục trong trường hợp gặp sự cố

Có thể có một cách làm điều này vì mọi người đã tìm thấy cách giải quyết cho các phiên bản cũ hơn, nhưng nói chung tôi không nghĩ rằng có bất kỳ nhu cầu nào.

Tôi có thể hiểu như một người đã sử dụng Kodi trong một vài năm, sự khó chịu của thẻ SD bị hỏng. Nhưng có những cách đơn giản khác để giảm thiểu vấn đề không bao gồm sửa mã cấp thấp.

Lý do số một khiến thẻ SD sẽ bị hỏng là nếu mất điện đột ngột. Có một vài lý do là tại sao điều này có thể xảy ra. Hoặc là ai đó ngắt kết nối nguồn với Pi giữa chừng thông qua ghi vào thẻ SD. Hoặc hệ thống đóng băng và bạn phải ngắt kết nối nguồn. Mặc dù, tôi nghĩ lý do thứ hai ít có khả năng gây ra tham nhũng. Hoặc nó cho thấy có một lỗi khác khi chơi.

Trong những ngày đầu của Pi, mạch phân phối điện trên bo mạch chắc chắn để lại thứ gì đó mong muốn. Tôi có thể nhớ những ngày gây ra sự cố hệ thống chỉ bằng cách cắm một chiếc USB vào Pi trong khi nó được bật nguồn. Nếu bạn không tin tôi sẽ gặp sự cố khi chạy XBMC trên Raspberry Pi 2011 . Vấn đề khác là phần mềm trong những ngày đầu chưa hoàn thiện. Pi là một cách khác nhau về máy tính để bàn có thể là gì và giải quyết các vấn đề phần mềm cần có thời gian. Vì vậy, các phiên bản mới hơn của Kodi ít có khả năng bị đóng băng hệ thống ngẫu nhiên.

Để giải quyết vấn đề mất điện đột ngột, hãy cấp nguồn cho Pi của bạn thông qua một số loại nguồn cung cấp điện liên tục (UPS). Một UPS thông thường sẽ hoạt động nhưng thực sự có những thiết kế của Pi được thiết kế riêng. Giống như điều này Cung cấp năng lượng liên tục cho Raspberry Pi . Nếu hệ thống đóng băng xảy ra, nó sẽ là thứ bạn chuẩn bị. Điều này có nghĩa là thiết lập HĐH với tất cả các cài đặt và ứng dụng và tùy chọn theo sở thích của bạn và sau đó tạo hình ảnh của thẻ SD. Vì vậy, nếu có sự cố xảy ra, bạn có thể chỉ cần hình ảnh lại thẻ SD.

Một lý do khác khiến thẻ SD bị hỏng là do nó bị hao mòn. Tuy nhiên, đây không phải là vấn đề tôi đã tự trải nghiệm. Nếu bạn sử dụng thẻ SD chất lượng cao từ một thương hiệu có uy tín, tôi nghĩ bạn có thể đi được một nửa để giải quyết vấn đề đó. Để giảm thiểu hao mòn thẻ SD có nghĩa là đảm bảo thẻ SD hoạt động ở mức tối thiểu. Nó không nên được sử dụng làm không gian lưu trữ cho bộ sưu tập phim khổng lồ của bạn, v.v.

Một tùy chọn sẽ hoạt động với OpenELEC là chạy nó từ ổ USB. Tất nhiên tất cả các tệp khởi động sẽ phải ở lại trên thẻ SD. Có một số hướng dẫn về cách làm điều này. Có một cái có vẻ khá dễ theo dõi ở đây , nhưng để hoàn thiện tôi sẽ cung cấp cho bạn một cái nhìn tổng quan:

Bước đầu tiên là thiết lập thẻ SD và ổ USB. Sử dụng một chương trình như MiniTool Partition Wizard định dạng thẻ SD là FAT32 với phân vùng hoạt động chính từ 150MB trở lên, trên thực tế, toàn bộ thẻ SD có thể được định dạng là FAT32. Chỉ cần đảm bảo phân vùng được đặt thành hoạt động chính. Cũng có thể hữu ích khi gắn nhãn thẻ SD là một cái gì đó giống như HỆ THỐNG để bạn nhớ nó dùng để làm gì trong tương lai. Sau đó định dạng toàn bộ ổ USB thành một phân vùng hoạt động chính với loại hệ thống tệp là EXT4, một lần nữa giá trị của nó được gắn nhãn là một cái gì đó giống như BẢO QUẢN.

Khi bạn đã tải xuống và giải nén OpenELEC, hãy chuyển đến thư mục gốc. Và chọn các tệp này:

openelec.ico
README.md

Và sao chép chúng vào thư mục gốc của thẻ SD.

Tiếp theo từ targetthư mục sao chép các tập tin:

KERNEL
SYSTEM

Và một lần nữa dán chúng vào thư mục gốc của thẻ SD.

Sau đó, từ 3rdparty/bootloaderthư mục sao chép các tập tin:

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

Và dán chúng vào thư mục gốc của thẻ SD.

Bước cuối cùng là thay đổi tên tệp của tệp KERNELtrên thẻ SD thành kernel.img.

Để tạo các tệp khởi động, trong thư mục gốc của thẻ SD, hãy tạo một tệp được gọi cmdline.txtvà thêm dòng sau vào đó:

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

Hãy chắc chắn để đóng tệp với lưu nó. Và từ đó bạn tốt để đi. Nguồn thông tin đề xuất chạy XBMC khỏi ổ USB giúp tăng khả năng phản hồi. Tôi không chắc chắn về khiếu nại này, nhưng bạn sẽ không thấy bất kỳ sự suy giảm hiệu suất nào do sử dụng phương pháp này.

Đối với bộ sưu tập phương tiện của bạn, tôi khuyên bạn nên lưu trữ trên ổ đĩa thứ hai cho dù đó là USB hay vị trí mạng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.