Как правило, разные операционные системы поддерживают разные типы файловых систем, и, к сожалению, редко две разные ОС поддерживают одну и ту же файловую систему в достаточной степени для нужд ОС.
Например, файловой системой по умолчанию в Windows является NTFS, которая закрыта - это означает, что переопределение NTFS в Linux, в основном, должно быть сделано путем угадывания и обратного инжиниринга, так как нет никаких официальных спецификаций для чтения. В Linux есть два драйвера NTFS: один является частью ядра, но все еще некачественный; другой - ntfs-3g - написан с использованием FUSE, что делает его немного сложным для интеграции в процесс загрузки, хотя это, безусловно, может быть сделано (при загрузке с initramfs).
В другом направлении, из дюжины файловых систем, поддерживаемых Linux, только для ext2/3/4 доступны сторонние драйверы для Windows (ext2IFS и ext2fsd); опять же, один из них ограничен только ext2, другой утверждает, что поддерживает ext3/ext4, но только без журнала, и ни один из них не способен фактически загружать Windows из раздела ext2/3/4.
Ситуация в основном одинакова, независимо от того, какая у вас комбинация операционных систем. Linux не может читать UFS из FreeBSD и нуждается в стороннем драйвере для поддержки ZFS из-за проблем с лицензированием (опять же, загрузка Linux из ZFS возможна, но это не обязательно будет так же просто, как использование файловой системы, встроенной в Linux). FreeBSD также поддерживает только ext2 и - чуть - ext3.
В общем, единственная широко поддерживаемая файловая система - это FAT/FAT32 от Microsoft, которая довольно медленная и ненадежная по сравнению со всем остальным, не говоря уже о ее ограничениях (например, размер файла ограничен 2 или 4 ГБ).
FAT также не поддерживает ничего, чего ожидают Unix-подобные операционные системы, например, биты прав доступа, списки доступа или специальные файлы, такие как символические ссылки. (Все это, да, NTFS делает поддержку.)
Было время, когда можно было установить Linux на раздел FAT вместе с MS-DOS или ранними системами Windows, используя специальный драйвер файловой системы umsdos
который сохранял эти дополнительные метаданные Unix в специальных файлах, скрытых как от Linux, так и от MS-DOS. Тем не менее, он был давно удален. (Сама Windows также не поддерживает загрузку с раздела FAT.)
С другой стороны, установка двух версий одного и того же операционной системы на тот же раздел часто возможно, хотя почти всегда приводит к конфликтам файлов. Например, несмотря на то, что имя каталога \WINDOWS
можно изменить для второй установки (в некоторых выпусках даже \WINNT
по умолчанию), обе системы по-прежнему ожидают контроля над каталогами по умолчанию \Users
и \Program Files
.
Современный Linux делает это довольно легко - в большинстве установок используется initramfs, в котором достаточно инструментов пользователя, чтобы смонтировать основную "корневую" файловую систему по обычному пути, например /mnt
или /new_root
, а затем ввести его с помощью chroot
или pivot_root
. Было бы тривиально изменить initramfs так, чтобы он вводил /mnt/system-one
или /mnt/system-two
вместо этого, поэтому корневой раздел будет иметь /system-one/usr
и /system-two/usr
, например, но обе системы будут убеждены, что они видят только свои собственные /usr
, и вы можете даже привязать фактический корень файловой системы поверх /all-systems
если хотите.
(Обратите внимание, что нигде я не говорю, что это на самом деле хорошая идея.)