(同じ利用者による、間の23版が非表示)
30行目: 30行目:
SO本体を人に見立てて起動プログラムのことを「靴の準備」とか表現してるあたりが秀逸。
SO本体を人に見立てて起動プログラムのことを「靴の準備」とか表現してるあたりが秀逸。


===ファイルシステムと種類===
===ストレージ新規追加===
$ ls -l /dev/sda
# ストレージをマザーボードに接続
brw-rw----. 1 root disk 8, 0  9月 14 19:52 /dev/sda
# <code>lsblk</code>。接続を確認
$ ls -l /dev/null
# パーティションの設計
crw-rw-rw-. 1 root root 1, 3  9月 14 19:52 /dev/null
# <code>fdisk</code>。パーティションを作成
$ 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メモリなど、ある程度まとまったデータ量(ブロック)を単位として読み書きする<u>ストレージ装置</u>が該当し、装置内にファイルシステムを形成することができる。入出力時にはメモリ上に設けられたバッファ領域を中継する。<br>
===パーテーション作り===
* '''キャラクタデバイス'''とは、文字(キャラクタ)あるいは任意のバイト単位のデータを逐次的に入出力する装置。キーボードやマウス、シリアルポート、オーディオといった<u>時系列でデータを扱う装置</u>が該当する。<br>
パーティションを分けることで、パーティション単位の効率的なバックアップや、ユーザ単位のディスク制限、ファイルシステム単位での障害修復が可能になる。ただ最近は昔と比べてストレージの質も高くクラウドにバックアップしたりするので出番は少ないかも。[[Linuxコマンド#パーティション管理 | パーティション管理コマンド]] 参照。
* '''パイプファイル'''は、FIFOという名前の通り「書き込んだデータをその順に読み込むことができる」特殊なファイル。シェルで command1 | command2 のようなコマンドでの実行を「パイプライン」と呼ぶように、この実行方法とも深い縁がある。「名前付き」のパイプファイルとして作成することもできる。


===特殊パーミッション===
ちなみに日本語では「パーテーション」とか「パーティション」とか言葉に揺れがあってダメ。
;SUID
:ファイル所有者としてファイルが実行される。<code>rw<u>s</u> r-x r-x</code>
;SGID
:ファイル所有グループとしてファイルが実行される。<code>rwx rw<u>s</u> r-x</code>
;StickyBit
:ファイル所有者のみファイル名の変更と削除ができる。<code>rwx rwx rw<u>t</u></code>
;StickyBit-T
:実行権限が与えられていないファイルやディレクトリにStickyBitを設定すると「T」がつく。<code>drwx-wx--<u>T</u></code>
 
===パーテーション作り===
パーティションを分けることで、パーティション単位の効率的なバックアップや、ユーザ単位のディスク制限、ファイルシステム単位での障害修復が可能になる。ただ最近は昔と比べてストレージの質も高くクラウドにバックアップしたりするので出番は少ないかも。


{| class="wikitable" summary="パーティショニング"
{| class="wikitable" summary="パーティショニング"
|-
|-
!分割推奨パーティション
!パーテーション例
!説明
!説明
|-
|-
|/boot || ブート用
|/boot || 靴。ブートプログラム
|-
|-
|/home || 容量が大きくなりやすく、バックアップ頻度も高い
|/home || 自宅。容量が大きくなりやすく、バックアップ頻度も高い
|-
|-
|/var || 急激なファイルサイズ増大によるディスクフルなどの危険性を回避
|/var || 柔軟。急激なファイルサイズ増大によるディスクフルなどの危険性を回避
|-
|-
|/tmp || 一般ユーザの無茶な利用などによる危険性を考慮
|/tmp || 一時しのぎ。一般ユーザの無茶な利用などによる危険性を考慮
|-
|-
|/usr || 容量が大きくなる可能性が高い
|/usr || 利用者。容量が大きくなる可能性が高い
|-
|-
|/opt || 容量が大きなアプリを追加で入れる可能性がある場合は独立パーティションに
|/opt || オプション。容量が大きなアプリを追加で入れる可能性がある場合は独立パーティションに
|}
|}


* [[Linuxコマンド#パーティション管理 | パーティション管理コマンド]] 参照。
===ファイルの種類===
$ 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メモリなど、ある程度まとまったデータ量(ブロック)を単位として読み書きする<u>ストレージ装置</u>が該当し、装置内にファイルシステムを形成することができる。入出力時にはメモリ上に設けられたバッファ領域を中継する。<br>
# ストレージをマザーボードに接続
* '''キャラクタデバイス'''とは、文字(キャラクタ)あるいは任意のバイト単位のデータを逐次的に入出力する装置。キーボードやマウス、シリアルポート、オーディオといった<u>時系列でデータを扱う装置</u>が該当する。<br>
# <code>lsblk</code>。接続を確認
* '''パイプファイル'''は、FIFOという名前の通り「書き込んだデータをその順に読み込むことができる」特殊なファイル。シェルで command1 | command2 のようなコマンドでの実行を「パイプライン」と呼ぶように、この実行方法とも深い縁がある。「名前付き」のパイプファイルとして作成することもできる。
# パーティションの設計
* '''SUID''':ファイル所有者としてファイルが実行される。<code>rw<u>s</u> r-x r-x</code>
# <code>fdisk</code>。パーティションを作成
* '''SGID''':ファイル所有グループとしてファイルが実行される。<code>rwx rw<u>s</u> r-x</code>
# 各パーティションにファイルシステムを作成
* '''StickyBit''':ファイル所有者のみファイル名の変更と削除ができる。<code>rwx rwx rw<u>t</u></code>
# 作成したファイルシステムをツリーにマウント
* '''StickyBit-T''':実行権限が与えられていないファイルやディレクトリにStickyBitを設定すると「T」がつく。<code>drwx-wx--<u>T</u></code>


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


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


ld.so = [https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF Linkage eDitor] Shared Object,
* ld.so = [https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF Linkage eDitor] Shared Object,

2025年3月1日 (土) 08:24時点における最新版

Unix/Linux

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

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

把握する城

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

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

港マシン

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

領内マシン

  1. pi:Debian(サーバbackup用)
  2. y-Pro:Darwin(自宅管制室、VM実験ラボ)
  3. y-Air:Darwin(どこでも開発/管制室)
  4. y-Kali:Kali(港マシン耐久テスト用)

マシン内では沢山のプロセスやサービスたちが稼働しているので、自分の「城」の事をしっかりと把握し適切に管理することが大切。それらに加え追加で導入できるモジュール群(ソフトウェアツール群)もたくさん待機しているので導入モジュール(ソフト)の取捨選択も重要。

ちなみに、本番環境で root 使って学習とか危なすぎるので、システムの挙動確認やテストは学習用港マシンか「VirtualBox」でやる。現に、y-COMEマシンで「dhclient」あたりのテストやってたらSSH動かなくなったし。

ざっくり仕組み

マシンの起動

マザボ流電 → 付属BIOS流電 → メモリ/ストレージ流電 → GRUBなどブートローダ(靴の準備)メモリへ → OSデータをメモリへ → OS/マシンを起動

SO本体を人に見立てて起動プログラムのことを「靴の準備」とか表現してるあたりが秀逸。

ストレージ新規追加

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

パーテーション作り

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

ちなみに日本語では「パーテーション」とか「パーティション」とか言葉に揺れがあってダメ。

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

ファイルの種類

$ 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

Unixコマンド

MacOSに収録されている Unixコマンドは100(/bin, /sbin)+1200(/usr/bin, usr/sbin)程度なので気が向いた時に「Unixコマンド」ページにまとめとく。

Unix略語

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