Gentoo LinuxをUEFI + GPT環境にインストールする
2015-08-03
2015-08-20
こんにちは。今回のテーマは『Gentoo LinuxをUEFI + GPT環境にインストールする』です。最近はUEFIシステムのマシンが増えてきてGentooもUEFIに対応した公式ハンドブックを更新しました。しかし、ほとんど英語であり、少々分かりづらい点もあると思います。今回は実際に行った作業に基づき、「そんなに難しくない」という点をお伝えできればと思います。 【関連記事】 Arch LinuxをUEFI + GPT環境にインストールする Slackware 14.1をUEFI + GPT環境にインストールする [adsense02] 【目次】 インストール環境と構築するシステム インストールメディアの準備と起動 ネットワークの準備 パーティショニングとファイルシステムの作成 システムファイルのインストール Gentooベースシステムの設定 カーネルの設定 システムの設定とローカライズ ブートローダの設定 システムの再起動
インストール環境と構築するシステム
<インストール環境>
CUP:AMD Phenom RAM:1 GB ブートシステム:UEFI ネットワーク:有線
<構築する予定のシステム>
アーキテクチャ:amd64(64bit) initシステム:OpenRC ブートローダー:Grub2
インストールメディアの準備と起動
Minimal CDではUEFIブートは出来ないのでUEFIシステムへのGRUBのインストールが出来ません。ここで選択肢は以下のようなものがあると考えられます。
- Live DVDを使用する
- Minimal CDからUEFI起動可能なUSBメモリを作成する
- SystemRescureCDなどのGentoo以外のメディアを用いる
- ブートローダ設定部分だけ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を用いる場合と同様の作業環境となります。 Minimal CDではキーボード選択画面がでますが、LiveDVDでは出ません。以下コマンドでキーボードを日本語に切り替えます。
$ loadkey jp106
CASE 2:Live DVDでGUIログインする場合 GUIデスクトップ環境でログインするとブラウザで情報を集めながら作業ができるメリットがあります。 しかし日本語キーボードへ変更を手動で行う必要があります。以下の操作をして下さい。
$ 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ブートに対応すればもう少し楽になるとは思うのですが。 [adsense]