😴

The Battle with Gentoo (インストール)

2024/06/13に公開

概要

前回の構成のハードウェアに Gentoo をインストールした時の備忘録として残します
https://zenn.dev/exelion/articles/c373ae6017fd84

ここでは stage3 (stage1 はなくなって後から emerge --update @world するのが推奨されてる?)からビルドして、カーネルと X (KDE Plasma) が起動するまでを構築します。これを書いている時点では 5.27.11 が stable-version みたいです

出来るだけマニュアルに沿ってインストールする事を心がけています。また推奨値を選び、最適化は次のタスクにする予定で、まずは SSD からのブートを急ぎます

インストール手順

新しい SSD へのインストールなので、作業に使う shell は USB Live の標準のものを使う事になります。まずは Live USB イメージを取得して、書き込みます。実際は shell なら何でもいいですが、これを使えばほぼ間違いないでしょう。ドキュメントは以下です

https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation

Live USB 作成

まずは Gentoo イメージを DL します(ここの作業は macOS でやりました)

curl https://distfiles.gentoo.org/releases/amd64/autobuilds/20240526T163557Z/livegui-amd64-20240526T163557Z.iso --output gentoo-usb.iso

次に書き込む USB を挿し、そこへ書き込みます。デバイス名を間違えると全滅の可能性があるので、どれが USB かを調べます

diskutil list

私の環境では /dev/disk4 でしたので、そこへ先ほどの gentoo-usb.iso を書き込みます

diskutil unmountDisk /dev/disk4
sudo dd if=gentoo-usb.iso of=/dev/disk4 bs=4096       

作成した USB で新しい PC を起動させます。さて、一撃で動作するでしょうか?

Live USB 起動

最近の Linux は本当に素晴らしく、Plasma が一撃で起動し、Wi-Fi も GUI でパスワードを入力するだけでインストール作業をする環境が整いました (他のディストリビューションなら普通か...)

ネットワークなど全て認識してくれたので、インストールマニュアルの細々した設定は全部飛ばして、一気にファイルシステム構築へ進む事ができました

Linux ファイルシステム構築

パーティションを切って、ファイルシステムを作成する手順は GUI でも出来そうな予感がしますが、使い方がよくわからないので、慣れた fdisk を使います。細かく分けてもいいですが、一旦は何も考えず 3 つに分けます。ずっと root で作業するので sudo su を忘れずに

sudo su
fdisk /dev/nvme0n1

構成は NVMe なので以下となります

/dev/nvme0n1p1  # /boot (EFI System)
/dev/nvme0n1p2  # swap  (Linux filesystem)
/dev/nvme0n1p3  # /     (Linux filesystem)

/boot は vfat で / は XFS にします

mkfs.xfs /dev/nvme0n1p3
mkfs.vfat -F 32 /dev/nvme0n1p1

SSD をマウントしてインストールの準備完了となります

mkdir /mnt/gentoo/efi
mount /dev/nvme0n1p3 /mnt/gentoo

Stage ファイル

まずはステージファイルを取得しますが、stage3 しか見当たらないため、とりあえずこれをインストールして後から world しようと思います。という事で desktop / systemd を選択

https://www.gentoo.org/downloads/

chronyd -q
cd /mnt/gentoo
wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20240609T164903Z/stage3-amd64-desktop-systemd-20240609T164903Z.tar.xz
tar xpvf stage3-amd64-desktop-systemd-20240609T164903Z.tar.xz --xattrs-include='*.*' --numeric-owner

chroot

DNS 情報を設定します (nameserver 8.8.8.8 を設定)

cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
echo "nameserver 8.8.8.8" >> /mnt/gentoo/etc/resolv.conf

ファイルシステムをマウントします

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
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run

新環境へ入り、ブートローダー用のパーティションをマウントします

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
mkdir /efi
mount /dev/sda1 /efi

Portage の設定

emerge を使用出来る様にしていきます。ついでにこの後の設定用に vim をコンパイルします(これがないと始まらないです)

mkdir --parents /etc/portage/repos.conf
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
cat /etc/portage/repos.conf/gentoo.conf
emerge-webrsync
emerge --sync
emerge vim

各種設定

locale は en_US.UTF-8 UTF-8 と ja_JP.UTF-8 UTF-8 をコメントアウト

vi /etc/locale.gen
locale-gen

timezone は systemd なので以下コマンド

ln -sf ../usr/share/zoneinfo/Europe/Brussels /etc/localtime

/etc/fstab は簡単に以下の様に設定

/dev/nvme0n1p1 /efi vfat umask=0077 0 2
/dev/nvme0n1p2 none swap sw         0 0
/dev/nvme0n1p1 /    xfs  defaults,noatime 0 1

Kernel

package.use に sys-kernel/installkernel dracut を追加して以下を emerge(うまくいかなければ手動で make しようかな)

sys-kernel/linux-firmware など emerge で失敗するので ACCEPT_LICENSE を追加します

ACCEPT_LICENSE="-* @FREE @BINARY-REDISTRIBUTABLE"

それではカーネルをコンパイルしますが、私は今まで一度も試した事のない方法として emerge で gentoo-kernel をコンパイルしてみようと思いますが genkernel でも make でも良いです

emerge --ask sys-kernel/linux-firmware
emerge --ask sys-kernel/gentoo-kernel

Grub

grub をインストール (USE efi-64)

emerge --ask --verbose sys-boot/grub
grub-install --efi-directory=/efi
grub-mkconfig -o /boot/grub/grub.cfg

systemd

以下コマンドを実行

systemd-machine-id-setup
systemd-firstboot --prompt

user

tty は X を起動した時に必要になる

usermod -aG wheel,tty kei

KDE / Plasma

ibus を USE しておかないと日本語入力出来ません

emerge --ask kde-plasma/plasma-meta
X configure

X を上げてから困らない様に仮装シェルとファイルマネージャーも入れておく

emerge --ask konsole
emerge --ask kde-apps/dolphin

.xinitrc に Plasma で起動する様に記載します

exec startplasma-x11

Wi-Fi

wpa_supplicant は -qt5 した方が良いかもしれません。とりあえずは以下で依存も入ったはず

emerge --ask net-misc/dhcpcd
emerge --ask net-wireless/wpa_supplicant
emerge --ask networkmanager
systemctl enable NetworkManager
systemctl start NetworkManager
systemctl enable dhcpcd

/etc/conf.d/net を新規に作成し、GUI から設定する

modules="wpa_supplicant"

さて reboot です。起き上がってくれるでしょうか☺️ (本当は何度か USB Shell / SSD Shell をいったりきたりしました😢3回目くらいで X が動作して Wi-Fi にも無事につながりました)

環境構築編

https://zenn.dev/exelion/articles/34fd4f8f4dd03b

スクリーンショット

とりあえず Plasma まで構築したスクリーンショットです。まだ日本語入力も出来ませんし、ブラウザもありませんが、emerge と vim が使えます。本格的な環境構築と最適化は別の記事にする予定です


Discussion