はじめに
Proxmox VE上にRHEL9を検証用VMとして作るとき、毎回インストール画面で言語、ディスク、ネットワーク、パッケージを選ぶのは少し面倒だ。
この記事では、RHELの自動インストール機能であるKickstartを使って、Proxmox VE上にRHEL9の最小構成 VM を作成する。
目的は「凝った構成を作ること」ではなく、最小構成でログイン可能なRHEL 9を再現性高く作ることだ。
今回作るもの
- Proxmox VE上のRHEL 9VM
- インストール方式はKickstart
- ネットワークはDHCP
- パッケージ構成はMinimal Install
- rootログインは有効
- インストール中の表示言語は英語
- インストール後のOS ロケールは日本語
インストール中の言語を英語にしているのは、日本語表示にすると環境によってインストーラー画面で文字化けすることがあるためだ。OS インストール後に ja_JP.UTF-8 へ切り替える。
環境
| 項目 | 値 |
|---|---|
| Proxmox VE | 9.1.1 |
| Proxmox 管理 URL | https://192.168.11.99:8006 |
| Proxmox ノード名 | pve |
| RHEL | RHEL 9.7 |
| RHEL ISO | rhel-9.7-x86_64-dvd.iso |
| VM 名 | RHEL9-Autodeploy |
| VM ID | 101 |
| CPU | 2 cores |
| メモリ | 4096 MiB |
| ディスク | 40 GiB |
| ISO ストレージ | local |
| VM ディスクストレージ | local-lvm |
| ネットワーク | DHCP |
| Kickstart 配信端末 | 192.168.11.170 |
| タイムゾーン | Asia/Tokyo |
| キーボード | 日本語 |
Red Hat のリリース表では、2026-05-09 時点の RHEL 9最新版はRHEL 9.7 だ。
参考:
必要なもの
- Proxmox VE
- RHEL 9.7 x86_64 DVD ISO
- Red Hatアカウント
- Kickstartファイル
- KickstartをHTTP 配信できる端末
今回は手動寄りの手順にするため、Packer や Terraform は使わない。Proxmox の GUI で VM を作り、起動時に Kickstart の URL を渡す。
RHEL ISOを用意する
Red Hat Customer Portal から RHEL 9.7 の x86_64 DVD ISO をダウンロードする。
ファイル名の例:
rhel-9.7-x86_64-dvd.iso
ダウンロードした ISO は Proxmox の ISO ストレージにアップロードする。
Proxmox の画面では、一般的に次の場所からアップロードできる。
- Proxmoxにログイン
- 左ペインで対象ノードを選択
- ISOを保存するストレージを選択
- ISO Imagesを開く
- UploadからRHEL ISOをアップロード
Kickstartファイルを作成する
今回使うKickstartは以下だ。
rootパスワードには使用したいパスワードを記載する
rootpw –plaintext <検証用rootパスワード>
#version=RHEL9 text cdrom eula --agreed firstboot --disable reboot lang en_US.UTF-8 keyboard --vckeymap=jp --xlayouts='jp' timezone Asia/Tokyo --utc network --bootproto=dhcp --device=link --activate --onboot=on --hostname=rhel9-autodeploy.local rootpw --plaintext <検証用rootパスワード> selinux --enforcing firewall --enabled --ssh services --enabled=sshd,qemu-guest-agent,chronyd bootloader --location=mbr --append="crashkernel=auto" zerombr clearpart --all --initlabel autopart --type=lvm %packages @^minimal-environment chrony qemu-guest-agent vim-enhanced curl tar %end %post --log=/root/ks-post.log set -euxo pipefail localectl set-locale LANG=ja_JP.UTF-8 localectl set-keymap jp mkdir -p /etc/ssh/sshd_config.d cat > /etc/ssh/sshd_config.d/10-root-login.conf <<'EOF' PermitRootLogin yes PasswordAuthentication yes EOF systemctl enable qemu-guest-agent systemctl enable chronyd %end今回は閉じた検証環境なので、Kickstart では検証用 root パスワードを平文で指定した。ただし、記事上では実値を伏せている。
現場で使う場合は、平文ではなく rootpw –iscrypted で SHA-512 crypt 形式のハッシュを指定する方が安全だ。
KickstartファイルをHTTPで配信する
RHEL インストーラーから Kickstart ファイルを取得できるよう、作業端末で簡易 HTTP サーバーを起動する。
Windows の PowerShell で実行する例だ。
Pythonなどは使わず、Windows標準で簡易 HTTP応答を返す。
PowerShellでKickstartファイルの配置先に移動する。自環境だと以下になる
cd C:\Users\kyoro\Documents\2026-05-09\rhel-kickstart-proxmox簡易HTTP サーバーを起動する。
$listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Any, 8080); $listener.Start(); Write-Host "Serving ks.cfg on http://192.168.11.170:8080/ks.cfg"; while ($true) { $client = $listener.AcceptTcpClient(); $stream = $client.GetStream(); $reader = [System.IO.StreamReader]::new($stream); while (($line = $reader.ReadLine()) -ne '') {}; $body = [System.IO.File]::ReadAllBytes((Join-Path (Get-Location) 'ks.cfg')); $header = [Text.Encoding]::ASCII.GetBytes("HTTP/1.1 200 OK`r`nContent-Type: text/plain; charset=utf-8`r`nContent-Length: $($body.Length)`r`nConnection: close`r`n`r`n"); $stream.Write($header, 0, $header.Length); $stream.Write($body, 0, $body.Length); $client.Close() }実行結果:
Serving ks.cfg on http://192.168.11.170:8080/ks.cfg初回起動時に Windows Firewallの許可ダイアログが出たため、同一 LANからアクセスできるよう許可した。
配信端末で取得できるか確認する。
curl http://192.168.11.170:8080/ks.cfg確認結果:
StatusCode : 200
StatusDescription : OK
Content : #version=RHEL9ここで ks.cfgの内容が表示されればOKだ。
インストール完了後にPowerShellウィンドウ自体を閉じて簡易HTTP サーバーを停止する
ProxmoxでVMを作成する
Proxmox VEの管理画面を開き、VMを作成する。
VM作成ウィザードでは、以下のように指定する。
| 画面 | 設定 |
|---|---|
| General | VM 名: RHEL9-Autodeploy |
| OS | local から rhel-9.7-x86_64-dvd.iso を選択 |
| System | 基本はデフォルト |
| Disks | Storage: local-lvm、Size: 40 GiB。バスは VirtIO Block または SCSI |
| CPU | 2 cores |
| Memory | 4096 MiB |
| Network | Bridge は環境に合わせる。Model は VirtIO |
起動パラメータにKickstart URLを指定する
VMを起動し、RHELの起動画面が表示されたら、Install Red Hat Enterprise Linux 9.7画面でtabを押す。
linux または linuxefiで始まる行の末尾に、次のようなパラメータを追加する。
inst.ks=http://192.168.11.170:8080/ks.cfg

