Ubuntu 18.04 LTSとNVIDIAドライバーの組み合わせでサスペンド・レジュームができるようにする

私のUbuntu 18.04 LTSシステムでは、NVIDIAのGeForce 1050 Tiを搭載したグラフィックボードを使用している。ところがこの影響なのか、サスペンドから回復(レジューム)しようとすると、システムは動いているのだが画面が回復しないという症状が発生してしまっていた。

備忘録代わりとなるが、今回いろいろと組み合わせてうまく行ったので、その方法について書いてみることにする。

まず使用しているドライバーだが、nouveauと呼ばれるオープンソースのものではなく、NVIDIA提供のプロプライアタリなものを使っている(バージョンは390系)。これを最新のものにすることで、この問題が解決するケースもあるようだ。私の場合は残念ながらうまくいかなかった。

そこで取った手は以下の通り。

(1) /etc/default/grubを書き換える。起動時に読み込まれるコマンドを記した行、GRUB_CMDLINE_LINUX_DEFAULTにいくつか書き加えて、このような感じにする。書き換えたあとは、sudo update-grubコマンドの実行を忘れずに。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"

(ただし、nouveauドライバは使っていないので、ここは意味がないかも知れない)

(2) /etc/X11/xorg.confを作る。rootで何らかのエディタ(例えばgedit)を開いて、以下のような内容を足す。

Section "Device"
Identifier "Screen0"
Driver "nvidia"
VendorName "NVIDIA"
BoardName "GeForce GTX 1050 Ti"
Option "NvAGP" "1"
EndSection

ポイントはDriverの行と、最後のOptionの行である。BoardNameは自身のボードに合わせて適当なものを記入すればよい。

(3) 続いて、/etc/modprobe.d/blacklist.confを編集する。同様にrootでエディタを開いて、以下を追加する。

blacklist intel_agp

この状態で再起動する。これで、サスペンド・レジュームが有効になる(正確には復帰しても画面が真っ暗のまま、ということがなくなる)はずだが、念のため、コマンドラインから一度サスペンドをテストしてみるとよいだろう。

sudo pm-suspend

Grubで前に起動したシステムを記憶する

私は特にノートパソコンでUbuntuとWindowsのデュアルブートをよく使う。メインはUbuntuであっても、たまにWindowsが必要だったり、Windowsのアップデートをかける必要があるときがある。

一般的にUbuntuを導入すればデフォルトでUbuntuが起動するようになっているはずである。しかし、たまにはそうでないようにしたいときがある。
例えばWindows Update、とりわけWindows 10なら半年に1回ある大きなアップデート(アップグレード)のときにWindowsは何回も再起動するのだが、そのたびにGrubを見張ってGrubのWindows起動メニューを選ぶというのは面倒である。
かといって、Grubの設定を変更して常にWindowsを優先起動するほどではない…そんな悩みをお持ちの方も多いだろう。

そのような場合、Grubに「前に起動したシステム」を覚えさせる、という手がある。
例えば、前にWindowsを起動していれば、次回の起動時には自動的にWindowsが起動するようになる。もちろん、Ubuntuに変えたければ、起動時にUbuntuのメニューを選べばいい。

このようにするためには、Grubの設定ファイルを少しだけ修正する必要がある。
/etc/default/grubを管理者モードで編集する。コマンドラインで”sudo gedit /etc/default/grub”と入れるのがいいだろう。

そして、以下の2行を追加する、というか、GRUB_DEFAULTの部分はすでにあるはず(たいていは0となっている)なので、それを編集する。

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

(ウェブに出ている情報で、GRUB_DEFAULTだけ変更するように書かれているものもあるが、2行目も必要である。)

編集が終了したら、以下のコマンドを実行し、変更内容を反映させる。

sudo update-grub

GRUB_DEFAULTは、Grubの初期画面の何番目(何行目)をデフォルトで選択するかを示すもので、大抵はこれが0となっている。これは一番最初のエントリーをデフォルトで起動するというものであり、これを1、2などとすれば、デフォルトのエントリーを変えることも可能である。
ここを「saved」とすれば、前回に選択した起動システムを記憶してくれるので、Windowsを何回も再起動で選択しなければならない、といったときもただ放っておけばよい。
なお、Ubuntuに戻る際には、改めてGrub画面でちゃんとUbuntuを選ぶ必要がある。

LinuxとWindowsのデュアルブートで、両者をそこそこ使うような場合には便利なオプションだろう。

UbuntuでGoogleアカウントを使い分ける

職場と自宅、あるいは個人用でも複数といったように、今や複数のGoogleアカウントを持っている人は多いはずである。こういったとき困るのが、特にブラウザにおけるアカウントの扱いである。
以前使ったアカウントがそのまま残っていて、いちいちログアウト・ログインを繰り返さないと別アカウントを使うことができないというケースはけっこうある。
Ubuntu、あるいはそれに限らず、そのような場合の対応策について考えてみた。なお、ここでは基本的にFirefoxを使用した場合とする。Google Chromeであればもう少しスマートな解決方法はあるかも知れない。

