インストーラーのレイアウトが若干変わっておりましたが、デュアルブート環境の構築方法は、ほぼ同じです。
本記事の方法で、問題なく構築できますので、ご参考にしていただければ幸いです。
目次
Step1: はじめに
今回は Windows10 がインストールされている PC に CentOS 7 を追加でインストールし、デュアルブートできる環境を構築する方法を紹介したいと思います。
Windows7 以降であれば、基本的な操作は同じで構築できると思います。
CentOS 7 から 一般的に入手可能なディストリビューションは 64-bit 仕様のものばかりです。このためか CentOS 6 のインストーラーではブートローダーのインストール先が選べたのに対して、CentOS 7 からはインストール先ドライブの MBR (非UEFIの場合)に問答無用でブートセクタが書き込まれるようになりました。恐らく UEFI が広く普及し標準になりつつあるため、ブートセクタがどうとか考えなくなってきているのかな、とか勝手に思っています。
今回紹介する方法では、UEFI でも、32-bit 版 Windows などの非UEFI (Legacy-BIOS)でも可能な方法となっています。ただし、PC が全く64-bitに対応していないのであれば、CentOS 7 が 64-bit 環境しかサポートしていないため、インストールは不可能です。PC が64-bit に対応していれば、Windows は 32-bit 版でも、大丈夫です。また、今回のテスト環境は、より手間のかかる非UEFI (Legacy-BIOS)Windows10 32-bit をベースに利用しました。ついでに、BitLocker も有効化してあります。
インストールメディアの用意
インストールする CentOS 7 のインストールメディアが必要であることは、いうまでもありませんが、非UEFI(Legacy-BIOS)環境では、MBR の修復が必要となりますので、Windows のインストールメディアも必要となります。このうち Windows のインストールメディアについては、”bootsect”コマンドが使えれば問題ありませんので、Windows PE 環境などが用意できれば代用できます。
CentOS 7
最新のインストールメディアは、こちらで配布されています。
https://www.centos.org/download/
今回のテスト環境では少し古いですが、こちらのISOイメージを使いました。
CentOS-7-x86_64-Everything-1511.iso
VMware などであれば、そのまま ISOイメージを挿入設定できますが、必要に応じて USB フラッシュメモリ などを利用して、使える状態にしてください。
UEFI 環境であれば、USB フラッシュメモリを FAT32 でフォーマットし、ISOイメージの中身をそのまま展開すれば ブータブルメディアが作成できます。
非UEFI (Legacy-BIOS)であれば、こちらの記事を参考に、ブータブルメディアを作成してください。
Ubuntu の入手について
Windows (非UEFIの場合)
Windows 10 のインストールメディアは、Microsoft が MediaCreationToolを提供していますので、これを利用します。
その他 Windows 10 のインストールメディアのダウンロードについては、こちらを参照してください。
https://www.microsoft.com/ja-jp/software-download/windows10
Step2: Windows 環境の下準備
既にインストールされている Windows 環境について、予め必要となる手順です。
高速スタートアップの無効化
Windows 10 では、高速スタートアップが有効になっていると何かとトラブルの原因となりそうですので、無効化します。インストール後の環境にNTFS領域やReFS領域が全くない場合は、この手順は不要です。
スタートボタンを右クリックして「コントロールパネル」を選択します。
「システムとセキュリティ」を開いて、さらに「電源オプション」を開きます。
「電源ボタンの動作を選択する」を選択して「現在利用可能ではない設定を変更します」をクリックします。
「高速スタートアップを有効にする」のチェックを外して、「変更の保存」をします。
空き領域の確保と共有領域の作成
CentOS 7 をインストールする領域を確保します。併せて、CentOS と Windows との間でデータを共有するための領域も作成します。
先ほど同様に、スタートボタンを右クリックして「コントロールパネル」を選択し、「システムとセキュリティ」を開きます。
「管理ツール」を開いて「コンピューターの管理」を右クリックし、「管理者として実行」します。
左のツリーから「ディスクの管理」を選択し、現在のドライブの状況を確認します。
システムドライブ(大抵はディスク0)を右クリックし、表示される内容を確認します。
「MBRディスクに変換」と表示されていれば、UEFI環境(64-bit)です。
「GPTディスクに変換」と表示されていれば、Legacy-BIOS環境(32-bit or 64-bit)です。
システムドライブ領域の縮小
CentOS をインストールする領域を確保するためにCドライブを縮小します。
縮小するパーティションを選択し右クリック「ボリュームの縮小」を選択します。
確保する領域の大きさ=縮小する領域です。今回は何気にシステムドライブがBitLockerで暗号化されていますので、CentOSとファイルの交換をするための領域も併せて確保しますので、15GBとしました。
共有ボリュームの作成
CentOS とファイルの交換をするための領域を作成します。
あとの手順でこの領域にブートセクタのイメージを保存しますので、作成しておくことをお勧めします。ブートセクタのイメージを外部媒体に保存するのであれば、特に作成する必要はありません。
今回は5GBほどの領域を互換性重視のためFAT32で作成しました。
BitLocker 回復キーの保存
今回のテスト環境は、何気にBitLockerで暗号化してありますので、念のため回復キーを保存します。BitLocker を利用していない場合は、この項の手順は不要です。
回復キーを表示するためには、以下のコマンドを実行します。数字パスワードが回復キーです。
1 |
manage-bde -protectors -get c: |
フロッピーディスクなどAドライブのルートにStartupKeyを保存する場合は、以下のコマンドを実行します。
1 |
manage-bde -protectors -add c: -startupkey a: |
ここまでで、下準備は完了です。
Step3: CentOS 7 のインストール
特に、Legacy-BIOS環境(32-bit or 64-bit)にインストールする際は、Windows ブートマネージャーを起動するためのブートセクタをCentOSのインストーラーが上書きし一回飛ばしますので、バックアップなしに実行することはお勧めしません。
インストーラーの起動
さて、インストールメディアを挿入し再起動して、インストーラーを起動します。
ブートローダーが表示されたときに TAB キーを押してオプションを指定することができます。
テスト環境はVMware上だったので、インストーラーが小さい画面で起動したので、以下のオプションを使って解像度を明示的に指定しました。
1 |
resolution=1024x768 |
言語設定
インストーラが起動したら、まず言語環境を選択し「続行」をクリックします。
クリック直後は「インストールソース」や「ソフトウェアの選択」に警告マークが表示されていますが、すぐにその警告は消えます。
初期設定
インストール時の基本的な設定を行います。
警告が消えた後、ソフトウェアの選択をします。
今回は、テスト環境でもあるしGNOMEデスクトップを選択すると、説明が増えるので最小限の構成を選択しました(デフォルトのままです)。
次に「ネットワークとホスト名」を設定します。
右上のオンオフスイッチをオン(デフォルトはオフ)にしておかないと、インストール後にネットワークにつながらなかったりするので、環境に応じて適宜設定します。
この辺りまでは通常のインストール作業と変わりはありません。
インストール先パーティションの設定
CentOS 7 のインストーラーは、素直なので特に悩むこともありません。
パーティションの設定
テストした際では「自動構成のパーティション構成」を選択してインストールしても、Windows領域が侵されることは(MBR)を除いてありませんでした。事故防止のため、「パーティション構成を行いたい」を選択します。併せてお好みで暗号化オプション(デフォルトではパスワードベース)を選択しましょう。
CentOS のインストーラーは親切で、自動構成ボタンがついています。
青字の「自動的に作成」をクリックすると、空き領域から適当にパーティションを構成してくれますし、それをベースに編集することもできます。
パーティション構成の確認
Windowsパーティションの確認
不明となっている部分は、既にWindowsがインストールされている領域であったり、先ほど作成した共有領域であったりします。
お好みで共有領域に対してマウントポイントを設定しておくのも良いでしょう。
すべての確認が終わったところで「完了」をクリックすると、暗号化を解除するためのパスワードを求められます。暗号化オプションを選択していない場合は表示されません。
ちなみに、暗号化オプションを選択しなかったら、こんな感じです。
インストールの実行
インストール先の設定が完了したら、いよいよ「インストールの開始」です。
root パスワードの設定
root パスワードを設定します。お好みで初期アカウントを作成してください。
しばらくするとインストールが完了し、再起動ボタンが表示されます。
Step:4 CentOS のブートセクタイメージの作成
Legacy-BIOS環境(32-bit or 64-bit)の場合は、このままではWindowsを起動することができませんので、続きの作業があります。
Windows を起動できるようにする方法には、CentOSのブートローダーにWindowsのエントリーを追加する方法もありますが、今回はBitLockerや何かと融通の利かなさそうなWindowsのために、Windows ブートマネージャーを使う方法を採用します。
GRUB2の設定ファイルを開きます。
1 |
vi /etc/grub.d/40_custom |
以下の行を追加します。
1 2 3 4 |
menuentry “Microsoft Windows 10” { set root=(hd0,2) chainloader +1 } |
設定を反映します。
1 |
grub2-mkconfig -o /boot/grub2/grub.cfg |
CentOS の起動
ブートローダーが起動後、暗号化している場合はパスフレーズの入力を求められます。
ちなみに、GNOMEデスクトップをインストールしていると、こんな画面でパスワード入力を求められます。
共有ボリュームのマウント
無事起動することができたら、早速ログインしてパーティションの状況を確認します。
続けて、以下のコマンドを実行して、最初に作成した共有用の領域をマウントします(インストールオプションでマウントポイントを設定している場合は、既にマウントされているので不要です)。
1 2 3 |
fdisk -l mkdir /windows mount -w /dev/sda3 /windows |
ブートセクタの書き出し
さらに、ブートセクタのデータを以下のコマンドを使って、共有領域にバックアップします。
1 |
dd if=/dev/sda of=/windows/boot.img bs=512 count=1 |
Step:5 ブートセクタの更新
CentOS のブートセクタのバックアップができたら、システムドライブのブートセクタを CentOS から Windows に戻します。
Windows のインストーラーの起動
Windowsのインストールメディアを挿入または接続し、Windowsのインストーラーを起動します。
起動する際には、もともとのWindowsの環境に合わせて、オプションを選択します(今回は32-bit)。
コマンドプロンプトを開く
Shift + F10 を押してコマンドプロンプトを開きます。
クリックだけで開くのであれば以下の通り選択していくと開けます。
MBRの修復にBitLockerで暗号化されたシステムドライブの情報は必要ないので、スキップします。
ブートコードの更新
コマンドプロンプトが開いたら、以下のコマンドを入力します。
1 |
bootsect /nt60 sys /mbr |
Step6: Windows ブートローダーの設定
再起動すると何事もなかったように無事Windowsが起動します。
ディスクの管理を開いて確認すると、ちゃんとインストールされているようです。
このままではCentOSを起動することができません(困ったものだ)。
ブートエントリの作成
先ほどバックアップした CentOS のブートセクタを利用して、ブートエントリを作成します。
スタートボタンを右クリックしてコマンドプロンプトを管理者権限で開きます。
以下のコマンドを実行します。
1 |
bcdedit /create /d "CentOS 7" /application bootsector |
”エントリ {ac6ff458-1b3a-11e7-a368-000c2920126e} は正常に作成されました。”と返ってきました。
{ac6ff458-1b3a-11e7-a368-000c2920126e} の部分はヘルプなどで {<ID>} と表記されている部分になります。OS から 任意に割り当てて返ってくる値ですので、都度変わります。
ブートローダーのメニューに表示されるように、以下のコマンドを実行します。
1 |
bcdedit /displayorder {<ID>} /addlast |
次に、リアルモードブートセクタにかかる変数を設定していきます。
1 |
bcdedit /set {<ID>} device partition=C: |
1 |
bcdedit /set {<ID>} path \boot.img |
デフォルトではブートローダーのOS選択画面のタイムアウトは30秒ですが、長いので5秒に変更します。
1 |
bcdedit /timeout 5 |
ブートイメージの保存
今回は、”C:\”以下に”boot.img”というファイル名で保存するようにブートエントリを作成しましたので、共有ボリュームに保存しているファイルをコピーまたは移動させます。
お好みでブートイメージをシステムファイルとして保護します。
1 |
attrib +r +s +h c:\boot.img |
動作確認
以上でLegacy-BIOS環境(32-bit or 64-bit)のデュアルブート環境の構築完了です。
コメント
VMwareでインストールしたCentOSは、どこのドライブに入りますか?
コメントありがとうございます。
https://www.abten.net/2017/04/1323/#toc_index-9
で設定したパーティションにインストールされます。
未割当ての部分に入れるわけではないのですか?
通常は「自動構成のパーティション構成」を選択すると未割り当ての領域にインストールしようとします。未割り当て領域が足りない場合は、容量不足のエラーが出たと記憶しております。
しかし、パーティション設定でクリーンインストールもできてしまいますので、パーティション設定が優先されます。
ありがとうございます。もう一度試してみようと思います。
Win10 64bit UEFIのPCでSTEP3まで進めたのですが、UEFI-BIOS のブートマネージャーが出てきません。どうすればよいのでしょうか。
コメントありがとうございます。
インストールしたPCの仕様によって UEFI-BIOS へのエントリー方法は異なります。
一般的なPCであれば、電源投入直後にDeleteキーあるいはF2キーでエントリーできます。F1の場合もあります。タイミングがとりにくいので、連打すると良いでしょう。
VMwareであれば、ESCキーでエントリーできるはずです。
起動した後常にエントリーされるようにするにはどうすればよいですか?
先の返信の通り「PCの仕様によって UEFI-BIOS へのエントリー方法は異なります」ので、常にエントリーできるかどうかはPCの仕様次第です。
VMwareであれば「bios.forceSetupOnce = “TRUE”」を設定すると次回起動時に限り強制的にエントリーされます。あるいは「bios.bootDelay = “xxxx”」を設定すると、OSの起動が遅延されますので、キー入力によるエントリーをしやすくなります。
また、ツールバーからVM>パワー>ファームウェアへのパワーオンを選択すると、同じくエントリーできます。
ありがとうございます
先にWindows10がインストールされた非UEFIのPCに、CentOS8を入れようとしても、HDDのパーティションの設定でうまくいかないようです。
ヒントをご教示いただけませんでしょうか。
コメントありがとうございます。
Windows10のパーティション構成は、記事に書かれたとおりでしょうか?
非UEFIの場合は、ディスクの構成がMBRレイアウトとなっていると思います。
最大4つのプライマリパーティションまたは3つのプライマリパーティションと1つの拡張パーティションしか作成できません。
このあたりを検討すれば、解決できるのではないでしょうか?
本記事のとおりの構成で不具合が発生する場合は検証しますので、お知らせください。
とても助かりました。
手順をきちんと残し、公開していただきありがとうございました。