ArchLinuxにKVMを入れて、なおかつssh接続しようと考えてbridge接続に挑戦した。
そもそもKVM自体も初めてだったこともあって、相当苦労したが、なんとかやり方がわかった。
準備
libvirtほか必要パッケージのインストール
host# pacman -S libvirt qemu-headless ebtables dnsmasq virt-install
NetWorkManagerを入れてる場合はdnsmasqはいらない(動かない)。
起動と自動起動設定
host# systemctl start libvirtd
host# systemctl enable libvirtd
host# systemctl start ebtables
host# systemctl enable ebtables
host# #必要に応じて
host# systemctl start dnsmasq
host# systemcrl enable dnsmasq
isoのインストール(ホームディレクトリ下に入れとくとパーミッションエラーが出てしまうので移動)
host# wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
host# mv debian-9.4.0-amd64-netinst.iso /var/local
ネットワーク設定。ブリッジを使うようにする
# virsh net-edit default
<network>
<name>default</name>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<ip address='10.10.120.1' netmask='255.255.255.0'>
<dhcp>
<range start='10.10.120.3' end='10.10.120.254'/>
</dhcp>
</ip>
</network>
ネットワーク再起動
host# virsh net-destroy default && virsh net-start default
インストール
host# sudo virt-install \
--name debian-kvm \
--connect qemu:///system \
--memory 2048 \
--vcpus 1 \
--cpu host \
--disk size=4,format=qcow2 \
--network bridge=virbr0 \
--location /var/local/debian-9.4.0-amd64-netinst.iso \
--nographics \
--virt-type=kvm \
--extra-args=console=ttyS0,115200n8 \
--os-type=linux \
--os-variant=debian9
インストール画面が現れたら、順番に進めていく。
GRUBを入れなかったらどうやってもシリアルコンソールに繋げなくて詰んだので、GRUBも入れる。
Select a language: English Select your location: other -> Asia -> Japan Configure locates: en_US.UTF-8 Configure the keyboard: 自分のキーマップ(JIS:Japanese か US:AmericanEnglish) Configure the network: ssh用のドメイン名を2回入力(1回目はhostname、2回目はドメイン。同じ名前にする) Set up users and passwords: 決める Partition disk: Guided - use entire disk Virtual disk 1 (vda) - 4.3 GB Virtio Block Device All files in one partition (recommended for new users) Finish partitioning and write changes to disk Write the changes to disks?: Yes Scan another CD or DVD?: No Configure the package manager: Japan -> ftp.jp.debian.org HTTP proxy information: 空 Participate in the package usage survey?: No Software Selection: SSH server, standard system utilities, (web server, 必要なら) Install the GRUB boot loader on a hard disk: Yes Device for boot loader installation: /dev/vda
ここでインストールが終わっても<Continue>を押さずにCtrl-a
を押して2
を押す(Screen移動)
Macアドレス記憶
guest# ip a
loでない方(手元ではens2だった)のlink/etherのmacアドレスを控える
シリアルコンソール接続
guest# chroot target bash
guest# cd boot/grub
guest# chmod +w grub.cfg
guest# vi grub.cfg
viを開いたら:%s/quiet/quiet console='ttyS0'/gc
、確認メッセージでa
を打って:wq
guest# chmod -w grub.cfg
Ctrl-a, 1
でインストール画面に戻りContinueを選んで再起動
一度rootログインして
guest# poweroff
固定IP設定
host# virsh net-destroy default
host# virsh net-edit default
!!!
の行を追加
<network>
<name>default</name>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<ip address='10.10.120.1' netmask='255.255.255.0'>
<dhcp>
<range start='10.10.120.3' end='10.10.120.254'/>
!!! <host mac='xx:xx:xx:xx:xx:xx(仮想マシンのmacアドレス)' name='debian' ip='10.10.120.2'/>
</dhcp>
</ip>
</network>
ネットワーク再起動
host# virsh net-destroy default && virsh net-start default
ゲストOS再起動・IP確認
host# virsh start debian-kvm --console
rootログイン
guest# ip a
ここで固定IP(10.10.120.2)が取得できていればOK
うまく行かなかったら
ホストごと再起動したり、
host# systemctl restart ebtables
host# systemctl restart dnsmasq
host# systemctl restert libvirtd
host# virsh net-start default
host# virsh start debian-kvm --console
したりしてたらなおった。
自動起動設定
host# virsh autostart debian-kvm
host# virsh net-autostart default
SSH接続
host# ssh 10.10.120.2
課題
ネットワーク設定のところでname='debian'
としたが、ssh debian
では入れなかった。
hostsいじるのでもいいんだけど、なんとかlibvirt側でできないかなぁ
後日談
あれこれ再起動しないと反映されなかった問題。
virsh net-edit
しなくてもコマンド1つで編集できるらしい。
host# virsh net-update default add ip-dhcp-host \
"<host mac='xx:xx:xx:xx:xx:xx' name='debian' ip='10.10.120.2' />" \
--live --config
参考:https://wiki.libvirt.org/page/Networking#virsh_net-update
もしくはvirsh net-destroy
とvirsh net-start default
の間に
host# rm -rf /var/lib/libvirt/dnsmasq/default.leases
でDHCPリースのキャッシュを削除するといいらしい。
参考:http://momijiame.tumblr.com/post/84423976326/libvirtkvm-%E3%81%A7-vm-%E3%81%AB%E9%9D%99%E7%9A%84%E3%81%AA-ip-%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E9%85%8D%E5%B8%83%E3%81%99%E3%82%8B