ユーザ用ツール

サイト用ツール


linux:kvm

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
linux:kvm [2020/11/26 12:59] Wiki Editorlinux:kvm [2022/01/06 10:40] (現在) – [ゲストOSの設定] Wiki Editor
行 64: 行 64:
  
   # 「macvtap0」という名前でmacvtapデバイスを作成し、物理NICの「enp8s0f0」に接続   # 「macvtap0」という名前でmacvtapデバイスを作成し、物理NICの「enp8s0f0」に接続
-  # modeはbridgeとする。1つのVMで1つのNICを使うので今回は何でもよい+  # modeはpassthruとする。1つのVMで1つのNICを使うので今回は何でもよい
   # 複数VMが物理NICを共有する形で構成される場合、modeによってVM同士の通信の仕方が変わる。   # 複数VMが物理NICを共有する形で構成される場合、modeによってVM同士の通信の仕方が変わる。
-  ip link add link enp8s0f0 name macvtap0 type macvtap mode bridge+  ip link add link enp8s0f0 name macvtap0 type macvtap mode passthru
   # 作成したインタフェースを起動   # 作成したインタフェースを起動
   ip link set macvtap0 up   ip link set macvtap0 up
行 164: 行 164:
     -drive file=exam_vm_raw.img,driver=raw,if=virtio,index=0,media=disk,cache=writeback \     -drive file=exam_vm_raw.img,driver=raw,if=virtio,index=0,media=disk,cache=writeback \
     -boot c \     -boot c \
-    -netdev tap,id=net0,ifname=tap0,vhost=on,script=no,downscript=no -device virtio-net,netdev=net0,mac=52:54:00:87:92:31 \ +    -netdev tap,id=net0,ifname=tap0,vhost=on,script=no,downscript=no 
-    -netdev tap,id=net1,ifname=tap_local0,vhost=on,script=no,downscript=no -device virtio-net,netdev=net1,mac=52:54:00:87:92:32 \ +    -device virtio-net,netdev=net0,mac=52:54:00:87:92:31 \ 
-    -monitor unix:/home/kvm-admin/monitor_socket/exam_vm.sock,server,nowait \+    -netdev tap,id=net1,ifname=tap_local0,vhost=on,script=no,downscript=no 
 +    -device virtio-net,netdev=net1,mac=52:54:00:87:92:32 \ 
 +    -monitor unix:/home/kvm-admin/socket/monitor.sock,server,nowait \ 
 +    -serial unix:/home/kvm-admin/socket/console.sock,server,nowait \
     -display none \     -display none \
     -daemonize \     -daemonize \
行 205: 行 208:
     * 上記コマンドにパイプでモニタコマンドを与えてやると直接モニタを操作できる。例えば「echo "system_powerdown" |socat - UNIX-CONNECT:/foo/bar/vm01.sock」とすれば、仮想マシンに電源ボタンを押下したことを伝達できる。仮想マシン上のカーネルで電源ボタンの押下を検知できるようにし、acpidなどを設定しておくとHostから手軽にシャットダウンできる。     * 上記コマンドにパイプでモニタコマンドを与えてやると直接モニタを操作できる。例えば「echo "system_powerdown" |socat - UNIX-CONNECT:/foo/bar/vm01.sock」とすれば、仮想マシンに電源ボタンを押下したことを伝達できる。仮想マシン上のカーネルで電源ボタンの押下を検知できるようにし、acpidなどを設定しておくとHostから手軽にシャットダウンできる。
     * telnetの場合は「-monitor telnet:127.0.0.1:10100,server,nowait」。10100番ポートにtelnetするとモニタにアクセスできる。     * telnetの場合は「-monitor telnet:127.0.0.1:10100,server,nowait」。10100番ポートにtelnetするとモニタにアクセスできる。
 +  * -serial unix:/foo/var/console.sock,server,nowait
 +    * LinuxやGrubのコンソールを出すためのシリアルポートを仮想マシン上に作成し、その出力をUNIXドメインソケットとして/foo/var/console.sockに接続する。シリアルコンソールに関する他の設定は後述。
   * -display none   * -display none
     * 本番でサーバ運用の場合はディスプレイは不要なのでnone。     * 本番でサーバ運用の場合はディスプレイは不要なのでnone。
行 249: 行 254:
        [*]   PC-style 'CMOS'        [*]   PC-style 'CMOS'
  
-      +=== シリアルポートにコンソールを出力 === 
 + 
 +カーネルにシリアルポートのドライバ等を組み込む。「Console on 8250/16550 and compatible serial port」を有効にしないと、起動からログインプロンプトまでのカーネルメッセージや起動メッセージが表示できないので注意。PNPサポートは、どちらでもよい気がする。 
 + 
 +  Device Drivers  ---> 
 +    Character devices  ---> 
 +      Serial drivers  ---> 
 +      Serial drivers  ---> 
 +        [*] 8250/16550 and compatible serial support 
 +        [ ]   Support 8250_core.* kernel options (DEPRECATED) 
 +        [*]   8250/16550 PNP device support 
 +        [ ]   Support for variants of the 16550A serial port 
 +        [ ]   Support for Fintek F81216A LPC to 4 UART RS485 API 
 +        [*]   Console on 8250/16550 and compatible serial port 
 + 
 +起動オプションの変更とGrub自体の出力先をコンソールにも出すようにする。 
 +/etc/default/grubを以下のように編集し、grub-mkconfigで反映する。 
 +   
 +  # カーネルの「console」コマンドラインオプションを追加し、tty0とttyS0(シリアルポート)の両方に 
 +  # コンソールメッセージを出力するようにする 
 +  GRUB_CMDLINE_LINUX_DEFAULT="rootfstype=ext4 zswap.enabled=1 zswap.zpool=zbud zswap.compressor=lz4 console=tty0 console=ttyS0,115200n" 
 +   
 +  # Grub自体の出力もconsoleとシリアルポートの両方に出すようにする 
 +  GRUB_TERMINAL="console serial" 
 +  # 上記パラメータにserialを追加すると以下がないと警告が出る 
 +  # シリアルポートの設定 
 +  GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" 
 + 
 + 
 + 
 +起動後の仮想コンソール(シリアルコンソール)をシリアルポートに出力する。 
 + 
 +この設定がなければ、起動時のカーネルメッセージや起動メッセージはシリアルコンソールに表示されるが、起動してからのログインプロンプトがシリアルポートに出ないので、シリアルコンソールには何も見えなくなる。 
 + 
 +/etc/inittab 
 +  # シリアルコンソールをttyS0に 
 +  s0:12345:respawn:/sbin/agetty -L 115200 ttyS0 vt100 
 + 
 +socatコマンドでUNIXドメインソケット経由で仮想マシンのシリアルコンソールに接続 
 +  # escape=0x11でCtrl+qをエスケープシーケンスに指定する。socat自体を終了させる際のシーケンス 
 +  socat stdin,raw,echo=0,escape=0x11 unix-connect:console.sock  
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
  
linux/kvm.1606363147.txt.bz2 · 最終更新: 2020/11/26 12:59 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki