2011年04月05日
Linux Kernelの取得(1)
基本ですがLinuxのカーネルの取得とコンパイル方法についてです。
ちょっと長いので2回にわけてご紹介します。
大まかに下記の流れになります。
1. カーネルの取得
2. ファイルの解凍
3. .configの作成
4. コンパイル
5. grub.confの編集
1. カーネルの取得
Linux Kernelは下記のサイトから取得できます。
http://kernel.org
色々と表示されています。
安定板、開発版やLinusのtreeのスナップショットだったりとあります。
開発版はいち早く新しい機能が試せますが、bugが潜在している可能性が高いです。
個人利用ではさほど神経質になる必要はないと思います。
むしろ新しい機能や最新のを使っている感が重要だと思いますので
"mailine"の"Full_Source"から取得するとよいでしょう。
2.ファイルの解凍
Full_Sourceをクリックすると"linux-2.6.39-rc1.tar.bz2"をダウンロードするか聞いてきます。
任意の場所に保存してください。ファイルサイズは70-80MBあります。
色々な機能が追加され、コードどんどん多くなっているので将来的には100MBも越えてしまうのではないでしょうか。
何かのカンファレンスでLinuxのソースコードの肥大化は問題であると述べられていたきがします。
ダウンロードしたファイルは下記のコマンドで解凍します
# tar -jxvf linux-2.6.39-rc1.tar.bz2
解凍処理が完了するとlinux-2.6.39-rc1とういディレクトリが出来上がります。
これがカーネルのソースツリーです。
3. .configの作成
.configファイルとはカーネルの設定ファイルのことです。
"."がついているので隠しファイルとして扱われています。 lsコマンドで見る場合は -aをつけます。
先程までに解凍したlinux-2.6.39-rc1のディレクトリ内に移動します。e.g. # cd linux-2.6.39-rc1
この状態で ls -a を実行しても.configはありません。
既に.configがある場合(他のコンパイルしたkenrelからもってきた)は # make oldconfigで
引き継ぐ事ができます。
新規に作成する場合は# make menuconfigを実行します。
make config, make xconfigなどもあります。
目的はどれも同じですので使いやすいものを選ぶとよいと思います。
make menuconfigを実行すると↓のような画面が表示されます。
ここではグラフィカルにカーネルのコンフィグを設定することができます。
詳細な設定は別の機会にするとして”EXIT”を選択し抜けます。
(操作にはTAB, ENTER,矢印キーをつかいます)
# make defconfigでは名前の通りデフォルトの設定ファイルを作成します。
どちらも場合も実行後は.configが作成されていることが確認できると思います。
.configファイルの中身はカーネルのどの機能を有効/無効にするかが記載されています。
直接このファイルを編集する事はあまりないと思いますが、
どの機能が有効になっているかを確認する時には直接開いてしまうのもありだと思います。
[root@localhost LATEST] # cat .config
#
# Automatically generated make config: don't edit
# Linux/x86_64 2.6.38-rc7 Kernel Configuration
# Mon Apr 4 23:53:18 2011
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
...
Linux Kernelの取得(2)へ
ちょっと長いので2回にわけてご紹介します。
大まかに下記の流れになります。
1. カーネルの取得
2. ファイルの解凍
3. .configの作成
4. コンパイル
5. grub.confの編集
1. カーネルの取得
Linux Kernelは下記のサイトから取得できます。
http://kernel.org
色々と表示されています。
安定板、開発版やLinusのtreeのスナップショットだったりとあります。
開発版はいち早く新しい機能が試せますが、bugが潜在している可能性が高いです。
個人利用ではさほど神経質になる必要はないと思います。
むしろ新しい機能や最新のを使っている感が重要だと思いますので
"mailine"の"Full_Source"から取得するとよいでしょう。
2.ファイルの解凍
Full_Sourceをクリックすると"linux-2.6.39-rc1.tar.bz2"をダウンロードするか聞いてきます。
任意の場所に保存してください。ファイルサイズは70-80MBあります。
色々な機能が追加され、コードどんどん多くなっているので将来的には100MBも越えてしまうのではないでしょうか。
何かのカンファレンスでLinuxのソースコードの肥大化は問題であると述べられていたきがします。
ダウンロードしたファイルは下記のコマンドで解凍します
# tar -jxvf linux-2.6.39-rc1.tar.bz2
解凍処理が完了するとlinux-2.6.39-rc1とういディレクトリが出来上がります。
これがカーネルのソースツリーです。
3. .configの作成
.configファイルとはカーネルの設定ファイルのことです。
"."がついているので隠しファイルとして扱われています。 lsコマンドで見る場合は -aをつけます。
先程までに解凍したlinux-2.6.39-rc1のディレクトリ内に移動します。e.g. # cd linux-2.6.39-rc1
この状態で ls -a を実行しても.configはありません。
既に.configがある場合(他のコンパイルしたkenrelからもってきた)は # make oldconfigで
引き継ぐ事ができます。
新規に作成する場合は# make menuconfigを実行します。
make config, make xconfigなどもあります。
目的はどれも同じですので使いやすいものを選ぶとよいと思います。
make menuconfigを実行すると↓のような画面が表示されます。
ここではグラフィカルにカーネルのコンフィグを設定することができます。
詳細な設定は別の機会にするとして”EXIT”を選択し抜けます。
(操作にはTAB, ENTER,矢印キーをつかいます)
# make defconfigでは名前の通りデフォルトの設定ファイルを作成します。
どちらも場合も実行後は.configが作成されていることが確認できると思います。
.configファイルの中身はカーネルのどの機能を有効/無効にするかが記載されています。
直接このファイルを編集する事はあまりないと思いますが、
どの機能が有効になっているかを確認する時には直接開いてしまうのもありだと思います。
[root@localhost LATEST] # cat .config
#
# Automatically generated make config: don't edit
# Linux/x86_64 2.6.38-rc7 Kernel Configuration
# Mon Apr 4 23:53:18 2011
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
...
Linux Kernelの取得(2)へ
新品価格 |
【Linuxの最新記事】
この記事へのコメント