Gentoo LinuxをUEFI + GPT環境にインストールする

こんにちは。今回のテーマは『Gentoo LinuxをUEFI + GPT環境にインストールする』です。最近はUEFIシステムのマシンが増えてきてGentooもUEFIに対応した公式ハンドブックを更新しました。しかし、ほとんど英語であり、少々分かりづらい点もあると思います。今回は実際に行った作業に基づき、「そんなに難しくない」という点をお伝えできればと思います。
【関連記事】
Arch LinuxをUEFI + GPT環境にインストールする
Slackware 14.1をUEFI + GPT環境にインストールする



【目次】
インストール環境と構築するシステム
インストールメディアの準備と起動
ネットワークの準備
パーティショニングとファイルシステムの作成
システムファイルのインストール
Gentooベースシステムの設定
カーネルの設定
システムの設定とローカライズ
ブートローダの設定
システムの再起動

インストール環境と構築するシステム

<インストール環境>

CUP:AMD Phenom
RAM:1 GB
ブートシステム:UEFI
ネットワーク:有線

<構築する予定のシステム>

アーキテクチャ:amd64(64bit)
initシステム:OpenRC
ブートローダー:Grub2

インストールメディアの準備と起動

Minimal CDではUEFIブートは出来ないのでUEFIシステムへのGRUBのインストールが出来ません。ここで選択肢は以下のようなものがあると考えられます。

  1. Live DVDを使用する
  2. Minimal CDからUEFI起動可能なUSBメモリを作成する
  3. SystemRescureCDなどのGentoo以外のメディアを用いる
  4. ブートローダ設定部分だけLive DVDを使用し、他はBIOSモードでMinimal CDを使用する

ここでは1番のUEFIブート可能なLive DVDを使用する前提で話を進めます。

LiveDVDの入手

公式ページからダウンロード出来ますが、直接のダウンロードは失敗する可能性があります。こちらのページから.torrentファイルをダウンロードしてTorrentを用いてダウンロードすることをオススメします。
ファイルをダウンロードしたら公式ページのハッシュと一致するか確認して正しいファイルをダウンロードしたか確かめます。

$ sha512sum livedvd-amd64-multilib-20140826.iso

LiveDVDの起動

LiveDVDはUEFIシステムで起動可能です。起動するとディスプレイマネージャーKDMが起動し、ログインする環境を選べますが、筆者としては日本語キーボードへの変更が容易なコンソールログインをオススメします。

CASE 1: Live DVDでコンソールログインする場合
電源ボタンを押して”console login”を選びます。これはGUI環境ではキーボードの日本語化に手間取るためです。コンソール環境の方が設定が容易であり、Minimal CDを用いる場合と同様の作業環境となります。
02

Minimal CDではキーボード選択画面がでますが、LiveDVDでは出ません。以下コマンドでキーボードを日本語に切り替えます。

$ loadkey jp106

CASE 2:Live DVDでGUIログインする場合
GUIデスクトップ環境でログインするとブラウザで情報を集めながら作業ができるメリットがあります。
03

しかし日本語キーボードへ変更を手動で行う必要があります。以下の操作をして下さい。

$ sudo su -
# vim /etc/X11/xorg.conf.d/00-keybord.conf

以下のように修正

Option "XkbLayout" "us"
↓
Option "XkbLayout" "jp"

この設定後にログアウトして再ログインして下さい。日本語キーレイアウトへ変更されています。

これで準備は完了です。

ネットワークの準備

インストールは有線LANで行うことをオススメします。無線LANの構築はシステム構築後にトライするのが賢明かと思います。これより先は有線LANを前提に進めます。

ネットワーク接続確認

多くの場合はLive DVDのシステムが自動でネットワークデバイスを読み込み自動でネットワーク接続を行います。以下コマンドで接続有無を確認します。

ping -c 3 www.google.com
ping: unknown host 

のエラーが出たら接続が確立されていません。
コチラを見ながら設定作業をしてください。

パーティショニングとファイルシステムの作成

パーティショニングにはgdiskがオススメ

UEFIブートではGPTを使うことが推奨されています。今回もGPTでパーティショニングをします。PartedはMBRとGPTに対応していますが、少々使い勝手が悪いです。筆者としてはGPTでパーティショニングをする場合はgdiskをオススメします。gdiskは以下コマンドで実行します。(OSをインストールするHDDがsdaの場合)

# gdisk /dev/sda

gdiskを起動したら以下のようにoでGPTのパーティションテーブルを作成します。(この作業で既存パーティションは全て削除されますので注意して下さい)

Command (? for help):o

ESP(EFI System Partition)の作成

UEFIブートをする場合はESPと呼ばれるFAT32でフォーマットされたパーティションを作成する必要があります。容量は512MB程度が推奨されています。

