Rootfs2partition
Образ партиции из архива rootfs
Подсчет размера
На примере партиции
PartitionId=14 Name=UDB DeviceId=18 StartSector=1002240 NumSectors=2876672 BytesPerSector=2048
Данные взяты из partitiontable.txt. Как получить эту информацию из тошки написано в разделе бекап. Размер партиции в байтах = размер партиции в секторах * размер сектора в байтах Размер партиции в байтах = 2876672 * 2048 = 5891424256
Создание образа
touch /tmp/newpartition.img truncate /tmp/newpartition.img -s $((2876672 * 2048)) mkfs.ext4 /tmp/newpartition.img sudo mkdir -p /mnt/newpartition sudo mount -t ext4 /tmp/newpartition.img /mnt/newpartition sudo tar pxzf /tmp/rootfs.tar.gz -C /mnt/newpartition sudo umount /mnt/newpartition
Создаем новый файл и меняем его размер на нужный. С помощью команды ls можно убедиться, что размер получился правильный.
touch /tmp/newpartition.img truncate /tmp/newpartition.img -s $((2876672 * 2048)) ls -l /tmp/newpartition.img
Создаем файловую систему на нашем образе. Т.к. файл не является блочным устройством, нас спросят, продолжить или нет. Отвечаем утвердительно.
mkfs.ext4 /tmp/newpartition.img mke2fs 1.41.14 (22-Dec-2010) /tmp/newpartition.img is not a block special device. Proceed anyway? (y,n) y ...
Создаем новую папку и монтируем туда образ. С помощью команды ls можно убедиться, что в образе нет ничего, кроме lost+found.
sudo mkdir -p /mnt/newpartition sudo mount -t ext4 /tmp/newpartition.img /mnt/newpartition ls -l /mnt/newpartition
Распаковываем рутфс на образ. Параметры: p - сохранять права, x - распаковать, z - используется сжатие gzip (можно не указывать, сейчас в основном сжатие определяется автоматически), f - указываем файл, который будем распаковывать, С - указывает в какую папку производить распаковку.
sudo tar pxzf /tmp/rootfs.tar.gz -C /mnt/newpartition ls -l /mnt/newpartition
Не забываем отмонтировать образ.
sudo umount /mnt/newpartition