/var/log/journalは移動できない

systemd以降、OSログは/var/log/journal以下へ保存される。圧縮ファイルになるが、それでも、放置していると、かなりの量になる。4〜5年運用している私のホビーマシンでは、860MBの蓄積があった。

組込では、ログ領域を移動したいシーンが時々ある。まぁ、どこかに設定ファイルがあって、移動は簡単だろうと思いきや、調べてもなかなかパラメータ設定が出て来ない。ユーザランドgrep検索しても設定ファイルが浮き上がらない。

まさかとは思いつつ、systemdのソースコードを見たら、その、まさかのコチコチのハードコーディングだった。
例)https://github.com/systemd/systemd/blob/master/src/journal/journalctl.c

それでも無理やり移動させるなら、systemdが実行される前に、/var/log/journalのマウントポイントを変えるしか無い。それを実施できる機会は、初期RAMDISK(initrd)内でのスクリプトである。initrdが無いプラットホームでは、Kernel起動パラメータ「init=」で/sbin/init以外の自作スクリプトを指定し、そこで対処する。

備考:
Kernelが最初に走らせるプログラムは/sbin/init。初期RAMDISK(initrd)がある場合は、initrdに含まれる/sbin/initとスクリプトが実行され、最後にHDD等のユーザランドchroot(pivot_root)される。その時に、今度は、HDDの/sbin/initが実行される。そのHDDの/sbin/initは、systemdへのシンボリックリンクである。