はじめに
なんか某所に面接に来た年収1000万円以上希望のインフラエンジニア候補に、Linuxのどのディストロ使ってるか聞いたら「ディストロってなんですか?」と聞き返して来たという話をきいたのでオラびっくらこいてQiitaに記事書き始めちまったぞ。
使ったことはなくてもいいから名前と特徴くらいは知っていて欲しいディストリビューションを列挙する。ディストロの系列ごとに書いたので、列挙順は重要度順ではない。が、2019年現在絶対に知ってないとマズイalpineだけは先頭に置いた。
busybox系
Alpine Linux
公式: https://www.alpinelinux.org/
Wikipedia: https://ja.wikipedia.org/wiki/Alpine_Linux
パッケージマネージャー: apk
最小構成だと約5.6MBという圧倒的小ささで、dockerコンテナのベースとして存在感を日々増大させている。busyboxというのは昔FDD1枚(1.2MB)で起動する1 floppy linux系でよく使われていた技術で、ls
やcd
等多数のコマンドを一つのbusybox
というバイナリのシンボリックリンクにしておき、実行時に$0
で「どのコマンドで起動されたか」を調べて挙動を変えることでサイズを小さくしている。単一バイナリなのに沢山仕事があるから「busybox(忙しい箱)」なのである。
伝統的巨大企業で働いてる人は「ウチはまだベンダーの動作保証のあるRHELだから」という事はあるだろうが、使ったことはなくても2019年現在でAlpineの名前と用途を知らないインフラエンジニアは相当アレなんでアレしてください。
RedHat系
パッケージマネージャー: yum (.rpm)
Red Hat Enterprise Linux (RHEL)
公式: https://www.redhat.com/ja/technologies/linux-platforms/enterprise-linux
Wikipedia: https://ja.wikipedia.org/wiki/Red_Hat_Enterprise_Linux
サーバーで定番だったディストリビューション。実績もあったし、高いロイヤリティとるだけあってちゃんとhpやIBMなどのサーバーベンダーにかけあって検証させ、サーバーの動作保証OSにRHELの名前が挙がっていた。商用では「フリーソフト(≒OSS)なんて信用できない、バグがあったときにどうするんだ1!」という時代で、ベンダーにCentOS使ってるなんて言ったら「それはうちの動作保証外なんで返答できかねます2」と言われるのがオチだった。今でも変わってないかも。でも今はベンダーからサーバー買うよりクラウドの方が多いと思うので、そんな事を気にすることもなくなった。
Amazon Linux
公式: https://aws.amazon.com/jp/mp/linux/
言わずとしれたAmazonが自社のクラウドサービスAWSのサーバーインスタンスであるEC2用に提供しているディストリビューション。Amazon Linux2でやっとRHEL7ベースになった。初代Amazon LinuxはRHEL6がベース。AmazonオリジナルはDBのAuroraなども含め、AWS最適化パッチがあたっているものの本家からは数年遅れるため本家のバグ対応や機能追加が取り入れられるのが遅いというパターンが多い気がする。最近は本番環境もdockerな事が多いのでホストなんてセキュアであればそれで必要十分とは思う。
CentOS
公式: https://www.centos.org
Wikipedia: https://ja.wikipedia.org/wiki/CentOS
「RHELとのバイナリ互換を目標」として、RHELのSRPMから構築するコミュニティベースのプロジェクトだった。他にWhitebox LinuxとScientific Linux、CERN Linuxなどがあったが消えたので言及しない。当初はSRPMから消し忘れたRHELのロゴなどに対してチクチクとRH本体から「うちの商標を侵害するな」といじめられていたが、今ではRHがCentOSのサポーターになっている。中身はRHELと同等と考えておいて差し支えない。たまに失敗してRHELで動くバイナリが同じバージョンのCentOSで動かないことがあるらしいが、遭遇したことない。
Fedora
公式: https://getfedora.org/
Wikipedia: https://ja.wikipedia.org/wiki/Fedora
黎明期に一世を風靡したRed Hat Linuxの正当な後継はこれ。RedHat社はRHELだけを商品として取り扱い、Fedoraコミュニティをサポートして成果物をRHELに取り込むという関係にある。新しいものを積極的に取り入れるため、新しく入ったもののRHEL本体に取り込まれないまま消えてしまう機能などもある。
Ubuntu系
パッケージマネージャー: apt, dpkg (.deb) snappy(.snap)
Ubuntu Linux
公式: https://www.ubuntulinux.jp/
Wikipedia: https://ja.wikipedia.org/wiki/Ubuntu
Linuxのデスクトップ利用として泣く子も黙るトップシェアを誇るのがUbuntu。ウェブ上に最も情報が多いのがこれなので、「Linuxは初めて」という初心者から「Linuxは〇〇に使いたいだけなんだ、ディストロ選びやインストール作業は趣味じゃないんだ!」という上級者まで安心して使えるディストリビューション。Thawte(1999年にVerisignに買収された)で一旗あげたマーク・シャトルワースによって創設された。彼はカノニカルという企業も設立し業務としてUbuntuを支援している。
snappyはカノニカルがメンテナンスしているパッケージマネージャーで、ディストロ依存しないのが特徴。.soのライブラリをパッケージに含むのでサイズが大きくなってしまう。カノニカル的には「aptに代わってsnappyを使ってみんなで幸せになろう」という事なんだろうが、批判も多く他のディストリビューションに受け入れられているかというと微妙な状況である。
後述するDebianの派生ディストロなのでDebian系とするのが正しいが、Ubuntuからさらに派生したディストロがかなりあるのでここでは系統をわけて「Ubuntu系」とした。「UbuntuはDebianの成果にただ乗りして利益をだしている(Debianは儲かってないのに!)」「Debianのコミッターを(自発的ではあれ)引き抜いて行く」として批判する向きもある。そういう話がどうでもいい人はなにも聞かなかったことにして使っていればよい。
Ubuntu派生
Ubuntuは人気なので派生がいっぱいある。好みのものを使ってもいいし、使わなくてもいい3。MintやLubuntu等の人気が高い。Ubuntuと設定ツールが微妙に違ったりして、ネットで情報をググっても自分の環境に適用できない事があったりするので注意されたし。
Wikipedia: Ubuntu派生ディストリビューション
https://ja.wikipedia.org/wiki/Category:Ubuntu%E6%B4%BE%E7%94%9F%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3
Debian系
パッケージマネージャー: apt, dpkg (.deb)
Debian GNU/Linux
公式: https://www.debian.org/
Wikipedia: https://ja.wikipedia.org/wiki/Debian
DebianはGNU精神を尊重していて、うっかり「Debian Linux」などと言うと「Debian GNU/Linuxです!」といちいち訂正されるので気をつけてほしい。「debian」と書く分には怒られない(たぶん)。Slack、Red Hatと並ぶLinux黎明期BIG3的な存在。現在のBIG3はRed Hat, Debian, Archだろうか。
Kali Linux
公式: https://www.kali.org/
Wikipedia: https://ja.wikipedia.org/wiki/Kali_Linux
ペネトレーションテスト用のソフトウェアがあらかじめセットアップされた状態のディストロで、ベースはdebian。用途から察するに名前の由来は血と殺戮の女神カーリーだろう。これを使って外部のサービスに侵入を試みてはいけない。するなよ!するなよ!絶対にするなよ!4。
Raspbian5
公式: https://www.raspberrypi.org/downloads/raspbian/
wikipedia https://ja.wikipedia.org/wiki/Raspbian
大人気Raspberry Pi向けディストリビューション。用途が用途なので大規模サーバーを触ってる人には縁がないかもしれないが、ラズパイを知らなかったらアンテナが低すぎるし、ラズパイ上ですぐ動くLinuxがあるよ、ということは知っていて損はない、と思う。一応X Windowもあるけどラズパイ2までは重すぎて使い物にならないと思う。ラズパイ4はメモリ4GB積めるみたいだしいけるのかなあ。買ってみようかな。通常はPC上で組んだプログラムをラズパイに転送して動かすものだと思う。
Tails
公式: https://tails.boum.org/
Wikipedia: https://ja.wikipedia.org/wiki/Tails_(%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)
初回起動時からTorで接続する、匿名性を高めたディストリビューション。Torでも当局6に本気出されたら追跡可能という噂もあるが、普通にネットに繋いでる人よりはTor使いの方が追跡に時間と手間がかかるのは間違いない。捕まらないとは言っていない。
MX Linux
公式: https://mxlinux.org/
2019-10現在distrowatchで一位を誇っている人気ディストリビューション。これを書いてる俺も今知ったので詳細は知らん7。
Arch Linux系
Arch
公式: https://www.archlinux.org/
Wikipedia: https://ja.wikipedia.org/wiki/Arch_Linux
シンプル・ミニマムをモットーにしている。リリースバージョンというものはなく、ローリングリリースといって随時パッケージが更新されている。CD/ISOインストール用に定期的にスナップショットはあるが、特にそれに対してバージョン番号を振ったりはしていない。上級者向けで、マニア層からの信頼が厚い。
Manjaro
最近MXに抜かれたが、distrowatchで長い間検索結果一位の座に君臨していた。Arch系の時点で人を選ぶのだが、その人達によっぽど好まれているものと思われる。
その他
Gentoo8
全部ソースで提供されて自分でビルドするというポリシーのディストリビューション。コンパイルオプションを細かく設定することで自分のPCや用途に最適化する事ができる。例えば、サーバーとして使うコンピュータであればグラフィカル系のものをコンパイルしないようにすることでかなりバイナリサイズが小さくなる。
FreeBSD
公式: https://www.freebsd.org/ja/
Wikipedia: https://ja.wikipedia.org/wiki/FreeBSD
そもそもLinuxでない。なんかここの紹介を間違うとものすごく怒られそうな気がするのと、歴史の話をするとながーーーい事になるので、興味ある人だけ調べて見てほしい。なぜか日本では人気の高かった、Linuxの「雑多でも動く事が重要」に対して「設計の綺麗さ、コードの正しさ」を求めてると聞くけど自分でカーネル追ったわけでもないので詳しくは知らない。俺が触った時はJVMが動かなくて自社の業務のサーバーとして使えなかったし、情報量もLinuxほど多くないから触るのをやめてしまった。「FreeBSD」という名称と、「Linuxではない」事くらいは知っておいて欲しい
SUSE Linux Enterprise Server(SLES)9
1992年からの古株で当初はslackをベースにしていたらしい。Novellに買収され、そのNovellをAttachmateが買収して、そのAttachmateがマイクロフォーカスと合弁され、マイクロフォーカスからEQTという投資会社に売却され結局独立起業になった。
いわゆるRedHatのRHELに相当するのがSLES、FedoraやCentOSに相当するのがopenSUSE。厳密には、openSUSEのローリングリリース版のTumbleweedがfedoraで、安定版にあたるLeapがCentOSみたいな感じ。日本ではマイナーだが各クラウドベンダーの仮想マシンでopenSUSEもSLESも選択できるし世界的にはだいぶ知名度のあるディストリビューション
おまけ
ここから下はまあ知らなくても支障はないけど、話の種くらいにはなるかもしれない
Oracle Linux
オッス、オラオラクル
RHELクローン、Oracle DB向け最適化、だったけど今更好き好んでOracle DBに金払うやつもいないと思うと思うので、RHELでなくこっちを選ぶ理由がない。Oracle CloudにおけるAmazon Linux的な位置づけなのではないだろうか。統計解析ソフトウェアのSASのサポートOSに無償ディストリビューションとしては唯一入っているので選択される事があるとのこと10。この製品の位置づけがわからないけど、無償で動かすならCentOSでいいのではないだろうか。サポート使うときはRHEL使ってますとか言いながら。
OSS界隈でOracleはSCOより嫌われている。
https://techtarget.itmedia.co.jp/tt/news/1303/07/news03.html
Miracle Linux
元はRH系がベースだっけ?途中でTurboベースに代わったが、Turboが死に体だったのでRH系に戻った。Oracleでの豊富なLinux対応案件を武器に日本オラクルからスピンアウトしてOracle、PostgreSQL,Samba等特定用途に特化して、その用途にチューンナップ済み11のディストリビューションの商売を始めた。世界進出成功する前に米Oracle本体にOracle Linuxを出され、日本オラクルからは出資は引き上げられるし散々だった。その後Turbo他と組んでAsianux Serverなどと迷走した上になんとかまだ生きてる。生きてるだけでエライ!
Turbolinux
米Pacific HiTech(以下PHT)によるディストリビューション。PHTはインターネット黎明期からフリーウェアをまとめてCDに焼いて売ったりしていた。当時は常時接続は一般的ではなかったし速度も遅かったので、CDに入る600MB以上のソフトが1000円で買えるとなれば利用者にはとてもお得だったのである。Turboは米では即死したが、日本ではGUIインストーラーで日本語が使える状態で発売され、導入の優しいLinuxということで人気があった。Red Hatの人気はその後。
Slackware
歴史の長いディストリビューションの一つ。当時はCD bootとかも一般的でなく、まずWindows95のDOS窓でloadlinして、Linux側に切り替えたあと、自分のPC用にkernelの機能をmake config
してmake install
、LILO(≒GRUBのレガシー版)にkernelを登録して再起動するのが普通だった。カーネルをコンパイルする理由だが、当時はブート時に読み込み可能な領域が640KBであり(zimageの場合)、kernelを512KB以下にする必要があった。インストール時に使うカーネルには起動に最低限必要なものだけしか入っていないので、自分の持っているビデオカードやSCSIカードに合わせて機能を盛り込んで、そのkernelで再起動してやっと使えたのである。全部てんこ盛りにするととても512KBには収まらない。'97年くらいにはkernelがmoduleの動的読み込みに対応しだして、しばらくはexperimentalな機能として推奨されていなかったが、安定してくるとデバイスドライバみたいなものはmoduleで動的に読み込むようになり、いちいちkernelを再コンパイルする必要がなくなった、気がする。古すぎて記憶が曖昧。
これにJE(Japanese Environment)というキット、というか一連のソフトウェアを入れて日本語が使えるようになった。なんかソースが飛んでPJEとかいう名前に変わった気がしないでもない。
Plamo Linux
日本発のディストロで、SlackにJEが載った状態でインストールできるようなもの、という位置づけだった。が、源流はそのままにどんどん使いやすく進化しているようで2019年現在活動中である。すごい!
Kondara MNU/Linux
日本発、オサレなペンギンがマスコットのRH系ディストロ。KondaraはLinuxコミュニティへのコミットも活発だったし、デジタルファクトリーという会社が発売して商流にのったのもあって「ディストロ渡り歩きたくないしこれからはKondaraメインでやっていこう」と思った瞬間に運営ともめて解散した。コミュニティベースの商売の難しさを教えてくれた。後継はMomonga Linux。PS/2 Linuxに採用され、Kondara Linuxって表示されてたけどKondaraのメンバーは知らなかったらしく、ライセンス的にはどうなってるの?って思ったけどどっちでも俺には関係ない。
Vine Linux
日本発、葡萄がトレードマーク。RHベースに日本語環境特化して一部に人気を誇った。Linux、というかソフトウェア業界全体が「各国版をそれぞれローカライズするより、初めから国際化(Internationalization, i18n)だよね」という流れになって、どのディストロでも多言語が当たり前のように使えるようになってからの動きは知らない。
MkLinux/LinuxPPC/Yellow Dog Linux
これは結構利用者いたんじゃないか?(編集リクエスト募集中!)
Red Flag Linux(紅旗Linux)
中国の国策Linux。ウケる。
Red Star OS
北朝鮮の国策Linux。もっとウケる。
Tizen
これLinuxカーネルだったのか。コケる。
あとがき
これらを知っている程度で年収1000万円になれるわけではないし、なんなら俺はインフラエンジニアではない。
昔ならデキるインフラエンジニアはこういうイメージだった。
- ネットワーク設計
- サーバーを調達するベンダーの選定、CPUの種類や世代による特性を理解したサーバーの選定
- iSCSI/NFSなどのプロトコルに対する知識や設定
- HA構成でのSAN共有ディスクやFibreChannelなどの知識・設定
- NICのチーミング(Bonding)などの知識・設定
- L2/L3におけるCisco/IOSやその代替機の設定(スパニングツリー、vtag等)
- L7におけるF5 BIGIPやその代替機の設定
ラックへのキッティングは職人さんにやってもらった方が綺麗にできるぞ!(その後ネットワーク設計の変化が起きた時に綺麗でいられるかどうかはインフラ担当者が頑張る)
今どきだとこんな感じか?
- AWS/GCPでAutoScalingGroup(ASG12)やKubernetes(k8s)の設定
- リージョンまたぎでの冗長構成の設計
- CDNのベンダーごとの特性の把握
- infrastructureの設定をK8sやdockerに落として、git管理しどこでもすぐ再現できるようにする
クラウドならサーバーラック周りでの知識は不要、オンプレならまだ上のBIGIPのようなスキルがいると思う。まあなんにしても各方面の技術がそれぞれ進化して、昔なら一人で全部みるような人がいたけど、今は大変だよね。今「フルスタックエンジニア」とか言っちゃってる人は「フリーランス養成プログラミング学習塾13」とか「人月ピンハネがモットーの派遣・偽装請負会社」の煽り文句を真に受けちゃって(中身すっからかんで表面だけなぞってて)大体ぺらい、またはイタい、または両方。
んで、ここに挙げたような事は個人的なスキルで、上に立つ人はこの知識を部下に教えながら大きなネットワークを管理し、インフラの冗長構成だけでなく人材のトラックリスク/退職リスクを考慮して育成していかなければならない。そういうのが他人より上手くできる、という人は他人より高い給料を要求していいと思う。
おまけ
商用UNIXも書きました
https://qiita.com/psycho/items/26a2e4eb0f7043d10f18
おまけ2
はてブいったらディストロの略語で盛り上がっててレベルが低すぎてコーヒー吹いた。キミらエンジニアのくせに英語で情報収集しないの?もしかしてはてなやQiitaで真面目に情報収集してんの?日本語でもせめてinfoqくらい見たほうがいいし、linux触ってるならdistrowatchくらいみなよ。サイト名にすらなってるよ。まあゴミみたいな知識でゴミみたいな給料をもらうか、大企業でなんの役にも立たないクソ仕様書かいて外注管理して仕事してる気にでもなってれば(それでも部長になれば1400万とかでるでしょ)?現場でコーディングしてないやつの設計なんてはっきりいってゴミだからな?
-
「誰に責任転嫁すればいいんだ!」の意 ↩
-
仕事でこれをやり始めちゃうとキリがない、キリの境界線が「動作保証対象かどうか」なので仕方ない ↩
-
世界樹の迷宮、懐かしいね ↩
-
https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%81%E3%83%A7%E3%82%A6%E5%80%B6%E6%A5%BD%E9%83%A8#%E4%B8%BB%E3%81%AA%E3%82%AE%E3%83%A3%E3%82%B0 ↩
-
どこの? ↩
-
じゃあ「知っておくべき」に挙げるなよ、と言いたいところだが一位なら仕方ないじゃないか ↩
-
@tuvistavieさんありがとうございます。 ↩
-
当時はkernelパラメータで共有メモリのサイズを変更したり、HDDのsyncタイミングなどを設定するのが当たり前だった。メモリ数GBが普通になってからは各ディストロもデフォルトでそれなりの共有メモリサイズを設定するようになった。 ↩
-
2014年ごろにPMが「ASGってなんですか?ググってもエロサイトしかでなくて」(当時googleで"asg"を検索するとasg.toがトップだった)って言ってて、「コイツPMBOKの本とかはこれみよがしに読んでるけどAutoScalingGroupもasg.toもどっちも知らないのか、そりゃ話が合わないわけだ」と思った。 ↩
-
リンク先の記事の人、返金されて「やったーー!」って言ってますけど、「中級の人にも合わせた講師を選べますよ」って言われてたのに低級講師しか居らず、時間を無駄に浪費させられた上に14万円も返ってきてないんですよ。やっぱり弁護士だと14万円くらい気にならないんですかね。世の中金だ、5兆円欲しい。 ↩