試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Mandriva Linux 2009.0上のuswsuspについての覚え書き(前半)

ここではMandriva Linux 2009.0上でuswsuspによる休止状態を使用するためのメモを扱う。コマンドを使った作業も多いが、極力GUI(GNOME上)で作業できるようにし、スワップパーティション(もしくはスワップファイルを含むパーティション)の指定にはUUIDを用いるようにした。

  1. インストールするパッケージ
  2. 休止時におけるパーティションのデバイス名の指定
  3. 復帰時におけるパーティションのデバイス名の指定
  4. initrdの更新

インストールするパッケージ

パッケージマネージャRpmdrakeから「suspend」というパッケージを検索し、インストールする。更に、休止/復帰処理を支援するhibernate-scriptのhibernate」パッケージも同様に入れておく。
また、この記事では管理者権限の必要な操作を一般ユーザで行うためにgksudo(パッケージ名は「gksu」)を使用しているため、こちらも事前にインストールしておく必要がある。また、これを正常に動かすために、sudo使える状態にしておく必要もある。

休止時におけるパーティションのデバイス名の指定

休止時にスワップパーティションのデバイス名をUUID指定するために、/dev/disk/by-uuid/以下のリンクを指定する。復帰時には後ほど設定するカーネル引数のものが使用されることになる。
ファイル名: /etc/suspend.conf

resume device = /dev/disk/by-uuid/[UUIDの文字列]

このファイルは、端末や「アプリケーションの実行」ダイアログなどに

gksudo gedit /etc/suspend.conf

をコピペ後実行するなどして管理者権限で開き、編集する。
パーティションのUUIDを調べるには、Mandriva Linux コントロールセンターの「ローカルディスク - ローカルディスク - ディスクパーティションを管理」で「エキスパートモードに切り替え」を押すと見ることはできるが、選択(コピペ)はできない。「uswsusp(ユーザ空間で動作する休止状態支援ツール)を使用してスワップパーティションの指定にUUIDを使用する」のblkid-uuid.shを使用するとGUIを使用してコピペができる。

復帰時におけるパーティションのデバイス名の指定

カーネルの起動時に、どのパーティションから読み込むのかをresume=UUID=[UUID文字列]のオプションで指定する。
そのためには、/boot/grub/menu.lstを直接編集してもよいが、Mandriva Linux コントロールセンターの「起動 - 起動方法の設定 - 起動システムを設定」で、「次へ」で進んだ最後の段階で「linux」の項目を「変更」し、ダイアログが出たら「追加」欄に「[半角スペース1文字]resume=UUID=[UUID文字列]」を付け加えてOKし、完了(変更を反映)する。

initrdの更新

復帰時に使用される設定ファイルは、Ubuntuのときと同様*1初期RAMディスクイメージ(initrd/initramfs)の中/etc/suspend.confとなる。
システム上の/etc/suspend.confを書き換えて設定を変更した場合、initrd側の同ファイルも変更する必要があり、これにはmkinitrdを使用し、端末や「アプリケーションの実行」ダイアログなどに下をコピペして実行する。

gksudo "sh -c 'yes | mv /boot/initrd-$(uname -r).img{,.old} && /sbin/mkinitrd /boot/initrd-$(uname -r).img $(uname -r) && zenity --info --text initrdの更新が完了しました'"

コマンド実行後しばらくすると、新しいinitrdが作成される。
前回のinitrdに戻すには、同様に下のコマンドをコピペして実行する。

gksudo "sh -c 'yes | mv /boot/initrd-$(uname -r).img{.old,}'"

なお、スワップ(ファイルではなく)パーティション使用時で/etc/suspend.confの設定を全て既定値で使用したいのであれば、initrdの更新は必要ない。

使用したバージョン:

  • suspend(uswsusp) 0.8-1.20080612mdv2009.0

*1:Ubuntuでは設定ファイルの名前がuswsusp.confになっている点が異なる