Unix/Linux

Unix/Linux とは天下の「ベル研」エリート集団によって1969年から開発され続け、現代まで脈々と受け継がれてきた伝説的傑作OS/カーネル。仲良くなると人類最高部類のレバレッジ「CPU」を使って自分の能力を爆上げできる。

Unix直系のBSDはUnix伝説ハッカーの ビル・ジョイ によって、UnixクローンのLinuxはCPU溺愛ハッカー リーナス によって開発された。もともと「ハッカー」は「ずば抜けて優れた技術者」を意味し、「ハッキング」もソフトウェアやハードウェアを隅々まで知り尽くした技術者が行う洗練された行為を意味する。

把握する城

さくらで利用可能なVPSプラン

サーバとスマホ両分野をカバーでき将来も明るいLinux、その中でも文明の上流にいて世界的シェアも最高の「Debian系」を把握運用すれば学習コスパを最大化できる。Linux御三家を参照。

港マシン

  1. minato/石狩:Debian(サーバ用)

領内マシン

  1. y-Air:Darwin(どこでも管制室)
  2. y-Pro:Darwin(自宅管制室、VM実験ラボ)
  3. y-Kali:Debian/Kali(港マシン耐久テスト用)
  4. y-Pixel:Android
  5. pi/自宅:Debian(バックアップ用)

マシン内では沢山のプロセスやサービスたちが稼働しているので、自分の「城」の事をしっかりと把握し適切に管理することが大切。それらに加え追加で導入できるモジュール群(ソフトウェアツール群)もたくさん待機しているので導入モジュール(ソフト)の取捨選択も重要。
ちなみに、本番環境で root 使って学習とか危なすぎるので、システムの挙動確認やテストは学習用港マシンか「VirtualBox」でやる。現に、y-COMEマシンで「dhclient」あたりのテストやってたらSSH動かなくなったし。

マシン起動の仕組み

マザボ流電→マザボ付属BIOS流電→ストレージ流電→ストレージ内のブートローダ(靴を用意する人)プログラム起動→ストレージ内のOSデータ本体を物理メモリにロード

ファイルの種類

$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0  9月 14 19:52 /dev/sda
$ ls -l /dev/null
crw-rw-rw-. 1 root root 1, 3  9月 14 19:52 /dev/null
$ ls -l /dev/pts/0
crw--w----. 1 root tty 136, 0  9月 15 01:39 /dev/pts/0
$ ls -l /run/systemd/initctl/fifo 
prw-------. 1 root root 0  9月 14 19:52 /run/systemd/initctl/fifo
  • ブロックデバイスとは、典型的にはハードディスクやSSD、CDやDVDなどの光学ドライブ、USBメモリなど、ある程度まとまったデータ量(ブロック)を単位として読み書きするストレージ装置が該当し、装置内にファイルシステムを形成することができる。入出力時にはメモリ上に設けられたバッファ領域を中継する。
  • キャラクタデバイスとは、文字(キャラクタ)あるいは任意のバイト単位のデータを逐次的に入出力する装置。キーボードやマウス、シリアルポート、オーディオといった時系列でデータを扱う装置が該当する。
  • パイプファイルは、FIFOという名前の通り「書き込んだデータをその順に読み込むことができる」特殊なファイル。シェルで command1 | command2 のようなコマンドでの実行を「パイプライン」と呼ぶように、この実行方法とも深い縁がある。「名前付き」のパイプファイルとして作成することもできる。

特殊パーミッション

SUID
ファイル所有者としてファイルが実行される。rws r-x r-x
SGID
ファイル所有グループとしてファイルが実行される。rwx rws r-x
StickyBit
ファイル所有者のみファイル名の変更と削除ができる。rwx rwx rwt
StickyBit-T
実行権限が与えられていないファイルやディレクトリにStickyBitを設定すると「T」がつく。drwx-wx--T

パーティショニング

パーティションを分けることで、パーティション単位の効率的なバックアップや、ユーザ単位のディスク制限、ファイルシステム単位での障害修復が可能になる。ただ最近は昔と比べてストレージの質も高くクラウドにバックアップしたりするので出番は少ないかも。

分割推奨パーティション 説明
/boot ブート用
/home 容量が大きくなりやすく、バックアップ頻度も高い
/var 急激なファイルサイズ増大によるディスクフルなどの危険性を回避
/tmp 一般ユーザの無茶な利用などによる危険性を考慮
/usr 容量が大きくなる可能性が高い
/opt 容量が大きなアプリを追加で入れる可能性がある場合は独立パーティションに

パーティション管理コマンド 参照。

ストレージ新規追加の手順

  1. ストレージをマザーボードに接続
  2. lsblk。接続を確認
  3. パーティションの設計
  4. fdisk。パーティションを作成
  5. 各パーティションにファイルシステムを作成
  6. 作成したファイルシステムをツリーにマウント

Unixのディレクトリ構造とコマンド

MacOSのディレクトリ構造も参考までにざっと把握しておく。あと、MacOSに収録されている Unixコマンドは100(/bin, /sbin)+1200(/usr/bin, usr/sbin)程度なので気が向いた時に「Unixコマンド」ページにまとめとく。

Unix略語

昔はマシンリソースが非常に貧弱で文字1文字を表示させるためのリソースさえも節約の対象とされていた。ゆえにUnix文化ではコマンド名などの命名にとても短い略語が使われていた。

ld.so = Linkage eDitor Shared Object,