やりたい事とか ・RAID ・LPIC-201 ・自転車を買う(買っちゃった~) ・サイト作成

2009年8月13日木曜日

LPIC2に向けて。ファイルパス系

・設定ファイル名はフルパスで覚えること。(ファイル名のみ答えればいいという問題はほとんどありませんでした)



では、それを参考に、だらだら長文の始まりです。




cat /proc/version
 ・カーネルバージョン確認

head -4 /usr/src/linux-`uname -r`/Makefile
 ・カーネルバージョン確認
 ・/usr/src/kernel/`uname -r`/Makefile
 ・/usr/src/linux-headers-`uname -r`/Makefile

/boot/vmlinuz
 ・カーネルイメージ

/lib/modules/`uname -r`/
 ・モジュールのあるディレクトリ

/proc/modules
 ・ロードされているモジュール

/lib/modules/`uname -r`/modules.dep
 ・モジュールの依存関係ファイル


/usr/src/linux-`uname -r`/System.map
 ・?

/etc/modprobe.conf
 ・前処理・後処理が必要な場合、ロードする際にパラメータを指定する場合の設定ファイル
 ・alias…別名指定
 ・options…オプションを指定
 ・install…指定されたシェルコマンドを実行
 ・remove…modprobe -r された時の処理

/usr/src/linux-`uname -r`/arch
 ・アーキテクチャに依存したコード

/usr/src/linux-`uname -r`/configs
 ・目的別の.config

/usr/src/linux-`uname -r`/cyypto
 ・暗号処理関数

/usr/src/linux-`uname -r`/drivers
 ・各種ドライバ

/usr/src/linux-`uname -r`/fs
 ・仮想ファイルシステムと各種ファイルシステム

/usr/src/linux-`uname -r`/include
 ・C言語のインクルードファイル

/usr/src/linux-`uname -r`/init
 ・初期化コード

/usr/src/linux-`uname -r`/ipc
 ・SystemV互換性プロセス間通信

/usr/src/linux-`uname -r`/kernel
 ・主要なカーネル機能

/usr/src/linux-`uname -r`/lib
 ・各種モジュールファイル

/usr/src/linux-`uname -r`/mm
 ・メモリ管理関連

/usr/src/linux-`uname -r`/net
 ・各種ネットワークプロトコル関連

/usr/src/linux-`uname -r`/scripts
 ・カーネル作成支援スクリプト

/usr/src/linux-`uname -r`/Documentation
 ・各種ドキュメント

/usr/src/linux-`unmae -r`/.config
 ・カーネルコンフィギュレーションファイル

/usr/src/linux-`uname -r`/arch/アーキテクチャ/boot/
 ・作成されたカーネルのある場所

/boot/grub/menu.lst
 ・ブートローダ。
 ・timeout…メニューを表示している時間
 ・default…デフォルトで起動するエントリの番号。
 ・splashimage…メニュー表示時の背景画像
 ・title…メニューに表示されるタイトル名
 ・root…カーネル、OSが格納されているパーティション
 ・kernel…カーネルとカーネルオプション
 ・initrd…初期RAMディスクファイルを作成
 ・makeactive…ルートパーティションのアクティブ化。?
 ・chainloader…指定されたセクタの読み込みと実行。
 ・hiddenmenu…起動時の選択メニューを表示しない

/proc/sys/net/ipv4/ip_forward
 ・ネットワークインターフェイス間でのパケット転送の無視するかどうか

/proc/sys/kernel/modprobe
 ・modprobeのコマンド

/etc/sysctl.conf
 ・再起動後も有効にしておきたいカーネルパラメータの設定

/etc/rc.local
 ・システム起動時の最後に読まれるファイル

/sbin/init
 ・initプログラム

/bin/dmesg
 ・メッセージ

/etc/inittab
 ・boot…システム起動時に実行され、async
 ・bootwait…システム起動時に実行されsync
 ・ctrlaltdel…同時押しの処理
 ・initdefault…デフォルトのランレベルを指定
 ・respawn…指定したプロセスが終了すれば再起動させる
 ・sysinit…システム起動時にboot*より早く実行される
 ・once…指定したランレベルになった時一度だけ実行され、async。
 ・wait…指定したランレベルになった時一度だけ実行され、sync。

LPIC2に向けて。コマンド系

・主要コマンドのオプションは全て覚えること。(これは使わないだろうというようなオプションでも平気で出題されます)
・現在使われていない技術や新しい技術が導入された背景などを調べてみること。

では、それを参考に、だらだら長文の始まりです。




