技術屋卵の足跡

いつか振り返ったときにどれだけ這いずり回ったかを確認したい

Gentooの沼

はじめに

最近はUbuntuが意外と普及をしているらしく、自分の周囲でもLinuxをメインで使っている人をチラチラ見かけるようにはなった。 しかしながら自分としてはGentooを押していきたい。

Gentooについてなにかを調べても日本語でヒットすることは稀で、Googleトレンドで検索件数を見てみても、Ubuntuと比べてその差は歴然であったりする。

そもそも記事が少ないのが、検索されない一因である気もするので*1、 そもそも少ないGentooの記事を少しでも増やそうと思う。

Gentooとは

意外とGentooという名前は有名らしく、そもそもこの記事にたどり着くような人にとっては耳タコ間違いないので、ここでは簡単な紹介だけにする。

Gentooはすべてのソフトウェアをセルフコンパイルしてしまおうというディストリビューションだ。 普段使うターミナルはもちろんLinuxのKernelも自分で設定してコンパイルする必要がある。

LinuxにはLinux From Scratchというもはやディストリビューションと呼べるかわからないものもあるが*2、それを除けば最も低レイヤから組み立てるディストリビューションであり、最もカスタムをしやすいLinuxであることは間違いない。

利点

ローリング・リリースである

自分がそもそもGentooに行き着いたのは、ローリング・リリースのLinuxを使いたいと思っていたからだ。

Gentooに行き着く前には、Debianをメインに使用していたが、Debianは安定性を売りにしているので普通のパッケージが古かったり、メジャーバージョンを更新するのが面倒だったりした。 そこでローリング・リリースのディストリビューションを探していて、これらの問題を解決できそうなArch LinuxGentooに行き着いた。

ローリング・リリースだと、時々のメンテナンスさえすれば常に最新になるので、基本的に脳死で使えるのがとても良いと個人的には思っている。

カスタムがしやすい

セルフコンパイルができるということは、コンパイル時のオプションをいじることで様々な機能のスイッチングができることを意味する。 したがって、消費電力を最優先に全体をチューニングすることもできれば、安定性や機能性を求めることもできる。

具体的には、消費電力を気にすると、アイドル時の電力が10W程度のサーバー組み上げたり、 Laptopの場合だと充電をWindowsの1.5~2倍程度長く使うことができる。

カスタム自体は他のLinuxでもそこまで難しいものではないが、flaggieなどのコマンド一つでカスタムを行え、依存解決やコンパイル、インストールまでが簡単に行えるのはGentooだけの魅力だ。

パッケージのみならずKernelの設定やinitシステムなどありとあらゆるものを自由に設定できる。 Gentooらしさを作っているportageというパッケージマネージャについても、公式でArch Linuxのパッケージマネージャであるpacmanをインストールできるようになっている。したがって(意味もないのでやる人はいないと思うが)pacmanで管理するGentooすら作れるのだ。

Linuxの便利さに気がつく

Gentooをある程度自分好みにカスタムすると、もはやWindowsには戻れないのではないかと思う。 もともとLinuxCUI文化であるため、コマンドなどを覚えていないうちはとっつきにくいものである。 しかしながらGentooのインストール時にはもちろんXシステムなんてないので、Gentoo Install Battleを終えたあとにはCUI文化に抵抗はないだろう。 そしてそのまま使う続けると、ターミナルさえあればで様々な問題が解決できるLinuxの便利さに気がつく。 サーバーやマイコンなどを開発するときは特に、WindowsよりもLinuxのほうが遥かに使いやすくなっているはずだ。

コントロールパネルのどこにあるかもわからないような設定項目を掘り当て、設定を変える必要もなければ、 意味もなくPCのファンがうるさく回ることもないなど、Windowsを使うと気がつくことが増えているのは個人的な悩みではある。

資産を作れる

自分好みのGentooというのは、基本的に様々なパッケージの設定ファイルの集合体である。 そしてGentooでは基本的にピュアな状態のパッケージを用いることになるので、どんなディストリビューションを使うことになったとしても、その設定ファイルは役に立つのだ。

一度自分好みの環境を作ってしまえば、Gentooを別のマシンにインストールするときも設定ファイルをコピーしつつ、コンパイルを放置すればいいし、Raspberry Piなんかを設定するときも容易に自分の色に染めることができる。

その他

  • Linuxのシステムをわかった気になれる
  • 英語力がつく
  • 自己満足に浸れる

問題

バイス周りが(慣れるまで)地獄

Gentooを使う上で最も大変なことは、デバイス周りの設定である。 デスクトップPCなどの一般的なシステム構成ならば大きな問題はないが、Laptopでは組み込まれたデバイスを有効化するためにKernelオプションを弄り倒す必要があるかもしれない。

例えば、Wi-Fiアダプタとしてよく使われるIntelのチップでは、モジュールを用意した上でKernelにそれを読み込むように記述する必要があったり、タッチパッドがどうやっても動かず、 最終的に別の会社のLaptopの情報をもとにKenelの設定項目を見つけ出したこともあった。

これらの設定は最初の一回だけ必要なので、インストール中の苦悩になると思うが、これで挫折する人も多いのではないかと思う。

何回かやっていくと、lspcilsusb,lshw,dmesgと仲良くなって、なんとなくできるようになった気がするので、慣れるまでが非常に高いハードルなのではないか。

英語力が必要

冒頭に述べたように、Gentooに関する日本語の記事というのは圧倒的に少ない。 辛うじていくつかのGentoo Wikiのページが日本語化されているだけで、多くの情報が英語のWikiやthreadにあると思う。

したがって、最低限の英語の読解力か少なくともGoogle翻訳を使えば意味がわかる程度が必要となる。

エラー時が絶望

脳死状態でemegre -UDN... @world(更新コマンド)をやっていると、エラーで大変なことになることがあった。

例えばpatchコマンドで使用するlibattrというライブラリが壊れてしまい*3、パッチ当てるパッケージがインストールできなくなったこともあった。 この際は、治そうとしてcpmvすら使えなくなりながらも、USBブートしたLinuxでライブラリのrpmパッケージからsoファイルを抜き出して、上書きするといったアクロバティックな対処法をしたような気もする。

こんな感じで依存関係がねじれたり、システムが動かなくなることが起きてしまうと、いっそクリーンインストールした方が楽なんじゃないかとも思うことがある。

パッケージをインストールする段階で、unmaskといったような警告を解除する必要があったりと、ある程度注意を払っておけばこのようなことにはならないと思うが、なってしまう可能性があるし、 もしメインPCとして使っているのであれば、休日返上して一日がかりで直さなければ行けないこともあるのが何よりも恐ろしい。

まとめ

つらつらと自分なりのGentooへの印象を書いたわけではあるが、自分としては上に挙げたような問題もすべて勉強だと思って受け入れているし、自分だけの何かを作ることがとても楽しく感じているからGentooを使っているのだと思う。そしてこうやって見ると、どうやっても一部の変態さんにしか受けないディストリビューションな気もする。Gentooの楽しさはカスタムにあると思っているので、ちょっとだけお試しするのも違うと思うし、これは人口が増えないのもしょうがないのかな。

注釈

*1:自分も調べるときは"gentoo"よりも"arch wiki"をキーワードにするほうが多い気がする

*2:LFSユーザーの皆さんごめんなさい、悪く言う気はないです

*3:本当に壊れたかもわからないし、どうしてこうなったかもわからない