Command (? for help):n
Permission number: 1
First sector     : 何も押さずエンター
Last sector      : +512M
Hex code or GUID : EF00

その他のパーティショニング

ESP以外は自由にパーティショニングして下さい。root,swap,home等のパーティションに分けるのが一般的です。今回はrootとswapのみ作成します。

swapパーティション(作成例)

Command (? for help):n
Permission number: 2
First sector     : 何も押さずエンター
Last sector      : +1G
Hex code or GUID : 8200

rootパーティション(作成例)

Command (? for help):n
Permission number: 3
First sector     : 何も押さずエンター
Last sector      : 何も押さずエンター 
Hex code or GUID : 8300

今回はこのようなパーティションにしてみました。

sda        8:0    0  93.2G  0 disk 
├─sda1   8:1    0   512M  0 part /boot 
├─sda2   8:2    0     1G  0 [swap]  
└─sda3   8:3    0    13G  0 part /  

ファイルシステムとswapの作成

ESPのフォーマット

# mkfs.vfat -F32 /dev/sda1

Linuxファイルシステム(ext4)のフォーマット

# mkfs.ext4 /dev/sda3

スワップの作成と読み込み

# mkswap /dev/sda2
# swapon /dev/sda2

パーティションのマウント

先ほど作成したパーティションをマウントしましょう。まずはルートからです。

# mount /dev/sda3 /mnt/gentoo

次にESPを/mnt/bootにマウントします。ESPの場所は後に重要になってきます。

# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

システムのインストール

日時の修正

まず日付を正確に合わせます。
<日時の確認>

# date 

<日時の設定>

# date [MMDDhhmmYYYY] 

stagetarballのダウンロードとインストール

# cd /mnt/gentoo
# links http://www.gentoo.org/main/en/mirrors.xml

国内のミラーリンクを選択し
releases/x86/autobuilds/ディレクトリに移動しstage3-i686-.tar.bz2をダウンロードします。ダウンロードは”d”を押せばOKです。
以下コマンドで展開します。

# tar -xvjpf stage3-i686-.tar.bz2

※オプション”p”はパーミッションの付加に必要なので省略しないこと

コンパイルオプションの変更

以下コマンドでmake.confを編集

# nano -w /mnt/gentoo/etc/portage/make.conf

筆者の場合はデフォルトの設定に以下を追加しました。特にGRUBの設定は後ほど重要になるので注意が必要です。

MAKEOPTS="-j3"
LINGUAS="en ja"
GRUB_PLATFORMS="efi-64"

Gentooベースシステムの設定

公式ハンドブックではミラーリンクの設定をするようになっていますが、mirrorselectコマンドがうまく働かず、設定ファイルに反映されませんでしたので無視して進めます。

chrootする

<DNS情報のコピー>

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

</procと/devファイルシステムのマウント>

# mount -t proc proc /mnt/gentoo/proc
# mount --rbind /dev /mnt/gentoo/dev
# mount --rbind /sys /mnt/gentoo/sys

もしsystemdを導入する場合は以下のコマンドも実行しておいて下さい。今回はOpen-RCのため割愛します。

# mount --make-rslave /mnt/gentoo/sys
# mount --make-rslave /mnt/gentoo/dev

<新環境へのchroot>

# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"

portageのインストール

CASE 1:emerge-webrsyncを使う
こちらの方が公式ページで紹介されている方法であり、より簡単にportageを導入できるようになっています。以下コマンドを実行するだけです。

# emerge-webrsync

CASE 2:手動によるインストール
※CASE 1でemerge-webrsyncを実行した場合は不要です。
従来通り手動でportageのスナップショットをインストールする場合は以下の操作を行って下さい。

# cd /
# links http://www.gentoo.org/main/en/mirrors.xml

国内のミラーリンクのsnapshots/ディレクトリに移動してportage-latest.tar.bz2をダウンロードします。
では展開しましょう。

# tar xvjf portage-latest.tar.bz2 -C /usr

portageシステムの設定

<portageツリーの更新>

# emerge --sync

<profileの設定>
以下コマンドで使用可能なprofile一覧が現れる

# eselect profile list

以下コマンドでprofileを変更する。

# eselect profile set [番号]

筆者は以下の設定にしました。

default-linux/amd64/13.0/desktop *

<USEフラグの設定>
利用可能なUSEフラグは以下コマンドで確認

# less /usr/portage/profiles/use.desc

以下コマンドでmake.confを修正

# nano -w /etc/make.conf

筆者の設定は以下のとおり(かなり適当です)
後にいくらでも修正可能なので気負わなくて大丈夫です。基本的にプロファイル設定時に基本的なフラグは設定されているので、追加するぐらいの気持ちで気楽にやりましょう。

