私は、ステートレス RHEL6.5 KVM VM に nfs-utils (およびそのすべての依存関係) をインストールしようとしています。 VM は、ファイル/etc/sysconfig/readonly-root
、私が実装しなかった Linux マジック、および VM 設定 GUI の「読み取り専用」オプションを介して読み取り専用ルートを持つように構成されています。 インストールは を使用して行われますvirt-customize -a image.img --run install_script.sh
。 スクリプトは、ヒアドキュメントを使用して .repo ファイル (6.5 の CentOS ボールトに送られる) を作成し、 を使用してyum install -y nfs-utils
実際のインストールを行います。 VM を読み取り/書き込みモードで起動し、インストール、クリーンアップ、シャットダウンするよりも簡単で、クリーンで、エラーが発生しにくいと思われるため、この方法を採用しました。 また、読み取り/書き込みモードで起動する方法がわかりません。
出力には、virt-customize
パッケージが正常にインストールされたことが示されていました。唯一の失敗は、タイプミスによる .repo の削除でした。
このインストール後、VM を起動し、通常どおりログインしようとしました。私の試行は、次の理由で拒否されましたLogin incorrect
。
virt-cat
ユーザーのログイン シェルが正しく設定され、暗号化されたパスワードが/etc/shadow
元のパスワードと同じであることを確認するために、 をチェックしました。
私の最初のアプローチは、すべての依存関係と nfs-utils を含む ISO イメージを作成し、それを VM にアタッチして、スクリプトでインストールを処理するというものでした。そのときも同じ問題が発生しました。問題の原因を、NFS パッケージのいずれか (nfs-utils
またはnfs-utils-lib
(2 つのうちの 1 つだったかは覚えていません)) とrpcbind
パッケージのインストールに絞り込みました。これらのパッケージのいずれかがインストールされ、VM が起動すると、ログインが中断されます。これは現在発生しているのと同じ問題ではないかと推測しています。
VM に使用しているイメージは、cp
インストールを正しく行う方法を調べるためのテストであるため、元の VM のイメージから編集されています。
はい、パスワードは正しく入力しています。ユーザーのパスワードを(libguestfs
ツール経由で)変更しようとしましたが、まだログインできないため、変更が失敗したのか(コマンドの戻りコードは成功を示しています)、同じ問題が発生しているのかはわかりません。
質問:
- ログインの問題はデバッグして修正できますか? できる場合、どのようにすればよいですか?
- ログインが中断されないように正しくインストールするにはどうすればいいですか? 明らかにこの方法は機能しません。
答え1
ここでの中心的な問題は SELinux でした。VM にソフトウェアをインストールする方法は複数ありますが、結局のところ VM が起動されているか、起動されていないかという問題になります。後者がすべてを台無しにしており、この投稿で私がインストールを行ったのもこのやり方です。
私が推測する限りでは、VM がシャットダウンされ、質問のコマンドなどを使用してソフトウェアがインストールされると、SELinux は何か変更されたことを認識しますが、インストール後に VM が起動されたときに何が起こったかがわからず、すべてをロックダウンします。SELinux に再ラベル付けを許可すると問題は解決しますが、他の多くのものが壊れてしまいました。システムがオフラインのときにインストールをスクリプト化する方法はありません。おそらくこの問題に遭遇するでしょう。注: この問題は、RHEL6.5 VM とその SELinux バージョンにのみ発生する可能性があります (バージョンは RHEL6.5 に固定されています)。
このような VM にインストールを行う適切な方法は、読み取り/書き込みモードで起動し、必要な RPM を含む ISO をマウントするか、パッケージ マネージャーを使用してインストールを実行することです。起動中は、SELinux がインストールを認識し、すべてが順調に進みます。