Macには起動時にある特定のキーボードを押す事で、いくつかのモードで起動することができます。
起動コマンドを入力するタイミングは
電源を入れてジャーン!と音がなって、画面が白くなったその瞬間
タイミングが重要ですので、失敗しても諦めずに何度かやってみてください。 ただwireless keyboardではうまくいかないことも多々ありますので、USBキーボードを使用する事をお勧めします。
-起動ディスクの選択 -PRAMクリア -SMCリセット -セーフモード -リカバリーモード -シングルユーザーモード
などが存在します。
コマンドは
(起動時に) cmd+opt
これは頻繁に使用する方も多いと思う。1つのPCにパーティションを複数区切って、 それぞれにWinbowsやMac OS X、UbuntuといったOSを割り当てている場合(Dual Boots, Triple Boots) は起動時にどのディスクから起動するかを選択する。 また非常時にも活躍するコマンドで、内蔵のHDDがクラッシュした際に、外付けのHDDからOSを起動させる時に このコマンドを使用する。
(起動時に) cmd+opt+p+r
成功すると、起動音が二回なる。
もしiMacのようなバッテリーを内蔵していないmacの場合はコンセントを抜いて15秒、 コンセントを入れてから5秒待ってから起動する。
起動時にトラブルがあったらまずはこのセーブモードを試す。 起動コマンドは
(起動時に) shift
起動ディスクの確認、修復作業が行われます。 不具合が見つかった場合は(可能な範囲で)自動的に修復をしてくれます。 セーフモードでも起動しない場合はまた別の起動モードを試してしましょう。
起動コマンドは
(起動時に) cmd+r
リカバリーモードではディスクユーティリティの設定、Timemachineから復元、OSの再インストールが できる。また、ターミナルを操作することもできる。 例えば、Kernelのような起動に必要なapplicationを誤ってゴミ箱に移してしまった場合は、 このターミナルからmvコマンドで元の場所に戻せば良い。 (もしゴミ箱を空にする、をしてしまった場合は出来ません。)
起動コマンドは
(起動時に) cmd+s
起動に成功すると、真っ暗な画面に白い文字のターミナルが表示され、 自ら起動ディスクの異常および修復を行うことができる。 またシングルユーザーモードは以下のような場合にも使用される。
rootのパスワードを忘れてしまった時などは、シングルユーザーモードで起動する。 シングルユーザーモードはパスワードなしでrootにログインできるので、 古いパスワードを知らなくても、passwdコマンドで新しいパスワードを設定できる。
※私はコンピュータの専門家ではないため、間違ったことをいっている可能性もありますので、
下記に紹介する手法を試す際は自己責任でお願いいたします。
朝、研究室に来たらiMacがフリーズしていたので、強制終了して、再起動を行った。 しかし、一行に起動することができなかった。症状は以下の通りであった。
通常起動するとりんごマークのあるグレーの画面で止まって、ログインメニューがいつまでたっても現れない。 通常モードのみならず、セーフモードでも起動失敗。
起動に異常があることは間違いない。考えられる可能性としては、
-カーネルパニック -HDDがクラッシュ (ハードの問題) -起動ディスク異常 (ソフトの問題)
であろう。 以前に一度、カーネルパニックに陥ったことがあるが、今回はそのときとは症状が違っていたため、 後者の2点に原因を絞って、いくつか原因を探ってみた。
(この手のトラブルには慌てず、騒がず、まずはコーヒーでも入れて、 飲んで暖まりながら落ち着いてから作業するとよいというのが私の経験則。)
今回の目的は以下の2点である。
1. iMacは起動できなくなったが、内蔵HDDに残されたデータの救出 2. 内蔵HDDの修復作業
である。また本iMacのスペックは
機種:iMac Late 2007 OS: OS X Marvericks メモリ:4GB HDD: 250GB
である。
まず前述したシングルユーザーモードで起動し、ターミナルから内蔵のHDDの中を直接調べてやった。 すると、どうやらユーザーのデータはきちんと残っていることが判明した。 しかし、
シングルユーザーモードではファイルのコピーや書き込みはできない
のため、HDDのデータを取り出すには別の手法を考える必要がある(→後述)。
そこで、同じくシングルユーザーモードから下記のコマンドを実行した。
fsck -fy
これはFile System Consistency CheckないしFile System Checkと呼ばれるコマンドであり、 起動時のファイルがうまく読み込まれているかどうかを確認することができる。 結果、
disk0s2 I/O error
というエラーが出力された。 I/OはInput and Outputの略で入出力エラーを呼ばれる。 disk0s2は内蔵HDD内に作られたパーティションの一つであり、OS Xがインストールされている部分である。
I/Oエラーはハード、ソフトのどちらが壊れていても現れうるエラーだが、 少なくとも、厄介そうな問題だな、と感じた。
エラーの修復が可能かどうかをためすため、disk0s2のアンマウントを試みた。 まず、HDDにマウントされているディスク・ボリュームの状況を確認するために、以下のコマンド
df
を実行。予想では
/dev/disk0s2
を表示されるはずが、disk0s2がマウントされていないことが判明。 ここでこの手段に手詰まったため、別の手法を講じることにした。
シングルユーザーモードから
reboot
コマンドで再起動を行い、今度はリカバリーモードで起動を行った。 リカバリーモードで起動し、ディスクユーティリティからディスクの状況を再び、確認した。 (ディスクユーティリティからみると、disk0s2はマウントされていた。なぜだろう?)
ディスクユーティリティから、起動ディスクを選択し、アクセス権の検証をクリック。 アクセス権の検証の作業工程は一言で言えば、大元のパッケージの部品表(Bill of Matrial, BoM)アクセス権とPCにインストールされているアクセス権を見比べている(らしい)。 詳しくは以下のURL参照: http://support.apple.com/kb/HT1452?viewlocale=ja_JP
アクセス権の検証に10~20分程度かかったが、結果
"usr/lib/libruby.2.0.dylib"上のアクセス権が一致しません。lrwxrwxrwxであるはずですが、lrwxr-xr-xになっています。 "Application/Printers/InstalledPrinters.plist"上のグループが一致しません。80であるはずが、グループは0になっています。 ・ ・
など沢山のエラーがはかれた。 今回はアクセス権のエラーメッセージは大半は"Application/iBooks/..."に関わるものであった。 (夜間に自動的にupdateする、というボタンを推してしまい、自動的にiBooksがinstallされてしまったようだ)
アクセス権にエラーが出たら、「ディスクのアクセス権を修復」を実行する、、、はずなのだが、 今回の場合「ディスクのアクセス権を修復する」が選択できなくなった。おそらく、先ほどdf コマンドでdisk0s2がマウントされていなかったのと関係していると考えられるが、よくわからない。
こうして、リカバリーモード、ディスクユーティリティからのアクセス権の検証は失敗に終わった。 また同じく、リカバリーモードOS Xの再インストールを試みる. OS Xの再インストール可能なディスクはRecovery HDDと内蔵HDDが表示されたが、 (それぞれ読み込まれ、容量もちゃんとしているのでHDD クラッシュではなさそうである) しかし、それぞれのディスクは「このディスクはロックされています」とのエラーメッセージで選択できないできない状態。
ここで、最後の手段として、外付けのHDDのOSをインストールして、そちらから内蔵のHDDの修復にあたった。 1TBの外付けHDDをiMacに接続し、リカバリーモードで起動する。OSを再インストールを選択し、外付けHDDに OS X Marvericksをインストールした。 また外付けにHDDをインストールする際はパーティションモードを選択する必要がある。
インストール完了後. 起動時にoptionコマンドを押して、外付けHDDからOS Xを起動し無事、立ち上がった。 ターミナルを開いて、/Volumeを確認すると、内蔵のHDDが表示されていた!!! コピーコマンドで内蔵HDDを外付けHDDにコピーすることができ、事無きを得ました。
さて、しかし、内蔵のHDDは以前不具合が残ったままであるので、こちらの修復作業を続ける。 ターミナルを開いて、再びディスクの状況を確認するために
df
をうつと、いくつかあるディスクリストの中に、今度こそ問題の
/dev/disk0s2
が表示されていた。 そこで、アクセス権の修復を行うために、disk0s2をアンマウントするコマンドをうった。
umount /dev/disk0s2
しかしresourceがbusyだと怒られたので強制アンマウントを実行(optionで-fを付ける)
(参考:http://d.hatena.ne.jp/ktomoya/20080901/1220286943)
umount -f /dev/disk0s2
無事、コマンドが通り、アンマウントできた。次に、disk0s2のディスクを修復するために、
fsck_hfs -r /dev/disk0s2
を入力した。数分時間が経った後に、
fsck_hfs could not verified completely
というエラーが発生。数回、同様のコマンドを実行してみたが、結果はかわらず 最終的に修復することはできなかった。
今回の目的のうち
1. iMacは起動できなくなったが、内蔵HDDに残されたデータの救出
外付けのHDDにOS Xをインストールし、外付けから起動。 起動後、ターミナルから内蔵HDDにアクセスして、データを転送するから無事、成功した。
2. 内蔵HDDの修復作業
は最終的に復旧させることはできなかった。
また原因は明確にはわからなかったものの、
Appを「夜間に自動でアップデートする」というのが
不味かったのではないかと思っている。
もしくは、HDDの寿命だったのだろうか。原因がはっきりしないので若干モヤモヤは残るが、
ひとまずHDDのデータを救出できたので良しとします。
今回、事に対処するにあたって、以下のサイト様方にお世話にありました。
この場を借りて、お礼申し上げます。
http://asaomikuwae.blog123.fc2.com/blog-entry-234.html
http://www.webessentials.biz/mac-maintenance/singluser-mode/
http://support.apple.com/kb/HT1452?viewlocale=ja_JP
http://murasaki.cocolog-nifty.com/cloud/2009/11/post-d25f.html
http://tokyo.secret.jp/macs/access.html
http://trickster7.net/?p=46
http://d.hatena.ne.jp/ktomoya/20080901/1220286943
http://www.iodata.jp/lib/manual/hde-u30j/htm/macformat.htm