Запуск на SD-карте только для чтения

20

Я настроил Raspberry Pi для запуска XBMC, и я хочу, чтобы он загружался и всегда воспроизводил список воспроизведения и файлы на SD-карте. Я отключил автоматическое обновление Raspbmc. Он по-прежнему работает нормально, когда я переключаю SD-карту в положение «блокировка». Теперь мои вопросы:

  1. Будет ли система SD-карт "только для чтения" все время работать в моем приложении?

  2. Поскольку SD-карта всегда находится в режиме только для чтения, если я не использую команду выключения и просто выключаю выключатель питания, это повредит мою систему?

  3. Даже если это работает надежно, всегда будет появляться сообщение «Raaspbmc не завершил работу должным образом». Есть ли способ отключить это сообщение при включении Pi?

hyiu00
источник
1
Если вы хотите, чтобы это работало надежно, вы должны убедиться, что соответствующие файловые системы также смонтированы только для чтения.
Jivings

Ответы:

14

У меня было похожее использование. Я использую Pi для узкой трансляции веб-страниц в подъезде здания. Питание Pi через USB-порт на телевизоре.

Монтировать / только для чтения.

Чтобы сделать его защищенным от потери, я установил / только для чтения, изменив строку в /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поскольку у него нет реального места для записи. Запуск без подкачки создаст проблемы, если вы выполняете тяжелую работу, требующую большого объема памяти. В моем случае запуск одного процесса Midori в течение дня, не так. cat /etc/rc2.d/READMEна твоем пи о том как это сделать. (raspbian запускается на уровне выполнения 2 по умолчанию, raspbmc может отличаться)

Пусть услуги мне действительно нужно лже-записи.

Вы можете предоставить доступ на запись к файловой системе в памяти так, как это делает live-cd; с соединительным креплением . Но мне не понравилась перспектива кросс-компиляции моего собственного ядра для unionfs или более поздних aufs . К счастью, unionfs-fuseон уже готов. Он не может монтировать союз /, но мне это действительно нужно?

Под управлением мидори мне нужен Х для работы. X хочет написать, так /home/piкак я автологирую как 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 заканчиваются в / tmp. Но мне нужно, чтобы моя машина работала от 8 до 10 часов, а затем отключалось питание. Так что это будет делать.

Перемонтирование чтения-записи при настройке

Когда я сменил сеть, то, /etc/resolv.confчто написал dhclient, больше не работало.

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

Не забудьте правильно выключить или перемонтировать ro после переустановки rw.

PS

Если вы можете читать по-немецки, есть более чистый путь (с archive.org). Deutsche Gründlichkeit ...

Крис Весселинг
источник
4

Штырь положения блокировки SD-карты вообще не подключен на печатной плате, поэтому ваша блокировка является виртуальной, если только карта не имеет внутреннего механизма блокировки. Попробуйте записать что-нибудь на SD-карту, пока она заблокирована, и проверьте это самостоятельно.

Avra
источник
4

Переключатель SD только для чтения - это, в лучшем случае, программная опция. Почти каждое устройство, которое у меня есть, будет игнорировать его, и если комментарий Авры будет верным, Raspberry Pi может не узнать, включено оно или нет. Итак, на ваши вопросы:

  1. Да, это будет работать, потому что это не только для чтения.
  2. Да, это повредит вашу систему. Вам нужно будет посмотреть монтирование root только для чтения и наличие небольшой файловой системы ram / tempfs для вещей, которые Linux должен отслеживать.
  3. Нет, потому что есть большая вероятность, что вы повредили файловую систему.
scruss
источник
Ответ @avra верен в том, что физический переключатель, который обнаружил положение ползунка защиты от записи на SD-картах стандартного размера, используемых в более ранних RPis (я не уверен в картах микроразмера, мои, похоже, не иметь такую ​​вещь) не подключен ни к чему (то есть контакты на стороне держателя карты) другой переключатель (в нижней части держателя карты) является переключатель "вставка карты", и это контролируется RPi.
SlySven
2
  1. Я не использовал XBMC, но это не очень хорошая идея WRT для нормальной операционной системы, если вы не пойдете на некоторые шаги, чтобы настроить его для этой цели. Подразумевается, что если XBMC явно не настроен, то это тоже не очень хорошая идея.

  2. Если карта действительно только для чтения , на самом деле она НЕ повредит вашу систему, однако, если она действительно была только для чтения, вы вряд ли достигнете точки, в которой вы могли бы запустить «выключение». Если вы это сделали (имеется в виду снова, вы уверены, что вся карта действительно только для чтения!), Не беспокойтесь о выключении. Просто потяните за вилку. Поскольку ничто на карте не может измениться, не имеет значения, что вы делаете.

  3. Конечно, вы можете найти ответственные файлы инициализации и отредактировать их (очевидно, файловая система должна быть доступна для записи).