USE "bindist x acpi alsa dbs dvd flac gimp git gtk gzip ogg wifi networkmanager java"

カーネルの設定

マニュアルでカーネルをビルドする場合

今回はマニュアルでコンフィギュレーションしました。
以下コマンドでカーネルをインストールしコンフィギュレーションメニューを開く

# emerge gentoo-sources
# cd /usr/src/linux
# make menuconfig

コンフィギュレーションについて具体的なことは書けないのですが、何回でもやり直せますのでハードの情報をよく調べて挑戦してください。デバイスに関する情報はlspciコマンドで得られます。特に注意すべき点はEFIのサポートに関する部分はチェックを漏らさないように注意して下さい。納得のいく設定ができたらカーネルをビルドしてインストールします。

# make && make modules_install
# make install

genkernelを使って自動でカーネルをビルドする場合

※マニュアルでカーネルビルドした場合は飛ばしてOKです。
もしマニュアルでカーネルをビルドするのが面倒だったり自身がない場合も問題ありません。genkernelという自動ビルドツールがあります。genkernelを使う場合は次の章のfstabの作成を先に行ってから以下コマンドを実行して下さい。

# emerge --ask genkernel
# genkernel all

/boot以下にkernel-から始まるカーネルが作成されています。

システムの設定とローカライズ

fstabの作成

以下コマンドでfstabを編集します。

# nano /etc/fstab

“boot”,”root”,”swap”の部分をそれぞれ”sda1,”sda3″,”sda2″に置き換えればOK。あと、注意しなければいけないのがbootのフォーマットですが、vfatに修正して下さい。

ネットワークの設定

ネットワークがシステム起動時に起動するように設定しておきましょう。
ネットワーク名はeth0とかenp0s3などが当てられていると思います。ifconfigで確認し、設定しましょう。

設定例

# cd /etc/init.d
# ln -s net.lo net.enp0s3
# rc-update add net.enp0s3 default

Rootパスの設定

以下コマンドでルートパスを設定します。

# passwd
New password : ********

ローカライズ

ここの設定は後回しにしてもOKしてです。
コンソール環境のローカライズをしておきます。
<タイムゾーン>
日本国内に住んでる場合
手っ取り早いのは以下のようにコピーする方法です。

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

別の方法としては以下のようにemerge –configを使う方法があります。

# echo "Asia/Tokyo" > /etc/timezone
# emerge --config sys-libs/timezone-data

<キーボードレイアウト>

# nano /etc/conf.d/keymap

以下のように修正

KEYMAP="jp106"

<言語>
/etc/locale-genの編集

# nano /etc/locale-gen

以下のように修正、あるいはコメントアウトを外す

en_US.UTF-8
ja_JP.UTF-8

以下コマンドを実行

# locale-gen

ブートローダの設定

公式ハンドブックではefibootmgrを使う方法が紹介されていますが、ルートパーティションを特定できずカーネルパニックを起こし上手く行きませんでした。ここではGRUBを導入する方法をオススメします。

Grub2のインストール

GrubのインストールはBIOSブートの時とは異なる点が多いので注意をして下さい。
#1 /etc/portage/make.confの編集

# nano /etc/portage/make.conf

以下のフレーズを追加します。既に追加済みの場合は結構です。

GRUB_PLATFORMS="efi-64"

# grub2とefibootmgrのインストール

# mkdir -p /boot/efi
# emerge grub efibootmgr
# grub2-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=gentoo_grub /dev/sda

このままではVirtualBox等のUEFIファームウェアではefiファイルが検出されません。以下のように/boot/efi/boot以下にbootx64.efiファイルを作成します。

# mkdir -p /boot/efi/boot
# cp /boot/efi/gentoo_grub/grubx64.efi /boot/efi/boot/bootx64.efi

#3 GRUB設定ファイルの作成
以下コマンドで自動作成します。

# grub2-mkconfig -o /boot/grub/grub.cfg

カーネルのビルドがトラブルなく終わっていればここでカーネルが検出されるはずです。一つも検出されない場合は/bootディレクトリでlsで確認してください。

システムの再起動

以下コマンドを実行し、マウント解除と再起動を実行する。再起動時はMinimal CDを抜くのを忘れずに。

# exit
cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}
cdimage ~# reboot

最後に

ひとまず、ここまでとします。お疲れ様でした。Arch Linux等でUEFIブートシステムに慣れている方にとってはお馴染みの方法だったと思いますが、BIOSブートに慣れている方には何やら面倒に感じられたかも知れません。Arch LinuxのようにGentooのminimal CDもUEFIブートに対応すればもう少し楽になるとは思うのですが。

Sponsored Link


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です