Skip to content

CML2 上で VyOS を使う

VyOS を CML2 上で動作させる手順をメモしておきます。 作業は Rocky Linux8 上で行いました。

今回、作成した CML2 用 VyOS イメージ

今回作成した CML2 用 VyOS イメージは下記のうち、下側の vyos-1.3.0-rc4-cml2.qcow2 です。

ファイル名 SHA512
オリジナル版 vyos-1.3.0-rc4-qemu.qcow2 c287862fe69d86fd4a42b560a7833c04b76da217f8dffa7d7dbde7e52eba91cab006c1da1d8b06407eb67edb8ac4ea7b6e33ff6368af33657741cae3d0586617
CML2 版 vyos-1.3.0-rc4-cml2.qcow2 02890e3ae3e58ee7b243646f8ab337999bbe0db3a0b743782de336a49de7eb64ad6fe424409107edc3722495b04d7d664f717ed3cfd1e9bb0c9de7982fa1d217

qcow2 イメージのダウンロード

VyOS のダウンロードページ から vSphere 用の OVA ファイルはダウンロード出来ます。 ですが、少なくてもこのメモを記載している時点では KVM 用の .qcow2 イメージはダウンロード候補が無く、ダウンロードすることが出来ません。

file

その為、今回は VyOS monthly snapshots and release candidates から .qcow2 イメージをダウンロードします。

file

CLI からは以下のようにダウンロードします。

1
curl -LO https://s3.amazonaws.com/s3-us.vyos.io/snapshot/vyos-1.3.0-rc4/qemu/vyos-1.3.0-rc4-qemu.qcow2

qemu-img のインストール

今回の手順では qemu-nbd を利用します。 qemu-nbdqemu-img パッケージに含まれている為、qemu-img をインストールします。

1
dnf -y install qemu-img

grub.cfg の修正

前の手順でダウンロードした vyos-1.3.0-rc4-qemu.qcow2 をそのまま CML2 上で起動してもコンソールが表示されません。 デフォルトでカーネルオプションが console=tty0 になっている為、これを console=ttyS0 へ修正します。 設定ファイルを修正する為に VyOS の .qcow2 ファイルをマウントします。

1
2
3
modprobe nbd max_part=63
qemu-nbd --connect=/dev/nbd0 vyos-1.3.0-rc4-qemu.qcow2
mount /dev/nbd0p3 /mnt

上記では /dev/nbd0p3 としてマウントしていますが、これは fdisk でパーティション情報を確認すると Type が Linux filesystem になっているパーティションが /dev/nbd0p3 である為です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# fdisk -l /dev/nbd0
Disk /dev/nbd0: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5DC1084C-5CAB-4327-AA28-2B8A2D3B854E

Device       Start      End  Sectors  Size Type
/dev/nbd0p1     34     2047     2014 1007K BIOS boot
/dev/nbd0p2   2048   526335   524288  256M EFI System
/dev/nbd0p3 526336 20971486 20445151  9.8G Linux filesystem

カーネルオプションを定義している設定ファイルは /mnt/boot/grub/grub.cfg に存在します。 これを以下のように修正します (もしくは、そもそも console=ttyS0 に設定された VyOS 1.3.0-rc4 for QEMU (Serial console) というメニューエントリがある為、VyOS 1.3.0-rc4 for QEMU (KVM console) のメニューエントリを削除するだけでも良いと思われます)。


変更前

1
2
3
4
menuentry "VyOS 1.3.0-rc4 for QEMU (KVM console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=tty0
  initrd /boot/1.3.0-rc4/initrd.img
}

変更後

console=tty0console=ttyS0 へ修正します。

1
2
3
4
menuentry "VyOS 1.3.0-rc4 for QEMU (KVM console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=ttyS0
  initrd /boot/1.3.0-rc4/initrd.img
}

設定ファイルの修正作業が完了したらアンマウントします。

1
umount /mnt

このままでは「オリジナルの VyOS イメージ」と「修正後のイメージ」のファイル名が紛らわしい為、ファイル名を修正しておきます。

1
mv vyos-1.3.0-rc4-qemu.qcow2 vyos-1.3.0-rc4-cml2.qcow2

CML2 でのノード定義

CML2 でのノード定義は下記からダウンロード出来ます。

実際の内容は以下の通りです。 VyOS は Debian ベースである為、CML2 にデフォルトでインストールされている Ubuntu のノード定義をベースにしています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
id: vyos
sim:
  linux_native:
    driver: server
    libvirt_domain_driver: kvm
    disk_driver: virtio
    nic_driver: virtio
    ram: 1024
    cpus: 1
    data_volume: 0
    boot_disk_size: 64
inherited:
  image:
    ram: true
    cpus: true
    cpu_limit: true
    data_volume: true
    boot_disk_size: true
  node:
    ram: true
    cpus: true
    cpu_limit: true
    data_volume: true
    boot_disk_size: true
general:
  nature: router
  description: VyOS - Open source router and firewall platform
  read_only: true
schema_version: 0.0.1
configuration:
  generator:
    driver: ubuntu
  provisioning:
    volume_name: cidata
    media_type: iso
    files:
      - name: meta-data
        content: |-
          instance-id: ubuntu
          local-hostname: vyos
        editable: false
      - name: user-data
        content: |-
          #cloud-config
          hostname: vyos
        editable: true
device:
  interfaces:
    physical:
      - eth0
      - eth1
      - eth2
      - eth3
      - eth4
      - eth5
      - eth6
      - eth7
      - eth8
      - eth9
      - eth10
      - eth11
      - eth12
      - eth13
      - eth14
      - eth15
    loopback:
      - lo
    has_loopback_zero: true
    default_count: 4
    serial_ports: 1
boot:
  timeout: 180
  completed:
    - Welcome to VyOS
pyats:
  os: linux
ui:
  group: Others
  icon: router
  label: VyOS
  label_prefix: vyos-
  visible: true
  description: |-
    VyOS - Open source router and firewall platform

    1 GB DRAM, 1 vCPU (can be adjusted)

    Username: vyos
    Password: vyos

イメージの定義は以下の通りです。

ID Label Description Disk Image Node Definition
vyos-1.3.0-rc4 VyOS 1.3.0 RC4 VyOS 1.3.0 RC4 vyos-1.3.0-rc4-cml2.qcow2 VyOS

参考

vyos-1.3.0-rc4-qemu.qcow2 の /boot/grub/grub.cfg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
set default=0
set timeout=5
serial --unit=0
terminal_output --append serial
terminal_input serial console
insmod efi_gop
insmod efi_uga

menuentry "VyOS 1.3.0-rc4 for QEMU (KVM console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=tty0
  initrd /boot/1.3.0-rc4/initrd.img
}

menuentry "VyOS 1.3.0-rc4 for QEMU (Serial console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=ttyS0
  initrd /boot/1.3.0-rc4/initrd.img
}

menuentry "VyOS 1.3.0-rc4 for QEMU - password reset (KVM console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=tty0 init=/opt/vyatta/sbin/standalone_root_pw_reset
  initrd /boot/1.3.0-rc4/initrd.img
}

menuentry "VyOS 1.3.0-rc4 for QEMU - password reset (Serial console)" {
  linux /boot/1.3.0-rc4/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.0-rc4 console=ttyS0 init=/opt/vyatta/sbin/standalone_root_pw_reset
  initrd /boot/1.3.0-rc4/initrd.img
}