2025/01/16(木)年末年始の成果 --Windowsへの失望とサーバー仮想化--

年末年始は自宅のネットワーク・PCがらみの作業ばかりしていた気がします.
自作PC(最終的にOSはWindows 11 Pro)を1台組み,さらにLinuxサーバも複数台環境構築しました.

Windowsはパッケージ版を購入してインストールしたのですが,
何が何でもMicrosoftアカウントを使わせようとしてくる姿勢と余計なお世話に磨きが掛かっていて呆れと失望が大きかったです.

Linuxサーバは使用しているマシンが高性能化した関係で,ようやく仮想化を取り入れることにしました.
ホストOSをDebian 12として,その上に多数のゲストOSを構築する方針です.
14コア20スレッドのCPU,Intel Core i-5 13500に,メモリを64GB搭載したマシンへ,
さら2TBの高耐久SSDをゲストOS専用で積んだので,仮想マシン(ゲストOS)を同時に5台くらいは危なげもなく稼働できるのではないかと思います.

Windowsはどんどん使いづらくなっていくのに対して,Linuxは普通に使いやすくなっていくというのが何ともいえません…….
使っている市販のプログラムが全部Linux対応になれば良いのですが……….

自分用のメモも兼ねて,要点をまとめておきます.


1 自作PC(OS: Windows 11 Pro)

父の使っているPCが古くなってきたため,その更新用のマシンです.

1.1 性能やマザーボードの外観

スペックは以下のモノです.
CPU: Intel Core-i5 14500
CPUクーラー: PCCOOLER 130mmファン搭載 サイドフローCPUクーラー K4-BK
マザーボード: ASUS PRIME B760M-A WIFI D4
メモリ: 32GB(DDR4 3200 16GBx2)
チップセット: Intel B760
HDD: なし
SSD: KIOXIA EXCERIA PLUS G3 SSD-CK1.0N4PLG3N(容量1TBの廉価SSD) 
電源: Owltech Seasonic製 80PLUS Gold認証 FOCUS PLUS ATX電源 ブラック 650W SSR-650FX
CD drive: なし
OS: Debian GNU/Linux 12 Bookworm(ハードテスト用)→ Windows 11 Pro
ケース: 15年くらい前のTWO TOPのBTOケースを再利用
ケースや電源は在庫品の流用なので,新たな出費は10万円以下に抑えられました.
写真の画像処理が軽々こなせるスペックを目指したところ,割と性能は高くなりました.
ゲームはしないので3D性能は捨てています.


IMGP6880e1.JPG

HDDを使わず,M.2のSSDを起動ディスクに使える現在のPCはコンパクトに収まって良いですね.
震動源だったHDDを廃せるので,振動対策が不十分な古く安いPCケースでも静音になります!
その他のマザーボードの画像を展開する
IMGP6881e1.JPG

IMGP6882.JPG

IMGP6883.JPG


1.2 ハードが問題なく動作するかLinuxをインストールして確認する

ハードは年末に組み立てられたのですが,Windowsのパッケージ版が手元にありませんでした.
初期不良や季節柄静電気による破損もあるかもしれないので,Debian 12をインストールして問題なく動作するか確認しました.
結果は問題なし.Windowsでは必須のマザーボードやチップセットのドライバインストールの手間もなく,ストレスフリーでセットアップできました.
特にKDE Plasmaをデスクトップ環境にすれば,ほぼWindowsの見た目.
Windows要らないのでは……
S37MTW~0.PNG

KDE Plasmaのデスクトップ画面.
ちょっと日本語入力環境が不安ですが,KDEとGNOMEをセットアップ時にインストールしておけば多分問題は起きません.
このスクリーンショット中のメッセージも普通は無視して大丈夫です.


1.3 ローカルアカウントでWindows 11 Proをセットアップする

年が明けてから,ヨドバシカメラでパッケージ版Windowsを入手しました.
帰宅しすぐにセットアップ作業に着手しました.


Windows 11 ProのセットアップをMicrosoftアカウントを使わずに進める方法の例を表示する
標準の画面では,ネットワークに接続しないとインストールを進められない仕様になっています.

IMGP6908.JPG

ちなみに,ASUSのマザーボードのWifiをWindowsのインストーラーは認識しないらしく,以下の方法を知らないと環境によっては恐らく完全に詰みます.

打破するには,詰みかけた画面でShift + F10キーを押します.コマンドプロンプトが起動するので,ここで,
oobe\ByPassNRO.cmd
と入力します.
IMGP6910.JPG

(この画面では入力ミスを一回しています.)
インストーラーが再起動するので,同じ画面まで進めます.
IMGP6914.JPG

ようやく,ローカルアカウントを使ってセットアップを進めるようになります.

2 Debian 12でKVM + qemuで仮想環境構築

実験から本番環境まで,いろいろな仮想PCを構築するためのシステムです.ホストOSはファイルサーバとしても利用します.
去年組んだものにメモリとSSDを追加しました.

