1 views

実現する機能

KVM(Kernel-based Virtual Machine) (ケーブイエム) は仮想化ソフトです。Windowsを搭載していたパソコンが壊れたので、サーバー機でCentOSとWindowsを同時に動かして使っています。動画ファイルの変換にはWindowsが不可欠ですからね。さらには、CentOSのテスト環境を構築し、危ないソフトを試したりしています。欠点は、周辺機器が使えない点です。CentOS 7.0からはDVDドライブが認識されなくなったので、Windows7のインストールDVDをイメージコピーしてインストールを実施しました。

KVMを導入するためには、パソコンのプロセッサが「Intel VT」か「AMD-V」のどちらかでないと動作しません。

KVMの導入手順

(1)自宅サーバーが仮想化できるか確認

[root@ufuso ~]# egrep '(vmx|svm)' /proc/cpuinfo ← 自宅サーバーがKVMで仮想化でき
るPCか調べる
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
 ← svm(Intelならvmx)とあるのでOK。
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
 ← svm(Intelならvmx)とあるのでOK。

[root@ufuso ~]# lsmod | grep kvm ← kvmモジュールがロードされているか確認
 ← 何も表示されないので、ロードされていない
[root@ufuso ~]# modprobe kvm ← 必要なモジュールを組み込む

[root@ufuso ~]# modprobe kvm_amd ← AMD用モジュールの組込。INTEL用だとkvm_intel

[root@ufuso ~]# lsmod | grep kvm ← モジュールが組み込まれたか確認
kvm_amd                59987  0 
kvm                   441119  1 kvm_amd ← ロードされている

(2)KVMのインストール

[root@ufuso ~]# yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager
 ← kvmとlibvirt をインストール
パッケージ 10:qemu-kvm-1.5.3-60.el7_0_0.2.x86_64 はインストール済みか最新バージョンです
パッケージ bridge-utils-1.5-9.el7.x86_64 はインストール済みか最新バージョンです

インストール:
  libvirt.x86_64 0:1.1.1-29.el7       virt-install.noarch 0:0.10.0-20.el7      
  virt-manager.noarch 0:0.10.0-20.el7

更新:
  libvirt.x86_64 0:1.1.1-29.el7_0.1 

依存性関連をインストールしました:
  libvirt-client.x86_64 0:1.1.1-29.el7_0.1                                      
  libvirt-daemon.x86_64 0:1.1.1-29.el7_0.1                                      
  libvirt-daemon-config-network.x86_64 0:1.1.1-29.el7_0.1                       
  libvirt-daemon-config-nwfilter.x86_64 0:1.1.1-29.el7_0.1                      
  libvirt-daemon-driver-interface.x86_64 0:1.1.1-29.el7_0.1                     
  libvirt-daemon-driver-lxc.x86_64 0:1.1.1-29.el7_0.1                           
  libvirt-daemon-driver-network.x86_64 0:1.1.1-29.el7_0.1                       
  libvirt-daemon-driver-nodedev.x86_64 0:1.1.1-29.el7_0.1                       
  libvirt-daemon-driver-nwfilter.x86_64 0:1.1.1-29.el7_0.1                      
  libvirt-daemon-driver-qemu.x86_64 0:1.1.1-29.el7_0.1                          
  libvirt-daemon-driver-secret.x86_64 0:1.1.1-29.el7_0.1                        
  libvirt-daemon-driver-storage.x86_64 0:1.1.1-29.el7_0.1                       
  libvirt-daemon-kvm.x86_64 0:1.1.1-29.el7_0.1                                  
  libvirt-python.x86_64 0:1.1.1-29.el7_0.1                                            
  virt-manager-common.noarch 0:0.10.0-20.el7                                    

完了しました!

[root@ufuso ~]# systemctl start libvirtd ← ibvirtdの起動

[root@ufuso ~]# systemctl enable libvirtd ← 自動起動設定

(3)ゲストOSがブリッジ接続できるようにブリッジネットワークを構成
ブリッジ接続は、一歩間違えるとインターネットに繋がらなくなります。仮想PCを自宅のネットワークに参加させてファイルの共有とかをやる必要がなければ、ブリッジ接続はお勧めしません。

[root@ufuso ~]# cd /etc/sysconfig/network-scripts
 ← network-scriptsフォルダへ移動

