サイレントブート

提供: ArchWiki
2018年3月31日 (土) 21:57時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

このページは、外観をスッキリさせたいなどの理由で、システム情報の表示を出来るだけ少なくしたい人のための情報を載せています。以下のガイドに従うことで起動時に表示されるテキストを全て消すことができます [1]

カーネルパラメータ

ブートローダーの設定オプションを使ってカーネルパラメータを変更して、以下のパラメータを指定します:

quiet vga=current

vga=currentFS#32309 のような問題のある挙動を発生させないようにするカーネルパラメータです。

上記のカーネルパラメータを設定してもメッセージがコンソールに表示される場合、おそらく dmesg が重要と思われるメッセージを送信しています。quiet loglevel=<level> を使うことで表示するメッセージのレベルを変更することができます。<level> は 0 から 7 の間の数字に置き換えてください。0 は最もクリティカルな情報だけを表示し、7 はデバッグ情報まで表示するレベルです。

quiet loglevel=3 vga=current

上記の設定は quietloglevel=<level> の両方を、この順番で使用したときにのみ適用されます (quiet が先)。loglevel パラメータはコンソールへの表示だけに影響します。dmesg 自体のレベルは変更されず、journal や dmesg コマンドでメッセージを閲覧することが可能です。詳しくは linux-docs パッケージの Documentation/kernel-parameters.txt ファイルを見て下さい。

起動時に systemd のバージョン番号が表示されないようにしたい場合、カーネルコマンドラインに udev.log_priority=3 を追加してください (ソース)。initramfs で systemd が使われている場合、rd.udev.log_priority=3 を追加してください。

initramfssystemd フックを使っている場合、initramfs の初期化で systemd のメッセージが表示されることがあります。rd.systemd.show_status=false を使うことでメッセージは無効化できます。もしくは rd.systemd.show_status=auto で成功メッセージだけ消すことができます (エラーの場合は表示されます)。quiet を使用すると自動的に systemd.show_status=auto が設定されますが、何らかの理由で initramfs の systemd は設定を認識しないことがあります。以下は systemd を使って起動するときに initramfs で全くメッセージを出さないようにするのにカーネルに指定する必要があるパラメータです:

quiet loglevel=3 rd.systemd.show_status=auto rd.udev.log_priority=3

Last login メッセージを消すには touch ~/.hushlogin を実行してください。

sysctl

コンソールからカーネルメッセージを消すには 以下 のように kernel.printk 行を追加・修正してください:

/etc/sysctl.d/20-quiet-printk.conf
kernel.printk = 3 3 3 3

startx

startx メッセージを消したい場合、以下のように .bash_profile などで出力を /dev/null にリダイレクトすることができます:

警告: Xorg 1.16 以上で rootless ログインをする場合、Xorg#リダイレクトが機能しないを参照。
$ [[ $(fgconsole 2>/dev/null) == 1 ]] && exec startx -- vt1 &> /dev/null

fsck

起動時の fsck メッセージを消すには、systemd に root ファイルシステムをチェックさせてください。まず /etc/mkinitcpio.conf の HOOKS から fsck を削除:

HOOKS=(...) 

そして次を実行:

# mkinitcpio -p linux

/usr/lib/systemd/system/ にある systemd-fsck-root.servicesystemd-fsck@.service ファイルを /etc/systemd/system/ にコピーして、編集し、StandardOutputStandardError を以下のように設定します:

(...)

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/systemd/systemd-fsck
StandardOutput=null
StandardError=journal+console
TimeoutSec=0

systemd-fsck に指定するオプションの情報は こちら を見て下さい。サービスがファイルシステムをチェックする(しない)頻度を変えられます。

点滅するコンソールカーソルを消す

上記の設定をしてもコンソールカーソルは点滅し続けます。カーネルに vt.global_cursor_default=0 を設定することで点滅を止めることができます [2]

tty でカーソルを元に戻すには以下を実行:

# setterm -cursor on >> /etc/issue

GRUB の表示を消す

非公式の grub-silentAUR パッケージをインストールすることで、GRUB の起動メッセージを消すことができます。

インストールしたら、GRUB を適切なパーティションに再インストールしてください。

そして /etc/default/grub.silent を参考に、/etc/default/grub に必要な変更を加えてください。

以下の3行は必須です:

GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT
ノート: GRUB_TIMEOUT=0GRUB_HIDDEN_TIMEOUT=1 (または他の正数値) を設定する場合、GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT の代わりに GRUB_RECORDFAIL_TIMEOUT=$GRUB_HIDDEN_TIMEOUT と設定してください。そうしないと起動時に Esc を押しても GRUB メニューは表示されません。

最後に、grub.cfg ファイルを再生成してください。