Linuxコマンド - dracut
概要
dracutコマンドは、Linuxシステムで初期RAMファイルシステム (initramfs) を生成するために必要なブロックデバイスモジュールである。
initramfsは、システムブート時に使用される一時的なルートファイルシステムにおいて、
実際のルートファイルシステムをマウントする前に必要なドライバやツール (IDE、SCSI、RAID等) をプリロードする。
dracutコマンドの特徴および用途を以下に示す。
- カスタマイズ可能
- 必要なモジュールやドライバのみを含むinitramfsを作成することができる。
- 柔軟性
- 多くのLinuxディストリビューションで使用可能である。
- 高速
- 効率的なinitramfs生成プロセスを提供する。
- 障害復旧
- レスキューモードのinitramfsを作成することにより、システム復旧に役立つ。
- ホストOSに依存しない
- クロスプラットフォームでの使用が可能である。
dracutコマンドは、主にシステム管理者やディストリビューション開発者によって使用されており、カスタムLinuxシステムの構築やトラブルシューティングに役立つ。
使用方法
dracut <オプション> <initramfsの出力ディレクトリ> <カーネルバージョン>
- 現在実行中のカーネル向けのinitramfsを作成する場合
sudo dracut -f
- 出力するディレクトリを変更する場合
以下の例では、/boot/initrdディレクトリに現在実行中のカーネル向けのinitramfsを作成している。
sudo dracut -f /boot/initrd $(uname -r)
依存関係のライブラリ
依存関係のライブラリのインストール
dracutコマンドを実行するために必要な依存関係のライブラリをインストールする。
# SLE 15 SP5, SP4 / openSUSE Leap 15.5, 15.4 sudo zypper install biosdevname systemd-coredump rng-tools dbus-broker systemd-network systemd-experimental \ ibmswtpm2 tpm2-tss-engine squashfs nvme-cli libnvme1 open-iscsi tpm2-0-tss tpm2.0-tools # SLE 15 SP3 sudo zypper intall biosdevname libnvme1 open-iscsi lvm2
次に、MemstrackのGithubにアクセスして、Memstrackのインストーラをダウンロードする。
ダウンロードしたファイルを実行して、Memstrackをインストールする。
sudo ./memstrack-linux-amd64
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/ryncsn/memstrack.git cd memstrack
Memstrackをビルドおよびインストールする。
Memstrackは、/binディレクトリにインストールする必要がある。
make -j $(nproc) sudo make DESTDIR=/ install # /binディレクトリにもコピーする sudo cp /usr/bin/memstrack /bin
Memstrackとは
実行時メモリ割り当てトレーサは、メモリ割り当てのホットスポットアナライザのようなものであり、
全体的なメモリ使用量、ピーク時のメモリ使用量、カーネルモジュールのメモリ使用量を、スタックトレースと組み合わせて分析するのに役立つ。
ユーザ空間のメモリトレースは、まだ実装されていない。
Memstrackは、カーネルの全てのページレベルのメモリ割り当てイベントをトレースして (現在、perfまたはftraceをサポートしている) 、
イベントをスタックトレースツリーに積極的に統合することで動作する。
また、カーネルのページオーナーログファイルと連携し、メモリ使用量ビューアとして使用することもできる。
dracutのインストール
パッケージ管理システムからインストール
# RHEL sudo dnf install dracut # SUSE sudo zypper install dracut dracut-mkinitrd-deprecated plymouth-dracut
ソースコードからインストール
まず、Linuxカーネルの公式Webサイト、または、dracutのGithubにアクセスする。
dracutのソースコードをダウンロードして解凍する。
tar xf dracut-<バージョン>.tar.xz cd dracut-<バージョン>
dracutのビルドに必要なライブラリをインストールする。
# SUSE sudo zypper install gcc make cargo libkmod-devel asciidoc
dracutをビルドおよびインストールする。
mkdir build && cd build ../configure --prefix=<dracutのインストールディレクトリ> --enable-dracut-cpio make -j $(nproc) make install