GentooをLVM,systemdでインストールしてみた

GentooをLVM,systemdでインストールしてみたので手順をご紹介いたします。

※とりあえずこうやったら動いた、というレベルなので流れが変だったり不要な設定、不十分な設定があるかもしれませんがご了承ください。

環境
仮想環境（VirtualBox）で構築。

仮想化ソフト：VirtualBox 6.1
ホスト：Windows10
ゲスト：Gentoo
ゲストHDD：150GB

[GentooWebサイト](https://www.gentoo.org/)  

[Downloads](https://www.gentoo.org/downloads/)のページで
amd64のLiveCD（「Minimal Installation CD」）をダウンロード

VirtualBoxで作成したゲストマシンの光学ドライブにセット

ゲストマシンを起動

rootパスワードを設定します。
コピペが使いやすいようにTeraTermを使っています。
接続の為にrootのパスワードを設定する必要があります。

```
passwd
```
sshを起動します。

```
rc-service sshd start
```
TeraTermで接続します。

UEFIで起動していることを確認する為に下記を実行

```
ls /sys/firmware/efi/efivars
```
UEFIであれば下記のような表示がでます。（記載内容な人それぞれ）

```
BackgroundClear-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14    FirmwareFeaturesMask-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14   LoaderInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c           FirmwareFeatures-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14       LoaderTimeExecUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c           Key0000-8be4df61-93ca-11d2-aa0d-00e098032b8c                LoaderTimeInitUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c           Key0001-8be4df61-93ca-11d2-aa0d-00e098032b8c                LoaderTimeMenuUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c           LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c              MTC-eb704011-1402-11d3-8e77-00a0c969723b
BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c        Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c                   OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c  LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f          PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c          LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f    PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c           LoaderFeatures-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f         PlatformRecovery0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c              LoaderFirmwareInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f     Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c          LoaderFirmwareType-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f     VarErrorFlag-04b37fe8-f6ae-480b-bdd5-37d98c5e89aa
ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c             LoaderImageIdentifier-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f  boot-args-7c436110-ab2a-4bbb-a880-fe41995c9f82
```
gdiskでパーティションを切ります

```
gdisk /dev/sda
```
コマンドを実行していきます。
GPTで作成

```
Command (? for help): o
Proceed? (Y/N): Y
```
EFI Bootパーティションを作ります。
512MB、ファイルタイプはEF00にします。

```
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-314572766, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-314572766, default = 314572766) or {+-}size{KMGTP}: +512M
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI system partition'
```
swap,rootパーティションの為のLVMパーティションを作ります。
149GB（残り全て）、ファイルタイプは8E00にします。

```
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-314572766, default = 1050624) or {+-}size{KMGTP}:
Last sector (1050624-314572766, default = 314572766) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8E00
Changed type of partition to 'Linux LVM'
```
pコマンドで確認すると下記のように表示されるはずです。

```
Command (? for help): p
Disk /dev/sda: 314572800 sectors, 150.0 GiB
Model: VBOX HARDDISK
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 25903BB2-EC41-4E05-A077-EEF80AE69026
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 314572766
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI system partition
   2         1050624       314572766   149.5 GiB   8E00  Linux LVM

```
保存して終了します。

```
Command (? for help): w
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
```
フォーマットと一部マウントします。

```
mkfs.vfat -F32 /dev/sda1

pvcreate /dev/sda2

vgcreate vg01 /dev/sda2

lvcreate -L 4G -n swap vg01
lvcreate -l 100%FREE -n root vg01

mkswap /dev/mapper/vg01-swap

mkfs.xfs /dev/vg01/root

mount /dev/vg01/root /mnt/gentoo
swapon /dev/vg01/swap
```
日付を確認します。

```
date
```
フォルダを移動

```
cd /mnt/gentoo
```
Stageをダウンロードします。
[Downloads](https://www.gentoo.org/downloads/)のページで「Stage3 systemd」上で右クリックし「リンクのアドレスをコピー」します。

wget の後に貼り付けます。

```
wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20210405T120143Z/stage3-amd64-systemd-20210405T120143Z.tar.xz
```
tarコマンドで解凍します。上記リンクの最後のファイル部分を指定します。

```
tar -xvf stage3-amd64-systemd-20210405T120143Z.tar.xz
```
make.confファイルを編集します。

```
nano -w /mnt/gentoo/etc/portage/make.conf
```
下記を追記します。

```
ACCEPT_LICENSE="*"
```
※上記設定はセキュリティ上よくないので、インストール後は変更してください。

ミラーリストを設定します。
Japanのサイトをスペースキーで選択します。
エンターで保存・終了

```
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
```
Gento 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
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 /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
```
ブートパーティションのマウント

```
mkdir -p /boot
mkdir -p /boot/efi
mount /dev/sda1 /boot/efi
```
最新のスナップショットのインストール

```
emerge-webrsync
```
ニュースを読め、といわれるので読む

```
eselect news read
```
プロファイルの選択
選択中のプロファイルを表示する。

```
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/desktop/systemd (stable)
  [11]  default/linux/amd64/17.1/developer (stable)
  [12]  default/linux/amd64/17.1/no-multilib (stable)
  [13]  default/linux/amd64/17.1/no-multilib/hardened (stable)
  [14]  default/linux/amd64/17.1/no-multilib/hardened/selinux (stable)
  [15]  default/linux/amd64/17.1/systemd (stable) *
  [16]  default/linux/amd64/17.0 (dev)
  [17]  default/linux/amd64/17.0/selinux (dev)
  [18]  default/linux/amd64/17.0/hardened (dev)
  [19]  default/linux/amd64/17.0/hardened/selinux (dev)
  [20]  default/linux/amd64/17.0/desktop (dev)
  [21]  default/linux/amd64/17.0/desktop/gnome (dev)
  [22]  default/linux/amd64/17.0/desktop/gnome/systemd (dev)
  [23]  default/linux/amd64/17.0/desktop/plasma (dev)
  [24]  default/linux/amd64/17.0/desktop/plasma/systemd (dev)
  [25]  default/linux/amd64/17.0/developer (dev)
  [26]  default/linux/amd64/17.0/no-multilib (dev)
  [27]  default/linux/amd64/17.0/no-multilib/hardened (dev)
  [28]  default/linux/amd64/17.0/no-multilib/hardened/selinux (dev)
  [29]  default/linux/amd64/17.0/systemd (dev)
  [30]  default/linux/amd64/17.0/x32 (dev)
  [31]  default/linux/amd64/17.0/musl (exp)
  [32]  default/linux/amd64/17.0/musl/hardened (exp)
  [33]  default/linux/amd64/17.0/musl/hardened/selinux (exp)
  [34]  default/linux/amd64/17.0/uclibc (exp)
  [35]  default/linux/amd64/17.0/uclibc/hardened (exp)
```
今回インストールするのは既に選択されている
「[15]  default/linux/amd64/17.1/systemd (stable) *」
だが、他が設定されていたら下記のように設定しなおす。

```
eselect profile set 15
```
make.confを編集する

```
nano /etc/portage/make.conf
```
下記を追記する

```
USE="device-mapper"
```
@worldセットの更新

```
emerge --ask --verbose --update --deep --newuse @world
```
タイムゾーンの設定

```
echo "Japan" > /etc/timezone
emerge --config sys-libs/timezone-data
```
ロケールの設定

```
nano /etc/locale.gen
```
下記を追記

```
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
```

```
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)
```
[4]   en_US.utf8を設定

```
eselect locale set 4
```
環境をリロード

```
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
```
fstabの設定。
「/dev/mapper/vg01-root」と
「/dev/mapper/vg01-swap」の
UUIDを確認する

```
blkid -o list

device                             fs_type      label         mount point                            UUID
------------------------------------------------------------------------------------------------------------------------------------------
/dev/mapper/vg01-root              xfs                        /                                      2ea41bb6-b045-4186-8871-7d4833dc3dd8
/dev/mapper/vg01-swap              swap                       [SWAP]                                 a6482247-e7dd-48c8-8d9d-c57e4fb2a366
/dev/loop0                         squashfs                   (in use)
/dev/sda1                          vfat                       /boot/efi                              C287-6E25
/dev/sda2                          LVM2_member                (in use)                               Z9JaMe-88S7-trq7-7ZbI-Rn3W-ppWa-stM2rK
/dev/sr0                           iso9660      Gentoo amd64 20210321T214504Z (in use)               2021-03-21-23-13-37-62
```
上記の場合、
「/dev/mapper/vg01-root」のUUIDは「2ea41bb6-b045-4186-8871-7d4833dc3dd8」
「/dev/mapper/vg01-swap」のUUIDは「a6482247-e7dd-48c8-8d9d-c57e4fb2a366」

fstabファイルに下記のように追記する

```
nano /etc/fstab
```

```
/dev/sda1                                              /boot/efi       vfat            noauto,noatime  0 2
UUID=2ea41bb6-b045-4186-8871-7d4833dc3dd8              /               ext4            noatime         0 1
UUID=a6482247-e7dd-48c8-8d9d-c57e4fb2a366              none            swap            sw              0 0
/dev/cdrom                                             /mnt/cdrom      auto            noauto,ro       0 0
```
firmware、pciutilsのインストール

```
emerge -a linux-firmware
emerge -a pciutils
```
ソースのインストール

```
emerge gentoo-sources
emerge sys-kernel/genkernel
```
genkernel.confファイルの編集

```
nano -w /etc/genkernel.conf
```
下記項目を変更する。
頭に#が付いていれば外す。

```
MENUCONFIG="yes"
LVM="yes"
```
インストール

```
genkernel --install all
```
menu configが立ち上がりますので設定の確認ができます。
特に何も変更しなくてもいけるはずなので、ESCキーを２回押して、インストールを進めます。

シンボリックリンクの作成

```
ln -sf /proc/self/mounts /etc/mtab
```
lvmをインストールします。

```
genkernel --lvm initramfs
```
make.confファイルを編集します。

```
nano /etc/portage/make.conf
```
下記を追記します。

```
GRUB_PLATFORMS="efi-64"
```
dhcpcd, sysklogd, cronie, mlocateをインストールします。

```
emerge -a dhcpcd
emerge -a sysklogd
emerge -a cronie
emerge -a mlocate
```

作成中のマシンのrootパスワードを設定します。

```
passwd
```
GRUBをインストールします。


```
emerge -a grub:2
```
/etc/default/grubファイルを編集します。

```
nano /etc/default/grub
```
下記を追記します。

```
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd dolvm rd.lvm.vg=vg01 rd.lvm.lv=vg01/root rd.lvm.lv=vg01/swap"
```
GRUBをインストールします。

```
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable

grub-mkconfig -o /boot/grub/grub.cfg
```
終了

```
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
shutdown -h now
```
作成したマシンがシャットダウンしたら、光学ドライブからCDを外して起動します。

おわり