kenkovlog

Haskell, Python, Vim, ...

GRUBとデュアルブートとパーティション

GRUBのインストールと設定について。

DebianとArch Linuxデュアルブートにしようと思い、
GRUBをどのようにインストールすればいいか調べました。

パーティションは次のようになっています。

/dev/sda         MBR
/dev/sda1  boot  Debian /
/dev/sda3  boot  Arch   /
/dev/sda5        Debian Swap
/dev/sda6        Arch Swap

【手順】
1. Debianをインストール
2. Debianのインストール時にGRUBをsda(MBR)にインストールした
3. Archのインストール
4. Archのインストール時にGRUBをsda3(Archのroot)にインストールした

このようにインストールすると、起動時にはMBRが読み込まれ、
Debianをインストールする時に入れたGRUBが起動します。
そのため、何も設定をしていない場合は、ArchはGRUBの起動メニューに
表示されないことになります。

したがって次に、ArchがGRUBのメニュリストに表示されるように、
Debianを起動し、/boot/grub/menu.lstの編集を行います。

title       Debian GNU/Linux, kernel 2.6.26-2-686
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet
initrc      /boot/initrc.img-2.6.26-2-686

title       Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root        (hd0,0)
kernel      /boot/mvlinuz-2.6.26-2.686 root=/dev/sda2 ro single
initrc      /boot/initrc.img-2.6.26-2-686

# ここから追加する
# Arch Linuxの設定
title       Arch Linux
root        (hd0,2)
# chainloaderでロードする
# ここを上のDebianと同様に
# kernel ..
# としてロードするとロードできず失敗する。
# おそくら、パーティションの先頭にGRUBをインストールしているため。
# したがって、GRUBをインストールした場合、
# chainloaderで起動する必要があるよう
chainloader +1

Swap領域を作るのには論理パーティションを使いました。

パティションには

* 基本パーティション(基本領域)
* 拡張パーティション(拡張領域)
  * 論理パーティション(論理領域)

があります。

基本パーティションはひとつのディスクにつき4つまで作成できます。
ディスクから直接起動するOSの起動部分はこの基本パーティションに
置かなければいけません。

拡張パーティションはひとつのディスクにひとつのみ作成可能で、
拡張パーティションの中に
論理パーティションを16まで作成できます。
論理領域は必ず連続していなければなりません。

拡張領域を使った場合は、基本領域は3つまでしか作成できなくなります。

ですので、Linuxをインストールするときに手動でパーティションをするとき、
そのパーティションを基本領域にするか、論理領域にするか決めますが、
拡張パーティションにするかどうかの選択がでないのはこのためです。
論理領域にしたら、自動でその論理領域が拡張領域に含まれていると
みなされます。

上の例では

-----------------------
MBR
/dev/sda    MBR
-----------------------
基本領域
/dev/sda1   Debian /
-----------------------
基本領域
/dev/sda3   Arch   /
-----------------------
拡張領域
/dev/sda5   Debian Swap
/dev/sda6   Arch Swap

となっています。

【Archの疑問点】
ArchLinuxでGRUBをインストールする時、
インストール先として

/dev/sda
/dev/sda
/dev/sda1
/dev/sda3
/dev/sda5
/dev/sda6

とインストール先が出てきました。
このとき、もしMBRにGRUBをインストールしようとすると
上から二番目の/dev/sdaにインストールしなければいけないようです。
なぜ、上の二つに/dev/sdaと同じものが出てきているのか謎です。。

なんとなく、
https://wiki.archlinux.org/index.php/Beginners%27_Guide#.2Fetc.2Fpacman.d.2Fmirrorlist
のページに書いてある

Warning: 
Make sure to install GRUB on /dev/sdX and not /dev/sdX#! 
This is a common mistake.

が関係ある気がしますが、sda#とは書かれていなかったので、どうなっているのか解りません