Працює на SD-картці лише для читання


20

У мене є програма Raspberry Pi для запуску XBMC, і я хочу, щоб вона завантажувалася, щоб завжди відтворювати список відтворення та файли на SD-картці. Я вимкнув автоматичне оновлення Raspbmc. Він все одно працює нормально, коли я перемикаю SD-карту в положення "блокування". Тепер мої питання:

  1. Чи буде система SD-карт «лише для читання» працювати весь час у моїй програмі?

  2. Оскільки карта SD завжди перебуває в режимі лише для читання, якщо я не використовую команду вимкнення, а просто вимкніть перемикач живлення, це пошкодить мою систему?

  3. Навіть якщо це працює надійно, завжди з’явиться повідомлення «Raaspbmc не вимкнувся належним чином». Чи є спосіб відключити це повідомлення, коли Pi ввімкнеться?


1
Якщо ви хочете, щоб це працювало надійно, вам доведеться переконатися, що відповідні файлові системи також змонтовані лише для читання.
Стрітення

Відповіді:


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на вашому Пі про те, як це зробити. (розпочато програмування розбійника в рівні 2 за замовчуванням; raspbmc може відрізнятися)

Нехай послуги мені дійсно потрібно лже-записи.

Ви можете забезпечити доступ для запису до файлової системи в пам'яті так, як це робить живий диск; із з'єднувальним кріпленням . Але мені не сподобалася перспектива перехресного складання власного ядра для unionfs або пізніших aufs . На щастя unionfs-fuse, наявна інсталяція. Він не може з'єднатись /, але мені це дійсно потрібно?

Запуск міддорі мені потрібен X для роботи. 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 all endup in / 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-карту, поки вона заблокована, і перевірте це самостійно.


4

Перемикач лише для читання SD - це в кращому випадку програмний варіант. Майже кожен пристрій, який я маю, проігнорує це, і якщо коментар avra правильний, Raspberry Pi, можливо, не зможе сказати, увімкнено чи вимкнено. Отже, до ваших питань:

  1. Так, це спрацює, тому що це не лише для читання.
  2. Так, це зашкодить вашій системі. Вам потрібно буде ознайомитись із встановленням кореневого режиму лише для читання та наявністю невеликої файлової системи ram / tempfs для речей, за якими Linux повинен вести облік.
  3. Ні, тому що є велика ймовірність, що ви пошкодите файлову систему.

Відповідь @avra правильна тим, що фізичний перемикач, який визначив положення повзунка захисту від запису на картках SD стандартного розміру, які використовувались у попередніх RPis (я не впевнений у картах мікро розміру, моє, здається, не мати таку річ) не підключається ні до чого (тобто контактів на стороні власника картки), інший перемикач (внизу власника картки) - перемикач "вставка картки", який контролюється ІС RPI.
SlySven

2
  1. Я не використовував XBMC, але це не є гарною ідеєю WRT для звичайної операційної системи, якщо ви не підете на деяку довжину, щоб налаштувати її для цієї мети. Як наслідок, якщо 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, мені вони потрібні; Я будую нашу техніку, щоб отримати нові сертифікати.
Кріс Вессілінг

1

Швидкий огляд цього Інтернету говорить про те, що ніхто не опублікував рішення щодо останньої версії XBMC.

Основна проблема, на яку вказував Goldilocks, - це те, що XBMC не розроблявся з наміром зробити так, щоб він читав. Цей момент сприяє, якщо ви поглянете на цю тему на Форумі медіацентрів OpenELEC. Загальний консенсус не може зробити Коді лише читанням.

Причиною, за словами користувача klojum, було:

Працювати OpenELEC на пристрої зчитування не буде. Kodi потрібно зберігати / оновлювати свої бази даних з відеоінформацією. Системний розділ налаштований як прочитаний лише з причини. Всі налаштування проходять через 2-й розділ / сховище. Тож усунути це через cmdline чи іншим способом - це не варіант. Відновлення системи після кожного перезавантаження є божевільним. Встановіть ОЕ, зробіть його відповідно до ваших побажань та складіть повну резервну копію / зображення. Відновіть це у випадку неприємностей

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

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

Причиною номер 1, через яку SD-карта пошкодиться, є раптове відключення живлення. Є кілька причин, чому це може статися. Або хтось відключає живлення на Pi-середині через запис на SD-карту. Або система замерзає, і вам доведеться відключити живлення. Хоча, я думаю, друга причина менше шансів спричинити корупцію. Або це говорить про те, що в грі є ще одна помилка.

У перші дні Pi ланцюг подачі електроенергії на платі, безумовно, залишав бажати кращого. Я пам'ятаю дні спричинення збоїв у системі, просто підключивши USB-ключ до Pi під час його включення. Якщо ви не вірите, я бачу проблеми із запуском XBMC на Raspberry Pi 2011 року . Інша проблема - це те, що програмне забезпечення в перші дні не було повністю зрілим. Пі був іншим сприйняттям того, яким може бути настільний комп'ютер, і прасування проблем із програмним забезпеченням вимагає часу. Так, набагато новіші версії Kodi рідше потерпають від випадкових заморожувань системи.

Щоб вирішити проблему раптових втрат електроенергії, підключіть ваш Pi через якесь джерело безперебійного живлення (ДБЖ). Звичайний ДБЖ працював би, але насправді є спеціально розроблені 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 або мережеве розташування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.