インストールメモ

 

CentOS 6.2(x86_64)のインストール

x86ベースのPCにCentOS 6をインストールします。今回は、KVMを使って同一PCに複数の仮想OSを稼働させてみます。

インストール対象マシン

 項目  種類  備考
 CPU  AMD Phenom x4 9750  
 マザーボード  ASUS M2N-SLI Deluxe  
 メモリ PC2-6400 1GB x 2
PC2-6400 2GB x 2
Corsair CM2X1024-6400 x 2
Patriot  
 グラフィックス  RADEON HD3650  PowerCooler製
 HDD HDT722525DLA380
WD10EARS
 

インストール

ホストOSのインストール

CentOS 6.2のDVDイメージをダウンロードし、DVD-Rに焼きます(2枚組)。

続いて、DVDを装填してPCの電源を起動し、インストーラが立ち上がったら[Install or upgrade an existing system]を選択
Disc Found - To begin testing the media before installation には[Skip]を選択
CentOS 6のロゴが表示されたら、右下隅の[Next]をクリック(気づきにくい)
What language ... では、[Japanese(日本語)]を選択して右下隅の[Next]をクリック
このシステム用の適切なキーボード... では、[日本語]を選択して右下隅の[次]をクリック
どちらのタイプのストレージデバイス... では、[Basic Strage Device]を選択し[次]をクリック
新規インストールか既存インストールのアップデートか聞かれたら、[新規インストール]を選択して[次]をクリック
→ CentOS 6が既にインストールされているときに確認してくるかと思われる
このコンピュータのホスト名... では、デフォルトの[localhost.localdomain]のまま[次]をクリック
使用するタイムゾーン... では、デフォルトの[アジア/東京]、[システムクロックにUTCを使用する]にチェックが付いたまま[次]をクリック
ルートユーザーは... では、ルートのパスワードを入力して[次]をクリック
どのタイプのインストールを... では、[Use All Space]を選択し、[パーティションのレイアウトをレビューまたは修正する]にチェックを入れて[次]をクリック
パーティション設定が表示されるので、LVMボリュームグループ>VolGroup>lv_home(/home)を削除し、lv_rootを選択し[編集]を押し、サイズを最大値に変更する。[次]をクリック
CentOSのデフォルトインストールは最小限インストール... では、Virtual Hostを選択し、今すぐカスタマイズを選択し[次]をクリック
左側メニューで[デスクトップ]を選択し、右側メニューで[X Window System]、[グラフィカル管理ツール]、[デスクトップ]を選択し[次]をクリック
→ [開発ツール]も入れるといいらしい
インストールが完了するとDVDトレイが排出されるので、DVDメディアを取り出し[再起動]をクリック
再起動後、しばらくすると、ようこそ画面が表示されるので、[進む]をクリック
ライセンス情報画面が表示されるので、[進む]をクリック
ユーザーの作成画面が表示されるので、root以外の作業用ユーザー名/パスワードを入力し[進む]をクリック
日付と時刻画面が表示されるので、[ネットワーク上で日付と時刻を同期化します]にチェックを付け、デフォルトで定義されているNTPサーバー(3つ)をそれぞれ選択し[削除]をクリックして空欄とした後、[追加]をクリックし、一例としてntp.nict.jpを指定し、[進む]をクリック
→ NICT(独立行政法人情報通信研究機構)が公開しているNTPサーバー。
Kdump画面が表示されるので、クラッシュダンプ解析をしないのであれば[Kdumpを有効にしますか?]のチェックを外し、[終了]をクリック
再起動後、ログイン可能ユーザーがリストされるので、先に作成したユーザーを選択、パスワードを入力しログインする。

ホストOSのネットワーク設定

インストール段階でネットワークの設定が表れなかったので、インストール後に個別設定します。

ホスト名の設定とゲートウェイの設定

CentOS 6のホスト名とゲートウェイアドレスは、/etc/sysconfig/network 設定ファイルに定義します。

NETWORKING=yes
HOSTNAME=shobata
GATEWAY=172.17.10.254

ホスト名はデフォルトではlocalhost.localdomainが定義されています。ドメイン名付きで指定することもホスト名だけ指定することもできます。通常ホスト名だけでよいかもしれません。DHCPを使う場合は、ドメイン名がDHCPで決まるのでホスト名だけ指定します。

ゲートウェイアドレスはDHCPを使う場合は別途付与されるので指定しません。固定でIPアドレスを付与する場合に指定します。インターネットで見かける設定ではゲートウェイアドレスの指定をこのファイルではなく、ifcfg-eth0などのNICごとの設定ファイルに記載するものがあります。ゲートウェイアドレスは、マシンで1つの定義なので、1つしかNICがなければ問題が生じませんが、複数NICでは問題が生じます。

NetworkManagerの停止

CentOS 6から、デスクトップのGUIツールでネットワーク設定をする際に必要なNetworkManagerサービス(デーモン)が搭載されています。X Window System(デスクトップ)をインストールすると、デフォルトでこのNetworkManagerが稼動してネットワーク制御を行います。

