Debian Stretchにアップグレードしてブートログを使いたかったので、bootlogdサービスをインストールする必要があることがわかりました。問題は、ステータスが「ブロック済み」であり、次のことを行うときです。
sudo systemctl unmask bootlogd.service
エラーは表示されませんが、後で実行すると次のようになります。
sudo systemctl enable bootlogd.service
次のエラーが発生します。
Synchronizing state of bootlogd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable bootlogd
Failed to enable unit: Unit file /lib/systemd/system/bootlogd.service is masked.
開始ログを取得するためにこのサービスを有効にする方法。
答え1
[...]起動ログを取得する方法。
journalctl -b
表示されるメッセージは、rsyslogによって/var/log/の下のさまざまなログファイルにもコピーされます。
デフォルトでは、Debian は永続的なロギングに rsyslog を有効にしています。このデフォルトでは、journalctl
一時的に保存された最新のメッセージのみが表示されますjournald
。
通常、ログの永続ログを有効にすることをお勧めします(必要に応じてrsyslogを実行することもできます)。検索機能が利用可能な場合は、journalctl
特により多くのソフトウェアがシステムログに書き込まれるため、非常に便利です。たとえば、最後の起動を要求するログを使用できますjournalctl -b -1
。次のように永続ロギングを有効にできます。
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
-https://gist.github.com/JPvRiel/b7c185833da32631fa6ce65b40836887
bootlogd.serviceを有効にしても役に立ちません
+ echo "(Booted up using systemd which doesn't write logs to system console. Please check 'journalctl -b' instead.)" > /var/log/boot
- Debianのバグレポートログ#791907、添付ファイル0001-bootlogd-mention-it-won-do-anything-under-systemd.patch
全体の物語は上記ではありません。 Systemd はコンソールにメッセージを書き込みません。Debian のデフォルト設定でquiet
ここで、システムはカーネルコマンドラインのオプションを使用して起動します。また、サービスが開始されない場合はコンソールメッセージが開きます。私はこれについていくつかの詳細を書きました。ここ。
発生したsystemctlエラーメッセージ/動作は不幸と見なすことができます。適用されたパッチについてフォローアップしたことを覚えている人がいる場合
systemdパッケージが正しく機能するためには、bootlogd.serviceマスクを削除する必要があります。
これにより、systemctlエラーメッセージが消え、/var/log/boot
以前に参照したメッセージのみを使用して起動時に生成する必要があります。しかし、私はこれに反対すると助言します。使用されているコンソールリダイレクト機能bootlogd
も使用すると予想され、plymouth
競合が発生します。この紛争がどこにつながるのかわかりません。plymouth
ディスク暗号化パスワードの入力を求めるメッセージなど、特定の状況で信頼できるので、そのままにしておきます。
ただし、plymouthが作成され、/var/log/boot.log
起動中にコンソールに記録されたすべての内容を表示する必要があります。少なくともこれはFedoraとUbuntuで使用されるファイルです。 明らかに、一部のUbuntuバージョンでは完全に信頼できないようです。。
ところで、あなたが見るエラーメッセージを生成する奇妙な組み込みマスクも使用されたメカニズムです。systemdが内部的に再実装するsysVinitブートスクリプトを実行したくない場合。