編集後、エンターもしくはCtrl + x で起動する。
インストール後の確認
インストールが完了するとVMが再起動する。
rootでログインし、RHELのバージョンを確認する。
cat /etc/redhat-release実行結果:
Red Hat Enterprise Linux release 9.7 (Plow)ロケールとキーマップを確認する。
localectl status実行結果:
System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jpつまずきポイント
Kickstartが読まれない
まず、インストーラーから Kickstart 配信端末に HTTP で到達できるかを疑う。
- VM の NIC が接続されているか
- Proxmox の Bridge が正しいか
- DHCP でアドレスが取れているか
- Windows Firewall などで 8080/TCP が遮断されていないか。初回起動時に許可ダイアログが出た場合は、同一 LAN からアクセスできるよう許可する
- inst.ks= の URL が間違っていないか
rootでSSHログインできない
RHEL 9ではSSHの設定や認証方式によってroot ログインできないことがある。今回は検証用として以下を明示している。
PermitRootLogin yes PasswordAuthentication yes
本番環境ではrootのSSH ログインを避け、一般ユーザーとsudoを使う構成を検討したい。
まとめ
Kickstartを使うと、VM作成をかなり再現しやすくできる。
今回は手動寄りの構成にしたため、Proxmox GUIの操作感を残しながら、OSインストール部分だけを自動化した。
