狠狠撸

狠狠撸Share a Scribd company logo
I love Gentoo!
うさたーん(@usaturn)
#ssmjjp 2017/01/27
おまえ誰よ
Go YAMADA
Web広告配信会社で雑用の合間に DNS、メール、Hadoop等の運用、
構築をやってます
? 最近の仕事
? 席移動したらパソコンが重いんです、500MB のエクセルファイル開くと重いん
ですなんとかしてください案件から Hadoop クラスタリプレースまで幅広く
? 好きな Linux ディストリ
? Gentoo 教 systemd 派
? 最近の悩み
? 重要な雑用が増えるわかめちゃん状態
? コミュニティ
? Sphinx-Users.JP
? Python mini hack-a-thon
2
usaturn
宣伝 Sphinx-Users.JP
「Sphinx」というPythonのドキュメンテーション
ツールのユーザ会で活動しています。
月1で「Sphinx + 翻訳 hack-a-thon」
「Sphinx Tea Night」を開催中。気軽に遊びに来てね!
3
現在ユーザ会のメンバ
(#ssmjp 運営の
@togakushi さん含む)で
SoftwareDesign 誌に
Sphinxの記事を2年に渡り
連載中!次回フィナーレ!
発表者の Gentoo 歴
? Gentoo を使い始めたのは 3年半前に今の会社に転
職してから。バリバリ初心者です。
? 職場は物理、仮想マシン(KVM)、クラウド合わせ
て 400 ノード弱の Gentoo サーバを運用、構築
? デスクトップ環境には疎いです
Gentoo を端的に言い表している言葉
Gentoo is all about choices.
(Gentoo とは選択です)
インストール手順が選択の嵐
1. なんらかの Linux ディストリビューションの LiveCD で起動(お
勧めは SystemRescueCd)
2. ディスクのパーティション作成
3. ファイルシステム作成(好きなファイルシステムを選択)
4. stage3(Gentoo のユーザランド)をダウンロード、展開
※CPUアーキテクチャ、init、Cライブラリに応じて選択
5. chroot
6. カーネルコンフィグ(必要なカーネルの機能を選択)
7. ネットワーク、fstab 等の基本設定
8. ブート設定(ブートローダを選択)
9. リブート
10. 必要な基本パッケージを選択してインストール
? cron
? syslog
? ntpd....etc
Gentoo とは
https://www.gentoo.org/
Gentoo とは
? Linux ディストリビューションの一種。
? Linux 以外のディストリビューションもある
? Gentoo for Mac OS X
? Gentoo/FreeBSD, Gentoo/NetBSD,
Gentoo/OpenBSD, Gentoo/DragonFlyBSD
? Plan 9 For Gentoo
? StormOS-Next(illumos ※幻)
Larry the Cow was a bit frustrated
at the current state of Linux distributions…
…until he tried Gentoo Linux.
Gentoo が使われているところ
? pepper
? NASDAQ(未確認
http://www.computerworld.com/article/25103
34/financial-it/how-linux-mastered-wall-
street.html)
? Chrome OS や CoreOS の元
? アドテク企業系(2社確認済み)
Gentoo の特徴
? source-based Linux distribution
? カスタマイズ性の高さ
? 対応しているアーキテクチャが豊富
? バージョン番号がない(ローリングリリース形式)
? アップデート後の各アプリの更新された設定ファイ
ルの管理が可能
source-based Linux distribution
? 多くの Linux ディストリビューションがコンパイル
済みのバイナリを提供するのに対して、ソースベー
スで配布されている
? Linux カーネル
? アプリケーション各種
よく質問される事
Q. Gentoo って、自分で全部コンパイルしないといけ
ないんでしょう?
A. 誤解しないで下さい。
コンパイルすると言っても手動で面倒なコマンドを
打ったり、設定をする事はありません。
他のディストロのパッケージ管理ツール apt や yum
と同様の使い勝手だと思って下さい。
パッケージ管理ツールを選択
?Portage
? 標準のパッケージ管理ツール
?Paludis
パッケージ管理ツール「portage」
? コンパイルオプション「USE フラグ(#Gentoo の要)」
? 各パッケージをコンパイルする際、手動だと ./configure
等で指定するオプション(からパッケージメンテナが選んだ
物)を portage では「USE フラグ」と呼びパッケージをコ
ンパイルする際に反映する事ができます
#vim のインストール時に LuaJITを有効にする例
USE=luajit emerge -avt vim
(luajit を有効にすると自動的に依存関係にあるLua等の
USEフラグが有効になる)
? コンパイル時の gcc のオプションを設定し、CPU に最
適化したバイナリを作成できます
? バイナリパッケージを作成する機能(同じマシン構成が
多いと役に立つ)
複数のバージョンを選択
?スロットの概念
? パッケージのバージョンを複数選択する事ができます。
? 例えば、Python の場合は 2017年1月現在 2.7系、
3.4系、3.5系を利用できます。各バージョンを使い分
ける事も簡単で開発環境に適しています。
他のディストロで簡単にはできない事
例えば多くのアプリケーションに組み込まれている OpenSSL を排除
し、よりセキュアな LibreSSL を組み込む事が簡単にできます
標準外のパッケージも簡単に使える
?overlay
? 非公式のパッケージリポジトリや、自作のリポジトリ
を使う仕組み
アップデート時の設定ファイル管理
アップデート後の各アプリの更新された設定ファイル
の管理が可能
標準で 2 つのコマンドが用意されています。後者につ
いては rcs と連携し設定ファイルのバージョン管理が
できます。
? etc-update
? dispatch-conf
どちらのコマンドも、アプリケーションのアップデー
ト後に打つ事により、設定ファイルの diff を表示して
マージする/マージしないを選択する事ができます。
アーキテクチャを选択
もちろんラズパイに入るよ
ルータにも入っちゃう!
? EdgeRouter というVyatta(VyOS)のフォークを利用しているルー
タにインストールする方法が公開されてます。
プロセス管理を選択
?openrc
? sysvinit の Gentoo 独自のラッパー
? Docker が標準採用している Alpine Linux が利用しArch
Linux 等でもパッケージが提供されている
?systemd
? 最近の有名な Linux ディストロのほとんどが採用している
? 今までパッケージを別途インストールしていた基本機能
(cron、ntpdクライアント、syslog等)を内包している為、
Gentoo で最小インストールする際の相性が非常に良い
標準 C ライブラリを選択
?glibc
?uClibc(サイズが小さい)
? Alpine Linux が利用している
?musl (サイズが小さい)
glibc の代わりに uClibc や musl(マッスル)を使った stage3 のイメージ
はサイズが非常に小さくなる事を生かしてコンテナや組み込みに!
まとめ
?Gentoo とは選択です
? 他のディストロの基本的なパッケージも選択できます
? パッケージ管理ツールすら選択できます
? パッケージのバージョンを複数選択できます
? パッケージの USE フラグを選択します
? 標準外のパッケージも簡単に選択できます
? Intel CPU 以外も選択できます
?選択の幅が広い事により最小環境が構築しやすい
? 機能を USE フラグで絞る事により依存関係のパッケージ
の数を必要最小限にしてインストールできます
? 最小環境で構築する事によりセキュリティの向上、動作の
安定性に期待できます
? コンパイル時のチューニングで使っている CPU に最適化
したバイナリを簡単に作成する事ができます
Web の参考情報
Gentoo 公式サイト
https://www.gentoo.org/
Arch Linux Wiki も非常に参考になります
https://wiki.archlinuxjp.org
Gentoo is painful_but_useful

More Related Content

Gentoo is painful_but_useful