まず、最も基本的(?)な方法は、ブラウザの使い分けである。アカウントAはFirefox、アカウントBはGoogle Chromeのように、複数アカウントをブラウザごとで使い分けるという手である。ただ、これではブラウザが固定されてしまって、ここのブラウザがもつ機能をそれぞれのアカウントで使うことができない。また、利用するアカウントが多い場合にはブラウザの数に追いつかないということも考えられる。

そこで、 Firefoxだけで使い分けることを考えよう。
Gmailだけであれば、FirefoxのアドオンであるX-Notifierが便利である。
X-Notifierは、複数のGmailアカウント(すなわち、Googleアカウント)を管理して、メールの着信を通知、自動的に複数のGmailタブを開いてくれる便利なアドオンである。
Googleアカウントの使用がGmailだけであれば、これで十分である。

ところが、Googleアカウントをほかにも(例えば、YouTubeやAdSense, Mapなど)細かく使い分けていて、ブラウザごとに変えたいという場合には、これではちょっと不十分である。
そこで、このような場合、ブラウザのウィンドウごとにGoogleアカウントを切り替える、Multifoxというアドオンを利用することにする。
Multifoxは、Firefoxの上部にボタンを持ち、アカウントを切り替えたいときにはそこから「プロファイル」(これはFirefoxでいう「プロファイル」とはまた異なるようである)を切り替えて対応する。別ウィンドウが別のGoogleアカウントになるので、Gmailはもちろん、YouTubeやAdSenseなどもウィンドウごとに別々のGoogleアカウントとして問題なく機能する。

ところが困ったことに、このMultifoxとX-Notifierは同時に使用できない(複数のGoogleアカウントには対応しない)。どちらかを選ばないといけないのだ。
そうすると、X-Notifierで便利だった通知機能はMultifoxにはないので、これが使えないのは痛い。

そこで登場するのが、Ubuntuの機能である「Unity Mail」である。
Unityという名前からもわかるように、これはUbuntuのユーザインタフェース機能、Unityの中に実装されている。Ubuntuソフトウェアセンターで「Unity Mail」で検索すると、候補の中にUnity Mailがあるので、それをインストールすればよい。

Unity Mailは、複数のGoogleアカウントのメール通知に対応している。メールの到達状況は、Unityのランチャーの中に、このような形で表示される。

Unity Mail

さらに、画面上部のアイコンも、メールが到達すると青色に変化して知らせてくれる。これで、メール通知も(一応)ばっちりということになる。
もちろん、画面右上にポップアップが出る、デスクトップ通知にも対応しているので、メールの到達はむしろX-Notifierよりわかりやすいかも知れない。

ただ残念ながら、Unity Mailは、どのアカウントからのメールが到着したのかまでは知らせてくれないので、どのアカウントに到着したのかがわからない場合には、それぞれのウィンドウを開けてメールをチェックしなければならない。その点が若干不便ではある。

Windowsでも同様の環境を構築する場合には、Gmail Notifierをデスクトップ常駐アプリとして使用し、同じようにMultifoxを使用すればよいだろう。
また、Unity Mailの設定画面をみるとお分かりかと思うが、メールの着信はIMAPでみている。もしご自身のメール環境がIMAPに対応している場合、IMAPサーバーとポート番号が分かれば、設定することによってUnity Mailでの新着通信に対応することは可能である。例えばYahoo!メールも可能である(と思われる。私自身試していないので…)。

私自身、GoogleアカウントはGmail以外にもかなり広範に使い分けしているので、試行錯誤の上こういうやり方にたどり着いている。また新しいやり方ができ次第、随時報告する。

6年もののネットブックを余ったSDカードで高速化してみる・続報 スリープ・ハイバネート不具合への対処

(ご注意) 現時点でも対処は継続中です。良好な結果が出次第、本エントリは随時更新されます。

以前のブログの記事にて、ネットブックに余ったSDカードを挿入し、それをスワップ領域として活用することで高速化を図るやり方を紹介した。ところが、この方法を採用すると、スリープやハイバネートが効かなくなるという問題点がある。
今回はそのための対処の方法である。(参考サイト: http://afrivirt.wordpress.com/2010/06/04/4/)

まず、内蔵ハードディスクのスワップ領域が残っていることを確認する。
スワップが内蔵ハードディスクの場合にスリープやハイバネートが正常であり、SDカードをスワップ領域にするとうまくいかないという場合には、スリープやハイバネートのときに、このSDカードのスワップ領域を使用停止にするとよい。もちろん、回復するときには改めて有効にすることも必要である。

そのために行うのは、/etc/pm/sleep.dというディレクトリの下に、ちょっと特別なファイルを作成することである。

端末から、

sudo gedit /etc/pm/sleep.d/11_sdcardswap

(ファイル名は任意だが、先頭の11_はあまり変えない方がいいだろう)と打ち込み、ファイルを作成する。このファイルは以下のような内容とする。

#!/bin/bash

case $1 in

hibernate)

