Linux
kernel

Install Linux kernel-devel

More than 3 years have passed since last update.


Goal


  • デバイスなどのモジュールをビルドするために必要なkernel-develをインストールする

  • CentOS(rpmベースのOS)で、Linux kernel-develをkernelとの整合性を保ってインストールする

  • ちなみにkernel-develはモジュールのビルドなどに必要な最低限のソースが入っているらしい


Manual


yum.conf編集

exclude=kernel*と記述されている箇所をコメントアウトする


/etc/yum.conf

# exclude=kernel*



yum install

sudo su -

yum install kernel-devel

##
## install確認
##
rpm -qa | grep kernel-devel
# kernel-devel-2.6.32-504.3.3.el6.x86_64
# kernel-develがインストールされたことを確認

ls -l /usr/src/kernels
# drwxr-xr-x 22 root root 4096 Jan 17 14:02 2.6.32-504.3.3.el6.x86_64
# ソースは上のディレクトリにインストールされる


kernelとkernel-develのバージョンを確認

yum installだと新しいkernel-develをとってきてしまい、必ずしもkernelのバージョンと一致しない.

kernelとkernel-develのバージョンが整合しないとlib/modulesのパスのシムリンクがリンク切れになってしまう.

## 

## 2.6.32-431と2.6.32-504.3.3のようにバージョンが一致しない場合がある
##

uname -r
# 2.6.32-431.el6.x86_64
rpm -qa | grep kernel-devel
# kernel-devel-2.6.32-504.3.3.el6.x86_64

##
## バージョンが一致しないと、以下の/lib/modules/${VERSION}/buildのシムリンクが切れ、
## kernelモジュールのビルドができなくなる
##

ls -l /lib/modules/2.6.32-431.el6.x86_64/build


バージョン指定でkernel-develをインストール

既にkernel-develがインストールされている場合は、削除する

## 

## 誤ったバージョンを変数に格納
##
KERNEL_DEVEL_WRONG_VERSION=`rpm -qa | grep kernel-devel`
echo ${KERNEL_DEVEL_WRONG_VERSION}
# kernel-devel-2.6.32-504.3.3.el6.x86_64

##
## rpmコマンドで削除
##
rpm -e --nodeps ${KERNEL_DEVEL_WRONG_VERSION}

##
## remove確認
##
rpm -qa | grep kernel-devel
# インストールされていたバージョンが消える
ls -l /usr/src/kernels/
# インストールされていたバージョンが消える

新しいkernel-develをバージョン指定でinstall

## 

## 正しいバージョンを変数に格納
##
KERNEL_VERSION=`uname -r`
KERNEL_DEVEL_EXPECTED_VERSION=kernel-devel-${KERNEL_VERSION}
echo ${KERNEL_DEVEL_EXPECTED_VERSION}
# kernel-devel-2.6.32-431.el6.x86_64

##
## 以下のサイトなどからrpmパッケージを探し、リンク先を保存し、ダウンロードする
## http://rpm.pbone.net/
##

cd /usr/local/src
wget "ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.4/x86_64/updates/security/${KERNEL_DEVEL_EXPECTED_VERSION}.rpm"
ls -l ${KERNEL_DEVEL_EXPECTED_VERSION}.rpm
# downloadできたことを確認

rpm -ivh ${KERNEL_DEVEL_EXPECTED_VERSION}.rpm
# インストール実行

## install確認
rpm -qa | grep kernel-devel
# 正しいバージョンがインストールされる
ls -l /usr/src/kernels/
# 正しいバージョンがインストールされる

ls -l /lib/modules/${KERNEL_VERSION}/build/
# シムリンク先が存在すること


Environment

uname -a

# Linux *** 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/issue
# CentOS release 6.5 (Final)
# Kernel \r on an \m