Я пытаюсь установить nfs-utils (и, следовательно, все его зависимости) в виртуальной машине RHEL6.5 KVM без сохранения состояния. Виртуальная машина настроена на root только для чтения через файл /etc/sysconfig/readonly-root
, магию Linux, которую я не реализовал, и опцию «Только для чтения» в графическом интерфейсе настроек виртуальной машины. Установка выполняется с помощью virt-customize -a image.img --run install_script.sh
. Скрипт использует here-document для создания файла .repo (который отправляется в хранилище CentOS для 6.5), затем я использую его yum install -y nfs-utils
для выполнения фактической установки. Я выбрал этот подход, потому что он кажется проще, чище и менее подвержен ошибкам, чем загрузка виртуальной машины в режиме чтения/записи, установка, очистка и затем выключение. Кроме того, я не могу понять, как заставить ее загрузиться в режиме чтения/записи.
Вывод показал virt-customize
, что пакеты были успешно установлены. Единственной ошибкой было удаление .repo из-за опечатки.
После этой установки я загрузил VM и попытался войти как обычно. Мои попытки теперь отклоняются, потому что Login incorrect
.
Я проверил, virt-cat
чтобы убедиться, что оболочка входа для пользователя установлена правильно, а зашифрованный пароль выглядит /etc/shadow
так же, как и оригинал.
Мой первоначальный подход заключался в создании образа ISO, содержащего все зависимости и nfs-utils, и присоединении его к виртуальной машине, а также в том, чтобы скрипт управлял установкой. Тогда возникла та же проблема. Я сузил источник проблемы до установки одного из пакетов NFS: либо nfs-utils
или nfs-utils-lib
(один из двух, я не помню), и rpcbind
пакета. Когда один из этих пакетов установлен, а затем загружается виртуальная машина, вход в систему прерывается. Я предполагаю, что это та же проблема, которая возникает сейчас.
Образ, который я использую для виртуальной машины, cp
создан на основе исходного образа виртуальной машины, поскольку это тест, позволяющий выяснить, как правильно выполнить установку.
Да, я ввожу пароль правильно. Я пытался изменить пароль пользователя (через libguestfs
инструменты), но все равно не могу войти, поэтому я не уверен, не удалось ли изменить пароль (код возврата команд указывает на успех) или проблема осталась прежней.
Вопрос:
- Можно ли отладить и исправить проблему со входом? Если да, то как?
- Как правильно выполнить установку, чтобы не засорялся вход? Очевидно, что этот способ не работает.
решение1
Основной проблемой здесь был SELinux. Существует множество способов установки ПО в VM, но они сводятся к тому, что VM загружается или не загружается. Последнее все портит, и именно так я и устанавливал в посте.
Насколько я могу судить, когда виртуальная машина выключена и программное обеспечение установлено, например, с помощью команды в вопросе, SELinux понимает, что что-то изменилось, и не знает, что произошло, когда виртуальная машина загружается после установки, и блокирует все. Разрешение SELinux переименовывать решает проблему, но сломало много других вещей для меня. Фактически нет способа написать сценарий установки, когда система находится в автономном режиме, потому что вы, вероятно, столкнетесь с этим. Обратите внимание, что эта проблема может быть связана только с виртуальными машинами RHEL6.5 и их версией SELinux (мы привязаны к версии RHEL6.5).
Правильный способ установки для такой виртуальной машины — загрузить ее в режиме чтения/записи и выполнить установку либо с помощью монтирования ISO с необходимыми RPM, либо с помощью менеджера пакетов. Во время загрузки SELinux будет знать об установке, и все будет хорошо и замечательно.