Plymouth

提供: ArchWiki
2020年7月9日 (木) 15:13時点におけるKgx (トーク | 投稿記録)による版 (→‎設定: Hidpiを追加)
ナビゲーションに移動 検索に移動

Plymouth は Fedora のフリッカーフリーなグラフィカルブートプロセスを提供するためのプロジェクトです。Kernel Mode Setting (KMS) を使って出来るだけ早い段階でディスプレイの最大解像度に設定し、ログインマネージャが表示されるまで、キレイなスプラッシュスクリーンを提供します。

準備

まず、Plymouth は KMS (Kernel Mode Setting) を使ってグラフィックを表示します。(プロプライエタリドライバを使っているなどの理由で)あなたが KMS を使えない場合、代わりにフレームバッファを使う必要があります。EFI/UEFI 環境の場合、plymouth は EFI フレームバッファを利用します。BIOS 環境の場合、ワイド画面を機能させることができる Uvesafb が推奨されます。

KMS もフレームバッファも使えない場合、Plymouth はテキストモードになります。

インストール

Plymouth は plymouthAUR パッケージでインストールできます。開発版を使いたい場合は plymouth-gitAUR をインストールしてください。

GDM を使用する場合、gdm-plymouthAUR をインストールして、plymouth のサポートを有効にして gdm をコンパイルしてください。

plymouth フック

plymouthmkinitcpio.conf の HOOKS 行に追加してください。必ず baseudev の後に追加してください:

/etc/mkinitcpio.conf
HOOKS="base udev plymouth [...] "
警告:
  • encrypt フックで dm-crypt を使用する場合、encrypt フックは plymouth-encrypt に置き換えてください。置き換えないと TTY のパスワードプロンプトが表示されなくなります。
  • cryptdevice= パラメータで PARTUUID や PARTLABEL を使用すると plymouth-encrypt フックが機能しなくなります。

plymouth-encrypt フックの追加後に、入力したテキストがパスワードプロンプトではなく後ろに行ってしまう場合、initramfs に(カーネル)グラフィックドライバーを追加する必要があります。例えば、Intel のグラフィックを使っている場合:

/etc/mkinitcpio.conf
MODULES="i915 [...]"

別の plymouth フック (systemd)

mkinitcpio.confsystemd フックを使用している場合、plymouthsd-plymouth に置き換えてください。さらに、ハードドライブ暗号化を使っている場合、encryptplymouth-encrypt のかわりに sd-encrypt を使ってください:

/etc/mkinitcpio.conf
HOOKS="base systemd sd-plymouth [...] sd-encrypt [...]"

カーネルコマンドライン

ブートローダーのカーネルコマンドラインパラメータに quiet splash を設定してください。詳しくはカーネルパラメータを参照。

設定したら initrd イメージを再生成してください (詳しくは mkinitcpio の記事を参照):

# mkinitcpio -p linux

LTSカーネルを使用している場合は以下のようにする必要があります。

# mkinitcpio -p linux-lts

設定

スムーズな移行

スムーズな移行を有効にするには:

  1. ディスプレイマネージャのユニットを無効化してください。例: systemctl disable gdm.service
  2. 各ディスプレイマネージャに対応する plymouth のユニットを有効にしてください (GDM, LXDM, SLiM, LightDM, SDDM のユニットが存在します)。例: systemctl enable gdm-plymouth.service

起動を遅らせる

バージョン 0.9.0 から、plymouth には /etc/plymouth/plymouthd.conf に設定できる新しいオプションが存在します:

/etc/plymouth/plymouthd.conf
[Daemon]
Theme=spinner
ShowDelay=5

起動が早い環境では、ディスプレイマネージャやログイン画面が表示される前にスプラッシュ画面が一瞬しか表示されない場合があります。ShowDelay を設定することで秒数単位で起動を長くすることができます。デフォルトは5秒間ですが、短くすることでスプラッシュ画面が早く表示されるようになります。

テーマの変更