[root@ufuso network-scripts]# ll ← フォルダ内を一覧
合計 216
-rw-r--r--. 1 root root   356  7月 21 12:37 ifcfg-enp2s0 ← イーサネット名を確認
-rw-r--r--. 1 root root   288  7月 21 20:03 ifcfg-enp3s6
-rw-r--r--. 1 root root   254  4月  3 00:30 ifcfg-lo
lrwxrwxrwx. 1 root root    24  7月 21 19:41 ifdown -> ../../../usr/sbin/ifdown
-rwxr-xr-x. 1 root root  1468  6月 10 07:55 ifdown-Team
-rwxr-xr-x. 1 root root  1532  6月 10 07:55 ifdown-TeamPort
-rwxr-xr-x. 1 root root   627  4月  3 00:30 ifdown-bnep
-rwxr-xr-x. 1 root root  5553  4月  3 00:30 ifdown-eth
-rwxr-xr-x. 1 root root   781  4月  3 00:30 ifdown-ippp
-rwxr-xr-x. 1 root root  4141  4月  3 00:30 ifdown-ipv6
lrwxrwxrwx. 1 root root    11  7月 21 19:41 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root  1642  4月  3 00:30 ifdown-post
-rwxr-xr-x. 1 root root  1068  4月  3 00:30 ifdown-ppp
-rwxr-xr-x. 1 root root   837  4月  3 00:30 ifdown-routes
-rwxr-xr-x. 1 root root  1444  4月  3 00:30 ifdown-sit
-rwxr-xr-x. 1 root root  1462  4月  3 00:30 ifdown-tunnel
lrwxrwxrwx. 1 root root    22  7月 21 19:41 ifup -> ../../../usr/sbin/ifup
-rwxr-xr-x. 1 root root  1628 10月 31  2013 ifup-Team
-rwxr-xr-x. 1 root root  1856  6月 10 07:55 ifup-TeamPort
-rwxr-xr-x. 1 root root 12449  4月  3 00:30 ifup-aliases
-rwxr-xr-x. 1 root root   859  4月  3 00:30 ifup-bnep
-rwxr-xr-x. 1 root root 10223  4月  3 00:30 ifup-eth
-rwxr-xr-x. 1 root root 12039  4月  3 00:30 ifup-ippp
-rwxr-xr-x. 1 root root 10430  4月  3 00:30 ifup-ipv6
lrwxrwxrwx. 1 root root     9  7月 21 19:41 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root   642  4月  3 00:30 ifup-plip
-rwxr-xr-x. 1 root root  1043  4月  3 00:30 ifup-plusb
-rwxr-xr-x. 1 root root  2609  4月  3 00:30 ifup-post
-rwxr-xr-x. 1 root root  4154  4月  3 00:30 ifup-ppp
-rwxr-xr-x. 1 root root  1925  4月  3 00:30 ifup-routes
-rwxr-xr-x. 1 root root  3263  4月  3 00:30 ifup-sit
-rwxr-xr-x. 1 root root  2607  4月  3 00:30 ifup-tunnel
-rwxr-xr-x. 1 root root  1621  4月  3 00:30 ifup-wireless
-rwxr-xr-x. 1 root root  4623  4月  3 00:30 init.ipv6-global
-rw-r--r--. 1 root root 14238  4月  3 00:30 network-functions
-rw-r--r--. 1 root root 26134  4月  3 00:30 network-functions-ipv6

[root@ufuso network-scripts]# cp ifcfg-enp2s0 ifcfg-br0 ← enp2s0をbr0にコピー

[root@ufuso network-scripts]# vi ifcfg-br0 ← br0ファイルの編集
DEVICE=br0 ← 追記
#HWADDR=90:E6:BA:C9:DE:B3 ← 行頭に#を付加して無効化
TYPE=Bridge ← 「Bridge」に変更
#UUID=eaea0094-7481-484c-86a7-381c1fc6e86c ← 行頭に#を付加して無効化
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.24.240
NETMASK=255.255.255.0
GATEWAY=192.168.24.1
DNS1=192.168.24.240
#DOMAIN=ufuso.dip.jp ← 行頭に#を付加して無効化
#DEFROUTE=yes ← 行頭に#を付加して無効化
#IPV4_FAILURE_FATAL=yes ← 行頭に#を付加して無効化
#IPV6INIT=no ← 行頭に#を付加して無効化
#NAME="System eth0" ← 行頭に#を付加して無効化
DNS2=192.168.24.1
DELAY=0 ← 追記。ブリッジがトラフィックを監視し、ホストの位置を学習し、フィルタ
リング機能の基になる MAC アドレス表を構築する間に、ブリッジが待機することを回避

