Gentoo Linux をインストールする

概要

転職し、新しい会社に入社した。

PCを支給してくれるいうことで、macにしようかなと思っていたのだが、折角なのでdockerをまともに使える環境が良いなと思い、linuxベースの開発環境を作ることにした。

そんな折、MacBook Proを捨ててThinkpad T460sを買ってgentooを入れたという記事をはてブで見つけて、gentooベースにすることにした。

PCはノートパソコンで英語配列のものを考え、thinkpadかvaioにしようかと思ったが、thinkpad t460sにした。

t460sには、もともとwindowsがインストールされているが、その上にGentoo Linux をインストールして、デュアルブート環境にする。

Gentoo歴

6〜7年ほど前、家で1年ほど開発機として使っていた。その後、mac book買ったため、現在まで使っていない。

Thinkpad T460S

マシンスペック。

  • CPU i7 6600U
  • HDD NVMe対応SSD 512GB
  • メモリ 24G
  • 液晶 14型 WQHD 2560×1440
  • キーボード 英語配列
  • OS Windows 10 Home

インストールメディアの作成

ダウンロードページからLiveDVDをダンロードして、mac上でUSBにddして焼いた。

$ diskutil unmountDisk /dev/disk2
$ dd if=/Users/gurimusan/Downloads/livedvd-amd64-multilib-20160704.iso of=/dev/disk2 bs=1m
$ diskutil eject /dev/disk2

インストール前にやること

UEFI のセキュアブートを切る

UEFIを操作してセキュアブートを切る。

高速スタートアップを無効化する

“コントロールパネル”→”ハードウェアとサウンド”→”電源オプション”→”カバーを閉じたときの動作を選択”から無効化する。

Windows上でハードディスクのパーティションを分ける。

gentooをインストールする領域を確保するために、Cドライブが割り当てられているパーティションを縮小して領域を確保する。

Cドライブ上のデータを壊さなければ、windows上でやらなくても良い。

Gentoo Linuxのインストール

作成したインストールメディアを起動して、Gentoo Linux をインストールする。

ハンドブック:AMD64 - Gentoo Wiki を見ながらインストールを行う。

ディスクの準備

パーティション構成は下記のとおり。

前述のとおり、winのCドライブにあたるパーティションを縮小して、Gentoo Linux をインストールした領域を確保した。

nvme0n1       477G
├─nvme0n1p1   260M      -- EFI
├─nvme0n1p2    16M      -- winの管理系?
├─nvme0n1p3  68.6G      -- win本体、Cドライブ
├─nvme0n1p4  1000M      -- winのリカバリ領域
├─nvme0n1p5    64G      -- / (ルート)
└─nvme0n1p6 343.1G      -- /home (home)

新しい領域は

  • /
  • /home

の2つに分けた。

ファイルシステムをxfsを利用する。

$ mkfs.xfs /dev/nvme0n1p5
$ mkfs.xfs /dev/nvme0n1p6

フォーマットしたパーティションをマウントする。

$ mount /dev/nvme0n1p5 /mnt/gentoo
$ mkdir /mnt/gentoo/home /mnt/gentoo/boot
$ mount /dev/nvme0n1p6 /mnt/gentoo/home
$ mount /dev/nvme0n1p1 /mnt/gentoo/boot

Gentooインストールファイルをインストール

時刻を合わせる。

$ ntpd -q -g

Gentooミラーリストからstage tarballを取得する。

$ cd /mnt/gentoo
$ links https://www.gentoo.org/downloads/mirrors/

stage tarballを展開する。

$ tar xvjpf stage3-*.tar.bz2 --xattrs

/mnt/gentoo/etc/portage/make.conf を編集してGentooコンパイルオプションを設定する。

CFLAGにはマシンアーキテクチャ(-march)と、最適化レベル(-O)を設定する。

CFLAGS="-march=broadwell -mtune=broadwell -O2 -pipe"

-marchに skylakeの指定をするとコンパイル時にエラーとなった。

調べたところ、Safe CFLAGS - Gentoo Wiki にskylakeの設定例があったため、broadwellに変更した。

MAKEOPTSでどれだけ並列してコンパイルを実施するか設定する。

MAKEOPTS="-j4"

CPU_FLAGS_X86 でCPUの命令セットの指定を行う。

CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"

L10N="ja en"
LINGUS="ja en"