Plymouth には以下のテーマが付属しています:

  1. Fade-in: 光る星がフェードイン・アウトするシンプルなテーマ。
  2. Glow: ブートプログレスのパイチャートが表示されロゴが浮かび上がるテーマ。
  3. Script: スクリプトサンプルプラグイン (ナイスな Arch ロゴテーマ)。
  4. Solar: 青い炎が上がる星と宇宙のテーマ。
  5. Spinner: ロードの歯車が表示されるシンプルなテーマ。
  6. Spinfinity: 画面の中央に無限マークが表示されるシンプルなテーマ。
  7. (Text: 3色のプログレスバーのテキストモードテーマ)
  8. (Details: 古臭いフォールバックテーマ)

AUR から他のテーマを追加でインストールすることもできます。plymouthAUR に依存しているパッケージを見てください。

インストールされているテーマは以下のコマンドで確認できます:

$ plymouth-set-default-theme -l

または:

$ ls /usr/share/plymouth/themes
details  glow    solar       spinner  tribar
fade-in  script  spinfinity  text

デフォルトでは spinner テーマが使われます。テーマは /etc/plymouth/plymouthd.conf を編集することで変更できます。例:

/etc/plymouth/plymouthd.conf
[Daemon]
Theme=spinner
ShowDelay=5

Ctrl+Alt+F2 を押してコンソールを切り替えて、root でログインしてから以下のコマンドを実行することで一時的にテーマを確認できます:

# plymouthd
# plymouth --show-splash

プレビューを終了するには Ctrl+Alt+F2 をまた押してから以下のコマンドを実行してください:

# plymouth --quit

テーマを変更したら、カーネルイメージを再生成する必要があります:

# plymouth-set-default-theme -R <theme>

再起動して変更を適用してください。

Hidpi

plymouthd.confを編集

/etc/plymouth/plymouthd.conf
DeviceScale=<an-integer-scaling-factor>

編集が終わったらinitrdを再構築します。

ヒントとテクニック

カーネルメッセージの表示

"Home" (または "Escape") キーを押すことで起動時のカーネルメッセージの表示を切り替えることができます。

Arch ロゴを置き換えてカスタムテーマを作る

次のテーマは Plymouth によって提供されている Arch Linux ロゴ (/usr/share/plymouth/arch-logo.png) を使用します: fade-in, script, solar, spinfinity。他のロゴを使いたい場合、テーマの *.plymouth ファイルを編集してください (*.script も編集する必要があることもあります)。そしてロゴを置き換えたい画像に置き換えてください。テーマを新しく作成したらパッケージを作成する必要があります。/usr/share/plymouth に変更を加えてもパッケージのアップグレードで置き換わってしまう可能性があるためです。

テーマをインストール・選択したら、initrd イメージを再生成して新しいスプラッシュを使ってください。

トラブルシューティング

plymouthd.confを編集するたびに、initrdを再構築する必要があります。

Plymouthをデバッグモードで実行する

カーネルパラメータにplymouth.debugを追加します。デバッグログが/var/log/plymouth-debug.logに保存されます、またはplymouth.debug=<ファイルの名前>を使用します。

Plymouthブートスプラッシュが表示されない

テーマがテキストではなくグラフィックである場合は、正しいグラフィックモジュールが/etc/mkinicpio.confに追加されていることを確認してください。 /etc/plymouth/plymouthd.confで、コンピューターの起動が速い場合は、ShowDelayを0に変更します。 一部のコンピューターでは、グラフィックスの初期化が遅い場合があるため、/etc/plymouth/ plymouthd.confDeviceTimeoutを8に変更します。グラフィックスの初期化に必要な時間はカーネルのバージョンによって異なるため、ブートスプラッシュがそうでない場合は、DeviceTimeoutの増加が最初の試みとして適切です。カーネルの更新後に表示します。

Plymouthブートスプラッシュがハング、フリーズ

バグが原因でudevフックがplymouth(git以外)をフリーズさせることがあります。その場合は、systemdフックを使用してください。参照

参照