Цитата(sasamy @ Nov 10 2009, 21:26)

я навскидку написал - надо пробовать
Испробовал с mmc, единственная неувязка была - не переключался root командой sbin/switch_root /newroot init, после секундного гугления нашел решение - запуск через exec. Если по шагам
1) Идем на
http://aufs.sourceforge.net/2) Читаем как нам склонировать git
Цитата
o aufs2-standalone tree
$ git clone
http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git \
aufs2-standalone.git
$ cd aufs2-standalone.git
$ git checkout origin/aufs2-xx # for instance, aufs2-27 for linux-2.6.27
# aufs2 (no -xx) for the latest -rc version.
в моем случае ядро 2.6.30.4 поэтому последняя команда была git checkout origin/aufs2-30
3) Читаем как внести изменения в исходники ядра
Цитата
- apply ./aufs2-kbuild.patch to your kernel source files.
- apply ./aufs2-base.patch too.
- apply ./aufs2-standalone.patch too, if you have a plan to set
CONFIG_AUFS_FS=m. otherwise you don't need ./aufs2-standalone.patch.
- copy ./{Documentation,fs,include} files to your kernel source tree.
- enable CONFIG_EXPERIMENTAL and CONFIG_AUFS_FS, you can select either
=m or =y.
- and build your kernel as usual.
- install it and reboot your system.
как накладывать патчи учить не буду - это должен знать каждый

например так
#cd /<путь к исходникам ядра>
#patch -p1 < /<путь к патчам>/aufs2-base.patch
#patch -p1 < /<путь к патчам>/aufs2-kbuild.patch
#patch -p1 < /<путь к патчам>/aufs2-standalone.patch
4) собираем статически busybox - я оставил только 3 аплета - mount, ash и switch_root
5) готовим маленькую корневую фс для initramfs с простейшим сценарием init в корне, например в моем случае
Цитата
# ls -l /home/sasa/initfs
total 4
drwxr-xr-x 2 root root 152 2009-11-11 02:09 bin
drwxr-xr-x 2 root root 128 2009-10-10 12:59 dev
drwxr-xr-x 2 root root 48 2009-11-10 23:19 flash
-rwxr-xr-x 1 root root 249 2009-11-11 02:11 init
drwxr-xr-x 2 root root 48 2009-11-10 23:18 newroot
drwxr-xr-x 2 root root 48 2009-09-04 18:00 proc
lrwxrwxrwx 1 root root 3 2009-11-11 02:09 sbin -> bin
drwxr-xr-x 2 root root 48 2009-09-04 18:00 sys
drwxr-xr-x 2 root root 48 2009-09-04 18:00 tmp
# ls -l /home/sasa/initfs/dev
total 0
crw------- 1 sasa users 5, 1 2009-11-10 23:33 console
brw-rw---- 1 root root 179, 1 2009-11-10 23:41 mmcblk0p1
crwxrwxrwx 1 sasa users 1, 3 2009-11-10 23:33 null
# ls -l /home/sasa/initfs/bin
total 120
lrwxrwxrwx 1 root root 7 2009-11-11 01:28 ash -> busybox
-rwxr-xr-x 1 root root 120308 2009-11-11 01:45 busybox
lrwxrwxrwx 1 root root 7 2009-11-11 01:29 mount -> busybox
lrwxrwxrwx 1 root root 7 2009-11-11 02:09 switch_root -> busybox
# cat /home/sasa/initfs/init
#!/bin/ash
/bin/mount -t proc proc /proc
/bin/mount -t sysfs sysfs /sys
/bin/mount -t tmpfs none /tmp
/bin/mount -t ext2 -o ro /dev/mmcblk0p1 /flash
/bin/mount -t aufs -o br=/tmp=rw:/flash=ro none newroot
exec /sbin/switch_root /newroot /sbin/init
остальные директории пустые sbin у меня это симлинк на bin (на всякий случай - для совместимости создал его

6) собираем ядро с поддержкой initramfs (это вы уже умеете

и aufs (после наложения патчей появится новый пункт c aufs в разделе файловых систем)
7) все готово для запуска.
Что имеем - mmc монтируется в ro, все изменения в корневой фс не затрагивают mmc а делаются прозрачно в tmpfs и после перезагрузки теряются, при этом мне не нужно тратить ram на хранение корневой фс (емкость mmc 512 Мб) как если бы я копировал содержимое mmc в initramfs.
ps все тоже самое можно сделать с mtd+jffs2 - нет никакой разницы какие фс объединять.