Gentooベースシステムのインストール

ミラーサーバを設定しておく。

$ mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

dnsのコピー

$ cp -L /etc/resolv.conf /mnt/gentoo/etc/

必要なファイルシステムをマウントする。

$ mount -t 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'

Portageのリポジトリを更新する。

$ emerge-webrsync
$ emerge --sync

systemdが含んだプロファイルを選択する。

$ eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd
  [6]   default/linux/amd64/13.0/desktop/plasma
  [7]   default/linux/amd64/13.0/desktop/plasma/systemd
  [8]   default/linux/amd64/13.0/developer
  [9]   default/linux/amd64/13.0/no-multilib
  [10]  default/linux/amd64/13.0/systemd *
  [11]  default/linux/amd64/13.0/x32
  [12]  hardened/linux/amd64
  [13]  hardened/linux/amd64/selinux
  [14]  hardened/linux/amd64/no-multilib
  [15]  hardened/linux/amd64/no-multilib/selinux
  [16]  hardened/linux/amd64/x32
  [17]  hardened/linux/musl/amd64
  [18]  hardened/linux/musl/amd64/x32
  [19]  default/linux/uclibc/amd64
  [20]  hardened/linux/uclibc/amd64

$ eselect profile set 10

/etc/portage/make.confのUSEフラグにsystemdを追加する。

systemd向けにパッケージを更新する。

$ emerge -auDN @world

vim入れる。

$ emerge -a app-editors/vim

タイムゾーンを設定する

$ echo 'Asia/Tyokyo' > /etc/timezone
$ emerge --config sys-libs/timezone-data

ロケールを設定する。

$ vim /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8
ja_JP.SHIFT_JIS SHIFT_JIS

$ locale-gen

$ eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   en_US
  [3]   en_US.iso88591
  [4]   en_US.utf8 *
  [5]   ja_JP
  [6]   ja_JP.eucjp
  [7]   ja_JP.shiftjis
  [8]   ja_JP.ujis
  [9]   ja_JP.utf8
  [10]  japanese
  [11]  japanese.euc
  [12]  POSIX
  [ ]   (free form)

$ eselect locale set 4

環境設定の再読み込み。

$ env-update
$ source /etc/profile
$ export PS1="(chroot) $PS1"

カーネルの設定

$ emerge -a sys-kernel/gentoo-sources
$ emerge -a sys-apps/pciutils
$ cd /usr/src/linux
$ make menuconfig
$ make && make modules_install
$ make install

システムの設定

fstabの設定。

$ cat /etc/fstab
PARTUUID=5ce260de-80a3-4984-a4ea-758e917e3501       /boot           vfat    noauto,noatime                  1   2
PARTUUID=d193f1a5-edec-4c52-bbd0-5aa43de8f3be       /           xfs noatime                     0   1
PARTUUID=acabd133-51ed-4b85-bbb2-b5add70bef5f       /home           xfs noatime                     0   2

grubはnvme未対応のため、利用できない。

なので、systemd-bootを利用する。

$ bootctl --path=/boot install

$ vim /boot/loader/loader.conf
default gentoo
timeout 5
editor  0

$ vim /boot/loader/entries/gentoo.conf
title   Gentoo Linux
linux   /EFI/gentoo/vmlinuz-4.9.6-gentoo-r1
options root=PARTUUID=d193f1a5-edec-4c52-bbd0-5aa43de8f3be init=/usr/lib/systemd/systemd rw noefi

カーネルイメージの配置。

$ mkdir /boot/EFI/gentoo
$ cp /boot/vmlinuz-4.9.6-gentoo-r1 /boot/EFI/gentoo/.
$ cp /boot/System.map-4.9.6-gentoo-r1 /boot/EFI/gentoo/.
$ cp /boot/config-4.9.6-gentoo-r1 /boot/EFI/gentoo/.

rebootして起動できればOK。

$ exit
$ cd
$ umount -R /mnt/gentoo
$ shutdown -h now

インストール後の感想

今のところ満足。やっぱり動作が軽快なのが良い。

日本語入力の候補がウィンドウの左下に出てくること以外は。。。

インストールしたもの

  • awesome
  • rxvt-unicode
  • slim
  • zsh
  • git
  • chromium
  • firefox
  • neovim
  • ranger
  • spacefm
  • feh
  • fcitx
  • mozc
  • scrot