💻

Kubuntu 25.04をノートPC向けに設定する

に公開

Kubuntu 25.04をノートPC向けに設定する方法を説明します。このエントリでは以下について説明します。

  1. 暗号化ボリュームでの休止(Hibernation)の設定方法。
  2. スリープ後に休止に入る(suspend-then-hibernate)設定方法。
  3. 電源ボタンや蓋の開閉に対する設定。
  4. 充電制御。

Linux DesktopをノートPCで使うのは結構ハードルが高く、「ディスク暗号化、休止、充電制御」を3つ揃って実現するよう設定することが大変であったり、時に不可能だったりします。また、設定用のGUIが用意されていても設定可能なのは触りの部分だけで、細かい設定は設定ファイルに頼りがちです。

ところが、デスクトップ環境としてPlasma 6を採用しているKubuntu 25.04には、「設定ファイルで休止の設定さえしてしまえば、電源ボタンを押した時や蓋を閉じたときの動作、充電制御といった細かいところはGUIで設定できる」という面白い特徴があります。このため、ノートPCであっても実用性のある環境を比較的簡単に構築できます。

このエントリでは、KubuntuをノートPCにインストール方法を説明します。なお、解説するのは上記の電源周りの設定のみです。IMEの設定については多くの方が説明しているので割愛します。

  • Kubuntu 25.04
  • 富士通 FMV Lifebook U939/B

暗号化ボリュームでの休止(Hibernation)の設定

最初に休止(Hibernation)の設定を行います。インストール時にボリューム全体(実際にはブートローダーを除くルートボリューム)を暗号化しているものとします。

Kubuntu 25.04のインストーラは、スワップ領域をスワップファイルとして確保します。このファイルは暗号化ルートボリューム内部にあるため、ファイル自体は平文です。

スワップファイルの名前はswaponコマンドで知ることができます。

$ swapon
NAME      TYPE SIZE USED PRIO
/swapfile file 512M   0B   -2

Linuxは休止時のメモリはスワップ領域に保存します。私のPCの主記憶容量は8GBなので、512MBではとても足りません。では、どのくらい必要なのでしょう。

休止先としてのスワップ領域のサイズは、実は主記憶より小さくとも何とかなる場合があります

ただ、それでは賄えない場合も当然あります。じゃぁ、いったいどのくらいあればいいのでしょう。これについては「休止時に主記憶の内容をスワップ領域に退避する」というLinux方式では、退避できない最悪値がかならず存在するように思えます。余り悩まずに主記憶の倍くらいとって忘れるのが健康的に思えます。

今回は、スワップ領域を16GBに拡張します。拡張には以下のコマンドを実行します。

sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress
sudo mkswap /swapfile
sudo swapon /swapfile

スワップ領域をゼロから作るときには

  • スワップファイルに対する適切なアクセス・パーミッションの設定。
  • /etc/fstabへのスワップファイルの登録。

が必要です。しかし今回は既にあるスワップファイルを拡張するだけですので、これらの手続きは省略しています。

次に、スワップファイルが存在するボリュームのUUIDと、ファイルのボリューム内オフセットを取得します。これらは休止から復帰した際にカーネルに保存してある主記憶の内容の場所を教えるために必要です。

取得のためのコマンドは以下の通りです。

sudo findmnt / -o UUID
sudo filefrag -v /swapfile | awk '/ 0:/{print substr($4, 1, length($4)-2)}'

実行すると次のようになります。ここで、48caf60f-2bfc-40bb-b1f8-ad78575e0254がUUIDで、42883072がオフセットです。

$ sudo findmnt / -o UUID
UUID
48caf60f-2bfc-40bb-b1f8-ad78575e0254

$ sudo filefrag -v /swapfile | awk '/ 0:/{print substr($4, 1, length($4)-2)}'
42883072

UUIDとファイルのオフセットがわかったら、これらからカーネル引数を組み立てます。引数は以下のようになります。

resume=UUID=48caf60f-2bfc-40bb-b1f8-ad78575e0254 resume_offset=42883072

この引数を、/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT追加してください。

私のPCの場合、GRUB_CMDLINE_LINUX_DEFAULT以下のようになります(しつこいようですが、新しい引数は既にある引数に追加するようにしてください。私の設定をそのまま持っていくと、起動できなくなる可能性もあります)。

/etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT='quiet rd.luks.uuid=9da5cd01-d347-436f-9c8c-d5c8da748af6 splash'
+ GRUB_CMDLINE_LINUX_DEFAULT='quiet rd.luks.uuid=9da5cd01-d347-436f-9c8c-d5c8da748af6 splash resume=UUID=48caf60f-2bfc-40bb-b1f8-ad78575e0254 resume_offset=42883072'

