Gentoo on Thinkpad 2020
数年ぶりにラップトップを買い替えし、OS を新調した時の覚書です。
購入したもの: Thinkpad P1 Gen 3 インストールする OS: Gentoo Linux
Thinkpad P1 gen3
Thinkpad の “Mobile Workstation” というシリーズの一つで今は P シリーズという。ラップトップでありながら高性能な CPU が搭載され処理能力も高く CAD などのソフトも動作するように GPU も強化されており、スペックは他のシリーズよりも高い。過去に、軽量な X シリーズや、高性能機な T シリーズも使用しているが、造りがしっかりとしていて頑丈で一度使用すると戻れない。ヒンジ一つとっても動きが安定している。値段は高いけど、個人的には一番おすすめしたい。
Pシリーズと以前のWシリーズを同系統とすると、私はこのシリーズは w510, w550s, に続き3台目。今は以前と違いラインナップが増えていて、14インチ、15インチ、17インチが選べるようになっている。流行ってそうな 14インチも惹かれるが、馴染みの15インチを選択した。
購入時にカスタマイズして仕様を変更できる。正規品で、より性能の良いものを選ぶと値段が高くなるので、交換できるものは自分で調達する前提で選択すると良い。取り替え不可能なものだけをカスタマイズしコストパフォーマンスが良くなるようした。
CPUは新旧比較して納得するものを選定。
CPU Mark: 3036(旧 w550s) => 12670(新 P1 Gen 3)
一番安い CPU を選んでも 4倍以上処理能力差があるので十分だと判断。
- CPU: Intel Core i7-10750H
- Memory: 16G (8Gx2) <= 後に交換予定
- Storage 1st: NVMe 512GB <= 後に交換予定
- Storage 2nd: -
- Display: 15.6UHD
- Graphic: Quadro T2000
今回は以上のスペックとなった。
購入後、別途 M.2 NVMe を Amazon で購入。Lenovo オフィシャルだと自己暗号化 M.2 NVMe だったので単純な比較はできないが容量あたりの値段が断然安い。
https://www.amazon.co.jp/gp/product/B089VZ88JT/
購入時に挿されている M.2 NVMe には Windows 10 がインストールされているのでそのまま使用し、2nd slot に Amazon で追加購入したM.2 NVMe を挿して Gentoo Linux 領域に。
開発時に使用するツールが Windows 用しか提供されていないものがまだ少なからずある。Software 開発では問題ないが、Hardware 開発をする場合は未だ Windows が必要になる場面があるので、Windows を残すようにしている。
Gentoo Install
続いて Gentoo の インストールへ。Handbook に従い Gentoo Stage3 から構築。
詳細は Official に任せるとして、自分仕様での変更点だけ以下に書いていく。
Partitions
bios_grub, boot, swap 以外は LVM 用に
Disk /dev/nvme0n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB grub bios_grub
2 3146kB 515MB 512MB fat32 boot boot, esp
3 515MB 15.8GB 15.3GB linux-swap(v1) swap
4 15.8GB 1000GB 984GB lvpool
今後依存を壊すことなくSystem update したいのでRoot パーティションは2つ用意。
localhost ~ # lvscan
ACTIVE '/dev/vg0/rtA' [100.00 GiB] inherit
ACTIVE '/dev/vg0/rtB' [100.00 GiB] inherit
ACTIVE '/dev/vg0/home' [50.00 GiB] inherit
新しい Root 環境が必要になったら、空いてる Root パーティションをマウントして一から構築する。構築終わったら起動時 Root A,B を替える、以前のものを空き Root に、という流れ。
もっとうまくやる方法はあると思う。が、日々更新される package の依存を解決する過程も知りたい人なのでこの方法で良いかと。100GB としているのは、1TB だと小さすぎず大きすぎない適度なサイズはこのくらいからだという判断で、足りなければ適宜サイズは調整。
経験的に Home パーティションは分けた方が移行が楽なので別とする。
システムに必須のパーティションには filesystem は xfs を使用。 長年使ってても思うがほんとに堅牢だと思う。fsck を迫られることが他の filesystem よりも少ないです。
他に任意で増やしていくパーティションではbtrfs, nilfs など色々試していけばいいだろう、くらいの想定。
後から思った事として boot パーティションはやっぱり 1GB 以上あったほうがよかった。Kernel を version up する際に、古い version を消すのは危険なのでしばらく残すことになるが既に 32% を消費している。。。
/dev/nvme0n1p2 488M 152M 336M 32% /boot
Kernel を複数 version 共存させると絶対足りない。
次回は 2G くらいに。
OpenRC or Systemd
Gentoo Linux のユーザは OpenRC が多いと勝手に思うが、今回は Systemd を選択。
CONFIG_GENTOO_LINUX_INIT_SYSTEMD=y
Nouveau or NVIDIA driver
一時 Linus Torvalds が Nvidia のプロプライエタリ driver を酷評してた流れから opensource の nouveau が主流だと思う。しかし、それほど最適化されていないという話も聞くので今回は nvidia-Driver を使用。Quadro 搭載の場合は nouveau のほうが良かったりするのだろうか。。後に理由があれば nouveau に切り替えればよい。
Kernel Build
カーネルはいつも make menuconfig をマニュアルで必要なものを組み込む or モジュール化、して genkernel で build するのが一番楽だと思う。initramfs など一挙に作成してくれるので楽で良い。ただし設定 /etc/genkernel.conf で clean、mrproper などは “no"としておくことが必要。
OpenGL
OpenGL も最近は full desktop とembedded/mobile で色々あるようだが、詳細が分からない。 どうやらここもあるようにわかりづらいという認識は話題になるほどらしい。
https://archives.gentoo.org/gentoo-dev/message/e04f6d321e424a237af62721d1d09211
2018 年の投稿なのでその後どうなったのか。時間があるときに追うとして、とりあえず、gles2 を使用し問題なく動作している。mesa はegl, gles2 付きでcompile されている。
KDE(Plasma) or Gnome
plasma-meta を使用してデスクトップを構築。今時は kde-meta が hard mask されていることに初めて気づいた。plasma-meta ではkde app はそれほど依存していないようなので dolphine, yakuake などを個別に入れた。
OS インストールは以上。後は運用しながら追加していくスタイルです。