2.1 ハードウェア

CPU: Intel Core-i5 13500
マザーボード: ASUS PRIME H770-PLUS D4
メモリ: 64GB(DDR4 3200 32GBx2)
チップセット: Intel H770
HDD: SATA III 2TB×1(システム用)
            SATA III 14TB×1(データ保管用1)
            SATA III 16TB×1(データ保管用2)
            SATA III 8TB×1(データ保管用3)
            SATA III 8TB×1(データ保管用4)
SSD: Nextorage NE1N2TB(2TBの高耐久SSD,ゲストOS専用ディスク)
電源: ANTEC EA-550-PLATINUM 80PLUS PLATINUM 認証電源 
CD drive: なし
OS: Debian GNU/Linux 12 Bookworm
kernel: 6.1.0-28以降

2.2 ホストOSの設定

2.2.1 OSのインストール
DebianのISOイメージを作成してインストール.
インストーラーですが,私は細かめに設定できる『Graphical expert install』モードでいつもセットアップします.

設定内容ですが,ざっくり以下のようなものにしました.
  • パーティション設定は/varと/homeを分けました(HDDなので)./varを/homeよりも大きく取りました.
    SSDだとパーティションは無闇に分けない方が良いと思います.
  • rootによるログインを許可(sudoは基本的に使わない)
  • デスクトップ環境は『Debian デスクトップ環境』,『GNOME』,『GNOME Flashback』,『KDE Plasma』をインストールします.
    KDEだけだと,日本語入力関係のプログラムが上手く設定されないようです.
  • 『Webサーバ』と『SSHサーバ』,『標準システムユーティリティ』もインストールします.
