概要
今回は、前々回の#GentooInstall 一戦目の振り返りのようにVirtualBox上ではなく、使わなくなった古いPCにGentooをインストールしてみます。LVM導入やWiFiの設定、Xfceの導入等もしていきます。これまでVirtualBoxでGentooInstallBattleしてきましたが、それらは準備運動で今回が本当の初戦となります。
また、いろんな機能をもりもりにインストールするのではなく、最小限にインストールします。なぜかというと、結局自分が使わない機能もインストールしてしまい、結局何が必要なのか知る機会が失われ、勉強にならないからです。最小限インストール完了後に、emergeで怒られながら少しずつ機能追加していきたいので、この記事は都度更新するつもりです。
今回は今までの記事とは違って、自分用の作業メモのような面が強いと思います。なので細かい説明はGentoo Wikiを参照してください。
環境
GentooInstallBattle
MinimalインストールCDの入手
以下のリンクからミラーを選択して、MinimalインストールCDを入手し、CDに焼きます。

# cdrecord dev=/dev/sr0 install-amd64-minimal-20201206T214503Z.iso
インストールメディアからの起動
無線(WiFi)を使用するため、net-setupスクリプトで設定を行い、IPアドレスを取得します。
# net-setup
pingして外部のネットワークと通信できていることを確認します。
# ping -c 3 google.com
他PCからssh接続するため、sshdを起動させ、ログイン用のパスワードを設定します。
# rc-service sshd start
# passwd
パーティションの作成
今回のパーティションの構成は以下の通りです。
パーティション | ファイルシステム | サイズ | 説明 |
/dev/sda1 | (ブートローダ) | 2MiB | BIOSブートパーティション |
/dev/sda2 | fat32 | 128MiB | ブートパーティション |
/dev/sda3 | (swap) | 8GiB | スワップパーティション |
/dev/sda4 | ext4 | 5GiB | ルートパーティション |
/dev/sda5 | (lvm) | 約300GiB | LVM用パーティション |
/dev/sda6 | (space) | 320GiB | 予備パーティション |
変更前後でprintで状態を確認しながらmkpartして作成します。
# parted -a optimal /dev/sda
(parted) mklabel gpt
(parted) unit mib
(parted) mkpart grub 1 3
(parted) set 1 bios_grub on
(parted) mkpart boot 3 131
(parted) set 2 boot on
(parted) mkpart swap 131 8323
(parted) mkpart root 8323 13443
(parted) mkpart lvm 13443 327680
(parted) set 5 lvm on
(parted) mkpart space 327680 -1
(parted) print
----------(省略)----------
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB grub bios_grub
2 3146kB 137MB 134MB fat32 boot boot, esp
3 137MB 8727MB 8590MB linux-swap(v1) swap
4 8727MB 14.1GB 5369MB ext4 root
5 14.1GB 344GB 330GB lvm lvm
6 344GB 640GB 297GB space
(parted) quit
論理ボリュームの作成
LVは以下の通りになります。
論理ボリューム | サイズ |
/dev/vg/usr | 20GiB |
/dev/vg/home | 20GiB |
/dev/vg/opt | 5GiB |
/dev/vg/var | 20GiB |
/dev/vg/tmp | 5GiB |
まずは物理ボリューム(PV)を作成します。
# pvcreate /dev/sda5
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 --- 306.87g 306.87g
次にボリュームグループ(VG)を作成します。
# vgcreate vg /dev/sda5
# vgs
VG #PV #LV #SN Attr VSize VFree
vg 1 0 0 wz--n- 306.87g 306.87g
最後に論理ボリューム(LV)を作成します。
# lvcreate -L20G -nusr vg
# lvcreate -L20G -nhome vg
# lvcreate -L5G -nopt vg
# lvcreate -L20G -nvar vg
# lvcreate -L5G -ntmp vg
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home vg -wi-a----- 20.00g
opt vg -wi-a----- 5.00g
tmp vg -wi-a----- 5.00g
usr vg -wi-a----- 20.00g
var vg -wi-a----- 20.00g
ファイルシステム作成
UEFIブートにするのでsda2はvfatにし、他はext4で統一させました。
# mkfs.vfat -F32 /dev/sda2
# mkfs.ext4 /dev/sda4
# mkfs.ext4 /dev/vg/usr
# mkfs.ext4 /dev/vg/home
# mkfs.ext4 /dev/vg/opt
# mkfs.ext4 /dev/vg/var
# mkfs.ext4 /dev/vg/tmp
スワップの初期化&有効化
後々のfatabファイル編集でLABEL指定ができるように、LABEL作成して初期化&有効化します。
# mkswap -L swap /dev/sda3
# swapon LABEL=swap
マウント
最初にルートパーティションである/dev/sda4をマウントしてから他のパーティションをマウントします。また、ブートパーティションはchroot環境に入ってからマウントすることにします。
# mount /dev/sda4 /mnt/gentoo
# mkdir /mnt/gentoo/{boot,usr,home,opt,var,tmp}
# mount /dev/vg/usr /mnt/gentoo/usr
# mount /dev/vg/home /mnt/gentoo/home
# mount /dev/vg/opt /mnt/gentoo/opt
# mount /dev/vg/var /mnt/gentoo/var
# mount /dev/vg/tmp /mnt/gentoo/tmp
日時確認
# date
stage3のダウンロード
stage3 tarballのアドレスを取得してwgetでダウンロードし、tarコマンドで展開します。
# cd /mnt/gentoo
# links https://www.gentoo.org/downloads/mirrors/
# tar xpvf stage3-amd64-20201206T214503Z.tar.xz --xattrs-include='*.*' --numeric-owner
コンパイルオプションの設定
# vi /mnt/gentoo/etc/portage/make.conf
COMMON_FLAGS="-march=native -O2 -pipe" #追記
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="-j4" #追記
ミラーサイトの選択
Japanのミラーサイトを登録します。こうすることで、ソースコードのダウンロード時間を短縮することができます。
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
ebuildリポジトリの設定
以下のコマンドでリポジトリの設定ファイルを置くためのディレクトリを作成します。
# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
このディレクトリ内にリポジトリ設定ファイルの雛形をコピーして配置します。
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
catコマンドで設定ファイルの内容を確認します。
# cat /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /var/db/repos/gentoo
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 24
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-keyserver = hkps://keys.gentoo.org
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4
sync-webrsync-verify-signature = yes
DNS情報のコピー
新しく作った環境でもネットワークを使用できるように、以下のコマンドでネームサーバの情報が書かれている/etc/resolv.confをコピーしてきます。
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
ファイルシステムのマウント
# 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
chrootで新しい環境に移動し、設定を更新、chroot環境であることを分かりやすいように設定します。
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
chroot環境に入ったので、ブートパーティションをマウントします。
# mount /dev/sda2 /boot
ebuildリポジトリの更新
以下のコマンドで最新のebuildリポジトリのスナップショットを取得&更新します。
# emerge-webrsync
# emerge --sync
プロファイル設定
今回は最小限のインストールにして、後から必要なものを足していきます。
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/17.1 (stable) *
[2] default/linux/amd64/17.1/selinux (stable)
[3] default/linux/amd64/17.1/hardened (stable)
[4] default/linux/amd64/17.1/hardened/selinux (stable)
[5] default/linux/amd64/17.1/desktop (stable)
[6] default/linux/amd64/17.1/desktop/gnome (stable)
[7] default/linux/amd64/17.1/desktop/gnome/systemd (stable)
[8] default/linux/amd64/17.1/desktop/plasma (stable)
[9] default/linux/amd64/17.1/desktop/plasma/systemd (stable)
[10] default/linux/amd64/17.1/developer (stable)
[11] default/linux/amd64/17.1/no-multilib (stable)
[12] default/linux/amd64/17.1/no-multilib/hardened (stable)
[13] default/linux/amd64/17.1/no-multilib/hardened/selinux (stable)
[14] default/linux/amd64/17.1/systemd (stable)
@worldの更新
以下のコマンドで、gentooベースシステムを構築する様々なパッケージ群を更新します。
# emerge -avuDN @world
タイムゾーンの設定
/usr/share/zoneinfoを確認し、タイムゾーンを日本に設定します。
# echo "Japan" > /etc/timezone
以下のコマンドを実行することで、システムのライブラリがタイムゾーンを知るために参照する/etc/localtimeを、/etc/timezoneを元にアップデートします。
# emerge --config sys-libs/timezone-data
Vimのインストール
emergeコマンドでvimをインストールし、デフォルトのエディタにします。
# emerge -a vim
# eselect editor list
Available targets for the EDITOR variable:
[1] nano
[2] ex
[3] vi
[ ] (free form)
# eselect editor set 3
ロケールの設定
デフォルトで入っているC.UTF-8に加えて、英語と日本語を設定ファイルに追加します。
# vi /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
C.UTF8 UTF-8
locale-genコマンドで/etc/locale.genに書かれたロケールを生成します。
# locale-gen
生成されたかどうか以下のコマンドで確認して変更します。
# eselect locale list
Available targets for the LANG variable:
[1] C
[2] C.utf8
[3] POSIX
[4] en_US.utf8
[5] ja_JP.utf8
[6] C.UTF8 *
[ ] (free form)
# eselect locale set 4
環境設定の更新
以下のコマンドで今までの変更を更新します。
# env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
ファームウェアの追加
無線ネットワークを使用するため、追加のファームウェアをダウンロードします。
# emerge -a linux-firmware
lspciで自分のPCのハードウェア情報を知りたいので以下のパッケージをダウンロードします。
# emerge -a pciutils
lspciでドライバ名を確認し、この表から該当するものを探します。
# lspci
-----------(省略)--------------
0b:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]

