UEFI環境でGentoo Linuxをインストールする機会があったので、その際に調べたことをメモしてみようと思います。
基本的な部分については、以前の記事「Gentoo Linuxインストールメモ」と同様です。よろしければ、こちらも参考にしてみてください。
インストールメディア
Gentoo Linuxをインストールする際、ブート用のISOイメージ注1をダウンロード&メディアに書き込んでCD-R(DVD-R)からブートするのが一般的だと思いますが、最近は光学ドライブを搭載しないPCも増えています。そこで、今回はSystemRescueCdを使ってUSBブートして、Gentoo Linuxをインストールしてみようと思います。
SystemRescueCdのダウンロード
SystemRescueCdのISOイメージはリンクからダウンロードできます。
SystemRescueCd – Download
https://www.system-rescue-cd.org/Download/
ダウンロードできたら、ファイルに問題がないか念のため確認してください。
$ sha256sum systemrescuecd-x86-5.2.0.iso
f3a9bbc82e203d2e301fb5f429f56f634cca87731a684b7f85fe762c070545bd
USBメモリーへの書き込み
※以下はGentoo Linux環境で実行しています。注2
isohybrid
コマンドでISOを変換
$ isohybrid systemrescuecd-x86-5.2.0.iso
isohybrid
はsys-boot/syslinux
パッケージに含まれています。コマンドが利用できない場合はパッケージからインストールしてみてください。
# emerge --ask --verbose sys-boot/syslinux
USBメモリーをPCに挿し込んでdd
コマンドを実行
# dd if=systemrescuecd-x86-5.2.0.iso of=/dev/sdx
※USBメモリーを自動マウントするように設定している場合はumount
を忘れないように気を付けてください。
※/dev/sdx
の部分はUSBメモリーのパスに合わせて変更してください。
USBメモリーでブートしてインストール
SystemRescueCdを書き込んだUSBメモリーでブート
ネットワークの設定は、DHCPの場合は自動で行われると思います。そうでない場合はnet-setup
で設定してください。
# net-setup
net-setup
の代わりにifconfig
を使う場合は次のように設定できます。
# ifconfig eth0 <IPアドレス> broadcast <ブロードキャスト> netmask <ネットマスク> # route add default gw <ゲートウェイ> # nano -w /etc/resolv.conf (ネームサーバーの設定)
ディスクはparted
を使うと次のような感じできます。
# parted /dev/sdx GNU Parted 3.2 Using /dev/sdx Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt (parted) unit mib (parted) mkpart primary 1 2001 (parted) mkpart gentoo 102001 202001 (parted) print Model: ****** Disk /dev/sdx: ****** Sector size (logical/physical): Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2001MiB 2000MiB primary boot, esp 2 102001MiB 202001MiB 100000MiB gentoo (parted) quit
※1番目と2番目のパーティションに空きがあるのはWindows用のスペースです。不要な場合は普通に連続して作成してください。
※ここではswapやboot用のパーティションを作成していません。必要な場合は追加してください。また、各パーティションのサイズもテキトウです。適切な大きさで作成してください。
※データ用などで、ディスク全体を1つのパーティションとして作成したい場合は%
を使うと便利です。(parted) mkpart primary 0% 100%
作成したパーティションをフォーマット
# mkfs.fat -F 32 -n efi-boot /dev/sdx1 # mkfs.ext4 /dev/sdx2
chroot
して普通にインストール
# mkdir /mnt/gentoo # mount /dev/sdx2 /mnt/gentoo # mkdir -p /mnt/gentoo/boot/efi # mount /dev/sdx1 /mnt/gentoo/boot/efi # mount --types proc /proc /mnt/gentoo/proc # mount --rbind /sys /mnt/gentoo/sys # mount --make-rslave /mnt/gentoo/sys # mount --rbind /dev /mnt/gentoo/dev # mount --make-rslave /mnt/gentoo/dev # chroot /mnt/gentoo /bin/bash # source /etc/profile # export PS1="(chroot) ${PS1}"
途中の作業は過去のメモと余り変わっていないので省略します。
ブートローダー
最後に、ブートローダーはGRUB2を使う場合は次のような感じにできます。
# emerge --ask --verbose sys-boot/grub:2 # grub-install --efi-directory=/boot/efi # grub-mkconfig -o /boot/grub/grub.cfg
grub-install
で下記のようなエラーが発生する場合は/sys/firmware/efi/efivars
をマウントすることで解消する場合もあるようです。
# grub-install --efi-directory=/boot/efi Installing for x86_64-efi platform. Could not prepare Boot variable: Read-only file system grub-install: error: efibootmgr failed to register the boot entry: Input/output error. # mount -o remount,rw /sys/firmware/efi/efivars # grub-install --efi-directory=/boot/efi Installing for x86_64-efi platform. Installation finished. No error reported.
Windowsとのデュアルブート設定
WindowsもGRUBからブートしたい場合はos-prober
を使うと便利です。
一旦、chroot
環境から抜けて
# mkdir -p /mnt/gentoo/run/udev # mount -o bind /run/udev /mnt/gentoo/run/udev # mount --make-rslave /mnt/gentoo/run/udev # chroot /mnt/gentoo /bin/bash # source /etc/profile # export PS1="(chroot) ${PS1}"
とした後、
# emerge --ask --verbose sys-boot/os-prober # grub-mkconfig -o /boot/grub/grub.cfg
でWindowsを探して設定してくれます。
※パーティション作成だけでなく、本当にWindowsをインストールした状態で実行してください。
TIPS 1. 再起動してもLinuxが起動しない場合
インストール後、再起動してもLinuxが起動しない場合は、以下を試してみると上手くいくかもしれません。
# mkdir -p /boot/efi/EFI/BOOT # cp /boot/efi/EFI/gentoo/grubx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
TIPS 2. キーボードからの入力が効かなくなった場合
再起動後、キーボードからの入力が効かなくなった場合は、USB周りのカーネル設定を見直してみると良いかもしれません。
Device Drivers ---> HID support ---> -*- HID bus support <*> Generic HID driver [*] Battery level reporting for HID devices USB HID support ---> <*> USB HID transport layer [*] USB support ---> <*> xHCI HCD (USB 3.0) support <*> EHCI HCD (USB 2.0) support <*> OHCI HCD (USB 1.1) support
TIPS 3. error: unknown filesystem
error: unknown filesystem
などと表示され、GRUBから起動できなくなってしまった場合は、次のようにしてGRUBのコマンドラインからブートできます。
set root=(hd0,1) set prefix=(hd0,1)/boot/grub insmod normal normal
※(hd0,1)
の部分はパーティション構成に合わせて変更してください。
起動できたら、ブート周りを修正してみてください。特にWindowsのインストールをした場合など、パーティション構成が変わった場合は/etc/fstab
の修正を忘れないように気を付けてください。
参考書籍
はじめてのGentoo Linux
はじめてGentoo Linuxを使う人にも分かり易い解説書です。内容はWebブラウザやオフィソフトの利用方法からWebサーバー、DNSサーバーまで一通り網羅されています。
Linuxコマンドポケットリファレンス
よく使わわれるコマンドを収録したポケットリファレンスです。Gentoo Linuxに限った書籍ではありませんが、使い易いリファレンスかなと思います。
リンク
Gentoo AMD64 Handbook – Gentoo Wiki
https://wiki.gentoo.org/wiki/Handbook:AMD64
GRUB2 – Gentoo Wiki
https://wiki.gentoo.org/wiki/GRUB2#UEFI_with_GPT
LiveUSB – Gentoo Wiki
https://wiki.gentoo.org/wiki/LiveUSB
SystemRescueCd – System Rescue Cd Homepage
http://www.system-rescue-cd.org/
grub2 – How to fix “error: unknown filesystem. grub rescue> – Ask Ubuntu
https://askubuntu.com/questions/142300/how-to-fix-error-unknown-filesystem-grub-rescue
Configuring the Linux kernel – Gentoo Wiki
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel#Activating_required_options
Handbook:AMD64/Blocks/Disks – Gentoo Wiki
https://wiki.gentoo.org/wiki/Handbook:AMD64/Blocks/Disks
注1 通常はMinimal Installation CDを使ってインストールすると思いますが、UEFI環境では利用できない場合があるので気を付けください。ここではSystemRescueCdを使いますが、Hybrid ISO(LiveDVD)を使っても同様の手順でインストールできると思います。
注2 Windows環境でUSBメモリーを作成する場合はInstalling SystemRescueCd on a USB stickなどを参考にしてみてください。