The Battle with Gentoo (インストール)
概要
前回の構成のハードウェアに Gentoo をインストールした時の備忘録として残します
ここでは stage3 (stage1 はなくなって後から emerge --update @world するのが推奨されてる?)からビルドして、カーネルと X (KDE Plasma) が起動するまでを構築します。これを書いている時点では 5.27.11 が stable-version みたいです
出来るだけマニュアルに沿ってインストールする事を心がけています。また推奨値を選び、最適化は次のタスクにする予定で、まずは SSD からのブートを急ぎます
インストール手順
新しい SSD へのインストールなので、作業に使う shell は USB Live の標準のものを使う事になります。まずは Live USB イメージを取得して、書き込みます。実際は shell なら何でもいいですが、これを使えばほぼ間違いないでしょう。ドキュメントは以下です
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 を選択
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 にも無事につながりました)
環境構築編
スクリーンショット
とりあえず Plasma まで構築したスクリーンショットです。まだ日本語入力も出来ませんし、ブラウザもありませんが、emerge と vim が使えます。本格的な環境構築と最適化は別の記事にする予定です
Discussion