Windows10 に Ubuntu16を足す

足すという表現は大間違い。言いたいことは「Windows10で動いているシステムにUbuntu16を追加でインストールして、デュアルブート環境を作る」ということ。



現在の状態。
DISK0 (基本)回復パーティション、(基本)SYSTEM RESERVED、(基本)Windows10
DISK1 (基本)NTFSパーティション

この度、DISK0が熱暴走を始めたため、少し容量の大きいディスクを買ってきてまるごとコピーして差し替えた。
このことで、DISK0に空き容量ができたので、Ubuntu16を追加しようと考えた。

狙うところは、

  • 拡張パーティションにUbuntu16をインストール
  • 起動はWindowsのブートマネージャーを利用する

というもの。色々見てみると推奨されない構成のようだが、メインでWindows10を使っており、もしかしたら時々使うかもしれないUbuntu16なので、とりあえず動く程度でも良いか…と考えた。

今回はHDDの熱暴走の結果、WindowsUpdate時、ブートローダーに何かおかしなものを書き込んだらしく、それが原因でWindows10が起動しなくなった。復旧には、タブレットで作成したWindowsPEが活躍し、ブートローダーを再設定することで問題解消した。
今回行ったことは、これに対する直接的な対策にはなっていない。だが、Windowsで問題が発生した時、ひょっとしたらUbuntuが起動できたりして、そうしたら何か手が打てたかもしれない、という思いがあって実行したもの。


■やること

  1. 拡張パーティションを作成する
  2. Ubuntu16をダウンロードしてインストールする
  3. Grub4DOSをインストールする
  4. Grub4DOSのメニューを設定する

■できたこと
Windowsのブートマネージャー → Grub4DOS → Ubuntu16のGrub → Ubuntu16の起動

■所感
実際にUbuntu16を起動するまでには、

Windowsのブートマネージャーが起動 → Grub4DOSを選択
 → リブート → Grub4DOSが起動 → UbuntuのGrubをチェーンロード → Ubuntuを起動

という道順をたどる。

Windows10はブートマネージャーを表示している背後で起動しているらしく、Windows10を選択するとすぐにログイン画面が現れる。通常Windows10を使用するので、この動作で全く問題はない(というか、この方が起動が早くていいと思う)。


1. 拡張パーティションを作成する

まず、拡張パーティションを作成。Ubuntu16とSWAPの2パーティションが必要だと思ったためで、

DISK0 (基本)回復パーティション、(基本)SYSTEM RESERVED、(基本)Windows10、(拡張(Ubuntu16、SWAP))

という構成を目指す。

GUIツールの「ディスクの管理」では拡張パーティションが作れないため、DiskPartを利用して作成する。

コマンドプロンプトを開き、
C:\diskpart [Enter] を入力。別窓で DiskPart が開く。ここで、

DISKPART>select disk 0
DISKPART>create partition extended

と入力。これで拡張パーティションが作成できる。


2. Ubuntu16をダウンロードしてインストールする

この状態で、Ubuntu16をインストールする。

  • Ubuntu16.10をダウンロードした
  • インストール時に以下に注意した。
    • 拡張パーティションにSWAP領域を作る(物理メモリの倍、32GBにしてみた)。
    • 拡張パーティションにUbuntu用のパーティションをext3で作り / を割り当てる。
    • ブートローダーをUbuntu用の / を割り当てたパーティションにインストールする。

インストールが終わると、再起動を促される。
当然だが、Windows10はUbuntuの存在など知る由もなく、Windowsが起動する。

なお、Ubuntu用のパーティションを ext3 で作成したのは、Grub4DOSが ext4 に対応していない可能性があるから。既に対応しているかもしれないが、ちゃんと調べなかった…。


3. Grub4DOS をインストールする

https://sourceforge.net/projects/grub4dos/
ここからたどって、grub4dos-0.4.4.zip をダウンロード。

以下の手順はUbuntu wikiからの抜粋。

  • C ドライブの直下(C:\)に grldr と grldr.mbr をコピー。
  • コマンドプロンプトを管理者権限で開き
    bcdedit /create /d “grub4dos” /application BOOTSECTOR
    を実行。
  • 表示されるエントリをメモ。
  • 続いて、
    bcdedit /set {コピーしたエントリ} device partition=C:
    を実行。
  • 続いて、
    bcdedit /set {コピーしたエントリ} path \grldr.mbr
    を実行。
  • 更に、
    bcdedit /displayorder {コピーしたエントリ} /addlast
    を実行。

これで、Grub4DOSを呼び出せる状態に。


4. Grub4DOSのメニューを設定する

menu.lstを作成するにあたり、色々なサイトにお世話になった。

untitled document WINDOWSとLINUXのマルチブートあれこれ

Linuxを入れよう GRUB 1 / GRUB4DOS

Everyday Programmer ノートPCでWindows VistaとUbuntuのデュアルブート

結論として、以下のファイルを作成。

menu.lst
title Ubuntu Chainloader
root (hd0,4)
chainloader +1

注意したいのは、 root (hd0,4) の記述。

DISK0 (基本)回復パーティション、(基本)SYSTEM RESERVED、(基本)Windows10、(拡張(Ubuntu16、SWAP))

という構成の場合、Ubuntuをインストールする際に、(拡張)Ubuntu16が5番目のパーティションとして表示されていた。拡張パーティションの箱自体が数字を1つ増やしていて、その中身の番号が+1されていた。
なので、 root (hd0,5) と書いていたのだが、これだと、(拡張)SWAPを指してしまっていた。結果として、

Error5 partition table invalid or corrupt

が表示される。SWAPを指してるんじゃ怒るよね…と、これに気付くのに随分と時間がかかってしまった…。


以上で、快適なデュアルブート環境が構築できた。
とはいえ、メインPCにおけるUbuntu16はいざという時のための環境であるから、新PCを購入し、このPCが自宅サーバーになる日まで動かないのかもしれない。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です