uname…システム情報を表示
 →-m(--machine)…ハードウェアタイプを表示
 →-n(--nodename)…ネットワークノードのホスト名を表示。hostnameコマンドと同じ。
 →-r(--release)…リリースバージョンを表示
 →-s(--sysname)…OS名称を表示。unameと素で打ったときと同じ
 →-v…カーネルのコンパイル時刻を表示。manpageにはOSバージョンって書いてあるけど何かの間違いだな。
 →-a(--all)…すべてを表示する


lsmod…ロードされているモジュールを表示
 →/proc/modulesを整形して表示するだけ。
 →数字は参照回数。その後のはモジュールを利用しているモジュール名


modinfo…モジュールの情報を表示
 →-F(filed)…フィールド値を1行づつ表示する。auther・description・license・param・depends・alias
 →-0(--null)…数字の0ね。改行をヌル文字を表示
 →-a…作者表示
 →-d…説明表示
 →-l…ライセンス表示
 →-n…ファイル名を表示
 →-p…?


insmod…カーネルにモジュールを登録する


rmmod…カーネルからモジュールを削除する
 →-f(--force)…強制削除(使用禁止)
 →-w(--wait)…使用中のモジュールを隔離し、使用されなくなるまで待つ
 →-s(--syslog)…エラーを標準出力ではなくsyslogに送る


modprobe・・・モジュール管理を行う
 →-C(--config)…/etc/modprobe.confや/etc/modeprobe.d/を無視する
 →-c(--showconfig)…設定ファイルの内容を表示し、終了する
 →-n(--dry-run)…モジュールの登録・削除以外の処理を行う。なにも操作しない。
 →-i(--ignore-install・--ignore-remove)…設定ファイルに書かれたinstall・removeを無視する
 →-q(--quiet)…存在しないモジュールが指定されても、エラーメッセージを表示しない
 →-f(--force)…強制ってことで良いと思う。
 →--force-vermagic…"version magic" が一致しないと文句を言う場合、"version magic" を無視する
 →--force-modversion…カーネルがインタフェースのバージョンの一致しないものがあると文句を言う場合、無視する
 →-l(list)…指定したワイルドカードに一致するモジュールの一覧を表示
 →-a(--all)…すべてのモジュールをロード
 →-t(--type)…-tで指定したディレクトリ名を含むモジュールだけを表示
 →-s(--syslog)…すべてのエラーメッセージをsyslogに送る
 →--set-version…カーネルバージョンを指定
 →--show-depends…依存関係を列挙する
 →-o(--name)…モジュール名の変更


depmod…modules.depとマップファイルを作成する
 →-b(--basedir)…モジュールが、/lib/modules以外の場所にあるとき、その場所を指定する。ただ、/lib/modulesの下にいずれ持ってこないとめんめ。
 →-e(--errsyms)…各モジュールの解決されていないシンボルを全て表示する
 →-f(--filesystems)…別のカーネルのmodules.depを作成したい場合、-fオプションでSystem.mapで指定する
 →-n(--dry-run)…modules.depに書き出さず、標準出力に出す。
 →-A(--quick)…処理を行う前に、モジュールが新しければ何もしない。更新されていれば処理を行う



kmod…必要なモジュールを自動でロードするデーモン



patch…オリジナルファイルに差分ファイルを適用する
 →-b(--backup)…バックアップファイルを作成
 →--backup-if-mismatch…差分ファイルがぴったり一致しない場合でバックアップ指定がない場合、バックアップファイルを作成する
 →--no-backup-if-mismatch…差分ファイルがぴったり一致しない場合でバックアップ指定がない場合、バックアップを作成しない
 →-B XX(--prefix=XX)…ファイル名にXXというプレフィックスがつけられる
 →-c(--context)…パッチファイルを通常のコンテキストdiffとして解釈する
 →-d dir(--directory=dir)…まずディレクトリに移動
 →-D define(--ifdef=define)…よく分からん
 →-dry-run…パッチを適用した結果を表示するが、実際には適用しない
 →-e(-ed)…edスクリプトとして解釈する
 →-E(--remove--empty-files)…パッチを当てた後の空ファイルを削除する
 →-f(--force)…強制適用
 →-F num(--fuzz=num)…曖昧度を指定する。defは2。
 →-i patchfile(--input patchfile)…パッチファイルを指定
 →-l(--ignore-whitespase)…空白関連の不一致をゆるく見る。行末空白も。その他の文字は完璧でないといけない。
 →-n(--normal)…パッチファイルをノーマルdiffとして解釈する
 →-N(--forwaod)…反転していると思われるパッチや、既に適用済みと思われるパッチを無視する
 →-o outfile(--outfile outfile)…ファイルにパッチを適用して置き換えるのではなく、出力をoutfileに送る
 →-pnum(--strip=num)…num分だけ、パッチファイルの中にあるパスを取り除いていく。
  ・-p0の場合:/usr/src/linux-2.6/hoge.c → /usr/src/linux-2.6/hoge.c
  ・-p1の場合:/usr/src/linux-2.6/hoge.c → usr/src/linux-2.6/hoge.c
  ・-p3の場合:/usr/src/linux-2.6/hoge.c → linux-2.6/hoge.c
  ・指定なしの場合:/usr/src/linux-2.6/hoge.c → hoge.c
 →-r rejectfile(--reject-file rejectfile)…却下された塊を、.rejではなく、指定したrejecfileに書き込む
 →-R(--reverse)…パッチファイルが、新旧が反転しているとみなす
 →-s(--silent|--quiet)…静かに動作する
 →-t…-fとは異なる無視をする
 →-T(--set-time)…パッチ適用後のファイル変更時刻とアクセス時刻を、コンテキストdiffヘッダのタイムスタンプに設定する
 →-V method(--version-control=method)…バックアップファイルを作成するのに、methodを使用する
  ・有効なmethod一覧
  ・exiting or nil…番号つきのバックアップがある場合、番号つきを。ない場合は簡易バックアップ
  ・numbered or t…バックアップに番号をつける。
  ・sample or never…簡易バックアップを作成する
 →--verbose…詳細出力
 →等。心が折れる。




