BackupMenu позволяет создавать бэкапы основных файловых систем и многое другое, например,
сеть по USB, режим USB Mass Storage, fsck.
Если у нас нет нескольких ядер (kernel-power + kernel-cssu + kernel-bfs) или нескольких ОС (NitDroid + Ubuntu + Mer), а имеется только одно постоянное, то тогда достаточно поставить пакет BackupMenu из репозитория, установится BootMenu и при раздвинутой клавиатуре будет выбор - Maemo или BackupMenu.
Если же пользуемся Мультибутом, то для совместимости его с BackupMenu необходимо скачать 5 пакетов и установить их:
Защита паролем:
Если создать пустой файл /usr/share/backupmenu/lock-enable.txt от рута, то backupmenu будет спрашивать пароль рута.
Если вы хотите, чтобы backupmenu спрашивала другой пароль, то сохраните в этот файл пароль, зашифрованный DES (в таком же формате, как /etc/passwd), если файл не будет содержать ровно 13 символов, то будет игнорироваться.
История:
После восстановления из бекапа rootfs уменьшился аж на 14 мб. Это произошло из-за того, что в корневой файловой системе N900 (UBIFS) используется сжатие. Когда ты восстанавливаешь бэкап, то фактически просто копируешь файлы. Сжимать их у UBIFS в таком режиме записи получается не так эффективно. Впрочем, у меня после восстановления бэкапа свободное место только увеличилось на 2,4 МБ. Перед прошивкой образ файловой системы подготавливается из уже существующей файловой системы, поэтому сжимается он куда эффективнее. Как сделать образ прошивки из образа бэкапменю описано ниже. После того, как я это сделал и прошил его, свободное место увеличилось ещё на 20,6 МБ! Кстати, меня поразила степень сжатия. Оригинальные файлы занимали 337 МБ, но фактически занимают лишь 165 МБ. Очень круто.
Только под линуксом.
Загрузка образа в оперативную память.
Подгружаем необходимые модули:
modprobe mtdblock
modprobe ubi
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15
У нас на N900 256MiB, 2048 bytes page, его и эмулируем. Проверяем, что всё работает:
cat /proc/mtd
dev: size erasesize name
mtd0: 10000000 00020000 "NAND simulator partition 0"
ls -la /dev/mtd*
crw------- 1 root root 90, 0 2011-09-23 22:05 /dev/mtd0
crw------- 1 root root 90, 1 2011-09-23 22:05 /dev/mtd0ro
brw-rw---- 1 root disk 31, 0 2011-09-23 22:05 /dev/mtdblock0
Заливаем образ ФС в симулятор:
dd if=rootfs.jffs2 of=/dev/mtdblock0 bs=2048
Добавляем MTD к UBI:
ubiattach /dev/ubi_ctrl -m 0
Всё, можно монтировать!
mkdir /mnt/n900
mount -t ubifs ubi0_0 /mnt/n900/
Теперь можем делать в /mnt/n900, что хотим.
Упаковка обратно в образ:
Упаковываем в ubifs:
mkfs.ubifs -m 2048 -e 129024 -c 2047 -r /mnt/n900/ rootfs_ubifs.jffs2
Упаковать можно всё, что угодно, не только загруженный ранее образ ubi.
Например, упаковка ранее созданного backupmenu бэкапа:
mkdir rootfs
tar xf *date*-rootfs.tar -C ./rootfs/
mkfs.ubifs -m 2048 -e 129024 -c 2047 -r ./rootfs/ rootfs_ubifs.jffs2
Создаём конфиг для UBI:
cat > cfg.ini << EOF
[rootfs]
mode=ubi
image=rootfs_ubifs.jffs2
vol_id=0
vol_size=160MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
vol_alignment=1
EOF
Помещаем ubifs в UBI:
ubinize -o rootfs_new.jffs2 -p 128KiB -m 2048 -s 512 cfg.ini
Всё, образ можно прошить:
flasher-3.5 -f -r rootfs_new.jffs2
Размонтируем фс:
umount /mnt/n900
Отключаем симулятор от UBI:
ubidetach -m 0
Выгружаем ненужные модули:
rmmod nandsim ubi mtdblock ubifs nand nand_ids nand_ecc mtdchar mtd_blkdevs mtd
Удаляем ненужный образ ubifs:
rm rootfs_ubifs.jffs2