9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Miracle LinuxをカスタムイメージでOCIに持ち込んでみた

9
Last updated at Posted at 2025-10-24

この記事はなに?

  • Miracle Linux8や9をOCIで動かしたい要件があったため、動かしてみました
  • Miracle Linux公式で、ISOイメージが提供されています

ざっくり作業の流れ

CleanShot 2025-10-24 at 09.59.26.png

  • OCI上のCompute(今回はOracle Linux)にKVM(仮想環境)をインストールし、KVM上にISOイメージからMiracle Linuxをインストール
  • インストールした仮想マシンからvmdkを作成
  • vmdkファイルからカスタムイメージを作成し、Miracle Linuxを起動

Miracle Linuxとは?

  • Miracle Linuxは、国産エンタープライズLinuxディストリビューションで、RHEL(Red Hat Enterprise Linux)互換のOSです
  • Miracle LinuxのイメージはOCIのマーケットプレイスでは提供されていません
  • Miracle LinuxはAlmaLinuxとの共同開発体制に移行し、AlmaLinux10以降はMiracle Linuxと互換性があります
  • AlmaLinuxはOCIで提供されていますが、今回は公式のMiracle Linux ISOイメージから構築してみます

具体的な手順

カスタムイメージ作成用のComputeを用意

以下のスペックでComputeインスタンスを作成します。

項目 設定値
OS Oracle Linux 9
シェイプ VM.Standard.E4.Flex 2 OCPU(AMD互換ならどれでも可)
メモリ 32GB
ディスク 100GB以上(OCI初期の容量だと足りなくなる可能性あり!)

システムアップデート

# システムを最新状態に
sudo dnf update -y

KVMの設定

KVM/QEMUのインストール

sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer
sudo dnf install -y libvirt-client virt-top libguestfs-tools

# インストール確認
rpm -qa | grep qemu-kvm
rpm -qa | grep libvirt

インストールしたツールについて

  • KVM (Kernel-based Virtual Machine): Linuxカーネルに組み込まれた仮想化技術です
  • QEMU: KVMと連携して動作する仮想マシンエミュレータです
  • libvirt: 仮想マシンを管理するためのツール群です
  • virt-install: コマンドラインから仮想マシンを作成するツールです
  • libguestfs-tools: 仮想マシンのディスクイメージを操作するためのツール群です

libvirtdの起動と有効化

libvirtdは仮想マシンを管理するデーモンで、KVMを操作するために必要です。

# libvirtdサービスの起動
sudo systemctl start libvirtd

# 自動起動を有効化
sudo systemctl enable libvirtd

# 状態確認
sudo systemctl status libvirtd
# Active: active (running) と表示されればOK

ユーザー権限の設定

# 現在のユーザーをlibvirtグループに追加と適用
sudo usermod -aG libvirt $(whoami)
newgrp libvirt

# 確認
groups
# libvirt が含まれていればOK

KVMの動作確認

# KVMモジュールがロードされているか確認
lsmod | grep kvm
# kvm_intel または kvm_amd が表示されればOK

# libvirtの接続確認
virsh list --all
# 空のリストが表示されればOK(エラーが出なければOK)

作業環境の準備

作業ディレクトリの作成

mkdir ~/miraclelinux-oci
cd ~/miraclelinux-oci

Miracle LinuxのISOファイルのダウンロード

今回は8.10のミニマルインストールイメージをダウンロードします。

# 最新のURLは公式サイトで確認してください
wget https://repo.dist.miraclelinux.net/miraclelinux/8.10-released/isos/x86_64/MIRACLELINUX-8.10-rtm-minimal-x86_64.iso

# ダウンロード確認(約2GBでした)
ls -lh

実行結果:

total 17G
-rw-r--r--. 1 qemu qemu 2.0G Oct 11  2024 MIRACLELINUX-8.10-rtm-minimal-x86_64.iso

仮想ディスク作成

# QCOW2形式で、20GBのディスクイメージを作成
qemu-img create -f qcow2 miraclelinux-oci.qcow2 20G

# 確認(約5.7GBでした)
ls -lh miraclelinux-oci.qcow2

実行結果:

-rw-r--r--. 1 opc libvirt 5.7G Oct 23 07:37 miraclelinux-oci.qcow2

仮想マシンの作成とインストール

virt-installでVMの作成と起動

