Образы дисков виртуальных машин обычно содержат таблицу разделов, которая содержит одну или несколько файловых систем. Изменение размера немного болезненно, так как вам нужно тщательно переписать таблицу разделов, прежде чем вы сможете изменить размер. Внутри виртуальной машины Linux измененная таблица разделов не может быть прочитана на лету, поэтому вам потребуется еще одна перезагрузка виртуальной машины.
Я бы хотел, чтобы образ диска содержал файловую систему напрямую, без каких-либо разделов. Это позволит легко изменять размеры как внутри, так и снаружи виртуальной машины. Тем не менее, в такой установке загрузчик Grub больше не является надежным, потому что он должен указывать на свой stage2 через жестко закодированное положение блока, что делает виртуальную машину не загружаемой каждые несколько месяцев, когда файловая система перемещает содержимое. (В таблице разделов DOS он использует нераспределенное пространство между MBR и первым разделом, чтобы поместить в него свой stage2. Для других таблиц разделов вы создаете отдельный раздел загрузчика для этого.)
Есть ли способ обойти это?
Как организовать образ диска виртуальной машины, чтобы было как можно проще изменить размер?
Первые идеи:
Использование двух образов дисков на виртуальную машину, один диск фиксированного размера только для загрузчика (MBR+stage2) и второй диск, содержащий непосредственно файловую систему.
Использование другого загрузчика. Но разве у LILO и Syslinux одинаковые проблемы? Первые 512 байт диска просто слишком малы, чтобы содержать драйвер файловой системы.
Есть ли другой, возможно, более простой способ добиться этого?