echo “Turning off sdcard swap …”

swapoff /dev/mmcblk0p1

;;

suspend)

echo “Turning off sdcard swap …”

swapoff /dev/mmcblk0p1

thaw)

echo “Turning on sdcard swap …”

swapon -p 10 /dev/mmcblk0p1

;;

resume)

echo “Turning on sdcard swap …”

swapon -p 10 /dev/mmcblk0p1

;;

*)

echo “Wrong operation”

;;

esac

さらに、このファイルは実行可能にしておかなければならない。端末から以下のコマンドを打ち込む。

sudo chmod +x /etc/pm/sleep.d/11_sdcardswap

先ほど作成したファイルは、スリープ時やハイバネート時にSDカードへのスワップをOFFにし、逆にレジューム時やハイバネートからの回復時にはSDカードへのスワップを再びONにするものである。
ただ、このままでは、スリープやハイバネートのときにスワップがなくなってしまう(そうなると特にハイバネートのときにはたいへん困ったことになる)。そこで、改めてハードディスクのスワップ領域を有効にしておく。これは、/etc/fstabで記述する。
このときに、なるべくSDカード側のスワップ領域が使われるよう、スワップの優先度を変更しておくとよい。

/dev/mmcblk0p1    swap    swap   sw,pri=10  0   0

/dev/sda3               swap    swap   sw,pri=0   0   0

上記は、/etc/fstabにおけるスワップの部分だけの抜粋である。
オプション領域で「sw,pri=…」と記述されているのが、スワップ領域の優先度である。この場合にはSDカード領域(/dev/mmcblk0p1)の方をハードディスク(/dev/sda3)より高く設定している。

以上の作業が終わった時点で再起動し、設定を有効にすれば大丈夫なはずである。

…はずなのだが、現時点では、スリープはまぁまぁ動作する(しない場合もあるが、コマンドラインでsudo pm-suspendとするか、メニューから選ぶとほぼ間違いない)ものの、ハイバネートはほとんどダメである。
ひょっとして、Ubuntu 14.04だとうまくいく、ということもあるのかも知れないが、さすがにもう6年にもなるネットブックをいまさらアップデートするのも何なので、とりあえずUbuntu 12.04のままで対処方法を探ってみているところである。

Ubuntu起動画面(splash画面)が崩れてしまうときは

Ubuntuが起動するときには、「Ubuntu」の文字とロゴがしばらくの間表示され、その後ログイン画面、あるいは直接ログインする場合にはデスクトップ画面へ移行する。このシンプルだが美しい画面のことを「スプラッシュ画面」(splash画面)という。

昔のLinuxディストリビューションでは、起動時にはいろいろなサービスが起動する様子が延々と表示されていたので、それに比べるとシンプルで一般向けといえるだろう。さらに、このスプラッシュ画面は、いろいろなアプリのテーマのように着せ替えることもできるので、自分が気に入ったものを利用することも可能だ。

ところが、困ったことにこのsplash画面が非常にみにくいものに変わってしまうことがある。特に、起動時に画像ではなく、文字で「Ubuntu」と表示されるようなケースがある。
これは、ビデオドライバをプロプライエタリなものに変えた場合によく発生する。典型的なのがNvidiaのドライバで、これを利用するとたいてい、文字表示に変わってしまう。
もちろん、文字表示でもUbuntuの利用に実害は発生しないが、せっかく美しいデザインを誇るUbuntuのこと、できればもとの美しいスプラッシュ画面が出てくれるようにしたい。
このようなときに、以下のような方法にすると修復が可能なようである。

以下、Ubuntu 14.04でテストしている。なお、以下編集するファイルはいずれもシステム設定ファイルなので、慎重に編集すること。また、管理者権限でないと書き込みできないので注意する。端末を開き、

sudo gedit /etc/default/grub

のようにするとよいだろう。

<その1>

  1. 最初のUbuntu起動画面(grubの画面。背景が紫色)のところで、「C」を押して起動を止める。
  2. プロンプトが出るので、ここで「vbeinfo」と入力する。
  3. 数多くの解像度の組み合わせが出てくる。例えば「640x480x32」とあれば、640×480ピクセル、32ビット解像度での表示をサポートしているということである。この中から1つを選んで記録しておく。自分のディスプレイの解像度になるべく近いもの、そしてなるべく高い解像度のものを選んでおく。
  4. 「exit」と入力してgrubの起動画面に戻るか、Ctrl+Alt+Delを押して再起動する。
  5. このままコンピュータをブートし終わったら、作業開始である。まず、grubの設定を変更する。/etc/default/grubで、以下のようにある行

    #GRUB_GFXMODE=640×480

    の次の行に、以下のように書き足す。

    GRUB_GFXPAYLOAD_LINUX=1920×1080-32

    ここで、=のあとの部分は解像度と色のビット数である。先ほど起動時に調べた解像度と色のビット数を上の数字に当てはめて書いておく。この数字を間違えるとスプラッシュ画面がうまく起動しないので、もしうまくいかない場合はgrubでの解像度と色の数値をいろいろと試し、ここの部分を書き換えてみよう。なお、解像度と色の数値はできるだけ高いもののほうがよいようだ。

  6. 次に、/etc/initramfs-tools/conf.d/splashというファイルを編集する。ここにはただ1行、

    FRAMEBUFFER=y

    とだけ書く。

  7. 以下のコマンドを実行して、initramfsへの変更を有効にする。

    sudo update-initramfs -u -k all

  8. 以下のコマンドを実行して、grubへの変更を有効にする。

    sudo update-grub

  9. 再起動し、スプラッシュ画面が出てくるかどうかを確認する。

<その2>

「その1」の方法でスプラッシュ画面が出ない時には、先ほどのファイルに書いた解像度と色の数値が間違っていないことを確認した上で、さらに次のような変更を加えてみる。

  1. 先ほどと同様、/etc/default/grubを再度編集する。今度は、

    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

    と出ている行の先頭に「#」を加えてこの設定を無効化し、その下に以下のように書く。以下は1行である点に注意。

    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset video=uvesafb:mode_option=1920×1080-32,mtrr=3,scroll=ywrap”

  2. 同じく/etc/default/grubにおいて、

    GRUB_GFXMODE=1920×1080-32

    とある行があり、その先頭に「#」が入っていたら、それをとって、この行の設定を有効にする。なお、数値は先ほど述べた通り、grubでサポートされている解像度と色の数値のうち、いちばん高いものを選んでおく。

  3. 続いて、/etc/initramfs-tools/modulesファイルを編集する。このファイルの最後に、以下の1行を加える。

    uvesafb mode_option=1920×1080-32 mtrr=3 scroll=ywrap

  4. 「その1」の6.で行った、/etc/initramfs-tools/conf.d/splashファイルの作成を行っていない場合は、それを行う。
  5. 以下のコマンドを実行して、initramfsへの変更を有効にする。

    sudo update-initramfs -u

  6. 以下のコマンドを実行して、grubへの変更を有効にする。

    sudo update-grub

  7. 再起動し、スプラッシュ画面が出てくるかどうかを確認する。

<その3>
上記2つでもうまくいかない場合には、そもそもスプラッシュ画面が出せる状態になっているのかどうかを確かめよう。スプラッシュ画面を表示しているソフトはPlymouthというものである。これを実行してみる。

sudo plymouthd ; sudo plymouth –show-splash

これで画面が出るはずである。画面が出たことを確認できたら、Unityで端末を選んでおいて、

sudo plymouth quit

でPlymouthを終了する。

これで画面が出ない場合、plymouthの一部パッケージを追加する必要がある。追加して出るかどうかを確認しよう。

sudo apt-get install plymouth-x11

これで上記のPlymouth画面表示を試し、それでもダメであれば、さらに/etc/default/grubを以下のように編集する。
まず、

#GRUB_GFXMODE=640×480

という行があれば、その行の下に

GRUB_GFXPAYLOAD_LINUX=auto

という1行を加える。grubへの変更を有効にするため、update−grubを実行する。

sudo update-grub

再起動し、スプラッシュ画面が出るかどうか試して欲しい。

私の場合は、「その1」「その3」の組み合わせ、あるいは全てのケースを投入した結果うまく行っている。おそらくは「その1」「その2」だけで、解像度を正しく記述すればうまくいくかも知れないが、それぞれに違いがある可能性もあるので、上で記述した方法をいろいろ試してみて欲しい。

<参考>

6年もののネットブックを余ったSDカードで高速化してみる

いまから5〜6年前だろうか。「ネットブック」、あるいは「ミニノート」と呼ばれるコンピュータがはやったことがあったのを覚えていらっしゃるだろうか。
比較的能力の低いCPU、狭い液晶画面、小さなHDD、少ないメモリ領域という形で、性能をぐんと抑えつつ価格を5〜6万とものすごく安くしたコンピュータである。
ただ、その後間もなく登場したタブレット機器に押されて、一気に下火になり、今は店頭で見かけることもまずなくなってしまった。

さて、私の手元には、2008年9月に投入したこのネットブックがある。Acer Aspire ONE、AOA-150Bbである。
性能はといえば、

  • CPU…Intel Atom N270 (1.6GHz, デュアルコア)
  • メモリ…1GB (増設不可)
  • ハードディスク…160GB
  • プリインストールOS…Windows XP Home Edition

というものである。ちなみに、私が欲しいなぁと思っているタブレット、Xperia Z2タブレットでは、

  • CPU…Snapdragon 801 (最大2.3GHz, クアッドコア)
  • メモリ…3GB
  • 記憶容量…32GB
  • プリインストールOS…Android 4.4

と、ストレージさえ除けば処理性能は圧倒的に上回っている。もうそんなボロいネットブックなんて処分してしまえばいいとは思うのだが、そこは「もったいない」精神が働くというわけで、できる限り現役のまま使ってあげたいというのが私の気持ちである。

現在このネットブックは、Ubuntu 12.04 LTS(当然32ビット版)が動作している。以前はWindows XPとのデュアルブートであったが、XPのサポート終了に伴ってWindows領域を削除、さらにディスクパーティション構成を組み替えて、完全にUbuntu専用機になっている。
なお、さすがに処理性能を考えて、Unityは2Dとしてある。他の軽量デスクトップも考慮に入れてはあるのだが、持ち歩いて頻繁に使うこと、電源性能(サスペンド、ハイバネートのしやすさ)の問題で、重いがUnityを使用している。

で、これがどれだけ遅いのかということだが、簡単なベンチマークということで、Google ChromeとFirefoxを、起動後Unity操作可能時点で同時にクリックし、両方が起動する時間を測定してみることにした。Google ChromeもFirefoxも、数個のタブがすでに開いており、それを読み込みながら起動する設定となっている。

  • Google Chromeの画面(どこか1つ)が出てくる時間…4分10秒
  • Firefoxの画面(どこか1つのタブ)が出てくる時間…7分30秒

普通のコンピュータでブラウザ1つを立ち上げるのに7分かかっていたら処分した方がよいに決まっている。

このようにとんでもなく遅い原因はメモリ不足である。最近のブラウザであれば、数個タブを開いていれば1GBなんてあっという間に食ってしまう。つまり、ブラウザを立ち上げていると(もちろん、起動直後なので、他のプロセスも次々に起動しているが)メモリを食い、1GBを使い尽くすと、今度は仮想メモリ(スワップ)領域へのデータ移動が始まり、両方でディスクアクセスを取り合ってずっとディスクにアクセスしたままになる、という構図である。
(なお、この実験のときには、スワップのしやすさを表す数値 swappinessは通常の60から10へと変更して、よりスワップがかかりやすくしている。)

この遅いマシンを何とか改善したい。そこで目をつけたのは、使われずに自宅で放置されていた2GBのSDカードである。
Aspire ONEには2つのカードスロットがある。1つは右側にあるSDカード専用スロット、1つは左側にある、SDカードなどいろいろなカードを読み込めるマルチカードリーダースロットである。
作戦としては、このどちらかにSDカードを挿入、スワップ領域をこちらに移設して、高速なアクセスを実現させようというものである。
なお、大量のアクセス(読み書き)が発生するため、SDカードの寿命は著しく短くなってしまうが、もともと使われていなかったSDカードなので、そう惜しいという気持ちはない(もし皆さんが実践されるときには、その点よく注意して欲しい)。

作戦はこうである。

  • Aspire ONEのSDカードスロットにSDカードを挿入
  • 起動時にマウントさせるように認識、かつそれがスワップ領域であるようにする
  • スワップ領域をこのSDカードに割り当て
  • swappinessを調整してわざとスワップされやすいようにする

今回は、左側のマルチカードリーダースロットをスワップ用SDカードに割り当てた。これは、Ubuntu上では/dev/mmcblk0p1として参照することができる。
普通に挿入するとリムーバブルメディアとして認識されてしまうので、まずマウントを解除、次にディスク領域をスワップ領域として確保する。これは、Ubuntu付属の「ディスク」ツール、GParted、コマンドラインからであればfdiskなどいずれかで可能である。これらでSDカード領域をまるごとスワップ領域にする。

最後に、起動時に必ずマウントされるようにするため、/etc/fstabをちょっとだけ改良する。もしもともとスワップ領域を設けているのであれば、そのエントリーを参考に次の行を付け加える。なお、もともとあるスワップ領域の行は消さないで、先頭に「#」を入れておき、コメントで無効にする。

/dev/mmcblk0p1 none swap sw 0 0

これでOKだ。再起動するか、

sudo swapoff /dev/sda4 (デバイス名は機器によって変更すること)
sudo swapon /dev/mmcblk0p1

を実行すれば、新しいSDカード上のスワップ領域が有効になる。cat /proc/swapsにより、スワップ領域の使用状況を確認することが可能だ。一応、確認しておこう。

次は、スワップしやすくしてしまう(積極的にメモリからSDカードに「吐き出す」)設定である。これは、swappinessという数値をいじる。この値は、スワップのしやすさを表す数値で、0に近づくほどスワップしにくくなる。通常は60であり、最近の大容量メモリを搭載した機種では10や0という値をとることも珍しくないが、今回は逆に、80や90という値にしよう。これを設定するのは、/etc/sysctl.confというファイルである。ここに1行、こういうふうに記述する。