sudo virt-install \
  --name miraclelinux-oci \
  --ram 2048 \
  --vcpus 2 \
  --disk path=$HOME/miraclelinux-oci/miraclelinux-oci.qcow2,format=qcow2 \
  --os-variant rhel9.0 \
  --network network=default \
  --graphics none \
  --console pty,target_type=serial \
  --location $HOME/miraclelinux-oci/MIRACLELINUX-8.10-rtm-minimal-x86_64.iso \
  --extra-args 'console=ttyS0,115200n8 inst.text'

Miracle Linuxのインストール

テキストベースでインストーラが起動します。

マニュアルはこちらを参照してください。対応しているバージョンの「テキストモード」の章を見てインストールしてください。

インストーラーで!マークのついている項目を設定していきます。主に以下の項目を設定します:

  • インストール先(ディスクの選択)
  • ネットワークの設定
  • rootパスワード
  • ユーザー作成

設定がすべて終わったら、[b]キーを押してインストールを開始します。

Miracle Linux初期設定

インストールが完了したら、仮想マシンにSSHでログインします。

システムアップデートとcloud-initのインストール

# システムアップデート
dnf update -y

# cloud-init関連パッケージのインストール
dnf install -y cloud-init cloud-utils-growpart

# その他必要な追加パッケージ
dnf install -y tar rsync

cloud-initについて
cloud-initは、クラウド環境でインスタンス起動時の初期化を行うツールです。OCIでは以下の処理に必要です:

  • SSHキーの自動設定
  • ホスト名の設定
  • ネットワーク設定の初期化
  • ディスクの自動拡張
  • ユーザーの作成と権限設定

cloud-initの有効化と設定

# cloud-initサービスの有効化
systemctl enable cloud-init
systemctl enable cloud-config
systemctl enable cloud-final
systemctl enable cloud-init-local

# cloud-init設定ファイルの編集
vi /etc/cloud/cloud.cfg

以下の内容を確認・追加してください:

# /etc/cloud/cloud.cfg の内容

# データソースの設定
datasource_list: [ NoCloud, ConfigDrive, None ]

# システムの設定
system_info:
  distro: rhel
  default_user:
    name: opc
    gecos: OPC User
    groups: [wheel, adm, systemd-journal]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
  paths:
    cloud_dir: /var/lib/cloud/
    templates_dir: /etc/cloud/templates/

# クラウド初期化モジュール
cloud_init_modules:
  - migrator
  - seed_random
  - bootcmd
  - write-files
  - growpart
  - resizefs
  - disk_setup
  - mounts
  - set_hostname
  - update_hostname
  - update_etc_hosts
  - ca-certs
  - rsyslog
  - users-groups
  - ssh

cloud_config_modules:
  - ssh-import-id
  - locale
  - set-passwords
  - yum-add-repo
  - ntp
  - timezone
  - disable-ec2-metadata
  - runcmd

cloud_final_modules:
  - package-update-upgrade-install
  - scripts-vendor
  - scripts-per-once
  - scripts-per-boot
  - scripts-per-instance
  - scripts-user
  - ssh-authkey-fingerprints
  - keys-to-console
  - final-message

cloud-init設定ファイルの解説

なぜcloud-initが必要なのか?

OCIでインスタンスを起動すると、以下のような初期化処理が必要になります:

  • SSHキーの配置: コンソールで指定したSSHキーをインスタンスに自動配置
  • ネットワーク設定: VCN内のIPアドレスやDNS設定を自動構成
  • ディスクの拡張: ブートボリュームのサイズに合わせてファイルシステムを自動拡張
  • ホスト名の設定: OCIで指定したホスト名を自動設定
  • ユーザー作成: デフォルトユーザー(opc)の作成と権限設定

cloud-initがないと、これらの設定をすべて手動で行う必要があり、OCIのインスタンスとして正常に動作しません。

設定ファイルの各項目について

datasource_list

  • OCIのメタデータサービスからインスタンス情報を取得するための設定
  • NoCloudConfigDriveNoneの順で試行します

system_info

  • distro: RHELベースのディストリビューションであることを指定
  • default_user: デフォルトユーザーopcの設定
    • wheelグループに所属させることでsudo権限を付与
    • パスワードなしでsudoを実行可能に設定

cloud_init_modules(起動時に最初に実行される)

  • growpart: パーティションのサイズを拡張
  • resizefs: ファイルシステムのサイズを拡張
  • set_hostname/update_hostname: ホスト名の設定
  • ssh: SSHキーの配置

