Linux
基礎
- オープンソースの OS
- カーネル
- ディストリビューション
- Linux カーネルを主軸として、各種コマンドラインツール、ライブラリ、ユーザインタフェース、ドキュメントなどを同梱した配布形態
- Red Hat Enterprise Linux
起動シーケンス(over RHEL 7)
電源投入
-
- HW の初期化、ディスクのブートセクタ(MBR)を読み出す
- UEFI では MBR の代わりに GPT(GUID Partition Table) が使用
MBR 内のプログラム起動
- MBR に GRUB が置かれている場合には、そのブートローダーが GRUB を起動
GRUB の起動
カーネルの読み込みと初期化
- GRUB はカーネルイメージ(/boot/vmlinuz-3.10.0-693.el7.x86_64) と初期化用 RAM ファイルシステムイメージ(/boot/initramfs-3.10.0-693.el7.x86_64.img) をディスクから読み込み、メモリに展開
- カーネルにあるポイントに制御を移す
- カーネルは展開後の initramfs イメージから linuxrc というスクリプトを見つけると、nash と呼ばれるインタプリタでそれを実行
- linuxrc には明示的なモジュールの読み込みなどの処理が記述されている
init プログラム(systemd)
- カーネルは、ルートフィアルシステムをマウント後、システムから init プログラムを検索し、見つかったらそれを実行
$ ll /usr/sbin/init lrwxrwxrwx. 1 root root 22 12月 25 07:37 /usr/sbin/init -> ../lib/systemd/systemd
MBR(Master Boot Record)
- 起動デバイスの先頭セクタ
- 通常、OS を起動するプログラムであるブートローダーの一部と、基本パーティションの情報を収めたパーティションテーブルが含まれている
ブートローダ
(ブートセレクタ、ブートマネージャー)
- TTY
端末接続デバイスを表す
ssh 接続した時、/dev/pts/0 が仮想端末として割り振られている
# tty /dev/pts/0
- ssh で接続しているターミナルを標準入力元・標準出力先デバイスとすることでターミナル上に文字の表示をしたり、ターミナルでタイプした入力を受け取るれるようにする
- ゾンビプロセス
- Unixプロセスは終了すると,一旦ゾンビプロセスとなる
- 子プロセスの終了時に、親プロセスがwait()を実行しないと、子プロセスはゾンビプロセスになる。
- そのプロセスの親プロセスが wait() システムコールを呼び出すまで存在しつづける
- 親プロセスが wait() システムコールを呼び出すと、ゾンビプロセスの終了時の終了ステータスが親プロセスに返され,同時にゾンビプロセスも消滅
- 子プロセスの終了ステータスを親プロセスに伝える仕組みとして,ゾンビプロセスが存在する。
- スティッキービット
スティッキービットが設定されたディレクトリでは、書き込み権限があっても、自分以外のユーザが所有するファイルを削除できない
/tmp のパーミッション
# ls -ld /tmp/ drwxrwxrwt. 9 root root 260 4月 24 12:58 /tmp/
- その他のユーザの実行権が
t
となっているがこれがスティッキービット - どのユーザも書き込みが可能となっているが、スティッキービットが設定されていることにより、自分以外のユーザが作成したファイルを削除することはできなくなる
- その他のユーザの実行権が
/etc/resolv.conf
自マシンが利用するDNSサーバを指定する
nameserver 192.168.0.1
- 必須
- DNS サーバの IP アドレス
- 3 つ指定可能
domain example.com.
- 上記指定で、www にアクセスしようとすると、www.example.com で名前解決する
search
- domain を複数指定できるようにしたもの
- search test.example.com. example.com.
- www にアクセスしようとするとまず、www.test.example.com で名前解決を行い、解決できなければ,www.example.com でひく
/etc/resolv.conf
timeout:1 attempts:1
timeout:1
- DNS 問い合わせの応答待ち時間が 1 秒だった場合にタイムアウトとなり次の問い合わせに移る
attempts:1
- DNS 問い合わせが 1 回 NG だったら次の DNS サーバに問い合わせる