Seeker's Memo

個人的で技術的かもしれないメモがメインのブログです。http://seekers.hatenablog.jp/about

BIOS+GPT環境でのGrub2によるブート(BIOS+UEFIの両環境対応型の手順抜粋。一部未確認)

【ポイント】
・Arch Linuxでのインストールメモの一部だけど、応用が利きそうなメモです。
・自分がよくわかってないのであえてまとめてみました。
・gdiskなどの、GPT対応ツールを使ってパーティショニング。
・「gpt」(ラベル)で初期化。※(「msdos」ではない)
・そのディスクの先頭に1007KiBの未フォーマット領域(パーティション)を作る(システムタイプCODE=ef02)
・その後、rootパーティション、必要ならSWAPやBOOTなどを作成。
・一応、GPTなので128パーティションぐらいまで作成できるらしい。
UEFI対応させるならgrub2の他にefibootmgrとやらも必要になるみたい?インストール

※対象のHDD(SSDやUSB接続)を確認。
$ ls /dev/sd*
$ lsblk -f

※今回は、仮に/dev/sdaだとする。
※しつこく、対象を確認しておく。
# gdisk -l /dev/sda

パーティション情報の全消去
# gdisk --zap-all /dev/sda


# gdisk /dev/sda

プロンプトが表示されたら、
GPTで初期化する指示(「o」の入力?)をまずやる。

続いて、
n,default,default,+1007K,ef02(BIOS boot partition)

・あとは自由に作成して良い。
EFIパーティションを作成してUEFIブートも対応する場合、適当なパーティション(500MiB程度)を作成し、typeに「EF00」を指定する。

一通り終わったら、忘れずに「w」で実際に書き込んで抜ける。

・次にフォーマット。
※先頭に作ったBIOS-boot-partitionは絶対にフォーマットしないこと!!
※その後ろのどこかに作った(かもしれない)EFIパーティションは「mkfs.vfat -F32」で初期化する
rootfsとか他のパーティションは好きなフォーマットでどぞ。

・必要なパーティションをマウントしてインストール
例として、ここでは、EFI用とrootfs用だけ作成したものとする。(/dev/sda1=BIOS-BOOT-PARTITION,/dev/sda2=EFI-PARTITION,/dev/
sda3=rootfs)

# mount /dev/sda3 /mnt
# pacstrap /mnt base-devel
# arch-chroot /mnt
※とりあえずこれだけ。arch-chrootの前に、pacstrapとかやるけどね


・grub2(BIOSモード)を対象のディスクにイントールBIOS環境の場合必須。(手順で起動確認済み)
# grub-install --target=i386-pc /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

・grub2(UEFIモード)。追加でUEFIBIOS両対応するには多分こうやる?(起動未確認……。HDD移したり実験するの面倒なので)
# mkdir /boot/efi
# mount /dev/sda2 /boot/efi
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub-bios-gpt
# grub-mkconfig -o /boot/grub/grub.cfg
※「grub-bios-gpt」の部分はおそらく名前なので自由にしてよい?
※これを実施しているのがEFIシステムじゃない場合、2行ほど同じ警告が表示されるが一応問題なく完了する。

【結論】
まあよくわからん。
とりあえずGPTでフォーマットしてBIOS環境でブートするまでは確認した。
この手順でそのままUEFIブートまで対応できてるのかは実際にマザボに挿してみないとよくわからないのであった。