Ещё одна попытка readonly

16 November 2014

   Raspberry "съедает" уже третью флешку.. Карта была microSD на 32Гб с адаптером. Не надежная техника пошла нынче, всего 1000 циклов перезаписи согласно исследованию на Хабре.. При чем вроде бы даже настроил всю систему работать с read-only-fs, но видимо не полностью. В этот раз раздобыл флешку по древней, полноформатную и менее ёмкую, а так же новый мануал как сделать систему с данными в памяти. И так, поехали.

   Вкратце: выключаем swap, удаляем проверки на время при загрузке, устанавливаем unionfs-fuse, делаем скрипт для его монтирования, правим fstab, создаём дополнительные папки для гибридной работы с unionfs. Папки var и etc мигрируют в память, что бы система могла работать, думая что в них можно писать. Получаем файловую систему без записи, но с рабочими журналами и сервисами. Так же рекомендуют установить busybox-syslogd, что бы уменьшить количество журналов и система вдруг не встала по отсутствию памяти.

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

#!/bin/bash

# remount root rw
mount -o remount,rw /

# prapare target paths
mkdir -p /chroot
mkdir -p /chroot/{bin,boot,dev,etc,home,lib,opt,proc,root,run,sbin,sys,tmp,usr,var,mnt}

# mount special filesystems
mount -t proc proc /chroot/proc
mount --rbind /sys /chroot/sys
mount --rbind /dev /chroot/dev

# bind rw directories
for f in {etc,var}; do mount --rbind /${f}_org /chroot/$f; done

# bind remaining directories
for f in {bin,boot,home,lib,opt,root,run,sbin,tmp,usr,mnt}; do mount --rbind /$f /chroot/$f; done

# chroot
echo "Note: /boot is still mounted read-only, remount to read-write if needed."
echo -e "\e[33mYou are now in read-write chroot. Use CTRL+D when done to exit chroot and mount read-only again.\e[39m"
chroot /chroot /usr/bin/env PS1="(rw) \u@\h:\w\$ " sudo -u pi RWMODE="yes" /bin/bash -l

# unmount mounts
for f in /chroot/{bin,boot,dev,etc,home,lib,opt,proc,root,run,sbin,sys,tmp,usr,var,mnt}; do
umount -l $f
done

sleep 1

# remount read-only again
echo -e "\e[32mChroot left, re-mounting read-only again.\e[39m"
mount -o remount,ro /

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

if [ "$RWMODE" = "yes" ]; then
   PS1="(rw) \u@\h:\w\$ "
fi

   И под завершение - велосипеды! С новыми колёсами закручивать на горку за Жисой через 51ую стало вполне себе обычным делом. Осилить бы ещё подъем от Автовокзала до Жисы.. Но там какой-то адовый градиент. Зато красивый закат.


instagram ]


comments powered by Disqus

© Oleksiy Tishyn 2018