![]() |
インストールメモ |
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 |
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を有効にしますか?]のチェックを外し、[終了]をクリック
再起動後、ログイン可能ユーザーがリストされるので、先に作成したユーザーを選択、パスワードを入力しログインする。
インストール段階でネットワークの設定が表れなかったので、インストール後に個別設定します。
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では問題が生じます。
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
備考)
同じく、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のインストールができるようにしておくと便利です。
ここでは、同じ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 ...
しばらくすると、コンソールが表れます。
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で接続するとグラフィックスインストール画面が表示されます。
参考URL
ゲスト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を起動します。
virsh console foo でホストOSからゲストOSにコンソール接続すると、まったくキー反応がありません。
[torutk@hostmachine ~]$ sudo virsh console guestmachine Connected to domain guestmachine エスケープ文字は ^] です
のまま、どのキーを打っても無反応です。Ctrl + ] でコンソール接続を解除すると元に戻るだけです。
ゲスト側にシリアルコンソール接続を受け入れる設定をする必要があります。
CentOS 6.2をゲストOSとして入れた時の設定は、カーネル起動オプションにシリアルコンソールを追加するもので、例は次のとおりです。
アンダーライン箇所が追記部分です。
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行で記述します。
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
Kerberos認証では、マシンの時刻同期が重要となるので(基本5分以内であること)、時刻同期をきっちり取っておきます。インターネット接続環境や、ローカルにNTPサーバーが稼動していればそこへNTPで同期します。
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アドレス解決可能にする方法をいくつかメモ
~$ mkdir .emacs.d ~$ emacs .emacs.d/init.el