ぼっちじゃないよ? – オレオレアドベントカレンダー24日目

一人ぼっちは寂しいよね

一応、家族がいるのでぼっちじゃないよ?
などといいつつ、ぼっちは寂しいのでK8sノードを増やしてたのですが、Hyper-Vでubuntuを量産したけど、イロイロめんどくさかったので手順化しました。
いや、VagrantでHyper-V使えば良いんじゃ?とか正論を言われると、辛いのでやめてください。

Hyper-Vの簡単インストールは簡単でいいよね

まあそう思ってた時期もありました。Ubuntu18.04.1 が簡単に入るけど、IPアドレスはDHCPだし、仮想ディスクが10GBでデスクトップ環境入っててパンパンなのでちょっと困る。
なので、ディスクを増やして固定IPアドレスにする方法をまとめてみました。
なお、その後でHyper-Vコピーしたほうが早いと気づきましたが、作ってしまったものはしょうがないので晒します。

HDDの拡張

一旦Hyper-VのVMをシャットダウンします。チェックポイントがあったら削除します。

その後、仮想ディスクの編集ウィザードを開いて、仮想ハードディスクを選択し、拡張を選択します。

ディスクサイズを増やして完了します。(増やしたあとに撮り直したのは見なかったことにしてください)

さて、ここでOSを起動したら、gdiskの出番です。
/etc/fstab を見て、LABEL名を確認しましょう。

$ cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
LABEL=desktop-rootfs  /       ext4    errors=remount-ro   0   1
#/swapfile      none    swap    sw      0       0
LABEL=UEFI      /boot/efi       vfat    defaults        0 0

/dev/sda を選んで、gdiskを起動します。まず、現状を確認しましょう。パーティション1がrootになります。

$ sudo gdisk /dev/sda

Command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 23060446
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328        23060446   10.9 GiB    8300
  14            2048           10239   4.0 MiB     EF02
  15           10240          227327   106.0 MiB   EF00

「o」と打って、新しいMBRを作成します。


Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

「n」でパーティションを作り直します。パーティション的に先頭の14から作っていくと楽です。14と15は同じサイズをコピペして、1だけ最後にリターンを押して残った領域をすべて使い切りましょう。

Command (? for help): n
Partition number (1-128, default 1): 14
First sector (34-62914526, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-62914526, default = 62914526) or {+-}size{KMGTP}: 10239
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF02
Changed type of partition to 'BIOS boot partition'

Command (? for help): n
Partition number (1-128, default 1): 15
First sector (34-62914526, default = 10240) or {+-}size{KMGTP}:
Last sector (10240-62914526, default = 62914526) or {+-}size{KMGTP}: 227327
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'

Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-62914526, default = 227328) or {+-}size{KMGTP}:
Last sector (227328-62914526, default = 62914526) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

次に「c」でディスクラベルを作成します。fstabで指定してあるものを設定しましょう。ここで「p」を打って確認しておきます。

Command (? for help): c
Partition number (1-15): 1
Enter name: desktop-rootfs

Command (? for help): c
Partition number (1-15): 15
Enter name: UEFI

Command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 1A677044-C807-4C7F-AA71-9B91D4CF1A63
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328        62914526   29.9 GiB    8300  desktop-rootfs
  14            2048           10239   4.0 MiB     EF02  BIOS boot partition
  15           10240          227327   106.0 MiB   EF00  UEFI

拡張コマンドで、GUIDを変更前と一緒のものにします。「x」と打つと拡張コマンドになり、「g」でGUIDを設定します。
最後に「p」でGUIDと各パーティションを確認して、「w」で書き込みましょう。


Command (? for help): x

Expert command (? for help): g
Enter the disk's unique GUID ('R' to randomize): CE961B45-325A-44A8-B90A-86F24E7CD05D
The new disk GUID is CE961B45-325A-44A8-B90A-86F24E7CD05D

Expert command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328        62914526   29.9 GiB    8300  desktop-rootfs
  14            2048           10239   4.0 MiB     EF02  BIOS boot partition
  15           10240          227327   106.0 MiB   EF00  UEFI

Expert command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

はい、書き込まれてますね。

$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328        62914526   29.9 GiB    8300  desktop-rootfs
  14            2048           10239   4.0 MiB     EF02  BIOS boot partition
  15           10240          227327   106.0 MiB   EF00  UEFI

この後「sudo partprobe /dev/sda」と打って、OS上のパーティション情報を更新し、「resize2fs -f /dev/sda1」でext4のパーティションを拡張して終了です。
ね、簡単でしょ?
※なお、この手順でやるとディスクが壊れるかもしれないけど、仮想マシンだから作り直せばいいし関係ないよね?xfsにフォーマットし直さなかっただけ良しとしよう。というか、なんでxfsじゃないんですかね?

IPアドレスの固定

NetworkManager はなんかめんどくさかった手順がわからなかったので、netplanで何とかします。
/etc/netplan/01-network-manager-all.yaml を以下のように変更します。
IPv4は固定IPアドレスで、IPv6はDHCPです。MTUは9198と大きくしてます。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: yes
      addresses: [IPアドレス/24]
      gateway4: Gateway
      nameservers:
        addresses: [DNS IPアドレス]
      mtu: 9198

この後、「sudo netplan apply 」とコマンドを打って、上記のnetplanの設定を有効にします。
この後、/etc/systemd/resolv.conf で、DNS行とDomain行を適宜編集して、「sudo systemctl restart systemd-resolved」でresolverを再起動しましょう。

この後めちゃくちゃデプロイした

まあ、ここまでまとめて、Hyper-Vの機能でコピーしたほうが早いと気づいたんですが、explolerでコピーするとダメで、停止してからHyper-Vのディスク編集ウィザードで別ディスクにコピーしないとダメだそうです。
テンプレ用の仮想ディスクを用意して、デプロイはそのディスクからコピーして終わりです。コピー元はIPv4をDHCPにして、あとはコメントアウトしておくと楽です。 あと、コピーするときはDockerはともかく、kubeadm joinしたあとの状態でコピーすると大変だという気付きを得ました(やった)。
まあ、Vagrantでやったほうが楽じゃねと、この記事書き始めて気づいたけど、VagrantでHyper-Vでハマるより良いよね、きっと。と自分を慰めます。

Follow me!

Leave a Reply