NVMeを意識して買ったわけじゃないので最初BIOSでストレージデバイスとして認識してないじゃん?とちょっと焦った。nvmeはBIOS的にもまた別のデバイスなのね。
Ubuntu16.04LTSのインストーラでインストールディスクを手動で選ぶことでnvmeデバイスにインストールできた。その後はBIOSでもブートデバイスとして選べるようになった。
2度目以降のインストールでは(もう何度もやってる・・)パーティションが作られているためえ普通にインストールメニューに出てくる。
kvmじゃなくて今回はXenをベースに組み立ててみる。VMストレージはイメージファルじゃなくて LVM で組んでいくことにする。そのため、最初のUbuntuインストールでは
ガイド付きLVMを構成する方を選ぶ。
そして大事なのが、dom0に相当するubuntu-rootには全部使うのではなく、32GB程度の小さめにして、残りをゲストマシンに空けておく。
空けるといってもLVM的な空容量であって物理的にはパーティショニングされている。
ディスク全体が1つのvgになっているので、あとはlvで消費していくだけ。
無事Ubuntuのインストールが終わったら、早速 ssh したところ以前のfootprintと異なっているため .ssh/known_hosts でワーニングが出る。エラーじゃなくワーニングなのはIPアドレスが同じでもホスト名が異なるため別物となるから。IPアドレスだと同じになってしまうので、/etc/hostsにホスト名を登録してホスト名アクセスすれば、ブートOSを変更するたびにイラっとしないで済む。
ワーニングを黙らせるには、.ssh/known_hostsに従来の方にはホスト名,IPアドレスとなって新しい方はIPアドレス記述がない。新しいホスト名,IPアドレス にしてやると次回からスムースに ssh できる。
xen環境は未経験なのと、その後試したいことがあるのでXenを構築する。
Xenインストール
$ sudo apt-get install xen-hypervisor-amd64
$ sudo reboot
Network設定
$ sudo apt-get install bridge-utils(多分すでに入っているはず)
/etc/network/interfacesの編集内容(物理Ethernetデバイス名が'eth0'だと仮定)
auto lo eth0 xenbr0
iface lo net loopback
iface xenbr0 net dhcp
bridge_ports eth0
iface eth0 inet manual
Network再起動
$ sudo ifdown eth0 && sudo ifup xenbr0 && sudo ifup eth0
以下のことをやっておくとパフォーマンスやセキュリティ的にいいらしい
$ sudo vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0設定
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
$ sudo sysctl -p /etc/sysctl.conf
VM作成
virt-builder: VMディスクイメージ作成ツール
xen-tools: PVゲスト作成ツール
virt-manager: libvirt使ってVMを作成管理するGUIツール(kvm/xenどちらでも)
など、いろいろあるけど、xen-toolsで作る
$ sudo apt install xen-tools
PV domU作成
PV:準仮想化という意味。
HVMというアプローチがあるが完全仮想化でWindowsを入れる場合とかに使う。
KVMと大して変わらないことになるので、ここはあえてPVで。
ホストOS(Dom0)インストール時に構築されているLVM上に論理ボリューム作成
ボリュームグループ確認。空容量とか確認。
$ sudo vgs
論理ボリューム作成
$ sudo lvcreate -L 10G -n gest-name /dev/<vgname>
論理ボリューム作成
$ sudo lvcreate -L 10G -n gest-name /dev/<vgname>
論理ボリューム確認
$ sudo lvs
Netbootインストーライメージのダウンロード
https://launchpad.net/ubuntu/+archivemirrors から適当なダウンロードサイトを選ぶ
Ubuntu-16.04LTSの場合 (Guestname: xenial)
$ sudo mkdir -p /var/lib/xen/images/netboot/xenial
Netbootインストーライメージのダウンロード
https://launchpad.net/ubuntu/+archivemirrors から適当なダウンロードサイトを選ぶ
Ubuntu-16.04LTSの場合 (Guestname: xenial)
$ sudo mkdir -p /var/lib/xen/images/netboot/xenial
$ cd /var/lib/xen/images/netboot/xenial
$ wget http://<mirror>/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/xen/vmlinuz
$ wget http://<mirror>/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/xen/initrd.gz
ゲストOS設定ファイル
ゲストOS設定ファイル
$ cd /etc/xen
$ cp xlexample.pvlinux xenial.cfg
$ vi xenial.cfg
# Guest name
name = "xenial"
# Kernel image to boot
kernel = "/var/lib/xen/images/netboot/xenial/vmlinuz"
# Ramdisk (optional)
ramdisk = "/var/lib/xen/images/netboot/xenial/initrd.gz"
#bootloader = "/usr/lib/xen-4.6/bin/pygrub"
# Kernel command line options
extra = 'root=/dev/xvda1 xen-fbfront.video=16,1024,768'
# Initial memory allocation (MB)
memory = 2048
name = "xenial"
# Kernel image to boot
kernel = "/var/lib/xen/images/netboot/xenial/vmlinuz"
# Ramdisk (optional)
ramdisk = "/var/lib/xen/images/netboot/xenial/initrd.gz"
#bootloader = "/usr/lib/xen-4.6/bin/pygrub"
# Kernel command line options
extra = 'root=/dev/xvda1 xen-fbfront.video=16,1024,768'
# Initial memory allocation (MB)
memory = 2048
# Number of VCPUS
vcpus = 2
# Network devices
vif = [ '' ]
# Disk Devices
disk = [ '/dev/xenbox-vg/xenial,raw,xvda,rw' ]
# vfb
#vfb = [ 'type=vnc,vncdisplay=1,vncpasswd=pass-word' ]
vfb = [ 'type=vnc' ]
stdvga=1
videoram=16
vcpus = 2
# Network devices
vif = [ '' ]
# Disk Devices
disk = [ '/dev/xenbox-vg/xenial,raw,xvda,rw' ]
# vfb
#vfb = [ 'type=vnc,vncdisplay=1,vncpasswd=pass-word' ]
vfb = [ 'type=vnc' ]
stdvga=1
videoram=16
VM起動
$ sudo xl create -c /etc/xen/ubud1.cfg
いつもの感じでUbuntuインストール
完了したら設定ファイルをpygrubブートローダに切り替え
$ vi /etc/xen/xenial.cfg
いつもの感じでUbuntuインストール
完了したら設定ファイルをpygrubブートローダに切り替え
$ vi /etc/xen/xenial.cfg
#kernel = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/vmlinuz"
#ramdisk = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/initrd.gz"
bootloader = "/usr/lib/xen-4.4/bin/pygrub"
特にgrubmenuとか必要なければ直接
kernel = "/vmlinuz" 特にgrubmenuとか必要なければ直接
ramdisk = "/initrd.img"
でもいいと思う。
VM再起動
$ sudo xl shutdown xenial
$ sudo xl create -c /etc/xen/xenial.cfg
VMコンソールに入る
$ sudo xl console xenial
コンソールから抜ける
Ctrl+]
VMコンソールに入る
$ sudo xl console xenial
コンソールから抜ける
Ctrl+]
ここまでは https://help.ubuntu.com/community/Xen に書いてある通り。
vfb設定だけ付け足した。vfbでvnc使う設定に。
xen-fbfront.video=16,1024,768 は、1024x768 16MBという意味。
クライアント側でssh-vncトンネル接続
$ ssh -l ubuntu -L 5901:localhost:5901 xenbox
turbovnc, tightvnc or chicken などで接続
接続できたものの、マウスカーソルの位置がズレズレ・・
$ vncviewer localhost:5901
接続できたものの、マウスカーソルの位置がズレズレ・・
ネットで調べたらなんと、xen-vncはデフォルトの800x600になっていて、今回のように
1024x768にディスプレイを拡張するとキャリブレーションがズレてしまうのだ。
素直に800x600で使うか、もしくは以下の方法でキャリブレーションする。
VMへひとまずVNCでログインして、
$ xinput
で仮想マウスデバイス名を確認。自分の場合デフォルトの"Xen Virtual Pointer"
で仮想マウスデバイス名を確認。自分の場合デフォルトの"Xen Virtual Pointer"
$ xinput list-props "Xen Virtual Pointer"
で、属性を確認。
Evdev Axis Calibration が設定されていない。なのでデフォの800x600になってしまう。
$ xinput set-prop "Xen Virtual Pointer" 'Evdev Axis Calibration' 0 1024 0 768
これでディスプレイにマッチするようキャリブレーションされる。
ログアウトするとまた元に戻ってしまうが、とりあえずこんなとこかな。
0 件のコメント:
コメントを投稿