make config…CUIで対話的に設定していく



make menuconfig…CUI上でメニュー形式でオプション項目を選択して設定できる



make xconfig…X上で設定できる



make gconfig…GNOME上で設定できる。



make modules_install…カーネルモジュールを適切なディレクトリにインストールする



make
 ・clean…不要なファイルを削除する
 ・mrproper….configやバックアップアップも含めて削除する
 ・distclean…mrproper + patchが作成したファイルも削除する
 ・defconfig….configを作成する
 ・all…すべてのビルドを実施する
 ・modules…動的なモジュールをビルドする
 ・rpm…カーネルビルド後にrpmパッケージを作成する
 ・rpm-pkg…ソースRPMパッケージを作成する
 ・bind-rpm…ビルド済みカーネルとモジュールのRPMを作成する
 ・deb-rpm…ビルド済みカーネルとモジュールのDebiaパッケージを作成する



sysctl…カーネルパラメータの変更・表示
 ・-a…利用できる値を表示(もう利用すんなだって。)
 ・-n…値だけ表示
 ・-N…名前だけ表示
 ・-e…不明なキーについてエラーを出さない
 ・-q…値のセットを標準出力を表示しない
 ・-w…設定を変更
 ・-p…指定したファイルから読み込んだ内容を、sysctl設定にロード



mkinitrd…ファイルシステムを圧縮した初期RAMディスク
 ・mkinitrd RAMディスクイメージファイル カーネルバージョン



mkinitramfs…cpioをアーカイブを圧縮した初期RAMディスク
 ・mkinitramfs -o RAMディスクイメージファイル カーネルバージョン


chkconfig
 ・--add…サービスの追加
 ・--level レベル サービス名 [on|off]…ランレベルを指定する
 ・--list…表示
 ・--del…サービスから削除



ntsysv…対話的にサービス起動設定をする



grub-install…ブートローダにGRUBをインストールする



sync…メモリバッファとディスクの同期



swapon…スワップを有効にする
 ・-s…現在のスワップを表示



mke2fs…ファイルシステム作成
 ・-b…バイト単位でサイズ指定
 ・-c…不良ブロックの調査
 ・-i…iノード数のバイト数を指定
 ・-j…ext3ファイルシステムを作成
 ・-m 領域(%)…rootユーザの領域を%で指定。



mkfs…ファイルシステム作成
 ・-t…ファイルシステムタイプ指定
 ・-c…不良ブロックをチェック



mkisofs…CD/DVDへ書き込みするファイルの作成
 ・-o…ISO9660/UDFイメージファイルを指定
 ・-J…Jolietフォーマット指定(MS系)
 ・-R-r…Rockidgeフォーマット
 ・-T…TRANS.TBLファイルを作成
 ・-udf…UDFイメージを作成する




dumpe2fs…ext2/ext3ファイルシステムの情報をダンプする
 ・-b…不良ブロックとして扱われるブロックを表示する
 ・-h…スーパブロックの情報だけを表示。
 


fsck…ファイルシステムのチェック
 ・-r…動作を逐次的(次々に)する
 ・-t…ファイルシステムを指定する
 ・-A…/etc/fstabに列記されているファイルシステムをチェックする
 ・-N…実際には処理せず、何が行われたかだけ表示する
 ・-R…-Aを指定しているときに、rootパーティションをチェックしない用にする。
 ・-T…起動時にタイトルを表示する
 ・-a…質問なしで自動的にファイルシステムを修復する
 ・-n…問題点を修復せず、問題点を書き出す。
 ・-r…対話的にファイルシステムを修復する
 ・