[root@ufuso network-scripts]# vi ifcfg-enp2s0 ← enp2s0ファイルの編集
TYPE=Ethernet
#HWADDR=90:E6:BA:C9:DE:B3 ← 行頭に#を付加して無効化
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0 ← ブリッジ名「br0」を明記
#UUID=eaea0094-7481-484c-86a7-381c1fc6e86c ← 行頭に#を付加して無効化
#IPADDR=192.168.24.240 ← 行頭に#を付加して無効化
#PREFIX=24 ← 行頭に#を付加して無効化
#GATEWAY=192.168.24.1 ← 行頭に#を付加して無効化
#DNS1=192.168.24.240 ← 行頭に#を付加して無効化
#DOMAIN=ufuso.dip.jp ← 行頭に#を付加して無効化
#DEFROUTE=yes ← 行頭に#を付加して無効化
#IPV4_FAILURE_FATAL=yes ← 行頭に#を付加して無効化
#IPV6INIT=no ← 行頭に#を付加して無効化
#NAME="System eth0" ← 行頭に#を付加して無効化
#DNS2=192.168.24.1 ← 行頭に#を付加して無効化


[root@ufuso network-scripts]# reboot ← コンピュータを再起動

[root@ufuso ~]# ifconfig  ← br0がIPアドレスを取得できているか確認
br0: flags=4163  mtu 1500
        inet 192.168.24.240  netmask 255.255.255.0  broadcast 192.168.24.255
 ← 取得できている
        inet6 fe80::92e6:baff:fec9:deb3  prefixlen 64  scopeid 0x20
        inet6 240f:ce:c998:1:92e6:baff:fec9:deb3  prefixlen 64  scopeid 0x0
        ether 90:e6:ba:c9:de:b3  txqueuelen 0  (Ethernet)
        RX packets 287697  bytes 55717920 (53.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 259402  bytes 51994275 (49.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163  mtu 1500
        ether 90:e6:ba:c9:de:b3  txqueuelen 1000  (Ethernet)
        RX packets 445700  bytes 150533593 (143.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 354055  bytes 65092303 (62.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s6: flags=4099  mtu 1500
        ether 00:22:cf:22:f1:16  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 0  (Local Loopback)
        RX packets 334302  bytes 161351533 (153.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 334302  bytes 161351533 (153.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:92:a9:97  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 144 (144.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(4)SELinuxの停止(外付けUSBハードディスクにWindows7のイメージファイルを置いて、それからインストールするため)

[root@ufuso ~]# setenforce 0 ← SELinuxを停止(0)。開始は1。停止しないとイン
ストールできない

[root@ufuso ~]# getenforce ← SELinuxの状態確認
Permissive ← 監視はしているが無効状態にあることを確認

(5)KVMを起動してWindows 7 Pro をInstall
A.赤枠1の「アプリケーション」をクリックして、表示される一覧から赤枠2の「システムツール」をクリックし、さらに表示される一覧から赤枠3の「仮想マシンマネージャー」をクリック
kvm01
B.この画面が表示される場合には、赤枠1にユーザーパスワードを入力して、赤枠2の「認証」をクリック
kvm02
C.赤枠1に適当に仮想マシン名を入力し、赤枠2の「ローカルインストールメディア」にチェックを入れ、赤枠3の「進む」をクリック
kvm03
D.isoイメージしか使えないので、赤枠1の「参照」をクリックしてisoイメージを指定し、赤枠2でOSの種類とバージョンを選んで、赤枠3の「進む」をクリック
kvm05
E.具体的には、上記赤枠1の「参照」をクリックして、表示される下図の赤枠1「GSP・・・.iso」をクリックし、赤枠2の「開く」をクリックして、上図赤枠2の作業に移る
kvm12
F.赤枠1に割り当てるメモリーとCPUの量を入力。OSによって必要なメモリー量が異なるので確認のこと。Windows7の32bit版は1024MB(1GB)
kvm08
G.赤枠1に割り当てるハードディスクの容量を入力して、「今すぐディスク全体を割り当てる」のチェックを外し、赤枠2の「進む」をクリック。OSによって必要な容量が異なるので確認のこと。Windows7の32bit版は16GB以上
kvm09
H.空き容量が足りませんと出る場合には、赤枠の「OK」をクリックして空き容量まで減にする
kvm10
I.赤枠1の「詳細なオプション」をクリックし、表示される一覧から赤枠2の「ホストデバイス」がbr0になっていることを確認して、赤枠3の「完了」をクリック。Windows 7 のインストールが始まるので、画面の指示にしたがって進める。詳細な手順についてはこちらを参照のこと
kvm11
J.インストール途中の再起動ができない場合には、赤枠をクリックすれば再起動が始まる。他は通常のWindows7のインストールと変わらない
kvm14

(6)SELinuxの設定と再稼働

[root@ufuso ~]# setsebool -P virt_use_fusefs 1 ←仮想化したWindows7が外付けUSB
ハードディスクを使えるようにする


[root@ufuso ~]# setenforce 1 ← SELinuxを開始

[root@ufuso ~]# getenforce ← SELinuxの状態確認
Enforcing ← 有効状態にあることを確認

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください