« 2010年8月 | トップページ | 2011年10月 »

2011.09.30

Firefox 7 の Sync機能は、ブックマークを追加すると即座に同期する

メモリ消費量が減ったという話だったので、リリースされたばかりの Firefox 7 をインストールして使い始めた。使っていて気がついたのだが、新機能として、ブックマークの Sync機能を使っている場合、何か新しくブックマークすると、即座に Syncサーバーにブックマークしたデータを送信するようになっている。今まで、ツールバーに Syncボタンを配置しておいて、ブックマークするたびにいちいちボタンを押していたので、メモリ使用量の削減などに比べれば地味な変更だが、この機能拡張はうれしい。

2011.09.29

VirtualBox の仮想ハードディスクのサイズを小さくする

前回、ブログにノートPCの内蔵ハードディスクを全部外付けディスクに書き出して、VirtualBoxの仮想環境に移行させてみる実験について書いた。あの時は、ディスクの容量削減について何も考えていなかったので、外付けディスクの中にファイルとしてできあがった仮想ハードディスクは、もとのハードディスクとほぼ同じ76GBだった。

このままでも特に不自由はないのだけれど、今後、この仮想ハードディスクの複製を作っていろいろ実験するとなれば、ファイルサイズは小さいほうが複製を作る時間が短くてすむので、VirtualBoxの管理コマンドを使って、仮想ハードディスクの実際のサイズ(仮想的な容量ではなく、実際に外付けハードディスク上にあるファイルとしてのサイズ)を小さくしてみた。

手順は、以下の通り。

まず、仮想PCでWindowsを起動し、MyDefrag で、可能な限りファイルを仮想ディスクの先頭部分に集める。BartPEのISOイメージなどを使って、Cドライブではなく仮想CD-ROMからMyDefragを起動したほうが、移動対象にできるファイルは増えるが、NTFSのファイル情報を管理しているビットマップファイルやセキュリティファイルは、BartPE上を使ってMyDefragを走らせた場合でも移動不可なので、実際の効果としては、あまり差はない。

ファイルを仮想Cドライブの前方に集めたら、PartedMagicなど、CDから起動できるLinux系のディスクユーティリティのディスクイメージを仮想PCのCDドライブにセットして再起動する。パーティション切りなおしのユーティリティで、Cドライブのサイズを16GBくらいまで減らし、残り全部を未フォーマットなパーティションとして割り当てた。次に、
 dd if=/dev/zero of=/dev/sda2
を Linuxのコンソール上で実行し、2番目のパーティションをゼロで塗りつぶす。

最後に、ホストOS側で
 VBoxManage modifyhd --compact 仮想ディスクのファイル名.vdi
を実行し、仮想ディスク上で値ゼロが連続している範囲を圧縮させれば、作業は完了である(圧縮の対象となるのは、仮想ハードディスクが VirtualBox の標準である vdi フォーマットで、かつ、デフォルトの設定であるダイナミックドライブの場合のみ)。

なお、サイズを小さくしたいだけなら、わざわざ仮想ハードディスク上のCドライブのパーティションを小さく切りなおしてから新パーティションをゼロで塗りつぶす必要はない。単純にCドライブの未使用領域をゼロで塗りつぶし、次にホストOS上で VBoxManage modifyhd --compact を実行しても仮想ディスクはちゃんと圧縮されるはずである。ただ、その場合には、仮想PCにとってのCドライブは今までどおり80GBのままで、ファイルをどんどん書き足せるし、それにつれて実際のサイズも増えていく。今回、パーティションを切りなおしたのは、あらかじめ仮想Cドライブの上限を16GBまでに固定しておきたかったからだ。

2011.09.28

ノートPCの中身を VirtualBoxの仮想環境にコピーしてみた

結論から言うと、コピーしてちゃんと Windows XP を起動できるところまでは持っていけるが、Windows XP は、自分が稼動しているハードウェアの状態が変更されていることを検知してライセンス認証を求めてくるので、正直なやり方では使えない。ノートPCの底面には、マイクロソフトがパソコンハードメーカー向けにライセンスする場合のライセンスキーが貼ってあるけれど、この文字列は、パソコンメーカーごとに(ひょっとしたら機種ごとに)特定のパターンになっていて、他社のパソコンや仮想PCにインストールした Windows XP では無効だ。市販版のXPを使う場合なら問題ないし、実は1ライセンス持っているのだが、これはデスクトップPCで使用中で、そちらではいずれ本当に実PCから仮想環境にXPを引っ越させるつもりなので、いまここで、ひとつしかない市販版のライセンスキーを使うわけにはいかない。そんなわけで、「とにかく、やり方はわかった」だけで、実験としては満足している。


実PCから仮想環境にコピーして動作させる手順は、ハードディスク全体のコピーをするため時間こそ非常にかかるが、やること自体は比較的単純だ(運がよければ)。VirtualBoxのサイトにある「How to migrate existing Windows installations to VirtualBox」に、一歩ずつ作業を進めるやり方が載っている。

私がやったのは、こんなことである。

手順に従って、リンク先にある MergeIDE をノートPCのWindows XPで実行し、レジストリを修正すること。これは、Widnowsのハードディスクコントローラーに対する監視を緩めるためのレジストリ操作で、マイクロソフト自身が、パソコンの機種変更のときに起こるトラブルを回避する方法として公開している情報に沿った処理である。

次に、いったんPCの電源を切り、Live版のLinuxのCDを使って再起動、端末画面で

 dd if=/dev/sda od=/media/sdb/rawimage.raw

を実行して、内蔵ハードディスクの全データをまるごと外付けのディスクに書き出した。手順書によれば、Windows がインストールされているパーティションだけでなく、ディスク全体を書きだす必要があるとのこと(たぶん、パーティションの管理情報なども書きだす必要があるから)。なお、/dev/sda は、ノートパソコンのハードディスク、/media/sdb はUSB接続した市販の外付けハードディスクで、PCのハード構成によっては違う名前になっているかも知れない。ファイル名 rawimage.raw は、適当に付けただけでなんでもよい。今回使った外付けディスクは、買った時点であらかじめ NTFSフォーマットされていたものをそのまま使っている。Linuxは NTFSをサポートしているので、読み書きに何ら支障はない。80GBのディスクのコピーに4時間くらいかかった。

(外付けディスクにノートPCの内蔵ディスクの中身をまるごとコピーできたら、かりに以後の実験が失敗したとしても、Live CD 版のLinuxで、上に書いたコマンドの if と of を入れ替えて外付けディスクに保存したイメージをノートPCに書き戻せば、いつでも元の状態に戻せる。圧縮も破損状態の有無のチェックもないけれど、いちおう、完全バックアップ済みになったので、今後、このPCでいろいろ実験できそうだ。)

次は、Windows なり Linux なりで VirtualBox の管理コマンドを実行し、仮想PCから使用できるファイルに変換する。今回は、もともとインストールされている Windows XP をホストOSとして、VirtualBoxをインストールし、Windows のコマンド画面で以下のように実行した。

 VBoxManage convertfromraw rawimage.raw fromLL900BD.vdi

ファイル名 fromLL900BD は、なんでもよい。そして、また数時間待つ。ただひたすら待つのみなので、寝る前や外出前にやったほうがいいかも知れない。

できた仮想ハードディスク fromLL900BD.vdi を仮想PCで使うように設定して、仮想PCを起動すれば、運がよければ一発でゲストOSとして Windows が起動する。運が悪ければブルースクリーンになる。

私のノートPCは NECのPC-LL900BDで、旧式であることが幸いして、Windows のカーネル hal.dll の入れ替えなどは必要なかった。移行後に仮想PCを起動したらブルースクリーンで止まってしまったが、あらかじめWindows復旧用に用意していた BartPEの isoイメージを仮想PCの仮想CD-ROMドライブにセットして再起動、前述のサイトにある注意書きにしたがって agp440.sys と intelppm.sys を削除したら、Windows XP が起動し、ユーザアカウントの設定なども含め、すべてまとめて仮想環境に持ってくることができた。もっとも、ライセンスキーがないので、30日後には使えなくなるのだが。

TIPSとして、仮想環境に引っ越すとき、前準備として、デフラグでデータをなるべくパーティションの先頭部分に集め、次に、マイクロソフトが公開している SDelete を使って、ディスクの空き領域をゼロデータで塗りつぶしておくと、最終的にできあがる仮想ハードディスクの実容量を節約できる。仮想ハードディスクのデフォルトの設定では、パーティション内のゼロが連続している部分はスキップし、実際のハードディスクで占有する量を節約するようになっている(このことに気がついたのは、作業完了後)。

ところで、仮想PCのBIOSがOSに報告する値は、仮想PCの管理コマンドで修正できる。メーカー名などをうまく改ざんし、あたかももとのノートPCと同じ製品であるかのように偽装すれば、Windows は、自分の居場所がすり替えられたことに気がつかないので、ライセンス認証を再度求めてくることもなく、そのまま仮想環境で継続的に使用可能なはずである。さらに調べてみると、仮想環境でなくても、自作PC用のマザーボードのBIOSを書き換えて、OSに対して、マイクロソフトのOEM供給先のパソコンであるかのように見せかけて、Windows のライセンス認証を回避する事例が、インターネットのあちこちで報告されていた。

面白い話だとは思うけれど、あからさまな不正コピーなので、あまり深入りしたくない。ただ、その情報を調べていて、10年以上前の知識しかなかった自分としては、いまどきのBIOSは、非常に詳細なハードウェア情報をOSに提供する仕組み持っているのだと知ることができたので、ちょっと喜んでいる。ISAバス時代の割り込みの割り当てなど、完全に昔話。ハードディスクでさえ、任意に着脱できるように個別にUUIDが与えられ、/dev/sda などのようなディスクを接続している場所には依存しないようになっている。

それは、「そもそも最初からそうあるべきもの」だったかもしれないけれど、少なくとも私がパソコンをいじり始めた時代には、もっと「素朴で大雑把」な規格で普通の用途には十分だと考えられていて、しわ寄せは一部のシステム管理者が負担していた。あるべき姿が実用化されるには、長い年月が必要だったわけで、今、それを享受できるのは幸せだ。もっとも、おかげで、もはや手作業で細かい設定をするのは無理という気もしないではない。それとも、それは「にわとりとたまご」の関係で、手作業の設定では管理不能なほどパソコンが複雑化したから、自動的にすべて管理させるような仕組みが発達したと考えるほうが正しいのか・・・ まあ、よくわからないけれど、とにかく時代は変わった。また勉強しなくては。

2011.09.24

時代遅れなものに、今から飛びつく

ここ最近、長らく遠ざかっていた Linux や Windows そしてパソコンのマザーボードやBIOSの使いこなしについて勉強を再開した。隔世の感を喜びつつも、「今さらこんなことを勉強しても・・・」と、いう寂しい気持ちもないではない。とりわけ、自分にとって未知の最新情報が、ウェブ上のコンテンツとしてはすでにリンク切れ、閉鎖されたサイトにかつて存在していた痕跡しか残っていなかったりすると、「手遅れ」「宴の後」というような気持ちになる。

まあいいか。世間的には時期的な旬を過ぎた知識や技術でも、自分にとって新しい刺激であるなら、何も悲しむことはない。そう思って実験を進めている。

2011.09.20

Linuxにデフラグが見当たらない理由

MS-DOSの時代から最新のWindowsに至るまで、パソコンのヘビーユーザーが興味を持つユーティリティソフトとして、ディスクのファイルや空き領域を整とんするデフラグソフトがある。私自身も、Windows用のデフラグソフトを色々試して、今は、自分でスクリプトを書いてカスタマイズできる MyDefrag を使っている。

いろんなスクリプトを書いて、総量では数百GBの読み書きをハードディスクにさせて実感したことは、
「ほとんどのファイルは、どこに配置しようが少々断片化していようが、パソコンの性能には全然影響しない。とりわけ、サイズの大きな動画データなどは、よほど細切れになっていない限り、連続して読み出している時間のほうがハードディスクの読取ヘッドの移動時間より長いので、デフラグの必要はない。パソコン起動時に読まれるファイルなど、特定のものだけにだけ整理しておけば十分だ。」
と、いうことで、パソコンの性能を最大限を引き出そうなどと考えて、一生懸命ファイルの配置を考えたりしても、現実としては、ほとんど無駄な努力だった。まあ、無駄な行為だという知識を得たという意味では、無駄ではないのだけれど。

ところで、Linuxの世界にはデフラグ関連のユーティリティはほとんどない。10年以上も前から、Windowsユーザーから投げかけられる「なぜLinuxはデフラグは不要なの」は、いわゆるFAQというもので、そのたびに文章でいろいろ説明がなされるけれど、いまいち合点が行かない。

しかし、今日、自分のパソコンの中のディスクが、こういう状態になっているのを見て、なるほどと納得した。

Defrag


部分拡大図

Defrag2


前置きが長くなるけれど、まず、私のパソコンの状況の説明をする。
現在、私のデスクトップパソコンのハードディスクは、全領域が NTFS形式でフォーマットされており、Windows XP をインストールしている。先日、ノートパソコンの方で Ubuntuを試すべく、パーティションを切り直し、しかも普通ではない使い方をしてしまった結果、ノートPCでは Windowsも Linuxも起動できない状態におちいった。それにこりたので、デスクトップパソコンのほうでは、ハードディスクに一つしかないWindows XP の管理下にある NTFSのパーティションに、Ubuntuの「お試しインストール」をしてみた。Ubuntuが使用するルートパーティションやスワップパーティションは、Windows XPの Cドライブの中に、大きな連続領域のファイルとして確保される。Ubuntuが不要になったら、普通のアプリと同様にWindows上でアンインストールコマンドを実行すればよい。実に簡単。

パソコンの電源を入れて起動OSとして Ubuntuを選んだ時、Ubuntuのファイルシステムでは、Cドライブが自動的に/host にマウントされる。Linuxでは、だいぶ前から NTFS形式のドライブを自由に読み書きできるようになっているので、この Windowsのドライブを間借りしている Ubuntuを使うにあたって、もし Ubuntuのルートパーティション用に確保しされている領域では足りない量のファイルを作りたいなら、ただ単純に /host 以下に適当なディレクトリを作り、普通に読み書きすれば問題ない。わざわざルートパーティションのファイルサイズを大きく作りなおす必要はない。

さて、ここ2日ほど Ubuntuばかり使っていた。そして、さきほど、ひさしぶりに Windows XPを使うことにして、そのとき何気なく MyDefrag を起動させてみたら・・・ ハードディスクの中は、先に上げた図のようになっていたのだ。話には聞いていたけれど、実際に目で見てなるほど納得した。この図のなかで、すき間なく断片化もなく固まっている領域は、数日前に MyDefragで整理した Windows のファイルや Ubuntuのパーティションとして使われているファイルだ。一方、網目模様のようにばらまかれているファイルは、今日、Ubuntuから /host に書き込んだ合計30Gバイト程度のファイルで、これもWindowsからは単なるファイルとみなされるし普通に読み書きもできる。

(※注意 Linuxはファイル名で大文字と小文字を区別するのに対し、Windowsはデフォルトの設定では区別しない。NTFS自身のファイル情報の管理領域には、ちゃんと大文字も小文字も違うものとして記録されているけれど、Windows のプログラムには区別ができない。レジストリの操作で区別するようにしてすることは可能だが、それをやると、大文字小文字を区別しないという前提で作られたプログラムが動作しなくなるので、やるべきではない。この違いのため、Ubuntuが /host 経由で作ったファイルを Windowsから扱う場合、時として、厄介なことが起こる。例えば、TEST.TXT, test.txt, Test.txt は、Linuxではそれぞれ違うファイルだし、NTFSでもこの3つを保持できるが、Windowsのアプリケーションからアクセスするときに混乱が生じる。しかも厄介なことにエクスプローラーがファイル名として表示する大文字や小文字は、本当にファイル管理領域に書かれているものとは違っている場合がある。管理領域の上では全部小文字のファイル名なのに、エクスプローラーは先頭を大文字にして表示することがあり、「ここにあると見てわかるのに、Windows からは消せない」というファイルができてしまうことがある。)

さて、上の図を見て分かるように、マルチユーザーによる使用を当然の前提としてきた Linuxでは、個々のファイルをなるべくディスク全体に分散させている。そうしなければ、各ユーザーに対して平等にディスクを使わせることは難しい。空白領域は細切れになるけれど、これなら、ファイルのサイズが後々で少しくらい大きくなってもファイルの後ろに「伸びしろ」があるので断片化は起こらない。この方針は、ディスクの容量にゆとりがある場合、十分効果を発揮する。

もちろん、ディスクの使用率が高まれば、Linuxのやり方でも断片化と性能低下は当然発生するので、「Linuxなら断片化は起きない」は、事実に反するし、サイズの大きな動画データをいくつも保存したりすれば、かなりの確率でファイルの断片化が進むことになるだろう。でもまあ、動画などは別パーティションに置くようにすれば、少なくとも個人がデスクトップ環境として Linuxを使う限り、Linuxでは断片化の心配はほとんど必要ないと思う。

もっとも、「起動時に読まれるファイルは、ハードディスクの外周部、つまり読み書きの速度の高速な場所に置きたい」というようなチューニングをしたいなら、Linuxでも、デフラグや再配置などのソフトは必要になるし、一般論として、ファイルシステムのメンテナンスツールとして、デフラグに限らずファイルの絶対的な位置の管理をするユーティリティは、いざというときのために提供されているほうが望ましいとは思うのだけど。

「壊れていないものを修理してはいけない」「改良は計画的にやる」

うつ病で職を解かれて、今日でちょうど1年目。実家に帰って半ば寝たきりの状態が続いていたが、ここ2,3週間くらい前から、少しだけ回復してきた。

きっかけは、ウェブブラウザ Firefox の Sync 機能の存在を知り使い始めてみた、という、スタートとしてはごく小さな出来事からだった。実家で使っているノートパソコンと、長年のサラリーマン生活でたまりにたまった荷物の置き場として借りているアパートにあるデスクトップパソコンのそれぞれに入っている、15年以上前から集めたブックマークを、Firefox の Sync 用サーバー上でひとつに集約し、存在しないページへのリンクはすべて整理してから、どちらのパソコンでもいつも同じ状況にしようと思い立ち、実際にやってみた。

Sync機能のようなものを実現する手段は、フロッピーディスクの時代から、手作業でやるソフトとしては存在していた。が、ずぼらな自分としては、手作業でパソコンの中からデータを掘り出したり、一方のPCでブックマークを更新したときにもう一方に手作業で反映させる気にはなれず、今までずっと2台のPCに中途半端に重複したデータがたまっていた。

Firefox の Sync機能については、いくらでもネットに情報があるので、ここには書かない。ただとにかく、便利な時代になったものだなと感激している。

さて、そこらへんで満足しておけばよかったものを、これを機会にパソコンの中にたまった不要なファイルや設定データも掃除してしまおうとか、よせばいいのに調子よく動いているパソコンのBIOSを必要もないのにアップデートしたりした結果、いろいろえらい目にあった。

壊れていないものは、修理してはならない。
壊れていないものを改良したい場合は、事前に何をどう改良したいのか、その改良が本当に必要か、そのためにどのような手順が踏むのがよいか、きちんと段取りをつけることができてから、実作業に入らなければならない。

おかげで、10年以上離れていた Windows や Linux の内部について、勉強しなおすはめになり、一般的には知っていても仕方のないノウハウが身についてしまった。

数日前に、このブログを長く更新していないせいで、私の安否について心配してメールを送ってきてくれた友人がいたので、生存報告も兼ねてこれから数回、ここ3週間くらいやってきた(現在進行形)失敗について書いてみようと思う。もっとも、失敗を解決できずにギブアップしたケースのほうが多いので、情報源としては役に立たないだろうけれど。面白いと思っていやっているはずなのに、うまくいかなくて苦しくてたまらないという、ここ最近の甘美な苦痛について、書こうかなと思っている。

« 2010年8月 | トップページ | 2011年10月 »

2021年11月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