MacBook Proを捨ててThinkpad T460sを買ってgentooを入れた

英字キーボード配列にできて開発ユースに耐えうるノートPCがとても選択し辛い昨今、なんとなく安牌ポジションだったMBPについにさよならしました。
元々、Macを好んで使っていたというより、解像度が高くて英字配列にできて電池の持ちが良いというノートPCがMBPだっただけで使ってたのですが。

一番大きな要因がコンテナの利用頻度が増えて開発環境も含めてDockerを使う様になったので、Macだとどうにも面倒だという点です。
docker-machineのデフォルトとかdocker for Macのデフォルトが遅過ぎて話にならないし、dinghy使ってもdocker-sync使っても微妙でかつ面倒くさい。
普通にLinux上で直接動かせるなら、無駄な苦労だと思って、まず開発用PCをLinuxにしようと決めました。
そしたら新しいMBPが30万越えるのに、一世代前のCPUとメモリでドヤ顔してくるわ、キーボードがペラッペラの気に食わない形になったので、買う気が失せたのを機にMBPを買うのを止めた次第です。
(Touchbarはどうでもいい)
まあ、昨今Thinkpadレノボ化してからあんまりいい話聞かないので悩みはしましたが。

T460sスペック

  • CPU: skylakeのi7-6600U (これは残念)
  • メモリ: DDR4 24GB
  • ディスプレイ解像度: 2560x1440
  • ストレージ: NVMe 1TB

基本部分はざっくりこんな感じ

MBP 2016との比較としては、

  • CPUは同等
  • メモリは多いし早い
  • ストレージの上限はMacの方が多い
  • ディスプレイの解像度はMacが買ってるが、非光沢なのは良い (というか3年以上前からあの解像度のMacがヤバイ)
  • キーボードはMacより良い (トラックポインタ付いてるし)
  • TouchpadはMBPの方が精度良いと思う
  • 重さは13インチとほぼ同じ
  • ベゼルが180度まで開く
  • 普通のUSB3.0端子がある
  • 10万近く安い
  • ドック追加しても数万円安い
  • ESCキーとかFnキーがある!(どうせHHKB使うけど)

自分は、3年前のMBPからの移行だったのでかなりスペックが上がったし、やっと4kディスプレイが60hzで出せるようになってちゃんと使えるようになったのが嬉しい。
MBPと比べてでかいのは、普通のUSB端子があるのでケーブル買い替えなくていいし、無駄なアダプタケーブル持ち歩かずに今まで通りで良くて楽。
ディスプレイに関しては、3年以上前にRetina出してた当時のMBPは今思えば異常だった気がする。あの時はテンション上がったのになあ……。今は細いバーでDJ出来るぜーとか言っててもうなんか……。えー、それ?って感じである。

使用感におけるMacとの比較

OSはgentoo linuxを入れて使っている。archと悩んだがそれなりにgentoo党なので慣れてる方にした。
久々にインストールバトルしたから、ハマりまくって辛かったが……。

gentooにして余計なものを結構削ぎ落とした構成にしたので、GUIを起動しても起動した辞典でメモリ消費量は350MB程で、24GBメモリ積んでるので、これなら相当富豪的に使っても無くなったりしないだろう。
dockerがめっちゃサクサク使えるし速い!やっぱMacOSはこの辺り辛い。
全体的にクソ早くなった。自分のMacが大分色々と肥大化してて無駄なものが動いてたってのもあるが、このサクサク感は嬉しい。
キーリピートとかキーレイアウトは普通に変えられるが、KarabinerがSierraでも元の機能レベルで動く様になったならあっちの方が多機能で良い。あそこまで簡単にレイアウト変えるのはLinuxだとちょっと辛い。
homebrewは何だかんだで良くできてて楽。バイナリパッケージとコンパイルを適度に組み合わせられるのが良かった。
この辺りはgentooを使ってるので色々と時間がかかる。まあ、そこが大事な人はarchを使えば良いと思う。
後は、どうせvimでコード書いて端末で動かすので開発環境的には大して変わらない。

今は、ファイラーどうしようか悩んでる所なのでFinderとの差は良く分からん。Finderサムネイルがサクっと確認できてリサイズも簡単だからそこは強力だと思う。

全体としては、開発環境としてはやっぱLinuxの方がどう考えてもサクサク感が高い。ちょっぱやである。

一つ大きな問題があって、今まで1passwordに超依存した生活になっていて、これをどう移行するか目処が立ってないところである。
もう良く使うものはFirefoxにマスターパスワード付きで保管して、他の特殊なものはiPhoneの1passwordから参照する、という手段で大体の利用側は何とかなる。
問題は登録だがこっちは良いソリューションが無い……。

gentoo苦労話

そんな苦労するぐらいなら使うなって突っ込みもあるかと思いますが、苦労するだけの見返りはあるのでgentooを使ってます。とはいえ色々ハマったのでまとめておきます。
ちなみにgentooを使ってて嬉しいのはパッケージ管理でライセンス上きついものも普通に管理できるし、コンパイルオプションレベルで必要なもの取捨選択できて、色んなものをマニュアルで設定する訓練が積めるのでLinuxの事が良く分かる、とかそんな所ですね。
ここからは、gentooの設定の流れをつらつらと書いてるだけなので、興味無い人は続きは読まなくて大丈夫ですw