swappiness = 90

再起動してこの設定を有効にすれば、準備完了である。
それでは、どのくらい速くなったかを調べてみよう。先ほどと全く同じ設定で、起動直後にGoogle ChromeとFirefoxを起動して、両者のタブ(のうち1つ)が操作可能になる時間を測定する。まず、swappinessが60(デフォルト値)の場合。

  • Google Chrome…3分33秒
  • Firefox…2分ちょっと(10秒程度。このとき計測がうまくいかなかった)

まぁもちろんまだ遅いといえば遅いが、先ほどのケースからすれば劇的に改善された。さらに、swappinessを90とし、preloadを有効にした上で(いままではメモリが少ないので有効にしなかった)改めて測定する。

  • Google Chrome…2分40秒
  • Firefox…2分10秒

となる。Google Chromeで性能が向上しているのは、タブあたりのメモリ割り当てが多いGoogle Chromeで効果が顕著に出ていることを示していると思われる。
もちろん、Firefoxが起動して2分もかかって表示されるのはそれでもイライラするかとは思うが、起動したあとしばらく待ってマシンが落ち着いてから起動するようにするなど、運用を工夫すれば若干気分的にも改善できると思う。
なお、この時点でスワップ領域の消費量は300MBほどで、2GBのSDカードの10数パーセントである。

いろいろ書いたが、この方式は、いってみればWindowsのReadyBoostと同じような考え方で、HDDよりは高速な半導体デバイスに記憶領域を間接的に移動させるというアイディアである。
同じ考え方はデスクトップ機にも応用可能である。例えば、使用していない2GBや4GBのUSBメモリなどが余っているのであれば、それらをスワップとして割り当ててやれば、メモリが少ないマシンでも高速化の効果が出る可能性はある。

ただ、この設定で運用を行って以来、サスペンドやハイバネートが効かなくなってしまった。
サスペンドについては原因が不明である。
ハイバネートは、このSDカードの領域が足りないためと推測される(Write errorが出るのだが、SDカードそのものの検査を行ってもディスクエラーは確認されない)。そこで、ハイバネートをかけたい場合、いったん無効にしたHDD上のスワップ領域を有効にする。

sudo swapoff /dev/mmcblk0p1 && swapon /dev/sda4

これでハイバネートは元に戻るが、運用上面倒ではある。このあたり、いいアイディアがあれば追求してみたいが、もう6年ものとなっているネットブックがいつまで持つかという点も問題ではある。

【2014年8月28日追記】その後のスリープ・ハイバネート対応を別記事にまとめてみました。参考になさってください。

Ubuntu 14.04 “Trusty”がいい感じ

この4月にリリースされる予定のUbuntu 14.04 “Trusty Tahr”、私も次期プラットホームになる予定なので、アルファ段階からのテストに入っているが、予想外に安定していることにちょっとびっくりである。

Trusty-snapshotTrustyはその名の通り、「信頼できる」という雰囲気を大きく感じさせるリリースである。
基本的に13.10などからの大きな変化はない。もちろん、ユーザインタフェースなどの細かい点ではいくつかの違い(改善)がみられるが、基本的には、Unity,上部アプリケーションバーといった画面構成などに変更はまったくなく、むしろそれをうんとブラッシュアップした感じとなっている。

アルファ版からの使用感にしても、もちろんアルファならではのとんでもないエラー勃発などはあるにしても、全体に非常に安定しており、また、12.04 LTSのユーザである私からみても大きな戸惑いを感じない設計となっている。

12.04 LTSは、確かにPreciseというニックネームでデビューしたが、実際のところはどこまで”Precise”であったかという点でやや疑問が残るリリースであった。とりわけUnity、あるいはそれにまつわるCompizなどはあまり安定しているとはいえない部分もあったし(度重なるアップデートでずいぶん改善されたが)、私もこれを2年使うというのはちょっとつらい部分もあった。正直今ですら13.10にアップデートしようかと思うくらいである(もう14.04が待ち構えているのでやらないが)。

特にプリンタ周りでは12.04 LTSには相当苦労させられた。もともと、Ubuntuは印刷機能が弱点の1つではあるのだが(これはUbuntuに限らず、Linux全体にいえることだが)、12.04 LTSはかなりこれがひどかった。職場のマシンではプリンタがハングアップするトラブルにいくども出くわし、自宅のマシンではブラウザからプリントアウトすると画面が真っ黒になるというトラブルが出る有様。
前者はアップデートが出たのだが、そのアップデートを適用しても治らないケースが多発。後者については私だけの症状だからなのかLaunchpadでも放置されたままである。
ただ、仕事で使っている私のようなユーザにとってはプリンター使用は必須であるだけに、12.04 LTSのような悲惨なプリンタサポートではちょっと困るのである。