しかし、仮想化(KVM)を使う場合、NetworkManagerが稼動しているとゲストOSをブリッジ接続することができないため、NetworkManagerが稼動していれば停止します。

[システム]メニュー>[管理]>[サービス]をクリックし、「サービスの設定」ダイアログでNetworkManagerを選択、[停止]ボタンを押し停止した後、[無効]ボタンを押しNetworkManagerサービスを無効化します。
または、コマンドで service NetworkManager stop を実行、chkconfig NetworkManager off を実行します。

「サービスの設定」ダイアログでnetworkを選択、もし実行中でなければ[開始]ボタンを押し開始し、もし有効でなければ[有効]ボタンを押しnetworkサービスを有効化します。

ネットワークデバイスの設定(ブリッジ接続)

ゲストOSをネットワークにブリッジ接続するために、ネットワークデバイスbr0を作成します。eth0はこのbr0を指すようにします。

(1) DHCPからIPアドレス割り当てを受ける場合の記述

DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

(2) 固定IPアドレスを割り当てる場合の記述

DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.0.0
IPADDR=172.17.1.1
USERCTL=no
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

備考)

複数NICを使うときのメモ

同じく、br1, eth1を定義します。

以下は固定IPアドレスを割り当てるときの記述です。

DEVICE=br1
TYPE=Bridge
BOOTPROTO=no
ONBOOT=yes
NETMASK=255.255.0.0
IPADDR=172.18.1.1
USERCTL=no
DEVICE=eth1
ONBOOT=yes
BRIDGE=br1

どのNICがeth0、eth1に割り当てられるかの制御は、/etc/udev/rules.d/70-persistent-net.rules に記述されています。このファイルは最初の起動時に自動生成されます。もし、NICを交換してMACアドレスが変わった場合は、既存設定は残ったまま新たなNICとして認識されてしまう(例えばeth2)ので、そのような場合はこのファイルを削除して再起動するか手でMACアドレスを修正して再起動してみます。

ゲストOSのインストール

ゲストOSのインストールは、ホストOSのデスクトップで行う方法とコマンドラインで行う方法があります。デスクトップが利用できれば簡単ですが、仮想ホストマシンはサーバー機でデスクトップが利用できないことも多いので、コマンドラインでゲストOSのインストールができるようにしておくと便利です。

ここでは、同じCentOS 6をゲストOSとしてインストールする手順を紹介します。

デスクトップ(仮想マシンマネージャ)でのインストール

[アプリケーション]メニュー>[システムツール]>[仮想マシンマネージャ]をクリックし、仮想マシンマネージャを起動する。

[新しい仮想マシンの作成]アイコンをクリックし、新しい仮想マシン作成ウィザードを表示する。
名前を入力し、OSのインストール方法(ローカルメディア:ISOイメージまたはCD-ROM等、ネットワーク等)を選択し[進む]をクリック
インストールするOSの種類はLinux、バージョンはRed Hat Enterprise Linux 6を選択し[進む]をクリック
メモリは1024MB、CPUは1を選択し[進む]をクリック
コンピュータのハードディスク上にディスクイメージを作成で、80GBを指定し[進む]をクリック

コマンドラインでのインストール(シリアルコンソール接続)

virt-installコマンドでインストールします。

# virt-install -n centostmpl -r 768 -s 64 --vcpus=1 \
--os-type=linux --os-variant=rhel6 \
--network bridge=br0 --nographics \
--location='http://ftp.riken.jp/Linux/centos/6/os/x86_64/' \
--extra-args='console=tty0 console=ttyS0,115200n8' \
-f /var/lib/libvirt/images/centostmpl.img

Starting install...
ファイル .treeinfo を読出中...                   |  796 B     00:00 ...
ファイル vmlinuz を読出中...                     | 7.6 MB     00:01 ... TA
ファイル initrd.img を読出中...                  |  60 MB     00:13 ... ETA
割り当て中 'centostmpl.img'                      |  64 GB     00:00
ドメインを作成中...                              |    0 B    00:00
ドメイン centostmpl に接続しました
エスケープ文字は ^] です
       