まず、インストールする時、GentooのLiveDVDが普通に動作するので、変にハマらなければそんなに苦労は無い見込みだった。(結果ハマったけど)
lspciとかdmesg見ながらカーネルに組込むドライバをぽちぽちとやる。コンパイルまでは問題無かった。
しかしUEFIのノートPCにLinuxをまともに入れるのはこれが初だったので、UEFIについての知識が無くgrubのインストールで調べものをする。
で、元々Windowsに使われてたブート領域に相乗りすることにし、efibootmgrを使ってgrubの起動処理を書き込もうとしたのだが、なんかefibootmgrがバグってたのか俺のchrootのやり方が悪かったのか分からんのだが、chroot環境の中でgrubefiバイナリのパスを指定すると、HDDのタイプとかUUIDが全部0で埋まってしまうという訳の分からん状態になった。
エラーメッセージも何も出なくて成功した様に終了したので、最初それに気付かなくてgrubが動かねええええ!って唸ってた。

1時間ちょっとぐらい悩んで0埋めされてておかしいことに気付いて、色々ググった結果同じ症状が出てた人を発見。なんかバージョン上げると解決する、みたいな話があったのでchrootの外に出て、efibootmgrをunmaskして新しいバージョンを取ってきたら、無事にEFIの設定を書き込めた。
これでgrubが起動できるようになった。

その後、カーネルが動かなかったのだが、これはframe buffer consoleのサポートを有効にしてないという凡ミスで、大分時間を浪費した。久々過ぎて忘れてた。
一回、カーネルを入れた後で、Arch LinuxwikiによるとACPIとかサスペンド回りでバグがあるらしいんで、カーネルをunmaskして4.8.9まで上げる。

後、dockerとかKVMで必要になりそうなカーネルコンフィグを組み込んでいく。
wifiはドライバはあるけどファームウェアは組み込んでおくか、どっかに用意しとく必要があるっぽかったので、wireless-wikiからfirmwareを落としてきて、Gentoowikiを見ながらカーネルに組み込んだ。
無事認識できて良かった。

これで初期インストールは完了。


とりあえずインターネットに繋がらないと何もできないが、dhcpcdを入れて有線で繋げばすぐに繋がったので、しばらくそれで作業した。繋げばDHCPからIP取れるのありがたい。
wifiはArch LinuxWikiを見ながらsystemdからwpa_supplicantが起動できるように設定をして、パスフレーズを設定ファイルに書いたら勝手に繋がった。最近のLinuxはすげー楽で焦った。


ウインドウマネージャは前Awesomeを使っていて挙動も好みだったので、Awesomeを使うことにする。
最初gnomeをベースにしようかと思っていたが、余計なもの入れて時間かかるのもなーって感じだったので単体で突っ込んで、xinitrcから直接起動することにした。
なんかこれで問題無く動くし、起動時にstartxするぐらい大した手間でもないので、もうディスプレイマネージャーもデスクトップ環境全体も必要無いやと判断して、このまま運用しようと思っている。
おかげで、起動した時点での消費メモリは350MBぐらいで、異常に軽量になった。
この時点で、開発に使うだけなら使えなくはないぐらいにはなったけど、まあ流石にまだちょっと辛い。


次は音を出せるようにする。これはArch Linuxwikiを見つつpulseaudioを入れたらすぐに認識した。最近はデバイスドライバさえちゃんと入ってれば、ほとんど勝手に認識するから素晴らしい。まあここで認識してくれてなかったら大分辛いところだったが……。
音量の調節は最初コマンドでやってたが、流石に辛いのでvolumeiconとpavucontrolをインストールした。volumeiconのおかげでキーボードのVolUpとVolDownキーが効く様になったが、ちょっとイマイチなので今後直す。


サスペンドがまともに動かんのはノートPCだと結構辛いので、ACPIのwikiを見つつacpidを入れたら、初期設定で普通に動作した。蓋を開け閉めした時も勝手に動くので驚いた。一応ちゃんとカーネルコンフィグは事前に準備しておいたのだが、最近は普通に動くんだなーと思った。


ちなみにカメラもドライバを組み込んでおいたら勝手に認識して動作した。ビデオチャットサービスに繋いだら普通に使えて良かった。


こんな感じで大体仕事で使えるようになったのだが、自宅のPCレイアウト変えたり仕事の合間に調べものしながら作業してたりで、結局5日ぐらいかかってしまった。
まあ、おかげで現在は結構快適です。ibus-skkでスティッキーシフトができないことを除けば……。

やっぱ、MacOSより開発用としてはLinuxの方が良いし、個人的にもこっちの方が好きだ。
このタイミングで捨てて正解だったような気がする。
今更移行するに移行できない1passwordとiTunesというものがあって、この辺りをどうするかは未だに目処が立ってないんで、当分の間自宅からMacが無くなることはないけど。