/etc/default/grubの編集が終わったら、GRUBの設定をアップデートします。

sudo update-grub

カーネル引数をカーネルに与えるため、ここで再起動します。

再起動後、以下のコマンドを使ってPCが休止し、その後復帰できることを確認してください。

sudo systemctl hibernate

上手くいったら、最後にシステム・ポリシーを変更して、休止をOSのメニューに表示するようにします。/etc/polkit-1/rules.d/10-enable-hibernate.rulesを作って、以下の内容を書き込んでください(以前は/etc/polkit-1/localauthority/配下に設定ファイルを作っていましたが、Ubuntu 24.04で場所と記法が変更になりました)。

/etc/polkit-1/rules.d/10-enable-hibernate.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
        action.id == "org.freedesktop.upower.hibernate" ||
        action.id == "org.freedesktop.login1.handle-hibernate-key" ||
        action.id == "org.freedesktop.login1.hibernate-ignore-inhibit")
    {
        return polkit.Result.YES;
    }
});

なお、ArkWikiによれば、systemd v255移行がUEFI上で実行されている場合はresumeとresume_offsetをカーネルに渡す必要はありません。しかしながら、試した範囲ではこれらを渡さずに復帰することはできませんでした。

スリープ後に休止に入る(suspend-then-hibernate)設定

単純なスリープ(suspend)だと、電池が切れた場合に作業内容が失われます。これを避けるために、ハイブリッド・スリープとスリープ後に休止に入る機能(suspend-then-hibernate)が用意されています。

名前 動作
HybridSleep スリープと同時に休止用のデータを保存する
Suspend-then-Hibernate スリープ後、一定時間後に休止に移行する

HybridSleepには電池が持つ限り何時でも即座に復帰できる利点があります。一方で、数日程度で電池が干上がってしまうため、その後しばらく放置しておくと電池に不可逆なダメージを与えてしまいます。

Suspend-then-Hibernateは、休止に移行した後は電池を消費しません。そのため数か月程度放置することができます。しかしスリープではなく休止からの復帰になった場合、少し待つことになります。

実はHybridSleepもSuspend-then-Hibernateもデフォルトで機能が有効になっています。しかし、Suspend-then-Hibernateでどのくらい待った後に休止に移行するかという時間指定がデフォルトでなされていません。そこで、これを設定します。

まず、/etc/systemd/sleep.conf.dディレクトリを作り、そこに/etc/systemd/sleep.confをコピーします。

cd /etc/systemd
sudo mkdir sleep.conf.d
sudo cp sleep.conf sleep.conf.d

そして、/etc/systemd/sleep.conf.d/sleep.confを以下のように編集します。

/etc/systemd/sleep.conf.d/sleep.conf
[Sleep]
#AllowSuspend=yes
#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
#SuspendState=mem standby freeze
#HibernateMode=platform shutdown
#MemorySleepMode=
HibernateDelaySec=900
#HibernateOnACPower=yes
#SuspendEstimationSec=60min

ここでは、HibernateDelaySecを900秒(15分)に設定しています。つまり、スリープに入って15分後に休止に移行します。

設定が済んだら再起動します。

電源ボタンや蓋の開閉に対する設定

休止周りの設定が終わったら、残りの細かい部分はGUIでやっつけることができます。

System SettingsPower Managementを開くと、電源の状況に応じてイベントに対してどのように反応するか、またスリープ種別を細かく定義できます。

ここでそれぞれの言葉の意味を説明しておくと以下のようになります。

用語 説明
電源の状態 AC動作、バッテリー動作、低バッテリー状態等
イベント 放置が続いた、電源ボタンを押した、蓋を閉じた等
反応 スリープに入る、休止に入る等
スリープ種別 スリープ、ハイブリッドスリープ、一定時間後休止等

GUIについては見てもらえば説明は不要でしょう。電源状態はタブになっており、それぞれの状態に応じて設定を細かく調整できます。


電源状態毎の設定

充電制御

上のPower Managementで、Advance Power Settings...をクリックすると、さらに詳細を設定できます。

ここでは、バッテリーの充電具合に応じて

  • 何パーセントまで下がったら低バッテリー状態(low battery)とするか。
  • 何パーセントまで下がったら危機的状態(critical level)とするか。
  • 危機的状況において何をするか。
  • 何パーセントに達したら充電をやめるか。

を、設定することができます。


低バッテリーと充電制御の設定

おまけ

Kubuntu 25.04から、「マウスが接続されている時にタッチパッドを無効にする」ことができるようになりました。とても便利です。

マウスを接続しているときにタッチパッドを無効にする

Discussion