cloud_config_modules(システム設定に関するモジュール)

  • locale: ロケール設定
  • timezone: タイムゾーン設定
  • yum-add-repo: リポジトリの追加

cloud_final_modules(最後に実行される)

  • scripts-user: ユーザースクリプトの実行
  • ssh-authkey-fingerprints: SSH鍵のフィンガープリント表示
  • final-message: 起動完了メッセージの表示

SSHの有効化

# SSHサーバーの有効化
systemctl enable sshd

SSHについて
OCIのインスタンスにリモート接続するために、SSHサーバーを有効にしておく必要があります。OCIコンソールからSSHキーを指定してインスタンスを起動すると、cloud-initがSSHキーを自動設定します。

ファイアウォールの設定

# SSH接続を許可
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

# SSHが許可されていることを確認
firewall-cmd --list-all

ネットワーク設定

# DHCPが有効になっているか確認
nmcli con show

# NetworkManagerの有効化
systemctl enable NetworkManager

イメージのクリーンアップ

カスタムイメージの作成のために、不要なログ・キャッシュ・設定をすべて削除します。

# パッケージキャッシュのクリア
dnf clean all

# ログファイルのクリア
rm -rf /var/log/*

# 一時ファイルの削除
rm -rf /tmp/*
rm -rf /var/tmp/*

# bashヒストリーのクリア
cat /dev/null > ~/.bash_history
history -c

# SSHホストキーの削除(初回起動時に再生成される)
rm -f /etc/ssh/ssh_host_*

# マシンIDのクリア
truncate -s 0 /etc/machine-id
rm -f /var/lib/dbus/machine-id

# 永続的なネットワーク設定を削除
rm -f /etc/udev/rules.d/70-persistent-net.rules

# cloud-initのキャッシュをクリア
cloud-init clean --logs --seed

クリーンアップ完了後にシャットダウンします。

shutdown -h now

イメージの変換とVMDKの作成

Oracle Linuxのホストに戻って、以下の作業を実施します。

# VMが完全に停止していることを確認(miraclelinux-oci が shut off になっていればOK)
sudo virsh list --all

# VMの定義を削除(ディスクイメージは削除されない)
sudo virsh undefine miraclelinux-oci

# 確認(miraclelinux-oci が表示されなければOK)
sudo virsh list --all

# イメージファイルの圧縮
qemu-img convert -O qcow2 -c miraclelinux-oci.qcow2 miraclelinux-oci-compressed.qcow2

# vmdk形式への変換
qemu-img convert -O vmdk miraclelinux-oci-compressed.qcow2 miraclelinux-oci.vmdk

# 確認
ls -lh miraclelinux-oci.vmdk

実行結果:

-rw-r--r--. 1 opc opc 5.6G Oct 23 09:23 miraclelinux-oci.vmdk

カスタムイメージの作成

Object Storageへのアップロード

  1. Object Storageのバケットを作成
  2. 作成したバケットに miraclelinux-oci.vmdk をアップロード

カスタムイメージのインポート

  1. OCIコンソールで、ハンバーガーメニュー → コンピュート → カスタム・イメージ
  2. 「イメージのインポート」を選択
  3. 以下の設定でインポート
項目 設定値
名前 任意(例: miracle-linux8.10-image)
オペレーティング・システム Generic Linux
Object Storage アップロードしたvmdkファイルを指定
イメージ・タイプ VMDK
起動モード 準仮想化モード

カスタムイメージの作成には10分程度かかります。

Miracle Linuxのインスタンス起動

  1. Computeインスタンス作成画面を開く
  2. 「イメージの変更」から「マイ・イメージ」を選択
  3. 作成したカスタムイメージを選択

CleanShot 2025-10-24 at 09.43.33.png

  1. その他の設定(シェイプ、ネットワーク、SSHキーなど)を行い、インスタンスを作成
  2. インスタンス起動後、SSHでログインして動作確認

CleanShot 2025-10-24 at 10.30.10.png

まとめ

Miracle LinuxをOCIで動かすための手順を紹介しました。作業時間は約2時間ほどでした。

KVMを使った仮想マシンの作成からカスタムイメージの作成まで、一連の流れを実施することで、OCIでMiracle Linuxを稼働させることができました。

注意事項

  • この方法は公式サポート対象外です
  • 本番環境での利用は自己責任でお願いします
  • セキュリティアップデートやパッチ適用は手動で行う必要があります
9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?