Реально, если вы монтируете корневую файловую систему только для чтения (что может быть сложнее, чем просто с помощью переключателя блокировки), вы, вероятно , не получите успешную загрузку, потому что ОС действительно должна записывать на диск. ОДНАКО, если вы делаете, то не стесняйтесь делать все, что вы хотите (и может сойти с рук). Если карта только для чтения, она не может быть изменена, поэтому вы не можете причинить вреда.

Златовласка
источник
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-порт от телевизора. Но разве это не ограничено 500 мА? Не уверен, но PI нужно около 1А или нет?

Октай
источник
dhcpclient должен написать /etc/resolv.conf и, возможно, другие места в / var. Хорошо, что вы упомянули команды insserv, они мне нужны; Я перестраиваю нашу технику, чтобы получить новые сертификаты CA.
Крис Весселинг
1

Беглый взгляд на это онлайн показывает, что никто не опубликовал никакого решения для последней версии XBMC.

Основная проблема, как указал Златовласка, заключается в том, что XBMC не был разработан с намерением сделать его только для чтения. Эта точка продвинул , если вы посмотрите на эту нить на OpenELEC Media Center Forum. По общему мнению, коди не может быть только для чтения.

Причина по мнению пользователя klojum была:

Работа OpenELEC на устройстве только для чтения не произойдет. Kodi необходимо хранить / обновлять свои базы данных с видеоинформацией. Системный раздел настроен как доступный только для чтения по причине. Все настройки идут через 2-й раздел / storage. Так что удаление этого с помощью cmdline или иным способом не является вариантом. Восстановление системы после каждой перезагрузки безумно. Установите OE, сделайте так, как вам хочется, и сделайте полную резервную копию / образ. Восстановите это в случае проблем

Возможно, существует способ обойти это, поскольку люди нашли обходные пути для старых версий, но в целом я не думаю, что в этом есть необходимость.

Я могу понять, как кто-то, кто использовал Kodi в течение нескольких лет, раздражение от того, что SD-карта испортилась. Но есть и другие более простые способы смягчения проблемы, которые не включают в себя низкоуровневую обработку кода.

Главная причина, по которой SD-карта повреждена, - внезапное отключение питания. Есть несколько причин, почему это может произойти. Либо кто-то отключает питание Пи на полпути через запись на SD-карту. Или система зависает, и вы должны отключить питание. Хотя, я думаю, что вторая причина менее вероятна для коррупции. Или это говорит о том, что в игре есть еще одна ошибка.

В первые годы существования Pi схема подачи питания на плату, безусловно, оставляла желать лучшего. Я могу вспомнить дни, когда система вызывала сбой, просто подключив USB-ключ к Pi, пока он был включен. Если вы не верите, я вижу проблемы с запуском XBMC на Raspberry Pi 2011 года . Другая проблема заключается в том, что программное обеспечение в первые дни не было полностью зрелым. Pi был другим взглядом на то, каким может быть настольный компьютер, и устранение проблем с программным обеспечением требует времени. Таким образом, гораздо более новые версии Kodi менее подвержены случайным зависаниям системы.

Чтобы решить проблему внезапной потери питания, подключите Pi к источнику бесперебойного питания (ИБП). Обычный ИБП будет работать, но на самом деле есть специально разработанные ИБП. Как этот источник бесперебойного питания для Raspberry Pi . Если происходит зависание системы, это должно быть то, к чему вы готовы. Это означает настройку ОС со всеми настройками, приложениями и предпочтениями на ваш вкус, а затем создание образа SD-карты. Так что, если что-то пойдет не так, вы можете просто перезаписать SD-карту.

Другая причина отказа SD-карты - из-за ее износа. Тем не менее, это не проблема, которую я испытал сам. Если вы используете высококачественную SD-карту от известного бренда, я думаю, что вы, вероятно, на полпути к решению этой проблемы. Чтобы свести к минимуму износ SD-карты, необходимо обеспечить абсолютный минимум SD-карты. Это не должно использоваться в качестве места для хранения вашей огромной коллекции фильмов и т.д ..

Опция, которая будет работать с OpenELEC, это запускать его с USB-накопителя. Конечно, все загрузочные файлы должны остаться на SD-карте. Есть несколько учебников о том, как это сделать. Существует один, который выглядит довольно легко следовать здесь , но для полноты я дам вам обзор:

Первым шагом является настройка SD-карты и USB-накопителя. Используя такую ​​программу, как MiniTool Partition Wizard, отформатируйте SD-карту как FAT32 с основным активным разделом размером 150 МБ или больше, фактически всю 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-карты.

Последний шаг - изменить имя файла KERNELна SD-карте kernel.img.

Чтобы создать файлы запуска, в корневом каталоге SD-карты создайте файл с именем cmdline.txtи добавьте в него следующую строку:

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

Обязательно закройте файл с сохранением. И оттуда вы хорошо идти. Источник информации предполагает, что запуск XBMC с USB-накопителя повышает скорость отклика. Я не уверен в этом утверждении, но вы не увидите никакого снижения производительности в результате использования этого метода.

Что касается вашей медиаколлекции, я предлагаю сохранить ее на втором диске, будь то USB или сетевое расположение.

Дарт Вейдер
источник