• 対象とするUbuntuのバージョン

    • すべて

UbuntuをUSBストレージ(USBメモリ・HDDなど)にインストールするには の方法でUSB-HDDにインストールしたUbuntuを起動しようとしても、パソコンのBIOSでUSBメディアからの起動がサポートされていない場合などには起動できません。そんな場合の対策方法がこのページと以下のページに記されています。

Info <!> 画面の設定が不適切で(Ubuntuが起動しているのに)画面が真っ黒だとか白い短い線が表示されているだけという場合や、キーボードやマウスの設定が不適切で操作が一切できないという場合には、以下の操作を行う必要はありませんし、行っても改善しません。カーネルに渡すオプションを適切なものに変更するなどの設定変更で正常に起動できるようになる場合もあるでしょうし、現在使われているカーネルではそもそも起動できないという可能性もあります。また、内蔵HDDにUbuntuおよびgrub2がインストールされている場合には、このページ以下の方法よりも、こちらの方法の方が簡単です。


はじめに

そもそも、Ubuntuが起動するためには、以下のことが必要です。まず、カーネル(vmlinuz)が読み込まれて実行される必要があります。しかし、それだけではできることは限られているので、多くの情報を含んだファイルシステム(パーティションや圧縮されたファイルの場合もあります)を利用できるように、マウントする必要があります。それをマウントするために必要なファイルや手続きは、initramfs(inird.img)というものに含められています。つまり、カーネルが起動し、さらにinitramfsが読み込まれて、本来利用したいファイルシステムがマウントされることが通常のUbuntuを起動するために必要です。一方、パソコンを起動した場合、Ubuntuのカーネルは直接には読み込まれません。パソコンが起動した場合、利用できる一番目のメディアのMBRに制御が移ります。MBRにはそのメディアのパーティションの情報を示すパーティションテーブルや起動時に実行されるプログラムが書き込まれています。中には、パーティションのBoot Record(PBR)を読み込んで制御を移すものもあります。また、カーネルを読み込むためのカーネルローダーが書き込まれている場合もあります。代表的なカーネルローダには、GRUB(Legacyと2)LILO、そしてgrub4dosがあります。参考:ITpro:Linuxカーネルの基本機能:第18回 カーネルの起動処理

パソコンの BIOS で USB メディアからの起動がサポートされていない場合、 GRUB を利用した CD を作成 したり、 ISOLINUX を利用した CD を作成 して、その CD から起動すれば良いのですが、これらの方法では、カーネルのバージョンがアップデートされた場合、 新しいカーネルを利用して起動するには、CD の ISO ファイルを作り直して CD を焼き直す必要があります。

CD を入れなくてもブートローダやカーネルローダを起動できるようにするためには内蔵 HDD にブートローダあるいはカーネルローダをインストールすれば良いです。

簡潔にカーネルローダを利用するには、 BIOS から認識される第一番目のメディアの MBR にそのカーネルローダをインストールすれば良いのですが、それは危険な場合があります。 MBR へインストールすると、元の MBR の内容は消えてしまいます。すると、元の MBR の状態に戻せなくなることが多いです。もちろん、インストールする前に、 元の MBR をバックアップ しておけば良いのですが、その方法では一文字でもタイプミスすると、逆に、 MBR を破壊してしまって取り返しの付かないことになります。

ブートローダーやカーネルローダーを一つまたは複数のファイルだけで起動できるものがあります。(たとえば、 grub4dos もそうです。)それらの場合、内蔵 HDD に NTFS パーティションしかなくても、そこに必要なファイルをコピーして、それらを適当なカーネルローダ(NTLDR(NT loader) や grub4dos や GRUB Legacy や GRUB 2 など)で呼び出せば起動できます。したがって、内蔵 HDD などの MBR に新たにカーネルローダをインストール(書き込み)する必要はありません。

