Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Install Linux kernel-devel

More than 5 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
metheglin
敷布団カバーと掛布団カバーを逆につけて寝ています
https://metheglin.jp/#logical
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away