gPXE (http://etherboot.org) - 00:03.0 C100 PCI2.10 PnP BBS PMM2FE0@10 C100
...

しばらくすると、コンソールが表れます。

コマンドラインでのインストール(VNC接続)

virt-installコマンドでインストールします。

# virt-install -n centostmpl -r 768 -s 64 --vcpus=1 \
--os-type=linux --os-variant=rhel6 \
--network bridge=br0 \
--graphics vnc,port=5901,keymap=ja --noautoconsole \
--location='http://ftp.riken.jp/Linux/centos/6/os/x86_64/' \
--extra-args='console=tty0 console=ttyS0,115200n8' \
-f /var/lib/libvirt/images/centostmpl.img

「ディスプレイをオープンできません」という警告メッセージを出して--noautoconsoleを指定すると、ホストOSからゲストOSへVNC接続を自動ですることを抑制します。virt-installコマンドは終了しますが、VNCで接続するとグラフィックスインストール画面が表示されます。

コマンドラインでのインストール(Kickstart)

参考URL

複数NICの設定

ゲストOSのKVM設定ファイルを編集します。(例:/etc/libvirt/qemu/foo.xml)

インストール時点では、次のようにネットワーク設定が1つだけ記述されています。(<interface>要素)

<domain type='kvm'>
  <name>foo</name>
    :
  <devices>
    :
    <interface type='bridge'>
      <mac address='52:54:00:ab:cd:ef'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    :
  </device>
</domain>

複数NICを使う場合、この設定ファイルに<interface>要素を追記します。

<domain type='kvm'>
  <name>foo</name>
    :
  <devices>
    :
    <interface type='bridge'>
      <mac address='52:54:00:ab:cd:ef'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:ab:cd:ee'/>
      <source bridge='br1'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </interface>
    :
  </device>
</domain>

mac addressは、重ならない値に修正します。
source bridgeは、追加したNICのブリッジ接続デバイス名に修正します。
address slotは、この設定ファイル中で使用されていない番号に修正します。

ゲストOSを停止し、設定ファイルをvirsh editで編集後、virsh define /etc/libvirt/qemu/foo.xml してゲストOSを起動します。

各種サービスのインストールと設定

OpenLDAPの構築

トラブルシュート

virshによるコンソール接続ができない

問題

virsh console foo でホストOSからゲストOSにコンソール接続すると、まったくキー反応がありません。

[torutk@hostmachine ~]$ sudo virsh console guestmachine
Connected to domain guestmachine
エスケープ文字は  ^] です 

のまま、どのキーを打っても無反応です。Ctrl + ] でコンソール接続を解除すると元に戻るだけです。

解決

ゲスト側にシリアルコンソール接続を受け入れる設定をする必要があります。

CentOS 6.2をゲストOSとして入れた時の設定は、カーネル起動オプションにシリアルコンソールを追加するもので、例は次のとおりです。

/etc/grub.conf の編集

アンダーライン箇所が追記部分です。

  kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/vg_guestmachine-lv_root
 rd_LVM_LV=vg_guestmachine/lv_root rd_NO_LUKS rd_NO_MD quiet rhgb crashkernel=auto
 KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rd_LVM_LV=vg_pecorino/lv_swap
 console=tty0 console=ttyS0,115200n8r

上記はHTML記載上改行を入れていますが、実際には1行で記述します。

補足

設定

Active DirectoryのユーザーでLinuxログインする

Windows OS、Linux OS混在環境で、Windows側にActive Directoryを導入してドメインを構成している場合、Linuxのログインに別なユーザーアカウントを使うのは不便です。

そこで、LinuxのログインにWindowsドメインのユーザー名/パスワードを使えるように設定します。もちろんLinuxローカルでのユーザーも従来どおり使えます。

Active Directoryは、プロトコルにLDAP、認証にKerberosを使用しており、Linux側からActive Directoryに登録されたユーザーで認証する手段には次の3つがあります。

ここでは、一番簡単な3番目のLDAP/Kerberosを使って設定します。

パッケージのインストール
# yum install map_krb5 fprintd-pam
認証の設定

Active DirectoryのIPアドレスまたはIPアドレス解決可能なサーバー名、ドメイン名を入手し、authconfigコマンドで設定を追加します。

# authconfig --enablekrb5 --krb5kdc=magellan --krb5realm=EARTH.LOCAL --update 

authconfigコマンドによって次の設定ファイルが影響を受けます。

ユーザーアカウントの作成

LDAP/Kerberosを使ったActive Directory認証では、あらかじめLinux側にActive Directoryに登録されているユーザー名と同じ名前のユーザーアカウントを作成しておく必要があります。なお、Linux側でのパスワード設定は不要です。

# useradd judock

注意点

Active Directoryマシンと認証マシンとの時刻同期

Kerberos認証では、マシンの時刻同期が重要となるので(基本5分以内であること)、時刻同期をきっちり取っておきます。インターネット接続環境や、ローカルにNTPサーバーが稼動していればそこへNTPで同期します。

Linuxマシンのホスト名がIPアドレス解決可能であること

Active Directory認証をさせたいLinuxマシンのホスト名がIPアドレスに解決可能でないと認証エラーになってしまいます。

/var/log/secure のエラーログ例

Jan 31 07:21:37 bigtray unix_chkpwd[4157]: password check failed for user (judock)
Jan 31 07:21:37 bigtray login: pam_unix(login:auth): authentication failure; logname: ...
Jan 31 07:21:37 bigtray login: pam_krb5[1320]: error guessing name of local host principal
Jan 31 07:21:37 bigtray login: pam_krb5[1320]: TGT failed verification using keytab: Hostname
 cannot be canonicalized
...

ホスト名をIPアドレス解決可能にする方法をいくつかメモ

環境設定メモ

emacs

設定ファイル

~$ mkdir .emacs.d
~$ emacs .emacs.d/init.el

参考文献

Red Hat社公開ドキュメント