2009年8月12日水曜日

復習:覚えてなかったところを重点的に

swapの内容を確認する
 ・swapon -s
 ・cat /proc/swaps

次回起動時にファイルシステムチェックを行う
 ・shutdown -F

不良ブロックを検出
 ・badblocks

ログイン中のユーザにメッセージを表示するには
 ・wall ""
 ・shudown -k now ""

gunzipはパイプ不要
gzipはパイプが必要

iSTADYの復習

RIADの状態を表示する
 ・cat /proc/mdstat


予約ブロックの確認方法(あってるかどうかは不明)
 ・tune2fs -l /dev/hda1 | grep "Reserved block count"
 ・dumpe2fs /dev/hda1 | grep "Reserved block count"
 ・mke2fs -n /dev/hda1


再帰的な問い合わせを受け付けるホストを指定するオプション
 ・allow-recursion


現在マウントされているファイルシステムとマウントオプションを知る
 ・/etc/mtab
 ・/proc/mounts


カーネルのバージョンを調べるには
 ・/proc/version
 

初期RAMディスクを作成
 ・mkinitrd
 ・mkinitramfs

ストレージ管理コマンド

pvcreate…デバイスを物理ボリュームとして初期化する
pvdisplay…物理ボリュームの詳細な情報表示
pvmove…物理ボリュームに移動させることができる
pvremove…物理ボリュームを削除させることができる
pvscan…物理ボリュームの状態を簡潔に表示
pvs…物理ボリューム情報を出力する

vgcreate…ボリュームグループを作成する
 ・書式:vgcreate ボリュームグループ名 物理デバイスボリューム
 ・オプション:-s…エクステントのサイズを指定
vgchange…ボリュームグループの属性変更
vgdisplay…ボリュームグループの詳細な情報表示
vgextend…ボリュームグループを拡張
vgreduse…ボリュームグループ縮小
vgremove…ボリュームグループ削除
vgimport…ボリュームグループをインポートする
vgexport…ボリュームグループをエクスポート
vgmerge…2つのボリュームグループを削除する
vgrename…ボリュームグループの名前変更
vgscan…ボリュームグループを削除
vgs…ボリュームグループの情報を表示


lvcreate…論理ボリュームを作成する
 ・オプション:-L…サイズを指定
 ・オプション:-n…論理ボリューム名を指定
lvdisplay…論理ボリュームの詳細な表示
lvextend…論理ボリューム拡張
lvreduse…論理ボリューム縮小
lvremove…論理ボリューム削除
lvrename…論理ボリュームの名前変更
lvscan…論理ボリュームの状態を簡潔に表示・検索
lvs…論理ボリュームの情報を表示

rndc

namedを操作する

・stop…namedを指定
・refesh…ゾーンデータベースをリフレッシュ
・stats…統計情報を、/var/named/named.statsに書き出す
・status…namedのステータスを表示
・dumpdb…キャッシュの内容を出力する
・reload ドメイン名…指定したゾーンファイルを再度取得する

udevによるデバイス管理

デバイスファイル
 →デバイスを抽象化したファイル。大きく分けて2種類。
  →ブロックデバイス
   →バッファを持ち、ランダムアクセスが可能。
   →ls -l /dev したときにファイルタイプがdになる
  →キャラクタデバイス
   →バッファはなし。ランダムアクセスが可能。マウスとかキーボードとか。
   →ls -l /dev したときにファイルタイプがcになる


カーネルが認識しているデバイスを表示
 →/proc/devices


udev
 →ユーザ空間で動作するプロセス。ユーザ空間とカーネル空間は分離されているので
  カーネルに情報を聞きにいくことは出来ない。その為、sysfsを使用する。
  sysfsはカーネル内部情報をファイルシステムに投影する仕組みなので、
  udevもユーザ空間で動作しつつ、カーネルの情報を取得することができる。

 →udevdはsysfsの情報を元に、デバイスファイルを作成する
  →その際、参照される設定ファイル
  →/etc/udev/rules.d/
  →ファイル名の数字は、udevが若い方から適用する
  →ファイル内の内容
   →KERNEL…デバイス名の指定
   →GROUP…所有グループ
   →MODE…パーミッション
   →OPTION="last_rule"…他の条件にマッチしても、そのルールは適用しない
  →KERNELというデバイス名を認識した時、所有グループでパーミッションはMODEのデバイスファイルを作成せよ



sysfsがどのようにデバイスを扱っているかの情報を取得する
 →udevinfo
  →-a…指定したデバイスの上位デバイスについても表示する
  →-p…sysfs上のデバイスを指定する
  →-n…/dev以下のデバイスファイルをしてする
  →-q…表示する情報の種類を指定する
   →name・symlink・path・env・all
  

フォロワー

ブログ アーカイブ