14.04についてはまだ実機をつなげてのプリンタテストは行っていないが、ネットワークプリンタの使用だけに限定していえば、スピードの改善などがみられ、期待を持たせてくれる。

その他の点でみても、12.04 LTSではなかった「再起動」メニューが追加されていたり、細かな点での改良の積み重ねがいい感じで効いてきている。
4月のリリースが待ち遠しい。

ThinkPad HDDのSSDへの交換 (X220編)

続いて、メインマシンであるX220のSSDへの交換へと移りました。

今回の場合やっかいなのは、ファイルシステムが2種類(正確には3種類)あることです。このマシンは半分をWindows,半分をLinux (Ubuntu)のデュアルブートとして構成しているので、Windows用のNTFS、Linux用のext4という2つのファイルシステム(さらに、Linuxのスワップ領域)が混在しているのです。このため、通常のNTFSしか想定していないディスククローニングツールではコピーができません。実際、X61で使用したNTI Echoを使っても、ext4領域は認識すらしてくれません。

また、当初320GBだと思って買ってきたIntel SSD 320が、実際の容量としては300GBであったことが判明。このため、X220の換装もパーティションを縮小してコピーする必要が出てきてしまいました。
そこで、すべきこととして、

  • まず、ファイルシステム全体を縮小し、300GBに収まるように調整する。
  • 次に、ディスク全体をコピーする。不可能であればパーティションごとにコピーをする。
  • ブート領域(MBR)をコピー

という3段階のステップを踏むことにしました。

まずはファイルシステムの縮小です。NTFSの縮小は、Acronis Disk Directorを使用しました。Parted Magicはこの時点ではまだ不安があったので使用しませんでした。
一方、ext4の領域変更はParted Magicを使用。私のコンピュータでは、/パーティションと/homeパーティションの2つの領域を作っているのですが、/領域にかなり空きがある一方で、/home領域が若干ディスクを圧迫しているので、領域の再デザインも一緒に実行しました。

続いて、ディスク全体のコピー。Parted Magicでもやはり縮小コピーができなかったので、Parted Magicを使って、NTFSとext4についてパーティションごとにコピーを行っていきました。NTFSもext4も、コピーは問題なく終了です。

最後はMBR領域のコピー。これについては、原始的な(苦笑)ddコマンドを使用します。
dd if=/dev/sda of=./sda.mbr count=446 bs=1
dd if=./sda.mbr of=/dev/sdb
ここで、count=446としてあるのは、MBRのうちブート部分だけをコピーしたためです。512としますとパーティションテーブルもコピーすることになりますが、当然2台のディスクのパーティションテーブルは異なっているので、もし512でやってしまうと大変なことになります(実際一度やって、コピー先のディスクのパーティションを消してしまいました)。

さて、これで起動…
…してみると、うまく起動しません。
どうやら、起動用のgrubは隠し領域を持っているようで、これがうまくコピーできなかったためのようです。

そこで今度は、Parted Magicについてきた、grub doctorを使用します。その名の通り、grubに問題が発生した際に診断をしてくれるという便利なツールであります。grub doctorを起動すると、いくつか対話的な質問が出てきます(例えば、どの領域にgrub.confがあるか、など).それに間違いなく答えれば、再度grub領域を作成してくれるというわけです。2〜3の簡単な質問に答えて、無事インストールされたことを確認、再度起動すると…
うまくいきました! grub画面が出てきて、Linux (Ubuntu)もWindowsもちゃんと起動してくれます。

今回いちばんの問題だったのは、ディスクそのものの挿入でした。
Intel 320 SSDシリーズは、SSD本体の上に、黒い枠のようなものがついてきます。どうもこのSSDはデスクトップマシンにインストールされることを考えているようなのですが、この黒い枠があるおかげで、X220のハードディスクスロットの入口につかえてしまって入らないのです。試しに黒い枠を外そうとしましたが、この枠を止めているネジはSSD全体を固定する機能も兼ねているためにそうもいかず。
そこで、またもやX220の分解です。
X220の裏側のネジを外し、本体全体をゆるめます。さらにキーボード固定部分も外してキーボードを取り外します。こうすると、HDD/SSDを入れるスロットの上のカバーがみえるようになります。このカバーを少し浮かせながら、まず入口から斜めにSSDを差し込み、十分入ったら水平にスライドさせて、コネクタとつなげます
…というもののこれがまた非常に難しい。1時間近く格闘した挙句、何とかつなぐことに成功しました。また、X220にもともとついてきたゴムの制振部材やケージについては、取り外さざるを得ませんでした。もっとも、黒い枠がついたままのSSDは容積ぴったりに収まっているので、十分固定されて振動に耐えるようになっています。おまけにSSDは振動に強いですし。

こうして、SSDの換装が成功しました。
今のところ、X61ほどの加速感はあまり感じませんが、特にWindows側では全体的な速度の向上を感じます。LInux側はあまりスピーディになったという印象を受けませんが、今のところ問題は発生していません。
また、X61で発生した、Windows Updateなどができなくなってしまう問題は、X220では発生していません。
電池の持ち時間についても、X220ではあまり変わらないようにみえます。ただ、私の使い方が、電池でほぼフル活用するというやり方なので、節電にあまり寄与していないかも知れません(液晶バックライトがかなり電力を消費している可能性が高いです)。

いずれにしても、X61に続き、X220でも快適なSSDライフを送ることができるようになりました。

Microsoft Office for Ubuntuの衝撃

先日、こんなニュースが流れていました。

これらの記事に書かれているのは、Microsoftが2014年頃をめどに、Linuxの1ディストリビューションであるUbuntuに対して、Microsoft Office(のネイティブ版)を提供する可能性がある、というものです。

数年前であれば、LinuxをベースとしたOSに対してMicrosoftがソフトウェア、それも自社のソフトウェアの中核であるMS Officeを提供するなどということは全く考えられませんでした。私がもしそんなことを言ったとしたら、「熱でもあるんじゃないか?」と軽くあしらわれたことでしょう。

しかし、この数年で、OSを取り巻く状況は随分変わってきています。
まず、Microsoftは、Linux、あるいはオープンソースに関して、かつてのような敵対的姿勢を転換させています。オープンソースに対して最近ではMicrosoftが有力なコントリビュータであることは、オープンソースに携わっている方ならよくご存知の事実です。
基本的に、オープン標準、オープンシステム上で自社ビジネスを展開していくことがMicroosoftの方針となっているようで、現に、ウェブでは業界標準のHTML5を基盤としていくことを標榜しています。
オフィスソフトの分野でも、OOXMLという文書規格(これ自体はいろいろと問題はありますが)をオープン規格にして、従来の囲い込みの姿勢を脱出しようとしてきているようにみえます。

次に、記事でも指摘されていますが、デスクトップLinuxのシェアが次第に伸びているということが挙げられます。もちろん、Windowsのシェアの90%以上、などというのには遠く及びませんが、現時点では各種調査により、大体1%強のシェアはあるみたいです(まぁ、ディストリビューションごとでいうとまたいろいろあると思いますが)。
さらに、このデスクトップLinuxを採用しているところが、公共団体や自治体など、オフィス分野に特化しているという点も注目です。オフィスソフトを買うかどうかわからない個人客ではなく、確実な購入がみこめる(かも知れない)業務分野でLinuxデスクトップが浸透しつつあるということは、ここに確実な収入源があるとMicrosoftが考えたとしてもおかしくないでしょう。

さらに、ターゲットがUbuntuというところもポイントです。
Ubuntuはスケジュールがしっかりしたリリース方針や、自前のUbuntuソフトウェアセンターなどで、ユーザを確実につかむ(というか、囲い込む)作戦をとっています。また、バックにはCanonicalという会社もあってサポート体制も万全。
つまり、サポートできるOS(というかディストリビューション)を絞り込め、サポートをCanonicalと共同、あるいは委託して行うことができ、さらにはソフトウェア購入をUbuntuソフトウェアセンターから行えるようにできるという意味で、ソフト販売プラットホームとして他のLinuxディストリビューションから一歩抜きん出ているといえるでしょう。ちなみに来年(2014年)は長期サポート版のリリース年でもあり、この14.04 LTSがターゲットとなる可能性があります。

今回のMS Office for Ubuntuだけをみるとちょっと突飛なように感じるかも知れませんが、先ごろリリースされたLibreOffice 4.0でも、ユーザインタフェースではUnity(Ubuntuが採用しているデスクトップユーザインタフェース)との統合が図られています。
つまり、ソフトウェア流通、さらにはオフィスワークなどの分野で、Ubuntuが十分注目され始めているといえるのです。

私としてはこの傾向は大歓迎です。もちろん、私自身がUbuntuユーザだということもあるのですが、現在のWindowsの90%シェアというのは、実際のところセキュリティなどの面であまりにも危険ですし、MacOSなども含めて、より多様なOSの世界があってもよいと思います。
PCがいくらジリ貧とはいっても、タブレットやスマートフォンにすべてが置き換わるわけでは決してありません。むしろ、PC自体のプラットホームが活性化することで、新たな可能性が開けていくかも知れないのです。

また、ウェブサービスが普及すれば、プラットホームがどのようなOSであっても同じような形で仕事ができる(要はブラウザ1つで何でもできる)ということがある半面、依然として企業などではデスクトップアプリケーションへの要望が強いことは確かです。
そういった企業に対しても、MS Officeを装備したUbuntuというのは魅力的な選択肢として響くでしょう。

まだまだ噂という段階ではありますが、このニュース、注目する価値があるでしょう。