CentOS7でKVM(仮想化)ホストを作る

※現在は微熱nucから平熱mini-ITx へ移行。ネット系の設定を大幅に簡素化。

  1. CentOS7( CentOS-7-x86_64-DVD-1503-01.iso )をダウンロード。
  2. Win32DiskImagerでUSBメモリに書き込む。
  3. nucにUSBメモリを挿し電源ON、【F2】でUEFIを呼び出しUSBメモリから起動。
  4. ブート画面でInstall CentOS 7を選択。
  5. インストーラー画面での設定
    1. WELCOM TO CENTOS7 画面
      1. 左のリストから【日本語】を選択。 ※スライダーが中央にくるあたり。
      2. 【続行】ボタンを押す。
    2. ネットワークとホスト名を選択。
      1. 画面右上のオフ⇒オン
      2. ハードウェアアドレスをメモる。
      3. eno1 ※nucの有線LANのインタフェース名、CentOS6までのeth0だった
        1. 表示されたIP(192.168.*.*)をメモる。
        2. 全般:この接続が利用可能になった時に自動的に接続するにチェック。
        3. IPv6のセッティング:方式 無視を選択
      4. wlp2s0 ※無線LANのインタフェース名、CentOS6までのwlan0だった
        1. ネットワーク名は未入力。
        2. ▼を押し無線ルータSSIDを選択しパス入力、接続できればIPアドレスが表示される
        3. 表示されたIP(192.168.*.*)をメモる。
        4. IPv6のセッティング:方式 無視を選択
      5. 【保存】ボタンを押す。
      6. 画面左下:local.host.local になっているホスト名を正しい名前に変える。
      7. 【完了】を押す。
    3. ソフトウェア の インストールソース に【!】が付いていたら、選択。
      1. http://の後に ftp.riken.jp/Linux/centos/7/os/x86_64/ と入力し【完了】
      2. 入力が正しければ先の【!】にURLが表記。
    4.  システム の インストール先に【!】が付いていたら、選択。
      1. HDDの絵に【!】を付け、空容量が十分なら、画面左上の【完了】を押す。
      2. 空容量は足りないが、HDDを全部書き換えていいのなら
        1. 【領域を確保する(R)】ボタンを押す。
        2. 【すべて削除】ボタンを押し、アクションの列が保存から削除に変わったのを確認。
        3. 【領域を確保する(R)】ボタンを押す。
        4. ●パーテーション構成を行いたい を選択し、【完了】を押す。
        5. 既存LMの名前を選択し「-」を押し、一旦パーテーションを全消。
        6. 自動のリンクを押し、パーテーションを作り直し。
    5. ソフトウェアの選択が 未選択なら、選択。
      1. 最小構成にチェックが入っていることを確認し、【完了】を押す。
    6. KDUMPが 無効 になっていたら、選択。
      1. 手動を選択し、【完了】を押す。
    7. 【インストールを開始】を押す。
    8. インスト中に
      1. rootのパスワードを設定  安易なパスワードの場合は【完了】ボタンを2度押して抜ける。
      2. ユーザを作成        システムのメールを受け取るユーザを作っておく。
    9. ・・・インスト・・・
    10. 【再起動】ボタンを押し、その前にUSBメモリは外す。
  6. yumリポジトリィを更新
    1. # yum -y update
  7. yum-cronをインスト
    1. # yum -y install yum-cron
    2. # systemctl start yum-cron
    3. # systemctl enable yum-cron
  8. SeLinuxを外す
    1. # setenforce 0
    2. # getenforce
      • Permissive
    3. # sudo sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
      • /etc/sysconfig/selinuxのリンク先/etc/selinux/configを修正する。
    4. # reboot
    5. # getenforce
      • Disabled になっていないなら上の3.のコマンドを見直すこと。
  9. 開発ツールなどをまとめてインスト
    1. # yum -y groupinstall base “開発ツール”
      • パッケージ:222個
  10. nkfをインスト
    1. # cd
    2. # wget “http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz” -O nkf-2.1.3.tar.gz
      • # wget “https://ja.osdn.net/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz” -O nkf-2.1.4.tar.gz
    3. # tar zxvf nkf-2.1.3.tar.gz
      • # tar zxvf nkf-2.1.4.tar.gz
    4. # cd nkf-2.1.3
      1. # cd nkf-2.1.4
    5. # make && make install
      • mkdir: ディレクトリ `/usr/local/bin’ を作成できません: ファイルが存在します は見なかったことにする
    6. # cd
    7. # rm -rf nkf*
    8. # ln -s /usr/local/bin/nkf /usr/bin/nkf
  11. rootのメールを転送
    1. # echo “root: ******” >> /etc/aliases
    2. # newaliases
    3. # echo “aliases test” | mail root
  12. ブリッジ接続用のファイルを作成 ※参考程度環境依存高め(起動時にFAIL発生)
    • # vi /etc/sysconfig/network-scripts/ifcfg-br0 ※新規に作成する
    • 当初の設定(DHCPでやってみた)
      • DEVICE=br0
        TYPE=Bridge
        BOOTPROTO=dhcp
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=no
        IPV6INIT=no
        ONBOOT=yes
        PEERDNS=yes
        PEERROUTES=yes
    • 現在の設定(DHCPを諦めた)
      • DEVICE=br0
        TYPE=Bridge
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=no
        IPV6INIT=no
        ONBOOT=yes
        PEERDNS=yes
        PEERROUTES=yes
        NM_CONTROLLED=no
        DELAY=0
        BOOTPROTO=static
        IPADDR=*.*.*.* *1
        NETMASK=255.255.255.0
        GATEWAY=*.*.*.* *2
        DNS1=*.*.*.* *2
      • *1 *2 大抵はルータのIPアドレス。192.168.1.1であることが多い。
      • *2   *1    ルータがDHCPで割り当てたものをそのまま流用。
  13. eno1をブリッジ接続に変える ※参考程度環境依存高め
    • vi /etc/sysconfig/network-scripts/ifcfg-eno1 *3 既存のものを修正
    • 当初の設定(DHCPでやってみた)
      • DEVICE=eno1 *3
        TYPE=Ethernet
        ONBOOT=yes
        BRIDGE=br0
    • 現在の設定(DHCPを諦めた)
      • DEVICE=eno1 *3
        TYPE=Ethernet
        ONBOOT=yes
        BRIDGE=br0
        HWADDR=*:*:*:*:*:* *4
        BOOTPROTO=none
        NM_CONTROLLED=no
      • *3 ip a で表示されたネットデバイス名を設定する。2番目の eno1 や enp3s0。
      • *4 ip aコマンドで、br0のlink/etherに表示されたものを設定。
  14. NetworkManagerは ブリッジ接続に対応していないようなので外す
    1. # systemctl stop NetworkManager
    2. # systemctl disable NetworkManager
    3. # systemctl restart network
      • Job for network.service failed. See ‘systemctl status network.service’ and ‘journalctl -xn’ for details.
      • ここでハングアップ※何か変!(未解決)
    4. # reboot
    5. 電源ボタンでリブート。
    6. とりあえず、/etc/sysconfig/network-scriptsで、おまじない。 ifup br0  とか ifup   *3のデバイス名
  15. なかなかつながらないのでコンソールからログインするとTeraTermからログインできた ※何か変!(未解決)
    1. # systemctl -l status network で確認するとまだ問題が残っているかもしれない。
      • [root@slanirish ~]# systemctl -l status network
        ● network.service – LSB: Bring up/down networking
        Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
        Active: active (running) since 水 2018-08-01 00:52:18 JST; 4min 21s ago
        Docs: man:systemd-sysv-generator(8)
        Process: 757 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
        CGroup: /system.slice/network.service
        mq1089 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-acfc891e-d71c-4bb6-a394-b9ea39267c87-enp3s0.lease -pf /var/run/dhclient-enp3s0.pid -H slanirish enp3s08月 01 00:52:08 slanirish.warlander.local network[757]: ループバックインターフェイスを呼び込み中 [ OK ]
        8月 01 00:52:08 slanirish.warlander.local network[757]: インターフェース enp3s0 を活性化中: [ OK ]
        8月 01 00:52:08 slanirish.warlander.local network[757]: インターフェース enp3s0.org を活性化中:
        8月 01 00:52:11 slanirish.warlander.local dhclient[1036]: DHCPREQUEST on enp3s0 to 255.255.255.255 port 67 (xid=0x374e4cd8)
        8月 01 00:52:11 slanirish.warlander.local dhclient[1036]: DHCPACK from 192.168.1.1 (xid=0x374e4cd8)
        8月 01 00:52:13 slanirish.warlander.local dhclient[1036]: bound to 192.168.1.11 — renewal in 6231 seconds.
        8月 01 00:52:13 slanirish.warlander.local network[757]: enp3s0 のIP情報を検出中… 完了。
        8月 01 00:52:14 slanirish.warlander.local network[757]: [ OK ]
        8月 01 00:52:18 slanirish.warlander.local network[757]: インターフェース br0 を活性化中: [ OK ]
        8月 01 00:52:18 slanirish.warlander.local systemd[1]: Started LSB: Bring up/down networking.
    2. IPアドレスを確認
      1. # ip addr
        • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
        • link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        • inet 127.0.0.1/8 scope host lo
        • valid_lft forever preferred_lft forever
        • inet6 ::1/128 scope host
        • valid_lft forever preferred_lft forever
        • 2: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • 3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • inet6 fe80::**:**:**:**/64 scope link
        • valid_lft forever preferred_lft forever
        • 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • inet 192.168.*.*/24 brd 192.168.*.255 scope global dynamic br0
        • valid_lft 14317sec preferred_lft 14317sec
        • inet6 **:**:**:**:**:**:**:**/64 scope global dynamic
        • valid_lft 14318sec preferred_lft 12518sec
        • inet6 **:**:**:**:**/64 scope link
        • valid_lft forever preferred_lft forever
  16. 仮想化パッケージ一式 インスト
    • # yum -y groupinstall “Virtualization” “Virtualization Client” “Virtualization Platform” “Virtualization Tools”
      • パッケージ:221個
    • # yum -y install ‘*guestf*’
      • パッケージ:54個
  17. 仮想化ゲスト用に設定
    1. # cd /etc/sysconfig
    2. # vi libvirt-guests
      • ON_SHUTDOWN=shutdown
        • #ON_SHUTDOWN=suspend を有効化すると、DBなどファイルが壊れやすいみたいだ。
      • SHUTDOWN_TIMEOUT=300
      • を設定し、サービスを再起動
    3. # systemctl start libvirtd
    4. # systemctl enable libvirtd
  18. 仮想化ゲストのインスト時にQEMUからSPICEがTLSが未設定とか言い出す場合は、専用に電子証明書を作成(現在は動作不安定というか繋がらない)
    1. # cd
    2. 手打ちミス不可なのでスクリプトを作成
    3. # vi create_for_qemu_cr.sh
      • # 元ネタ http://www.spice-space.org/page/SSLConnection
      • #!/bin/bash
      • PASS_PHRASE=**電子署名のパスフレーズ**
      • echo “Enter pass phrase for ca-key.pem=> ${PASS_PHRASE}”
      • SERVER_KEY=server-key.pem
      • COUNTRY=**国(JP etc.)**
      • LOCALITY_NAME=**市町村名**
      • ORGANIZATION_NAME=**ドメイン名**
      • COMMON_NAME=**マシン名**
      • # creating a key for our ca
      • if [ ! -e ca-key.pem ]; then
        • openssl genrsa -des3 -out ca-key.pem 1024
      • fi
      • # creating a ca
      • if [ ! -e ca-cert.pem ]; then
        • openssl req -new -x509 -days 1095 -key ca-key.pem -out ca-cert.pem -utf8 -subj “/C=${COUNTRY}/L=${LOCALITY_NAME}/O=${ORGANIZATION_NAME}/CN=${COMMON_NAME}”
      • fi
      • # create server key
      • if [ ! -e $SERVER_KEY ]; then
        • openssl genrsa -out ${SERVER_KEY} 1024
      • fi
      • # create a certificate signing request (csr)
      • if [ ! -e server-key.csr ]; then
        • openssl req -new -key ${SERVER_KEY} -out server-key.csr -utf8 -subj “/C=${COUNTRY}/L=${LOCALITY_NAME}/O=${ORGANIZATION_NAME}/CN=${COMMON_NAME}”
      • fi
      • # signing our server certificate with this ca
      • if [ ! -e server-cert.pem ]; then
        • openssl x509 -req -days 1095 -in server-key.csr -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
      • fi
    4. # sh ./create_for_qemu_cr.sh
      • ※パスフレーズを3回入力した後にもう1回入力するので注意!
    5. # mkdir /etc/pki/libvirt-spice
  19. 出来上がった電子証明書(*.pemのみ)を/etc/pki/libvirt-spiceへコピー
  20. qemuの設定(現在は動作不安定というか繋がらない)
    1. # vi /etc/libvirt/qemu.conf で以下をコメントを解除
      • spice_listen = “0.0.0.0”
      • spice_tls = 1
      • spice_tls_x509_cert_dir = “/etc/pki/libvirt-spice”
  21. KVMを再起動
    1. # systemctl restart libvirtd
  22. 仮想化ゲストを作成
  23. yum-prioritiesプラグイン導入
    1. # yum -y install yum-plugin-priorities
    2. # vi /etc/yum.repos.d/CentOS-Base.repo
      • enabled=1
      • を追記
  24. RPMforgeリポジトリ導入 ← 2016年7月20日頃から使用不可
    1. # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    2. # rpm -ivh rpmforge-release-*.rpm
    3. # rm -f rpmforge-release-*.rpm
    4. # yum -y update rpmforge-release
  25. EPELリポジトリ導入
    1. # yum install epel-release
    2. # cd /etc/yum.repos.d
    3. # ls
    4. # vi epel.repo
      • enabled=1 -> enabled=0
    5. # yum –enablerepo=epel list

SSLの設定はやりなおすとうまく動作しなくなる傾向にある。
※現在はSPICEで接続に失敗中。
下記をじっくり読んでやる気が起きたら、やり直す予定。
参考 http://www.asahi-net.or.jp/~aa4t-nngk/kvm4.html




コメントを残す

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

CAPTCHA