Использовать образы файловых систем очень удобно. Можно хранить образы компакт-дисков на HDD, можно делать бекапы систем в виде образов, можно, наконец, просто создать имидж, в котором будет храниться секретная информация. Здесь я приведу пару приемов работы с образами.
Как сделать образ CD
Делается это одной командой dd:
dd if=/dev/scd0 of=my_image.img
где /dev/scd0 - это наш cd-rom, my_image.img - файл образа.
Чтобы дело пошло быстрее, можно увеличить размер блока данных, например, до 16-ти килобайт:
dd if=/dev/scd0 of=my_image.img bs=16k
Естественно, вместо cd-rom'а может быть любое дисковое устройство. Да и вообще, образ и дисковое устройство могут поменяться местами, например, если мы восстанавливаем информацию из образа на диск:
dd if=my_image.img of=/dev/sdb bs=16K
Отлично, образ готов. Что с ним делать дальше?
Как монтировать образ
Для начала проассоциируем образ с дисковым устройством образов.Как сделать образ CD
Делается это одной командой dd:
dd if=/dev/scd0 of=my_image.img
где /dev/scd0 - это наш cd-rom, my_image.img - файл образа.
Чтобы дело пошло быстрее, можно увеличить размер блока данных, например, до 16-ти килобайт:
dd if=/dev/scd0 of=my_image.img bs=16k
Естественно, вместо cd-rom'а может быть любое дисковое устройство. Да и вообще, образ и дисковое устройство могут поменяться местами, например, если мы восстанавливаем информацию из образа на диск:
dd if=my_image.img of=/dev/sdb bs=16K
Отлично, образ готов. Что с ним делать дальше?
Как монтировать образ
если дело в Linux:
losetup /dev/loop0 my_image.img
появится устройство /dev/loop0
если во FreeBSD:
mdconfig -a -t vnode -f my_image.img
появится устройство /dev/md0 или вроде того.
Далее можно производить монтирование:
mount /dev/loop0 /mnt/
По окончании работы с образом нужно отмонтировать его и снять ассоциацию.
в Linux:
umount /mnt
losetup -d /dev/loop0
во FreeBSD:
umount /mnt
mdconfig -d -u 0 #для md0
Как создать образ диска с нуля
Например, нужно создать образ ФС размером ~512 Мб с файловой системой ext3.
# Создадим файл образа, count отвечает за количество блоков
root@till:~/TMP# dd if=/dev/zero of=my_image.img bs=1k count=512000
512000+0 records in
512000+0 records out
524288000 bytes (524 MB) copied, 18,6485 s, 28,1 MB/s
# Создадим ассоциацию
root@till:~/TMP# losetup /dev/loop0 my_image.img
# Создадим файловую систему, тут нам помогут fdisk и mkfs
root@till:~/TMP# fdisk /dev/loop0
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x58bbc7e9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-63, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-63, default 63): +512M
Value out of range.
# Не угадал с размером :-)
Last cylinder, +cylinders or +size{K,M,G} (1-63, default 63): +500M
Value out of range.
# Опять не угадал
Last cylinder, +cylinders or +size{K,M,G} (1-63, default 63): +450M
# Угадал!
# Установим тип фс=Linux (это номер 83)
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
# Запишем изменения и выйдем
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
# Форматируем наш новый виртуальный диск
root@till:~/TMP# mkfs.ext3 /dev/loop0
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# Готово, можно монтировать
root@till:~/TMP# mount /dev/loop0 /mnt/
root@till:~/TMP# ls /mnt
lost+found
root@till:~/TMP#
Примерно так.
Комментариев нет:
Отправить комментарий