Я попробовал Ubuntu 12.04 и на основе своих знаний создал следующие разделы:
- 2 ГБ подкачки (у меня 2 ГБ ОЗУ)
- 1 ГБ
/boot
, так как я буду устанавливать разные версии ядра (начинаю разработку ядра) - 35ГБ
/var
- 40ГБ
/usr/local
- 407 ГБ
/home
- 15 ГБ
/
(корень)
Теперь я хочу установить OpenSUSE 12.2 вместе с Ubuntu 12.04. Могу ли я разделить /var
и /usr/local
между двумя ОС? Я знаю, что это два разных дистрибутива с разными пакетами, но есть ли способ разделить дисковое пространство? Так, чтобы обе ОС могли иметь свои собственные /usr/local
в одном разделе или что-то в этом роде?
решение1
Вы можете поделиться /usr/local
. Иногда два дистрибутива будут иметь разные версии библиотек, поэтому вам может потребоваться установить несколько библиотек на одной или другой стороне или в /usr/local
самой себе. Бремя установки дополнительной библиотеки, скорее всего, будет компенсировано отсутствием необходимости поддерживать две установки каждой программы в /usr/local
.
Если есть программы, которые вы хотите использовать только /usr/local
в одной из систем, вы можете сделать другое соглашение: не делиться /usr/local
, а делитьсяукладыватьрепозиторий и создайте символические ссылки на /usr/local
обе системы.
Вам не нужно создавать /usr/local
отдельный раздел, чтобы поделиться им. Вы можете хранить его в системном разделе одной системы, монтировать его в любом месте другой системы и создать символическую ссылку.
Вы не можете поделиться /var
. Есть небольшие различия в том, как организованы каталоги, и у каждого дистрибутива есть свои собственные идентификаторы пользователей. Вы можете поделиться частями /var
, например, почтовым спулом.
35 ГБ для /var
— это много. Для базовой системы это не нужно. Если вы собираетесь разместить там много данных (например, потому что там находится корень вашего веб-сервера), определите размер файловой системы в соответствии с вашими данными. Нет смысла отделять /var
от корневого раздела, поэтому объедините их. Вы не упоминаете /usr
в своем списке: это тоже не нужно отделять от корневого раздела. Просто создайте один системный раздел для каждой ОС, плюс общий /home
. Вам действительно нужно больше 15 ГБ для системного раздела, если только вы не собираетесь быть очень консервативными в программах, которые вы будете устанавливать. Создайте системный раздел размером 50 ГБ, и все будет в порядке.
Нет необходимости в отдельном /boot
разделе, если у вас нет дополнительных требований, таких как шифрование системного раздела.
решение2
Помимо символических ссылок вы также можете использовать bind mounts
:
http://docs.1h.com/Bind_mounts
По сути, вы можете иметь один раздел с одной файловой системой (аналогично настройке Энтона). В этом случае, предполагая, что у вас смонтирована файловая система, /mnt/local
вы просто сделаете это mount --bind /mnt/local/ubuntu /usr/local
на вашей установке Ubuntu и mount --bind /mnt/local/suse /usr/local
на вашей установке Suse.
Одним из преимуществ этого способа является то, что вы можете сделать это поверх существующего, /usr/local
не уничтожая/не перемещая сам /usr/local
каталог.
Вот пример:
# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme
решение3
/usr/local
(т.е. локально скомпилированное/установленное программное обеспечение) должно работать нормально,при условии, что системные библиотеки, используемые всем, что там есть, совместимы. Это означает, что вы можете обойтись без этого с довольно современными дистрибутивами "для настольных компьютеров". Если вы попытаетесь смешать и сопоставить, скажем, Fedora и RHEL/CentOS,всепостроение на основе дистрибутива со старыми библиотеками (в данном случае RHEL/CentOS), поскольку базовые библиотеки ( glibc
в основном) достаточно совместимы с предыдущими версиями. Выволястолкнуться с проблемами с C++ (среда выполнения C++ имеет тенденцию сильно меняться между версиями), некоторые графические библиотеки меняют интерфейсы по своему усмотрению. Все, что связано с окружением рабочего стола (будь то KDE или Gnome или что-то еще), вероятно, исключено.
решение4
Как настроить несколько установок на машине, зависит от вашего стиля работы с этими установками. Еще одно, что следует иметь в виду, это то, что если вы не собираетесь делать какую-то изящную работу виртуальной машины с использованием реальных разделов, эти две установки не будут работать одновременно.
По моему опыту, /home
раздел должен быть общим без особых проблем. Любые пользователи, которые специально созданы для приложений ( dovecot
, fetchmail
), но ни одна из систем обычно не имеет настоящих каталогов в, /home
как «обычные пользователи». Я разделяю имена входа между разными версиями Ubuntu, но это иногда создает проблемы при возврате к старой установке, потому что файлы конфигурации в вашем домашнем каталоге были автоматически преобразованы. Чтобы решить такие проблемы, у меня есть один и тот же логин с разными домашними каталогами в /home
, но с тем же идентификатором пользователя и идентификатором группы для совместного использования данных. Вы всегда можете создать ссылку между определенными подкаталогами (например, теми, в которых находится ваша музыка), для которых нет риска несовместимых/необратимых обновлений.
У меня не было отдельного раздела с тех пор, как я работал на PDP 11/70 в середине 80-х, поэтому я не знаю, почему ваш друг рекомендовал это. Более того, несколько программ по умолчанию будут устанавливаться в, /usr/local
если вы устанавливаете из исходников, и, например, pip
установки для модулей Python делают то же самое. Чтобы предотвратить проблемы там, я бы сделал /mnt/local
на каждой машине монтирование раздела, предназначенного для /usr/local
него, создал каталоги ubuntu
и suse
в этом разделе и мягкую ссылку ( ln -s /usr/local /mnt/local/ubuntu
) для каждой соответствующей машины. Таким образом, вы разделяете пространство на этом разделе, не подвергаясь риску случайной перезаписи. Вы всегда можете позже создать ссылки между вещами, которые вы явно хотите разделить.
Дополнительно я могу порекомендовать вести какой-то журнал для того, что вы установили для каждой установки (я использую emacs в режиме журнала изменений с файлом для каждой комбинации машина-дистрибутив-ревизия), чтобы вы могли повторить установку, если вы обновляетесь, и вам не нужно было помнить, какие дополнительные вещи вы установили. Сейчас у меня есть скрипт, setupnewsystem
который делает все дополнительные вещи за меня, включая установку /etc
под контроль версий после установкиmercurial