UEFIとGRUB2と大容量ディスク
そもそもEFIが開発された動機は、1990年代中盤のインテルとヒューレットパッカードによる初代Itanium機の開発初期にまでさかのぼる。IBM PC由来のSystem BIOS等の制限等(16ビットプロセッサモード、1MBのアドレス空間、PC/ATハードウェアへの依存、等)によって、従来の各種スキームはItaniumのターゲットである巨大なサーバプラットフォームには採用できない。その課題に対しての最初の成果が、当初1998年に Intel Boot Initiativeと呼ばれ、後にEFIと名前を変えた。
ということで、複雑、高機能化するPCの機能を活かすために、従来のBIOSに変わるものとして作られたのがUEFIです。で、このUEFIで、直接我々が受けられる恩恵は何かと言うと、最近多くなってきた、大容量のHDDをブートデバイスとして使用できると言うことです。今回、サーバ側のHDDが容量不足となってまいりまして、6TBのHDDを購入し、これにLinuxを導入することといたしました。ブートさせるまでに苦労したので、今後のためにまとめておきます~。
必要なことをまとめておく
- LinuxカーネルをUEFI,大容量ディスク対応にコンフィギュレーションしておく
- 大容量HDDはGPTパーティションでパーティションを切る
- ブートパーティションは、EFIブートパーティション属性で、FATでフォーマットしておく
- ブートローダーの設定をしておく
- UEFIでブートできるよう設定するためには、予めUEFIでブートできるデバイスでブートしてから設定する
さて、それでは順番にやってみましょう~
LinuxカーネルをUEFI、大容量ディスク対応にコンフィギュレーションしておく
キーワードは、EFI,GPTです。
ONFIG_EFI_PARTITION=y CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_FB_EFI=y CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y CONFIG_EFI_VARS=y CONFIG_EFI_ESRT=y CONFIG_EFI_FAKE_MEMMAP=y CONFIG_EFI_MAX_FAKE_MEM=8 CONFIG_EFI_RUNTIME_WRAPPERS=y CONFIG_EFI_BOOTLOADER_CONTROL=y CONFIG_EFI_CAPSULE_LOADER=y CONFIG_EFI_TEST=y CONFIG_EFIVAR_FS=m
この辺はONにしておきましょう。
HDDのパーティションを切る
かつてパーティションを切るための定番コマンドはfdiskでした。が、古いバージョンは2TBの領域で、かつMBR(マスターブートレコード)に対応したブートディスクしか作成できませんでした。
ので、gdiskを使用します。ここでは、/dev/sdaにパーティションを切りましょう
# gdisk /dev/sda
Command (? for help): o ←GPTパーティションデーブルを作る Command (? for help): n ←パーティションを新規作成する Partition number (1-128, default 1):1 First sector : Last sector :+128M ←カーネルやGRUB2のファームを格納できるよう128MB取っておく(/bootにマウントする予定) Hex code or GUID (L to show codes, Enter = 8300): EF00 ←EFI用の領域とマークする
ここだけ気をつけてくださいね。その他のパーティションは普通にLinuxを作るときと一緒です。/rootに20GB程度?あとはお好みに応じて。その他はfdiskを使ったことある人は同じ操作でできるでしょう。
*UEFIブートできるデバイスでブートする Gentooでは、UEFIブートできるのはLiveDVDだけです。Minimal install CDだとUEFIブートしてくれないので、このあとの設定ができません…最新のLiveDVDだと、Advanced BOOT Optionで、CommandLine Modeが指定できますので、このモードを指定してブートすると、コマンドラインだけで起動してくれます。ここまでくれば簡単です。
ディスクをフォーマットする。
さて、ここで、/dev/sda1が先程作ったEFIブートパーティション、/dev/sda2がrootで、EXT4でフォーマットすると仮定しましょうか。以下で実施しましょう
# mkfs.vfat /dev/sda1 # mkfs.ext4 /dev/sda2
Gentooのインストール手順に従って…
あとはおなじみ、Gentooのインストール手順です
# mount /dev/sda2 /mnt/gentoo # mkdir -p /mnt/gentoo/boot # mkdir -p /mnt/gentoo/sys # mkdir -p /mnt/gentoo/dev Stage Tar Ball 展開 # mount /dev/sda1 /mnt/gentoo/boot # mount -t proc proc /mnt/gentoo/proc # mount --rbind /sys /mnt/gentoo/sys # mount --rbind /dev /mnt/gentoo/dev # chroot /mnt/gentoo # env-update ....
ちなみに、私はディスクの交換だったので、すでに作られていた、前システムのrootイメージをrsyncでコピーしておしまいです。
ブートマネージャをインストールする。
efibootmgrとGRUB2をインストールします。まず、make.confに以下を追加。
GRUB_PLATFORMS="efi-32 efi-64
で、
# emerge grub:2 efibootmgr
HDDにGRUBを設定する
先程からのとおり、/dev/sdaがブートディスク、/bootがEFIのブートパーティションとしますね。
# grub2-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=gentoo_grub /dev/sda # grub2-mkconfig -o /boot/grub/grub.cfg
/boot内にある、Linuxカーネルを勝手に探索して、GRUBのメニューを作ってくれます。もしカーネルをアップデートするときも、
# grub2-mkconfig -o /boot/grub/grub.cfg
を実行して修正することをおすすめします。
GRUBの設定は、/etc/default/grubにありますので、これをいじることで、いろいろと変更できまーす。
Page Info | |
---|---|
Page Name : | Gentoo Linuxな生活/大容量ディスクとGRUB2で悩む |
Page aliases : | None |
Page owner : | maruo |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | No one |
Users : | No one |