2.2.2 ブリッジ接続の設定
NICをブリッジ接続に設定することで,ゲストOSもホストOSと同じLANに配置できます.
設定するには,“bridge-utils”をインストールした後,“/etc/network/interfaces”を編集します.
# apt install bridge-utils
# cp /etc/network/interfaces /etc/network/interfaces_org
# vim /etc/network/interfaces
# cat /etc/network/interfaces
“/etc/network/interfaces”は以下のように編集します.
source /etc/network/interfaces.d/*
#auto lo
#iface lo inet loopback
auto br0
iface br0 inet dhcp
	bridge_ports eno1
ただし,この設定はNICが1個の時以外は上手く動かない可能性が高いです.
NIC2個以上でLAGを組んだり,それぞれに役割を振る場合は研究する必要があります.
今回は挫折してNIC1個でOSをインストールし直しました.
2.2.3 ルーター(DHCPサーバ)の設定
これだけだと,IPアドレスがシステムを再起動するたびに変わってしまう可能性があるので,
YAMAHAのルーター側にて,上で作成したブリッジ接続“br0”のMACアドレスとIPアドレスを紐付けて固定化します.
“/etc/network/interfaces”の設定方法をマスターしていないのでやむを得ず取った手ですが,この設定方法でトラブルが起こる可能性は少ないと思います.
2.2.4 sambaの設定
ホストOS上でsambaのサーバを稼働させて,ゲストOSから参照できるようにしておきます.
sambaはActive Directory関連の設定とかはせずに,普通のファイルサーバになる設定をします.
2.2.5 ホストOS専用SSDのマウント
このサーバ機固有の設定ですが,
“/var/lib/libvirt/images”に高耐久SSDをマウントして,そこへゲストOSのイメージを配置しています.
システムディスクはHDDなので,ホストOSよりもゲストOSが高速という挙動になります.
ゲストOSのパフォーマンス向上と,セットアップ時間(イメージのコピーも含)の短縮ができるのでメリットは大きいと思います.
2.2.6 Intel VTおよびIntel VT-dの有効化
ホストOSではありませんが,まず,BIOS上で仮想化支援機能を有効化しなければなりません.
Intel VT-dも有効化することで,ゲストOSから,ホストに取り付けられているデバイス(グラフィックカードやUSBデバイス,PCI接続のチューナーカードとか)を使用できるようになります.

VT-dの有効化にはGRUBの設定変更も必要です.“/etc/default/grub”を編集します.
編集が終わったら,『update-grub』を実行し,再起動します.
# cp /etc/default/grub /etc/default/grub_org
# vim /etc/default/grub
# diff -u /etc/default/grub_org /etc/default/grub
--- /etc/default/grub_org       2025-01-05 00:14:11.924246201 +0900
+++ /etc/default/grub   2025-01-05 00:18:42.646387222 +0900
@@ -7,7 +7,7 @@
 GRUB_TIMEOUT=5
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 GRUB_CMDLINE_LINUX_DEFAULT="quiet"
-GRUB_CMDLINE_LINUX=""
+GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"

 # If your computer has multiple operating systems installed, then you
 # probably want to run os-prober. However, if your computer is a host
# update-grub
# reboot
再起動時に,IOMMU (Input/Output Memory Management Unit)が有効(enabled)になっていればVT-dが有効です.
IOMMU有効化の確認結果を表示する
# dmesg | grep -E "DMAR|IOMMU"
[    0.006099] ACPI: DMAR 0x000000007236D000 000088 (v01 INTEL  EDK2     00000002      01000013)
[    0.006124] ACPI: Reserving DMAR table memory at [mem 0x7236d000-0x7236d087]
[    0.012648] DMAR: IOMMU enabled
[    0.046041] DMAR: Host address width 39
[    0.046041] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.046045] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 29a00f0505e
[    0.046046] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.046049] DMAR: dmar1: reg_base_addr fed91000 ver 5:0 cap d2008c40660462 ecap f050da
[    0.046051] DMAR: RMRR base: 0x0000007c000000 end: 0x000000807fffff
[    0.046052] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.046053] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.046053] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.047573] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.271484] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[    0.318730] DMAR: No ATSR found
[    0.318730] DMAR: No SATC found
[    0.318731] DMAR: IOMMU feature fl1gp_support inconsistent
[    0.318732] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.318733] DMAR: IOMMU feature nwfs inconsistent
[    0.318733] DMAR: IOMMU feature dit inconsistent
[    0.318733] DMAR: IOMMU feature sc_support inconsistent
[    0.318734] DMAR: IOMMU feature dev_iotlb_support inconsistent
[    0.318734] DMAR: dmar0: Using Queued invalidation
[    0.318736] DMAR: dmar1: Using Queued invalidation
[    0.319394] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    0.655175] AMD-Vi: AMD IOMMUv2 functionality not available on this system - This is not a bug.
#
2.2.7 仮想マシンマネージャ
仮想マシンマネージャ,“virt-manager”をインストールします.
aptでインストールすれば,必要な関連パッケージもまとめてインストールされます.
# apt install virt-manager

2.3 ゲストOSの設定

仮想マシンマネージャ上で,仮想マシン(ゲストOS)の新規作成を行います.
インストールしたいOSのISOインストーラを入手し,ホストOS上に保存しておく必要があります.
仮想マシンであること以外は,普通のOSインストールと同じ操作です.SSDにインストールしているので,サクサク進められました.
一度インストールしてしまえば,作業の区切りでこまめにクローンを作っていくことで,復旧できないようなミスをしても途中からやり直せます.素晴らしい!
仮想マシンマネージャのウィザード画面を表示する
Screenshot_20241228_235326.png

Screenshot_20241228_235351.png

Screenshot_20241228_235510.png

Screenshot_20241228_235902.png


ゲストOSのインストール画面を表示する
一般ユーザの設定画面等は端折っていますが,ほぼ完全なDebianのインストールの流れです.
ゲストOSはどの状態でもきれいにスクリーンショットを撮れる点も良いですね.
SIA358~O.PNG

SIK2R0~B.PNG

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035239.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035248.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035254.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035304.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035308.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035314.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035319.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035324.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035330.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035337.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035342.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035348.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035353.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035358.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035411.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035418.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035423.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035427.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035534.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035546.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035553.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035558.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035608.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035629.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035652.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035713.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035718.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035723.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035727.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035732.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035739.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035746.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035751.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035758.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035809.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035815.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035822.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035901.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_035908.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040002.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040011.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040021.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040027.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040033.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040038.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040043.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040049.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040056.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040103.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040112.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040120.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040158.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040206.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040219.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040239.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040357.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040711.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040722.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040730.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040742.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_040754.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_041012.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_041020.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_041035.png

Screenshot_Debian12_virt003_Gnome-KDE_Setup_2025-01-04_041100.png


2.3.1 ゲストOSからホストに取り付けられているデバイスを利用する設定
仮想マシンマネージャの仮想マシンのモニターウィンドウで,『ハードウェアの追加』を押して,デバイスの追加操作を行います.
デバイスの追加操作画面を表示する
この例で追加しているのはUSB接続のカードリーダーと,PCI接続のチューナーカードです.これでゲストOSからも追加した接続機器へアクセスできるようになります.
Screenshot_20250105_010948.png

Screenshot_20250105_011128.png

Screenshot_20250105_011041.png

Screenshot_20250105_011125.png


3 その他のLinuxサーバ関連

ファイルサーバとして使っていたCentOS7マシンのシステムディスクが故障してしまい,起動不能になったため,Debian 12に入れ替える作業を行いました*1
データ用のHDDは無事だったので助かりました.

*1 : 上で紹介した仮想環境を構築したマシンとは別のモノです.

4 まとめ

個人的には,今回,仮想環境構築が実現できたことは非常に大きな成果です.
これからは気負わずに仮想環境で実験をして,ITスキルを磨いていければと思います(趣味の範囲ですけどね!).

次は,公開しているウェブサーバを仮想環境で再構築することに挑戦予定です!