transserg 08.03.2011 17:18

Есть вопрос!aufs внести изменения на диск

привет всем. озадачился вопросом. как из aufs внести изменения на диск?
смонтировано все так
fstab:


# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
LABEL=SYSTEM / ext2 defaults,noatime,errors=remount-ro,nodiratime,ro 0 1
#tmpfs /etc/network/run tmpfs defaults,noatime 0 0
# монтируем диры с конфигами
tmpfs /configs/etc tmpfs defaults,noatime 0 0
/configs/etc /etc aufs nodev,noatime,dirs=/configs/etc=rw:/etc=ro 0 0
tmpfs /configs/lib tmpfs defaults,noatime 0 0
/configs/lib /lib aufs nodev,noatime,dirs=/configs/lib=rw:/lib=ro 0 0
tmpfs /configs/usr tmpfs defaults,noatime 0 0
/configs/usr /usr aufs nodev,noatime,dirs=/configs/usr=rw:/usr=ro 0 0
LABEL=DATA /home/flash/Documents vfat quiet,utf8,uid=1000,quiet 0 0
# монтируем сидиром
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
# временные директории
tmpfs /var/run tmpfs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0
tmpfs /var/cache/apt/archives tmpfs defaults,noatime 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /home/flash/tmpWorkDir tmpfs defaults,noatime 0 0


во время работы может быть что то изменено в etc var lib или usr. требуется сделать так чтоб при надобности все изменения записать на диск.
корень смотнтирован в ro


Тэги: aufs debian fstab usb flash
+ 2 -
Похожие Поделиться