カーネルにドライバとファームウェアを組み込もうと思うので、カーネルコンフィグ前にファームウェア名を確認しておきます。
# ls /lib/firmware | grep iwlwifi
-----------(省略)------------
iwlwifi-1000-5.ucode
カーネルのビルド
以下のコマンドでカーネルソースを/usr/src/ディレクトリ内にインストールします。
# emerge -a gentoo-sources
/usr/src/linuxへと移動し、カーネルコンフィグの設定をしていきます。
# cd /usr/src/linux
# make menuconfig
公式ハンドブックで必須のオプションを確認するのですが、ほとんどが設定済みであったため、新しく設定した部分は以下の場所だけになります。
Device Drivers --->
HID support --->
[*] Battery level reporting for HID devices
-*- Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
[*] EFI GUID Partition support
先程調べたWiFiの無線ドライバ選択します。
Device Drivers --->
Network device support --->
Wireless LAN --->
<*> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
<*> Intel Wireless WiFi DVM Firmware support
ファームウェア名を入力します。
Device Drivers --->
Generic Driver Options --->
Firmware loader --->
-*- Firmware loading facility
(iwlwifi-1000-5.ucode) Build named firmware blobs into the kernel binary
make(/lib/firmware) Firmware blobs root directory (NEW)
カーネルのコンパイルとインストールをしていきます。
# make && make modules_install
最後にカーネルを/bootディレクトリにインストールします。
# make install
initramfsの作成
initramfsをlvmサポートを有効にしてインストールします。
# emerge -a genkernel
# genkernel --install --lvm initramfs
/etc/fstabの編集
fstabを簡潔に記述できるようLABELを設定し、起動時に自動的にマウントできるようにfstabを編集します。
# e2label /dev/sda4 root
# e2label /dev/vg/usr usr
# e2label /dev/vg/home home
# e2label /dev/vg/opt opt
# e2label /dev/vg/var var
# e2label /dev/vg/tmp tmp
# vi /etc/fstab
/dev/sda2 /boot vfat noauto,noatime 0 2
LABEL=root / ext4 noatime 0 1
LABEL=swap none swap sw 0 0
LABEL=usr /usr ext4 noatime 0 2
LABEL=home /home ext4 noatime 0 2
LABEL=opt /opt ext4 noatime 0 2
LABEL=var /var ext4 noatime 0 2
LABEL=tmp /tmp ext4 noatime 0 2
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
ネットワーク関連の設定
ホスト名、ドメイン名等を適当に決めます。
# vi /etc/conf.d/hostname
hostname="zukenux"
# vi /etc/conf.d/net
dns_domain_lo="local.jp"
# vi /etc/hosts
127.0.0.1 zukenux zukenux.local.jp localhost
::1 zukenux zukenux.local.jp localhost
起動時のネットワークの自動設定ができるようにdhcpクライアントをインストールします。
# emerge -a dhcpcd
# rc-update add dhcpcd default
WiFiを使用できるように、ssidやpsk等を入力して以下のように編集します。
# emerge -a wpa_supplicant
# vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
network={
ssid="YourSSID"
psk="your-secret-key"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
group=CCMP TKIP
pairwise=CCMP TKIP
priority=5
}
起動時に自動的にWiFi接続できるようにします。
# rc-update add wpa_supplicant default
rootパスワード設定
新しい環境用のrootパスワードを設定します。
# passwd
システムツールのインストール
ログツール、cron、mlocateをインストールしておきます。
# emerge -a sysklogd
# rc-update add sysklogd default
# emerge -a cronie
# rc-update add cronie default
# emerge -a mlocate
sshdの設定
起動時にデフォルトでsshdが起動するように設定します。
# rc-update add sshd default
Grub2のインストール&設定
Grub2のemergeでyesを実行する前に、GRUB_PLATFORMS=”efi-64″が有効になっていることを確認して、emergeを実行します。
# emerge -a grub:2
以下のコマンドでGrubをインストールします。
# grub-install --target=x86_64-efi --efi-directory=/boot --removable /dev/sda
grub-mkconfigコマンドで/boot/grub/brub.cfgに設定ファイルを作成します。
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.80-gentoo-r1
done
システムの再起動 & 設定
ではchroot監獄から抜けて、全てのパーティションをアンマウントして再起動します。
# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot
pingで外部と通信できているか確認します。
# ping -c 3 google.com
いらなくなったtarファイルを削除しておきます。
# rm /stage3-amd64-20201206T214503Z.tar.xz
一般ユーザの作成
普段の作業のために一般ユーザを作成しておきます。
# useradd -G wheel -s /bin/bash suzuken
# passwd
sudoのインストール
一般ユーザがルート権限でコマンドを実行できるようにsudoをインストールします。
# emerge -a sudo
# visudo
----------(省略)-----------
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
xorgのインストール
PCのグラフィックボード(ビデオカード)をlscpiで調べます。
$ lspci
------------(省略)-------------
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
make.confファイルのグラフィックドライバにintelを設定しておきます。
$ sudo vi /etc/portage/make.conf
VIDEO_CARDS="intel" #追記
軽量を重視したいので、xorg-x11ではなくxorg-serverパッケージをインストールします。
$ sudo emerge -a xorg-server
Xfceのインストール
Xfceのメタパッケージ(Xfce関連パッケージの集合をインストールするためのパッケージ)をインストールします。
$ sudo emerge -a xfce4-meta
Gentoo Wikiでオススメされているターミナルをインストールします。
$ sudo emerge -a xfce4-terminal
システムの環境設定を更新します。
$ sudo env-update && source /etc/profile
Xfceの起動
~/.xinitrcを編集し、startxで起動します。
$ vi ~/.xinitrc
exec startxfce4
$ startx

最後に
以上、GentooInstallBattleでした。インストールを無事に行うことができ、まだまだひよっこレベルですが少しは理解深まったかなと感じています。
実際にしばらくGentooを使ってみてから気づくことがたくさんあると思うので、インストールはおやすみして、カスタマイズに力を入れていこうと思います。
Comments