Монтируем img образ

Монтируем img образ

При переносе виртуальной машины с одной хостовой на другую столкнулся с необходимостью изменения «внутри» файловой системы виртуальной машины. Для этого необходимо файл-образ виртуальной системы монтировать «снаружи».

Имеется:

— хостовая машина;

— файл-образ формата img.

Виртуальную систему лучше выключить. Создадим отдельную папку, куда будем монтировать файл:

sam@server1:/mnt/other/vm$ sudo mkdir /mnt/image

Просто так, «наобум», монтировать у нас не получится:

sam@server1:/mnt/other/vm$ sudo mount -t auto -o loop centos2.img /mnt/image/
mount: you must specify the filesystem type

Это связано с тем, что в файле-образе лежит еще и загрузочная информация, так что монтировать нам нужно с определенного шага(точнее байта).

А поможет нам в этом старый, добрый с времен MS-DOS, известный fdisk.

sam@server1:/mnt/other/vm$ sudo fdisk -l centos2.img

Disk centos2.img: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00011289

      Device Boot      Start         End      Blocks   Id  System
centos2.img1   *        2048   209715199   104856576   83  Linux

В данном случае мы видим стартовый сектор файловой системы — 2048.

Размер каждого сектора — 512 байт (указано чуть выше — Sector size).

Далее — просто умножаем 2048 секторов на 512 байт и получам 1048576. Это и есть стартовый байт, нужный нам для монтирования.

Теперь можно монтировать, для указания начального байта используется параметр offset:

sam@server1:/mnt/other/vm$ sudo mount -o loop,offset=1048576 centos2.img /mnt/image/
sam@server1:/mnt/other/vm$ mount | grep image
/mnt/other/vm/centos2.img on /mnt/image type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
sam@server1:/mnt/other/vm$ ls -l /mnt/image
итого 104
dr-xr-xr-x.  2 root root  4096 Фев 24 14:18 bin
dr-xr-xr-x.  4 root root  4096 Дек  3 08:36 boot
drwxr-xr-x.  2 root root  4096 Дек  3 08:33 dev
drwxr-xr-x. 65 root root  4096 Май 27 09:43 etc
drwxr-xr-x.  3 root root  4096 Дек 10 08:02 home
dr-xr-xr-x. 15 root root 12288 Дек 23 08:17 lib
drwx------.  2 root root 16384 Дек  3 08:33 lost+found
drwxr-xr-x.  2 root root  4096 Сен 23  2011 media
drwxr-xr-x.  2 root root  4096 Сен 23  2011 mnt
drwxr-xr-x.  3 root root  4096 Фев 19 07:28 opt
drwxr-xr-x.  2 root root  4096 Дек  3 08:33 proc
dr-xr-x---.  5 root root  4096 Май  7 05:22 root
dr-xr-xr-x.  2 root root 12288 Дек 23 08:17 sbin
drwxr-xr-x.  2 root root  4096 Дек  3 08:33 selinux
drwxr-xr-x.  2 root root  4096 Сен 23  2011 srv
drwxr-xr-x.  2 root root  4096 Дек  3 08:33 sys
drwxrwxrwt.  4 root root  4096 Май 27 09:43 tmp
drwxr-xr-x. 13 root root  4096 Дек 23 08:17 usr
drwxr-xr-x. 17 root root  4096 Дек  3 08:33 var

 

Готово. Просто и быстро.