桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

デュアルブート環境構築を失敗しかけた話

d:id:youandi:20130917:p1
既存Linux実行環境に別途Ubuntuの実行環境を作る為に事前に色々調べていたんですが、一番面倒になりそうなLVMを使った環境ではなかったのでホッとした。
でも想定していたこれだとどう対応したら良いのか?というケースに陥って、環境構築に失敗しかけたのでメモ。


まず前提として、HDDのパーティション構成として以下を満たす必要があります。

    1. 拡張パーティションは最大1つまで作成可能
    2. 基本パーティションと拡張パーティションは合わせて最大4つまで作成可能
    3. 拡張パーティション内には論理パーティションを無制限に作成可能


既存のパーティション構成

パーティション バイス ファイルシステム 用途
基本パーティション /dev/sda1 ext2 既存Linuxの/boot
基本パーティション /dev/sda2 swap -
基本パーティション /dev/sda3 ext2 既存Linuxの/
基本パーティション /dev/sda4 ext2 既存Linuxの/home

既にパーティション数が4つになっていてこれ以上作成出来ない状態になっていた・・・orz


最初に試したパーティション構成

パーティション バイス ファイルシステム 用途
基本パーティション /dev/sda1 ext2 既存Linuxの/boot
基本パーティション /dev/sda3 ext2 既存Linuxの/
基本パーティション /dev/sda4 ext2 既存Linuxの/home
拡張パーティション /dev/sda2 - -
論理パーティション /dev/sda5 swap -
論理パーティション /dev/sda6 ext2 Ubuntuの/

LVMが全く使われていないのでGPartedで/dev/sda2のswap領域を削除して未使用領域として残したまま、/dev/sda4の領域をリサイズして拡張パーティション/dev/sda2を作成。
この構成だと、/dev/sda6にUbuntuのインストールは出来たんですが、既存LinuxのGRUB1から/dev/sda6にインストールしたGRUB2のローダーを見に行く事が出来なくてせっかくインストールしたOSを起動する事が出来なかった。
GRUBのコマンドモードで、chainloaderコマンドを指定すると、GRUBが認識しているHDDやパーティション情報を確認する事ができ、これで確認したら、/dev/sda2以降のデバイスは見えてなかった。


うまくいったパーティション構成

パーティション バイス ファイルシステム 用途
基本パーティション /dev/sda1 ext2 既存Linuxの/boot
拡張パーティション /dev/sda2 - -
論理パーティション /dev/sda5 swap -
論理パーティション /dev/sda6 ext2 Ubuntuの/
基本パーティション /dev/sda3 ext2 既存Linuxの/
基本パーティション /dev/sda4 ext2 既存Linuxの/home

GPartedで/dev/sda3, /dev/sda4をHDDの最後尾にコツコツと移動して、元々/dev/sda2のswap領域だった部分に空き領域を作成。
既存LinuxのGRUB1で確認したら、デバイス番号が連番ではないとか/dev/sda3, /dev/sda4がBIOSから見えないセクター位置にあるとか警告が出るものの/dev/sda6が見えるようになり、無事にデュアルブート環境が構築出来ました。
この辺の試行錯誤に4時間もかかってしまった。