Catalinaで気になる「あの画像」

デスクトップを専有するユーザを切り替えるとき、カレントユーザをログアウトさせてから他のユーザがログインすることがUNIX系OSの常道だが、macOSにはログアウトせずにユーザを切り替えできる「ファストユーザスイッチ」がある。1人が1台のノート型機を使うことが当たり前の現在、この機能を知らない向きも多そうだが、ユーザによって環境を切り替える筆者のような人間にはありがたい機能だ。

しかし、気になることが1つ。ファストユーザスイッチでユーザ切り替え時に現れるログイン画面の背景画像だ(以下、ログイン壁紙)。カリフォルニア州南部の島ということも、時間帯によって明るさが変わることも承知しているが、夏に撮影した予讃線下灘駅の写真にできれば変更したい(近頃乗り鉄趣味なのだ)。システム環境設定の「デスクトップとスクリーンセーバ」パネルでは変更できないので、その背景を整理しつつ具体的な手順を紹介してみよう。

  • ログイン壁紙を変更するツールは、システム環境設定には用意されていない

  • 「Catalina.heic」には、色や明るさの異なるイメージが複数含まれている

立ちはだかる「SIP」の壁

ログイン壁紙は、システムのバージョンにより変遷がある。Yosemiteのときは、カレントユーザが「デスクトップとスクリーンセーバ」パネルで選択した画像にブラーがかけられたものが使用されていたが、Mojaveでは/Library/Desktop Picturesの「Mojave.HEIC」を無加工で表示するようになった。

Catalinaも「Catalina.HEIC」を表示する点ではMojaveと変わらないが、その置き場所が「/System/Library/Desktop Pictures」に変更された。これは痛い。もうログイン画面の壁紙は変えてくれるな、というAppleからのメッセージなのかと勘繰ってしまうほどだ。

なぜなら、Catalinaでは/System/Library以下の領域がSIP(System Integrity Protection、システム整合性保護)の対象とされているからだ。さらにシステムボリュームはRead Onlyでマウントされるため、管理者権限を持つユーザであろうと「Catalina.HEIC」を入れ替えることは許されない。

これを力づくでも"マイ・ログイン壁紙"に変更するには、Macをリカバリーモードで再起動しSIPを無効化したうえでシステム領域を読み書きできるようマウント、そのうえで「Catalina.HEIC」を差し替え、もう一度リカバリーモードでSIPを有効化してMacを再起動、という猛烈に面倒な手順を踏まねばならない。正直、下灘駅の写真を諦めてもいいような気分になってきたが、ここは勢いで突き進まねばなるまい。

  • Catalinaでは「rootless.conf」が更新されている

  • 自分好みの写真を「Catalina.heic」としてデスクトップに保存しておく

いざ、リカバリーモード

現在のmacOSはシステムの再起動が必要になる場面がかなり減ったため、立て続けに2回もリブートするとその面倒さに気を失いそうになるが、とりあえず完了させてみた。具体的な手順を以下に記したので、参考にしてほしい。

作業を終えてみると、自分好みのログイン画面はやはりいい。手間はかかったがやってよかった……と独り言ちていると、ロック解除時に表示される壁紙がCatalinaデフォルトのままだった。これは、ユーザが設定するデスクトップピクチャ(システム環境設定「デスクトップとスクリーンセーバ」で指定するもの)を変更しておらず、以前のキャッシュが残っているときに発生するもの。適当なデスクトップピクチャを指定してからMacをスリープさせれば、ロック解除時の壁紙も変更されるはずだ。

  • システムボリュームを読み書きできる状態でマウントする

  • 無事、下灘駅の写真をログイン壁紙にできた!

  1. ログイン壁紙として使いたい画像をHEICフォーマットに変換し、「Catalina.heic」(大文字/小文字は正確に)というファイル名で適当な場所に保存しておく。
  2. Macを再起動し、リンゴマークが表示される前にCommand-Rを押し続けリカバリーモードで起動する。
  3. メニューバーで「ユーティリティ」→「ターミナル」を実行し、Terminalを起動する。
  4. SIPを無効化するため、以下のコマンドラインを実行する。
  5. # csrutil disable
  6. メニューバーで「Apple」→「再起動」を実行し、Macを通常モードで再起動する。
  7. 再起動完了後ログインし、Terminalでシステムボリューム(/)のデバイス名を確認する。通常、「Macintosh HD」という名で「disk1s5」とされているはずだ。
  8. Terminalで以下のコマンドラインを実行し、システムボリュームを読み書きできる状態でマウントする。
  9. $ sudo mount -t apfs -wu /dev/disk1s5 /Volumes
  10. Terminalで以下のコマンドラインを順に実行し、ログイン壁紙を入れ替える。ここでは、新しいログイン壁紙がデスクトップ上に「Catalina.heic」という名で保存されているものとする。
  11. $ cd /System/Library/Desktop\ Pictures
    $ sudo mv Catalina.heic Catalina_orig.heic
    $ sudo mv ~/Desktop/Catalina.heic .
    ※:FileVault有効時には「diskutil apfs updatePreboot /」も実行すること
    
  12. もう一度Macをリカバリーモードで起動し、Terminalで以下のコマンドラインを実行する。
  13. Macを通常モードで再起動する。