##2.1 ハードディスクのレイアウト設計
パーテーションとはハードディスクやSSDの役割分担をすること。
なぜパーテーションが大事なのか
1.一個死んでも一個生き残る
2.分割しなかったら、全てを再インストールしなければならない。その分の設定もしなきゃいけない。
3.キャッシュの逃し場所を使うと、早くなる。
ぜんぶぐっちゃってなっている戸棚よりもみつけるのが楽なはず。
そもそも速攻使う容量は、メモリーを使うが、メモリーはちょっとしかないので
捌け口として、ハードディスクがいる。
*最低限必要なのは
①ルートファイルシステム
PCに絶対必要なファイル
######②スワップ領域(物理メモリの1から2倍)
メモリーが足りなくなった時の仮置き場
*独立して作っといた方がいい
/home それぞれの一般ユーザーが使うファイルが入ってる。私物が混じらんように独立させよう
/var ログとかメールとか更新頻度が高いものを入れておこう
/usr(eないよ!!)プログラムとかライブラリとか
#####/boot 起動するときに使う(100MB)
これは分けといた方がいいよ。(詳しく)
1./home ユーザーが実際使うところ。こんなところにルートファイルとかおいて消されたら最悪
2.varログとかメールとか更新頻度が高いもの。varだから、変数みたいに、変わるという意味なのかな?
ログとかたまりきっちゃって、ルートファイルシステムに放置してると、容量くっちゃうよ。
→使うところは身軽にしなきゃね。
3.user
プログラム、ライブラリ、ドキュメントが入っている。
ということは、、/userをまるまる読み取り専用にして、セキュリティをたかめる。
g.bootやefiなどの起動時に使うシステム
言わずもがな
5.スワップ領域 大体メモリの1から2倍くらいかな
一部をメモリーが足りない時に仮置き場として使う。
##2.1 パーティションのレイアウト設計
例)20GBのHDと512MBのメモリー
スワップ 512MB*メモリーと同じくらいの容量
/boot 100MB
/usr 10GB
/var 10GB
/home 180GB
/ 15GB
*そもそもわかりずらい物理的、論理的、仮想敵の意味
ざっくり、、物理的→見える 論理的→見えないけど計算上 仮想的に=目に見えない(実態のない)
1つのハードディスクがあるとする。ハードディスクを2分割したい。
アナログ人間の人はCDをペキって2つに割ろうとします。。。。。。
いやいや、そんなことしなくても、パーテーションを設定すればハードディスクを2分割出来ます。
人間様からみたら、ハードディスクは1個だけど、コンピューター的には2個あるよって認識してくれ
たの。コンピューターが認識している、デバイスの数の単位を2VGって呼ぶことができますなの。
コンピューター的に2個、人間様から見たら一個。これが、物理的(ナイフでぶったぎっる)ではなく論理的(計算上)に分割されたってこと。
例)100GBのハードディスクが50GB❌2のハードディスクに分身しました!
→こんな論理的な管理の仕方はLVMとよばれる
##2.2ブートローダーとインストール
ブートローダーは、OSを起こして、PCを起動する準備をする役割!
スイッチオン→電気が回る→まずBIOS(UEFI)が起こされる/BIOSはROMチップ常にある→bootが起こされる→bootがOSを叩き起こしてログインまでの起動の準備を行う
ブートローダーも色々ある
①GRUB (GRand Unified Bootloader)
インストール方法:grub-install /dev/sdaコマンド
設定ファイル:ここに設定について書いてある。起動したときどんな画像使うの。。?とか
glub legasy*boot/grub/menu.lst(古い)
grub2(新しい)*/boot/grub/grub.cfg
🌟GRUBの一種 でも上流のメンテナンスがあるから、残念ながらサポート打ち切られてる
だから最近はgrub2が使われてるよ
grub2の設定場所
boot起動時のオプション指定(OSを起動する前に設定することができる)
ブートオプション一覧
*起動+E
*root=デバイス ルートパーテーションとしてマウントするデバイス
*nousb USBデバイスを使用しない
*single シングルユーザーモードで起動
*1~5好きなランレベルで
##2.3共有ライブラリ管理
ライブラリって何?
よく使う機能をまとめて置いてある機能
実物は、ファイルがあって、そこに関数が色々まとまって置いてある。
本をイメージすると良い。覚えるのが難しーいマニュアルが書かれているから、必要なときに取り出す。
静的ライブラリはコンパイル(機械の言葉に変えて、新しいファイルを作る)
ライブラリの関数を呼び出して、機械語で関数の実行するところでコンパイルしたファイルに書く。
ライブラリを図書館で例える。英訳で発表する資料を作ってくれ。
そしたら、発表する前に、暗記してしまおう。
動的ファイルは、逆に実行する度に、関数を呼び出そう。
だから、実行ファイルには関数の中身は書いてない。呼び出してねー。って書いてあるだけ。
発表の時わざわざ暗記するのは嫌だから、本を持ってきて、本の内容をまる読みするイメージ。
よく使う言葉として
リンク
ライブラリの関数を呼び出して使用すること
静的リンク
コンパイル時埋め込む
動的リンク
実行時に呼び出す
共有ライブラリ
ダイナミックリンクにて呼び出されるライブラリ
置き場 lib/または/usr/lib
ファイル名 libreadline.so.5
ライブラリを呼び出すときの流れ
ライブラリを呼び出す流れ
実行ファイルが欲しているライブラリファイルを調べるには
ldd /bin/catで調べられる
登場人物
1.lb.so = リンカ実行の舵取り
2./etc/ld.so.cache = 共有ライブラリを探す係
*バイナリデータです。つまり機械語書かれてるのでで俺らは何書いてるかわからん。
*ldconfig -pコマンドで、人間がキャッシュを読むことができる。
3./usr/lib /lib ライブラリ置き場
4.LD_LIBRARY_PATH 他に調べてほしいディレクトリパスを格納しておく変数
5./etc/ld.so.conf 他に調べてほしいディレクトリパスが記入されたファイル
*4と5は閲覧する優先順位が4の方が早い
流れ
①実行ファイル実行
②lb.soが/etc/ld.so.cacheに共有ライブラリを探させる
③LD_LIBRARY_PATH、/etc/ld.so.conf,そのあと/usr/lib /libに書いてあるライブラリを順番に呼び出す
####2.4 Debianパッケージの管理
実行プログラム
設定ファイル
ドキュメント(写真や図、文章をまとめた資料)
この3つを一つにまとめたものをパッケージと言います
管理する形式はディストリビューションごとに異なり
*Debian形式
*RPM形式がある
この形式があるのだが
パッケージ管理システムがあると何のメリットがあるの?
*インストールするときに手伝いをしてくれるお節介である。
例)AパッケージがないとBパッケージが使えないよ(依存関係)
AパッケージがあるとBパッケージが使えないよ(競合関係)っていうの教えてくれる
ちなみにダウンロードとインストールの違いは?
ダウンロードは宅配便で、パッケージを注文する
インストールはそのパッケージを組み立て実際に使えるようにしてくれること
*ウィルスソフトとか
あとインストールするのに大事なこと
動作環境に依存する
*ディストリビューション
*バージョン
*CPU
に対応したパッケージをダウンロードすること!
Debian形式
dpkgコマンド
dpkg -E 同バージョンがあればインストールしない
dpkg -G 新バージョンがあればインストールしない
dpkg -R 再帰的にインストール
dpkg -i パッケージをインストールする
dpkg -r(remove) パッケージを設定ファイル残してアンインストール
dpkg -P (purge 一掃するっていうやばい意味)設定ファイルを含めアンインストール
dpkg -i インストール済のパッケージを一覧表示
APT形式
Debianとだいぶやり方違うわ
apt-getコマンド(インストール)
①etc/apt/sources.listにパッケージの取得先のURLを記入する。
②apt-get installでインストール
③apt-get updateでアップデート
④apt-get remove でアンインストール
apt-catchコマンド(管理)
apt-catch searchで、今あるパッケージを調べられる
apt(両方)
apt update
apt -y upgrade
apt install
RPM形式
rpm -i インストール
rpm -U アップグレード
rpm -F アップグレード
rpm -e パッケージのアンインストール
*RPM方式でインストールする。rpm -ivhだと経過まで表美してくれる
rpm -q パッケージ情報の照会
rpm -qR パッケージの依存関係
rpm2cpioコマンド
パッケージをインストールしないで中身を見る
YUM パッケージ管理システムの一つ
yum check-updateコマンドで、インストール対象のパッケージリストの表示
主なコマンド
yum install
yum update
yum remove
yum info パッケージ情報を表示
yum list リポジトリにある全てのパッケージ情報
/etc/yum.conf
/etc/yum.repos.d
rmp形式のaptみたいなやつ
etc/yum.confと/etc/yum.repos.dディレクトリ
dnfコマンド
opensuse
cent OSみたいなもので、カーネルさんだけでは役目がたりないので、追加で入れソフト
zypperコマンド
opensuseで使うインストールとかのコマンド
例)zipper in とか
ざー
####2.6 仮想化のゲストOSとしてのlinux
クラウドサービスはざっくりいうと、もう一個パソコンを作ってしまうこと
クラウドサービスの提供者が物理サーバーを所持しているので
ネットワーク上で借りるようなイメージ
IaaS<PaaS<SaaSの順番で有能になっていく
クラウド上と今使っているPCの
*ホスト名
*SSH
*一般ユーザー
*インストールのパッケージ
この辺は異なった値にしなければならないが、初回時被ってしまう。
cloud-initにより、初期設定する
インスタンス作成後の初回起動時に1回だけ実行する