andreas 08.03.2011 23:39 #
Сразу скажу, я только что узнал о aufs, но это вроде то, что я давно искал, что-то похожее на EWF в XP Embedded. Поэтому почитал мануал. Если я правильно понял, то все изменения в (например) /etc у тебя будут ложиться в /configs/etc. Т.е. при необходимости запомнить изменения, их надо оттуда скопировать в настоящий /etc. Надеюсь тут есть гуру которые поправят если что. От меня плюс за наводку на aufs!
transserg 09.03.2011 00:09 #
Да да надо скопировать изменения. но их не получается копировать так как они копируются сами на себя в директорию /configs/* =)
derfenix 09.03.2011 00:10 #
перемонтируй / в rw
derfenix 09.03.2011 00:12 #
блин, случайно нажатые Tab и Пробел...
* в другую директорию, скопируй нужный файл, отмонтируй.
transserg 09.03.2011 00:15 #
перемонтирую корень в rw но это не помогает ибо

# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
LABEL=SYSTEM / ext2 defaults,noatime,errors=remount-ro,nodiratime,ro 0 1
#tmpfs /etc/network/run tmpfs defaults,noatime 0 0
# монтируем диры с конфигами
tmpfs /configs/etc tmpfs defaults,noatime 0 0
/configs/etc /etc aufs nodev,noatime,dirs=/configs/etc=rw:/etc=ro 0 0
tmpfs /configs/lib tmpfs defaults,noatime 0 0
/configs/lib /lib aufs nodev,noatime,dirs=/configs/lib=rw:/lib=ro 0 0
tmpfs /configs/usr tmpfs defaults,noatime 0 0
/configs/usr /usr aufs nodev,noatime,dirs=/configs/usr=rw:/usr=ro 0 0
derfenix 09.03.2011 00:25 #
Блин, лень разбираться в хитросплетениях... Возможно я не понял сути aufs и этого всего загона, но может сделать cp /etc/bla-bla $HOME/bla-bla && umount /etc && cp $HOME/bla-bla /etc/bla-bla && mount /etc
Или ,если в /etc писать нельзя - то просто umount /etc && cp vim /etc/bla-bla && mount /etc
derfenix 09.03.2011 00:27 #
т.е.
&& cp vim
transserg 09.03.2011 00:49 #
umount /etc срабатывает. изменения копируются но через раз. почему так не знаю. для остальных директорий умоунт не работает сообщает что устройство занято.
гуглю дальше..
transserg 09.03.2011 00:11 #
сейчас наткнулся вот на это rootaufs но этот скрипт ни в какую не хочет работать. но это направление в котором стоит покопаться.
zhnikita 09.03.2011 23:48 #
Вот как я сделал:

#создаем overlay-папку, куда будут писаться изменения
mkdir -p /.filesystems/usr1/overlay

#Создаем сжатый образ /usr
mksquashfs /usr /.filesystems/usr1/usr.sqfs

#В файл /etc/fstab добавляем точки
/.filesystems/usr1/usr.sqfs /usr squashfs ro,loop,nodev 0 0
aufs /usr aufs nodev,noatime,dirs=/.filesystems/usr1/overlay=rw:/usr=ro 0 0

Если нужно внести изменения, то делаем всё тоже самое, но меняя usr1 на usr2. После этого - перезагрузка. Теперь можно удалить каталог с usr1.
Следующие изменения - по аналогии!
Enjoy!
Denchik 26.11.2011 14:10 #
Вот такой скрипт поможет это сделать -

если /usr уже пожата , то получим слепок с новыми изменениями , если нет - то пожатую систему ...

Ядро должно быть с поддержкой aufs !!!

  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/bin/bash

#--------------------------------------------------
# |
# Кобель Бен писал это |
# для истинных ценителей fluxbox и тюнинга |
# в год от Рождества Христова 2011 |
# |
# |
# |
# последнее измение 3 мая 2011 |
#--------------------------------------------------

#
# Устанавливаем лимит (в процентах) занятого данными места
# если в корне системы ( / ) занято более указанного лимита
# скрипт не запуститься
# Значение по умолчанию 80 %
#

limit_free=80

#
# Делаем последнее китайское предупреждение юзеру.....
#

work="no"

#
# Cкрипт не запуститься по юзер явно не разрешит это
#



echo ""
echo "Скрипт выполняет сжатие /usr "
echo " Не уверен - не запускай "
echo -n "Работаем ? yes/no "

read work

if [ "$work" = "yes" ] ; then

true

else

echo "Вы не ввели yes .... Завершаем работу"

exit 1

fi

if [ -n "$(type -p mksquashfs)" ] ; then

true

else

echo "Инсталлируйте пакет squashfs-tools "

exit 1

fi



#
# Проверка свободного места в корне ( / )
#

used_space=$(df / | sed '1d;s/%//' | awk '{print $5}' )


if [ "$limit_free" -ge "$used_space" ]


then

echo "Занято $used_space% при лимите в $limit_free% - Работаем ! "
true

else

echo "Занято $used_space% при лимите в $limit_free% - освободите место на разделе "
echo " Или увеличте переменную limit_free в скрипте "
exit 1

fi


# Переменные позволяют узнать надо ли перемещать
# для последующего удаления несжатые /opt и /usr

Do_mv_usr=1


if [ -d /squashed/usr ] ; then
echo "Директория /squashed/usr уже существует... хорошо"
else
mkdir -p /squashed/usr/{ro,rw} || exit 1
echo "Директория /squashed/usr успешно создана"
fi

if [ -f /squashed/fast_usr.sfs ] ; then
echo "Обнаружен старый слепок /usr ! начинаем пересоздание...."

echo "Создаем новый слепок /usr...."

mksquashfs /usr /squashed/usr_tmp.sfs -b 65536 || exit 1

echo "Размонтируем текущий /usr...."

umount -l /usr || exit 1
umount -l /squashed/usr/ro || exit 1

echo "Удаляем старый слепок...."

rm /squashed/fast_usr.sfs

echo "Перемещам вновь созданный...."

mv /squashed/usr_tmp.sfs /squashed/fast_usr.sfs

echo "Удаляем старую подсистему...."

rm -rf /squashed/usr/rw/* || exit 1

echo "Перемонтируем с новым слепком...."

mount /squashed/usr/ro || exit 1
mount /usr || exit 1

echo "Готово новый /usr на марще!!!!"
Do_mv_usr=3

else


echo "Сжимаем /usr..."

mksquashfs /usr /squashed/fast_usr.sfs -b 65536 || exit 1

echo "Прописываем в /etc/fstab"
echo "#">>/etc/fstab
echo "# Сжатые разделы">>/etc/fstab
echo "/squashed/fast_usr.sfs /squashed/usr/ro squashfs loop,ro 0 0">> /etc/fstab || exit 1
echo "usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0">> /etc/fstab || exit 1
echo "#">>/etc/fstab
fi

[ $Do_mv_usr -ne "3" ] &&
(echo "Перемещаем старый /usr в /usr.old" &&
mv /usr /usr.old &&
mkdir /usr &&
echo "Несжатый /usr перемещен в /usr.old и может быть удалён после перезагрузки!" )

echo "Готово!!!"
echo "Введите команду reboot и нажмите ввод"