ウェブサイト検索

ブームでシステムスナップショットからブートする方法


Boomは、Grub2を含むBLS互換のブートローダーをサポートするシステムブートマネージャーです。私たちは、Boomを使用してLinux上でブートローダーエントリを簡単に作成および管理できます。このチュートリアルでは、Red Hat系のディストリビューションでLVMおよびBTRFSスナップショットからシステムをブートするためのエントリをBoomを使用して作成する方法を学びます。

このチュートリアルでは、あなたは学びます:

  • ブームをインストールする方法
  • ブームプロフィールの作成方法
  • LVMまたはBTRFSスナップショットのブートエントリを作成する方法

ブートローダ仕様

Boomは、ブートローダー仕様をサポートするブートローダーのエントリを管理します。grub2はその中に含まれており、「bls」パッチでビルドされた場合です。最近のFedoraのバージョンやRHELのバージョン8以降では、/etc/default/grub構成ファイルを確認すると、次のオプションが含まれているのがわかります:

GRUB_ENABLE_BLSCFG=true

上記の行はGRUBの動作を変更し、/boot/loader/entriesディレクトリ内にあるブートエントリファイルを使用するようにします。これにより、/boot/grub2/grub.cfgファイルに直接エントリを作成しなくなります。新しくインストールされたFedoraのバージョンでは、このディレクトリには2つのエントリが含まれています:

096544f3374847bf9bacc18363cd3532-0-rescue.conf
096544f3374847bf9bacc18363cd3532-6.10.7-200.fc40.x86_64.conf

これはエントリーの見た目です:

title Fedora Linux (6.10.7-200.fc40.x86_64) 40 (Workstation Edition)
version 6.10.7-200.fc40.x86_64
linux /vmlinuz-6.10.7-200.fc40.x86_64
initrd /initramfs-6.10.7-200.fc40.x86_64.img
options root=/dev/mapper/hllpt0-root ro rd.lvm.lv=hllpt0/root rd.luks.uuid=luks-fd94beb6-c0df-4f65-8ee2-9dad499bc3c4 rhgb quiet 
grub_users $grub_users
grub_arg --unrestricted
grub_class fedora

ブームをインストールする

Boomは、バージョン7.5以降、RHEL(およびクローン)の公式リポジトリで利用可能です。そのような配布物では、パッケージはlvm2-python-boomとして利用可能でしたが、Red Hatファミリーの最新バージョン、Fedoraを含めて、boom-bootとして利用可能です。インストールするには、以下のコマンドを実行します:

sudo dnf install boom-boot

ブームプロフィールを作成する

boomを使用する前に、プロファイルを作成する必要があります。これを行う最も簡単な方法は、profileコマンドを使用してユーティリティを呼び出し、createアクションを指定し、--from-hostオプションを使用して、実行中のホストからのリリースデータを使用してプロファイルを構築することです(通常は/etc/os-releaseファイルから)。

sudo boom profile create --from-host

コマンドは以下のような出力を返すべきです:

Created profile with os_id fab63af:
  OS ID: "fab63af62e654ea986dca5e88d8a2d232d8f392c",
  Name: "Fedora Linux", Short name: "fedora",
  Version: "40 (Workstation Edition)", Version ID: "40",
  Kernel pattern: "/vmlinuz-%{version}", Initramfs pattern: "/initramfs-%{version}.img",
  Root options (LVM2): "rd.lvm.lv=%{lvm_root_lv}",
  Root options (BTRFS): "rootflags=%{btrfs_subvolume}",
  Options: "root=%{root_device} ro %{root_opts} rd.luks.uuid=luks-fd94beb6-c0df-4f65-8ee2-9dad499bc3c4 rhgb quiet",
  Title: "%{os_name} %{os_version_id} (%{version})",
  Optional keys: "grub_users grub_arg grub_class id", UTS release pattern: "fc40"

ブームプロファイルは/boot/boom/profilesディレクトリに保存されています。

スナップショットのためのブートエントリを生成しています

最近のチュートリアルでは、LinuxでLVMとBTRFSのスナップショットを作成および管理する方法を学びました。そして、何か問題が発生した場合に、システムをよく知られた状態に戻すためにそれらを使用できることを見ました。boomを使用することで、LVMまたはBTRFSのスナップショットからシステムを起動するためのブートローダーエントリを簡単に作成できます。いくつかの例を見てみましょう。私の現在の設定は、"root" 論理ボリュームが "/" にマウントされているLVM構成で構成されています。このボリュームのかなり大きなスナップショット(この場合は従来の"厚い"スナップショット)を作成することが可能で、次のコマンドを実行することで作成できます:

