萌えハッカーニュースリーダー

2025/10/03 18:56 Alpine Linux Diskless Mode

出典: https://wiki.alpinelinux.org/wiki/Diskless_Mode
hakase
博士

やっほー、ロボ子!今日はAlpine LinuxのDisklessモードについて話すのじゃ!

roboko
ロボ子

Disklessモードですか、博士。それはOS全体をRAMにロードして実行する技術ですよね?

hakase
博士

そう!その通り!Disklessモードは、高速で電力消費も少ないから、とってもエコなのじゃ!

roboko
ロボ子

なるほど。ディスクの不要なスピンアップや摩耗も削減できるんですね。

hakase
博士

そうそう!それに、Alpine Linuxでは、カスタム構成やパッケージのインストールを再起動後も保持できるのがすごいところなのじゃ!

roboko
ロボ子

`lbu`(Local Backup Utility)とローカルパッケージキャッシュを使うんでしたっけ。

hakase
博士

さすがロボ子、よく知ってるのじゃ!`setup-alpine`スクリプトで`disk=none`を指定して、`setup-lbu`と`setup-apkcache`で設定を保存するのじゃ。

roboko
ロボ子

ということは、読み取り専用のインストールメディアではなく、カスタマイズ可能なブートデバイスを作成できるんですね。

hakase
博士

その通り!永続ストレージに内部ディスクを使う場合は、`/etc/fstab`にエントリを作って、パーティションをマウントするのじゃ。

roboko
ロボ子

ファイルシステムはext4を使うのが推奨されているようですが、btrfsやxfsだと何か問題があるんでしょうか?

hakase
博士

どうやらAPKOVLのロードで問題が発生する可能性があるらしいのじゃ。あと、extlinuxが64bit featureで起動できない問題もあるから、`mkfs.ext4`に`-O ^64bit`を追加する必要がある場合もあるみたい。

roboko
ロボ子

細かい注意点が多いんですね。ジャーナリングを無効にすると書き込み操作を減らせる、と。

hakase
博士

`mkfs.ext4 -O ^has_journal,^64bit /dev/sdXY`を使うのじゃ。でも、パーティションを`/boot`にマウントできないバグがあるから、`/media/sdXY`にマウントするのじゃ。

roboko
ロボ子

ふむふむ。カスタマイズ可能なブートデバイスを使う場合は、USB-StickやSDCardにAlpine Linuxをインストールするんですね。

hakase
博士

そう!そして、`apkovl`ファイルとローカルパッケージキャッシュを保存するのじゃ!

roboko
ロボ子

`setup-alpine`を実行して、ローカル構成とパッケージキャッシュを保存するパーティションを選択するんですね。

hakase
博士

`setup-lbu`と`setup-apkcache`でストレージとパッケージキャッシュを設定して、`lbu status`で変更されたファイルの数を確認、`lbu commit`で変更をコミット!

roboko
ロボ子

`<hostname>.apkovl.tar.gz`ファイルが作成されたことを確認する、と。

hakase
博士

rootファイルシステムのサイズは`tmpfs`としてマウントされ、デフォルトで利用可能なRAMの50%が割り当てられるのじゃ。`rootflags=size=300M`カーネルパラメータでサイズを調整できるのじゃ。

roboko
ロボ子

Disklessモードでは、ネットワークが開始されるまでリモートリポジトリが利用できないから、ローカルストレージデバイス上の`local package cache`が重要になるんですね。

hakase
博士

その通り!ローカル構成やシステム状態は、APK Overlay (`apkovl`)ファイルとして保存され、ブート時にロードされるのじゃ。

roboko
ロボ子

`lbu commit`コマンドで`apkovl`ファイルを更新するんですね。

hakase
博士

Webサーバーから`apkovl`をロードすることもできるのじゃ!`apkovl`カーネルブートパラメータでURLを指定するのじゃ。

roboko
ロボ子

Disklessシステムのアップグレードは、パッケージのアップデート後に`lbu commit`を実行、カーネルのアップグレードには`update-kernel`スクリプトを使うんですね。

hakase
博士

`update-kernel`スクリプトは、カーネル、モジュール、ファームウェアパッケージをアップグレードする際に、initfsイメージを生成し、ブートファイルを更新するのじゃ。

roboko
ロボ子

`mkinitfs`パッケージが必要で、RAMが少ないデバイス向けには`TMPDIR`環境変数で一時ディレクトリを指定できるんですね。

hakase
博士

カーネルオプションのドキュメントは、`mkinitfs-doc`パッケージをインストールして、`man mkinitfs-bootparam`を実行すると見れるのじゃ。

roboko
ロボ子

Disklessモード、奥が深いですね。博士、今日はありがとうございました。

hakase
博士

どういたしましてなのじゃ!ところでロボ子、Disklessモードで動くロボットって、もはやただの箱なのでは…?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search