svētdiena, 2011. gada 9. oktobris

Как сделать папку app с сохранением данных после рестарта ресивера


Для чего это надо? Для того, чтобы можно было её использовать для сохранения наших программ и не надо было использовать USB.

С начало мои соображение.
Папка /app, с файлами brutus при каждом старте системы монтируется из образа /home/tmpfsapp.img, и её содержание распакуется из архива /home/isapp.bin.tgz.
Папка /home, свою очередь, монтируется из устройство /dev/mtdblock2, но к сожалению, в файловой системе cramfs которая хорошо сжимает файлы но доступна только для чтения. Значит и /dev/mtdblock2 в файловой системе cramfs. А, на пример, папка /data, где мы держим данные, прямо монтируется из устройство /dev/mtdblock4 в файловой системе jffs2. Это всё можно увидеть по команде mount. Значит надо папку /app примонтировать также как /data прямо от /dev/mtdblock2 в файловой системе jffs2.
Я рискнул, и у меня получилось!


Предупреждаю! Делайте только те, кто знает что делает, или смелые но внимательные!

С начало в самом начале файла /root/rc.user прописываем монтировку новой файловой системе, чтобы она монтировалась после рестарта.
# mount app in jffs2
mount -t jffs2 /dev/mtdblock2 /app

Дальше я опишу что делаем, а потом команды в телнет:

Делаем временную директорию для архива app.
Примонтироваем временную директорию.
Копируем архив app в временную директорию.
Останавливаем brutus чтобы отмонтироватъ /app.
Отмонтируем /app чтобы отмонтироватъ /home.
Отмонтируем /home.
Форматизуем /dev/mtd2 в jffs2.
Монтируем /app от /dev/mtdblock2 в файловой системе jffs2.
Идём в /app.
Распакуем содержание архива app.
Удаляем временную директорию.
Рестарт.
mkdir /mnt/tmp
mount -t tmpfs -o loop none /mnt/tmp
cp /home/isapp.bin.tgz /mnt/tmp/
killall -9  brutus
umount /app
umount /home
eraseall -j /dev/mtd2
mount -t jffs2 /dev/mtdblock2 /app
cd /app
tar xzvf /mnt/tmp/isapp.bin.tgz
rm -fr /mnt/tmp
reboot
Еще для страховки можете в /root/rc.user после старта brutus прописать установку ИП адреса. Если после рестарта brutus не стартнёт сможете подключится с телнет или фтп и поправить ситуацию.
# set IP adress
ifconfig eth0 10.0.0.97 netmask 255.255.255.0
Это статический, и для кабеля, замените ИП на свое.

После рестарта, если всё пошло хорошо, наберите df -h и увидите что в /app у вас свободно 11.4M. Всё что там измените, или сохраните останется после рестарта.


Для ленивых или невнимательных я сделал скрипт.
Через фтп положите его в ресивер, на пример в data.
Назначите права 755.
В телнет идём на папку с скриптом.
Запускаем скрип:
cd /data
setupapp
Соглашаемся установить.
Если всё прошло гладко соглашаемся рестарту.
Если не прошло то устраняем причину и только после этого рестарт!


P.S.
yoju проверил- если что то не так сделал или забил, то перепрошивка восстанавливает всё в прежнем состояние.

Download: setupapp  gisclub.tv setupapp

Original: http://gisclub.tv/index.php?topic=105.msg46732#msg46732

Nav komentāru:

Ierakstīt komentāru