FC2ブログ

【LPIC_201試験】1. Linuxカーネル

 ■1. Linuxカーネル
  【1. カーネルの構成】

   <カーネルVer確認>
    uname -r :Ver表示
    uname -a :unameで表示できる情報を全表示
    cat /proc/version
    cat /usr/src/linux/Makefile
  【2. カーネルのコンパイル】

  <makeコマンドの代表的なオプション(ターゲット)>
メインコマンド代表オプション説明
makeconfig対話的に設定
menuconfigGUIで設定
xconfigX上でのGUIで設定
defconfigデフォルト設定ファイル作成
oldconfig既存カーネル設定を引き継ぐ
cloneconfig同上
clean設定ファイルは残しておき、一時的なファイルなどを削除
mrproper既存設定内容を初期化
メインコマンド動作系オプション説明
makeallカーネルモジュールをビルド
installビルドしたカーネルをインスト
modulesカーネルモジュールをビルド
module_installカーネルモジュールをインスト
rpmビルド後、rpmパッケージ化
rpm-pkgソースrpmパッケージ作成
binrpm-pkgバイナリrpmパッケージ作成
deb-pkgDebianパッケージ作成

  ・現在のビルドオプションの設定状態: /usr/src/linux/.config

  <ソースからのカーネルビルド及び、再構築手順>
   ◆前提条件
    ・カーネルソースが取得、展開済で、本作業は全ソースを展開したディレクトリ直下で実施する
      
   (1)  設定を初期化
       make mrproper で、設定ファイルを含めたディレクトリ内を初期化。
       古いファイル、不要なゴミファイルがあるかもしれないので、必ず実施。
   (2)  再構築用に設定
       make config で対話的に設定や、make menuconfig でコンソール上のメニューから設定、
       make xconfig として X 上の GUIで設定する方法などがある。
   (3)  ビルドを実施
       make かmake all とすることで、依存関係の解消など色々自動でやってくれる。
   (4) インストール
      ビルドだけではシステムに配置されてはいないので、インストール実施。
      一般的には、make modules_install としてモジュールをインスト後、
      make install としてカーネル本体をインスト。
      make install によって /boot 以下にカーネルイメージが配置され、ブートローダに新カーネルを
      使う起動設定が追加される。


  <手動カーネルインストール(/boot 以下に適切なファイルを手動で置いている場合)>
   (1) ビルドしたカーネルイメージファイル(bzImageをvmlinuz-(Version)という名前で/boot に配置
   (2) System.mapを同様にSystem.Map-(Version)という名前で/bootに配置
   (3)  /boot/vmlinuz, /boot/System.map というバージョンが付いて無い名前でもアクセスができるように、
       シンボリックリンクを設定
   (4)  必要に応じて mkinitramfs または mkinitrd で初期 RAM ディスクを作成し、/boot/initrd.img-(VERSION) とする
   (5) ブートローダに新カーネル用の設定を追加。
       GRUB Legacyなら /boot/grub/menu.lst、GRUB2 なら /etc/grub.d/ ディレクトリ配下のファイルなどを
       適切に編集
      (GRUB2 では update-grub コマンドで、設定内容を /boot/grub/grub.cfg 設定ファイルに反映が必要)




  【3. カーネルへのパッチ適用】
  <パッチファイル適用>
   ・gzip: 圧縮・解凍可能なコマンド。デフォルトは圧縮。解凍は「-d」オプション必要
   ・gunzip: 「-d」無しでも解凍可能

コマンドオプション説明
patch-p0パッチ内のパス修正無し
-p1パッチ内のパスの先頭の1ディレクトリを削る
-p2パッチ内のパスの先頭の2ディレクトリを削る
-dパッチ適用時の作業ディレクトリ指定
-Rパッチを逆向きに適用し、変更取り消し
-Cパッチ適用せず、処理だけ確認

 <バージョンアップ時の説明>
  ・パッチを適用した後にビルド、インストを行う
  ・専用のスクリプトは必要ない
  ・非標準のパッチを当てると失敗することがある
  ・大量のパッチを適用が必要な時がある

 <初期RAMディスクイメージの作成方法>

  ・mkinitrd :出力先を指定する際は、オプションコマンド不要。ファイルシステムイメージをgzip圧縮したもの。
  ・mkinitramfs :出力先を指定する際は、「-o」オプションが必要。cpioアーカイブをgzip圧縮したもの。

 <2.6系、3.x系カーネルをビルドインストする際の、make install について>
 
 ・ビルドされたカーネルイメージを「/boot」に移動
  ・必要に応じて初期RAMディスクイメージを作成
  ・ブートローダに新しいカーネルを使用した起動設定を追加
  ・Verがファイル名に付与されるように、カーネルイメージ等をリネーム







  【4. カスタムカーネルおよびカーネルモジュールのカスタマイズ、構築、インストール】

  ・カーネルモジュール拡張子: .ko

  <カーネルモジュールを実行時に操作するコマンド>
コマンドオプションオプションフルスペル説明
lsmod現在有効となっている全モジュールを表示
modinfoモジュールを指定して、その情報を表示
insmodモジュールを動的ロード
rmmod指定ロード済モジュールをアンロード
modprobe依存関係を考慮し、ロード・アンロード
カーネルモジュールの依存関係を自動的に解決
-fforce?強制的に操作
-r
-lls?ロード可能なモジュールを一覧表示
--show-depends指定したモジュールの依存関係を表示
depmod依存関係ファイル「module.dep」更新


  <カーネルパラメータ操作>
コマンドオプション説明
sysctl表示
-w変更(変更したい値を入力)
-a一覧

   [カーネルパラメータ]
    ※カーネルの動作や細かな設定値を参照・変更するための仕組み
    ・仮想ファイルに対する読み書きにより、操作することが可能
    ・設定内容は、即、反映
    ・カーネルパラメータは、ビルド時ではなく実行中に設定変更することが可能
    ・

  【5. 実行時におけるカーネルおよびカーネルモジュールの管理/概念】
  
関連記事

コメント

非公開コメント

FC2-Counter (Since 2013/8)