USB メディアの MBR に正しく GRUB 2 なり GRUB Legacy がインストールされているのなら、そこにチェインロードすれば良いです。チェインロードするためには、自力で USB メディアを認識できるブートローダーである PLoP Boot Manager を利用すれば良いです。 CD に書き込んで使えますし、また、 MBR にもインストールできますし、カーネルローダで単一のファイル plpbt.bin を読み込ませるだけでも起動できます。ただし、 PLoP Boot Manager では、 USB 接続機器(たとえば、 USB キーボードや USB マウス)などが接続されている場合に起動できない場合があります。また、たとえ、 Ubuntu のインストールされた USB メディアの MBR にチェインロードできたとしても、 書き込みができずに grub2 の"save_env"が失敗して結局 Ubuntu が起動できなかったり、また、大きな容量のメディアの先頭から遠いパーティションに Ubuntu がインストールされている場合に、 UUID が利用できずに起動できなかった場合 もあったようです。 UUID が使えない場合、メディアの数が異なるパソコンで利用しようとした場合にも、"set root=(hd"の直後の数字が間違っているので、起動できないということもありえるでしょう。

一方、kexec(-tools)を利用したkexec-loaderは強力です。カーネルとinitramfsを備えており、USBーHDD内のUbuntuのインストールされたパーティションをマウント(認識)さえできれば、そのカーネルに飛び込みます。コマンドラインも含まれます。 しかも、grubの設定ファイルを自動認識してそれを利用することも可能らしいです。また、カーネルとinitramfsが利用されるので、USB2.0モードを利用でき、古いパソコンでBIOSではUSB1.1モードでしかUSBを利用できない場合でも、比較的高速に起動できます。

ただし、このkexec-loaderのメニュー(kexec-loader.conf)を利用するためには、kexecloaderというラベルのパーティション(またはCDやFDDでも良いです)を用意して、そこの直下(/ディレクトリ)にkexec-loader.confを置く必要があります。

内蔵HDDにWindowsXPのパーティションしかなく、そのラベルを変更したくない場合には、kexec-loaderを内蔵HDDにインストールする方法は適していません。

そこで、Ubuntuのinitramfsにkexecを組み込んで、さらに、initを編集して、初心者の方でも使いやすいツールにしたものが公開されています。そのツールと同様のものを作る方法が、「kexec-toolsを利用する」「ubuntuのinitramfsにkexec-toolsを組み込む方法」以降に記されています。

なお、当然ですが、このページ以下の情報は、BIOSがUSBメディアからの起動をサポートしているパソコンでも、Ubuntuを起動するために利用できます。

ちなみに、MBM(R0.39)はパーティションの中に情報を書き込む必要がありませんが、チェインローダーなのでカーネルを読み込んで起動することはできず、BIOSがUSBメディアからの起動をサポートしていない(しUSBを認識することもできない)場合にはUSBメディアのPBRやMBRにチェインロードすることさえできないことが多いです。


間違いがありましたら、バシバシ直してください。




謝辞

このページとここからリンクの貼られているページの情報を作成するにあたり、

  • 「 ubuntu の initramfs に kexec-tools を組み込む方法」については、 disklessfun さんからご教示を賜りました。

  • 「 kexec-loader を内蔵 HDD にインストールする方法」については、 Daniel Collins (aka solemnwarning) さんからご教示を賜りました。

  • 「 grub4dos がフリーズする場合の対策方法」については、 sai-sta さんの対策方法 を参考にしました。

  • 「initramfsにモデュールを組み込む」については、jackalopeさんのご投稿を参考にさせていただきました。

また、以上の方法は、 grub4dos や PLoP Boot Manager, kexec-loader, kexec-tools, Ubuntu の開発者の方のご尽力があったからこそ実現できるものです。

この場をお借りして御礼申し上げます。

UbuntuJapaneseWiki: UbuntuTips/UsbInstall/BootUbuntuInUsbWithBiosWithoutSupportForUsb (最終更新日時 2012-01-10 11:49:12 更新者 匿名)