Безопасный режим питания Archlinux?

Я запускаю свой Pi в качестве сервера Airplay (используя Shairport). Теперь мне интересно, есть ли способ предотвратить повреждение SD-карты, если я неожиданно отключу питание? Я читал об установке корневой файловой системы только для чтения и ramdisks, но не мог найти хорошую эксплоатацию в любом месте.

Можно ли настроить os таким образом, чтобы в любой момент было безопасно циклировать питание? Мне не нужно сохранять какие-либо изменения после загрузки системы, просто загружайте одно и то же состояние каждый раз, когда питание циклируется.

Спасибо заранее!

Edit:

Хорошо, после нескольких исследований это мой текущий /etc /fstab. Он работает, но /все еще монтируется в режиме rw. По крайней мере, я использую синхронизацию и noatime , что должно уменьшить вероятность SD карта повреждена.

#
# /etc/fstab: static file system information
#
# <file system>        <dir>         <type>    <options>          <dump> <pass>
/dev/mmcblk0p1  /boot                   vfat    ro,noatime                 0       0
/dev/mmcblk0p2  /                       ext4    noatime,nodiratime,sync    0       0
ramfs           /tmp                    ramfs   defaults,noatime,mode=1777 0       0
ramfs           /var/cache/pacman       ramfs   defaults,noatime,mode=1777 0       0
ramfs           /var/log                ramfs   defaults,noatime,mode=1777 0       0
ramfs           /var/tmp                ramfs   defaults,noatime,mode=1777 0       0

Просто установка /в режиме ro не будет работать. Ну, Pi boots, но некоторые serives (например, Logger Daemon) не могут запускаться, а оболочка заливается сообщениями об ошибках.

Кто-нибудь знает способ монтировать /var в ramfs и загружать исходные файлы при загрузке? Я нашел много источников о том, как это сделать, но дистрибутив Arch, похоже, изменил способ запуска bootscript в systemd , и я не могу заставить его работать таким образом.

Edit2:

Я попытался установить /var на ramdisk, но система не загрузилась впоследствии, поэтому я не могу опубликовать свой исходный код.

То, что я сделал, это копирование /var в /var-new и добавление записи в мой fstab

ramfs           /var                ramfs   defaults,noatime,mode=1777 0       0

Я удалил записи для подкаталогов /var, конечно. Затем я добавил системный «bootscript» под названием mountramfs.service, который запускал скрипт /mountramfs. Активировал это с помощью

systemctl enable mountramfs.service
systemctl start mountramfs.service

the /mountramfs содержит что-то вроде

cp -R /var-new/ /var/

То, что я пытался достичь, состояло в том, что /var-new будет скопирован в пустой каталог /var на ramdisk. Это позволило бы использовать один и тот же каталог каждый раз, когда система перезагружается. Это началось, но не удалось запустить некоторые службы (в том числе ssh), поэтому я больше не мог получить к нему доступ и только просматривать сообщения на своем телевизоре (через hdmi).

Что не так с этим подходом? может кто-нибудь помочь?

2 голоса | спросил danielheinrich 11 MarpmMon, 11 Mar 2013 14:22:53 +04002013-03-11T14:22:53+04:0002 2013, 14:22:53

1 ответ


1

Загрузка с раздела, доступного только для чтения, гарантирует вам возможность загрузки. Затем, если вам нужно писать в другие разделы, вы всегда можете проверить их целостность после загрузки. Рекомендуется записывать в заранее выделенные файлы, которые имеют идеальный размер одного сектора или, по крайней мере, точное кратное число. Использование чего-то вроде SquashFS может решить вашу проблему. Berryboot позволяет сделать это в простой способ . Если вы хотите сделать это самостоятельно, вы можете найти некоторую информацию здесь .

ответил avra 13 MarpmWed, 13 Mar 2013 16:09:54 +04002013-03-13T16:09:54+04:0004 2013, 16:09:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132