sudo lvcreate -s /dev/vg0/root -L5GiB -n root-snapshot0

さて、今はブートローダーエントリを作成するためにboomを使用できるので、スナップショットをルートパーティションとしてシステムを起動できます。このエントリを生成するのは、次のコマンドを実行するだけで簡単です:

sudo boom entry create --title "root-snapshot0" --rootlv /dev/vg0/root-snapshot0

--title オプションを使用すると、ブートローダーエントリのタイトルを指定し、--rootlv ではルートファイルシステムを含む LVM2 論理ボリュームのパスを指定します。このコマンドは、/boot/loader/entries ディレクトリに新しいエントリを生成します。この場合、次の内容になります:

#OsIdentifier: fab63af62e654ea986dca5e88d8a2d232d8f392c
title root-snapshot0
machine-id 096544f3374847bf9bacc18363cd3532
version 6.10.7-200.fc40.x86_64
linux /vmlinuz-6.10.7-200.fc40.x86_64
initrd /initramfs-6.10.7-200.fc40.x86_64.img
options root=/dev/vg0/root-snapshot0 ro rd.lvm.lv=vg0/root-snapshot0 rd.luks.uuid=luks-fd94beb6-c0df-4f65-8ee2-9dad499bc3c4 rhgb quiet
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel

システムを再起動すると、GRUBメニューに生成されたエントリが表示されます。

BTRFS スナップショットのブートエントリを作成する

代わりにBTRFSスナップショットを使用したい場合はどうしますか?最近のFedoraのデフォルトのパーティション設定はBTRFSファイルシステムに基づいています。デフォルトでは、Anacondaインストーラーは三つのパーティションを作成します:最初はESPで、FAT32でフォーマットされ、/boot/efiにマウントされます。二つ目はext4でフォーマットされ、/bootにマウントされます。三つ目で最後のパーティションはBTRFSファイルシステムでフォーマットされ、二つのサブボリューム「root」と「home」をホストし、それぞれ「/」および「/home」にマウントされます。

「ルート」サブボリュームのスナップショットを作成して、ある時点でシステムの状態を固定したいとします。ご存知の通り、BTRFSスナップショットは単なる追加のサブボリュームです;次のように実行することで作成できます:

sudo btrfs subvolume snapshot / /.snapshot0

私たちは、/ファイルシステム(「ルート」サブボリュームのマウントポイント)のスナップショットを作成し、/.snapshot0として保存しました。boomで新しいブートローダーエントリを作成するには、まず元のサブボリュームをホストするBTRFSファイルシステムの識別子を取得します。ファイルシステムはそのパス(この場合は/dev/vda3)で指定するか、UUIDを用いる方が良いでしょう。後者は現在のブートエントリ設定を確認することで取得できます。

cat /proc/cmdline

このコマンドは、ブート構成に指定された通りに、ブート時にカーネルに渡されたコマンドラインを返します。BTRFSにインストールされた標準のFedoraシステムでは、次のような出力が返されるはずです:

BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6.10.8-200.fc40.x86_64 root=UUID=39da18c1-1bb0-4414-a4c1-a70abf6308b6 ro rootflags=subvol=root rhgb quiet

出力からわかるように、BTRFSファイルシステムのUUIDは「39da18c1-1bb0-4414-a4c1-a70abf6308b6」です。次に、上で作成したスナップショットに基づいてブートローダーを作成するために、次のコマンドを実行します:

sudo boom entry create --title "snapshot0" --btrfs-subvol=root/.snapshot0  --root-device=/dev/disk/by-uuid/39da18c1-1bb0-4414-a4c1-a70abf6308b6

LVMスナップショットのエントリを作成する際と同様に、エントリのタイトルを指定するために--titleオプションを使用しました。今回は、代わりに--root-deviceオプションを使用してルートデバイスを指定し、--btrfs-subvolを使用してルートファイルシステムを含むBTRFSサブボリュームを指定しました。スナップショットのパスを、親サブボリューム(「root」)に対して相対的に指定したことに注意してください。システム内でのパスによってではありません。

結論

このチュートリアルでは、最近のFedoraおよびRed Hat Enterprise Linux(そのクローン)にboomブートローダーマネージャーをインストールする方法を学びました。boomは、BLS(ブートローダ仕様)に従ってブートローダーエントリを簡単に管理するために使用できます。この場合、LVMおよびBTRFSスナップショットから直接システムを起動するためのエントリを生成するためにboomを使用する方法を学びました。

関連記事: