前回の記事で、USBのハードディスクにLinuxを入れたまではいいが、Windowsのブートローダを設定してもGRUBという文字が表示されフリーズしてしまい、Linuxを起動できません。
そこで他のメディアにGRUBをインストールし、そこから手動で起動することにしました。
最近のPCにはフロッピーが搭載されていないことが多いため、CDからの起動です。GRUB入りのCDを作ろうと思いましたが、誰か作ってるのを公開しているだろうと思い調べて見たら、アクセンス・テクノロジーさんがISOイメージ公開してくれていたので使わせて頂きました。
このCDを使用してPCを起動すると、grub> というGRUBのプロンプトが出てきます。
ここから起動方法です。まず前提ですが、今回使用するUSBハードディスクは、内蔵で2台のSATAのハードディスクがあるため、PCからは3台目として扱われます。
GRUBでは、 1台目のハードディスクがhd0, 2台目がhd1として扱われ、今回は3台目なのでhd2として扱われます。
さらに、重要なのが/bootと/の場所です。今回の環境では、3台目のハードディスクで
パーティション0 : /boot
パーティション1 : /
となっています。まずは、rootの指定です。ここでいうrootは/bootのパーティションです。
grub> root (hd2,0)
次はカーネルの指定です。
カーネルは/bootに入っているため、
grub> kernel (hd2,0)/vmlinuz-2.6.xxx ro root=LABEL=/
と入力します。vmlinuz- の箇所は、実際にインストールされているlinuxによりますが、GRUBはext3のパーティションを読めるので、vmlinuzまで入力した後にTABを押すことで補完できます。
なお、今回は/bootが/のパーティションと別パーティションになっているため上記のようなvmlinuzの指定になっていますが、/boot と / のパーティションが一緒の場合は(hd2,1)/boot/vmlinuz-2.6.xxx と記述する必要があります。
LABEL=/は、初めてLinuxをインストールしたシステムならば、パーティションにこういったラベルが自動で付けられるので問題ないですが、ラベルがないときは、(hd2,2) といったふうに、/パーティションを指定します。
最後はinitrdの指定です。initrdの詳しい説明はしませんが、システムによってはinitrdがなくても起動できます。通常は/bootに入っています。
grub> initrd (hd2,0)/initrd-2.6.xxx ←これもTABで補完可能
最後に起動です。
grub> boot
以上で起動します。
ちなみに起動中にmountエラーでカーネルパニックになった出た場合はkenel行のrootの指定が間違っています。