japan.internet.com
japan.internet.com メンバーID
Twitter
Facebook
RSS
ピックアップ
2001年12月15日 00:00

New HOWTO:Linux Kernel HOWTO -- 2

著者Linux HOWTOオリジナル版を読む海外海外発
tutorial logo
  2.  クィックステップ -- カーネルのコンパイル

  この章は Al Dev によって書かれた。

  最新版は  にあるので、
  「Quick Steps to recompile linux kernel」をクリック。ミラーサイトは以下。
   angelfire    
   geocities    
   virtualave   
   bizland      
   theglobe     
   spree        
   infoseek     
   bcity        
   50megs       
   NBCi         
   Terrashare   
   Fortunecity  
   Freewebsites 
   Tripod       
  これらのサイトには Linux 関連のグッディやティップがたくさんある。
  

  上記サイトのコピーをここで再掲した。

  カーネルの再コンパイルはカーネルをスリムアップするのに必要で、再コンパイルす
  ると、速い OS になる。また、新しいデバイスに対応するのにも再コンパイ
  ルが必要だ。注:以下の「bash#」は bash のプロンプト記号で、「bash#」プロンプ
  トの後にコマンドを入力する。以下は Redhat Linux でテストされているコマンドだ
  が、マイナーチェンジされたほかのディストリビューションでも動作する。


  1. このステップではどんな時でも「ルート」でログインする。Redhat Linux CDROM 
     をマウントし、Linix カーネルソース RPM をインストールする

     ___________________________________________________________________
     bash$ su - root
     bash# cd /mnt/cdrom/RedHat/RPMS
     bash# rpm -i    kernel-headers*.rpm
     bash# rpm -i    kernel-sources*.rpm
     bash# rpm -i dev86*.rpm
     bash# rpm -i bin86*.rpm
     ___________________________________________________________________


  (bin86*.rpm と「as86」は Redhat 5.x のような古い Linux システムにの
  み要求される。インテルのアセンブラコマンド「as86」は CDROM 上の dev86*.rpm 
  あるいは
  
  
  から入手。)



  2. 「startx」で X ウィンドウを開始

     ___________________________________________________________________
     bash# man startx
     bash# startx
     bash# cd /usr/src/linux
     bash# make xconfig
     ___________________________________________________________________

   「make xconfig」はユーザーフレンドリーな GUI インターフェイスを育てる! コマ
   ンド行オプションで「make config」を使ってはいけない(X ウィンドウが
   出てこれない場合のみ使う)。
   /usr/src/linux/.config から設定ファイル(dot config ファイル)をロードでき
   る。
  


  3. ローダブル カーネルモジュールに対応できる! このオプションでデバイスドライ
     バを、Linux システムが稼働中に動的にロード/アンロードできる。
  
     ___________________________________________________________________
     bash# man lsmod
     bash# man insmod
     bash# man rmmod
     bash# man depmod
     ___________________________________________________________________


  4. 保存して「make xconfig」を終了する。選択したオプションは全部 
     /usr/src/linux/.config の設定ファイル(dot config ファイル)に保存される。
     さあ、やってみよう。

     ___________________________________________________________________
     bash# make dep
     bash# make clean
     ___________________________________________________________________



  5. 以下のファイルを読もう(カーネル構築についての知識がいくつか得られる。
     ティップ:読みやすくするためにカラーエディタ gvim 
      を使う。

     ___________________________________________________________________
     bash# gvim -R   /usr/src/linux/arch/i386/config.in
     bash# man less
     bash# less   /usr/src/linux/arch/i386/config.in
     ヘルプを表示させるには「h」を入力し、 i、j、k、l、h か矢印キーで移動、
     up/down キーでページを移動する。
     ___________________________________________________________________



  6. さあ、make コマンドを与えよう

     ___________________________________________________________________
             bash# cd /usr/src/linux
             bash# man nohup
             bash# nohup make bzImage &
             bash# tail -f nohup.out     (…処理をモニターするために...)
     これはカーネルを /usr/src/linux/arch/i386/boot/bzImage に置く
             bash# man tail
     ___________________________________________________________________



  7. bzImage が成功した後、カーネルイメージを /boot ディレクトリにコピーする。
     新しいカーネルイメージを /boot ディレクトリにコピーしなければいけない。そ
     うでないと、新しいカーネルはブートしない。それから LILO のマニュアルページ
    ( も参照)を
     読み、「sample lilo.conf」を参照する。以下のようにファイル名にいつも日付
     の拡張子を与える。
  
     ___________________________________________________________________
     bash# cp /usr/src/linux/arch/i386/boot/bzImage     /boot/bzImage.myker.26mar2001
     bash# man lilo
     bash# man lilo.conf
     /etc/lilo.conf ファイルを編集し、これらの行を置く
             image=/boot/bzImage.myker.26mar2001
             label=myker
             root=/dev/hda1
             read-only
     「root=」のデバイス名をコマンドでチェックできる
             bash# df   /boot
     ___________________________________________________________________



  8. 与える

     ___________________________________________________________________
     bash# lilo
     bash# lilo -q
     ___________________________________________________________________


  「myker」エントリがある場合は、新しい bzImage を作成するたびに LILO を再稼動
  しなければならない。



  9. マシンをリブートし、lilo でタブキーを押し、「myker」と入力する。ブート
     したら上出来だ! そうでなければ、lilo で古いカーネルを選択してブートし、も
     う一度再試行する。古いカーネルはまだ壊れていない。
     /boot/vmlinuz-2.0.34-0.6 で無事だ。
     Reboot the machine and at lilo press tab key and type 'myker' If it
     boots then you did a good job! Otherwise at lilo select your old
     kernel, boot and re-try all over again. Your old kernel is still
     INTACT and SAFE at say /boot/vmlinuz-2.0.34-0.6



  10.
     ローダブル モジュール:このモジュールをロードするのに広く使われる insmod 
     コマンドをチェックする。
     
     ___________________________________________________________________
     bash# man insmod
     bash# insmod
     bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
     ___________________________________________________________________



  以下のステップは /lib/modules ファイルが損傷を受けるという非常事態では必要に
  なる。すでに /lib/modules ディレクトリがあり、元に戻そうとする場合、強制的に
  パッケージを戻し、適切な CPU アーキテクチャを選択する。
  
  Linux Redhat の Linux 6.0 以降の新しいバージョンでは、カーネルモジュールは 
  kernel-2.2*.rpm にある。ローダブルモジュールとカーネルを以下のようにインスト
  ールする。
  
  ______________________________________________________________________
          これはすでにインストールされたパッケージを一覧表示する。
  bash# rpm -qa | grep -i kernel

  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i686.rpm
  (or)
  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i586.rpm
  (or)
  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i386.rpm
  ______________________________________________________________________



  これは Linux Redhat の Linux 5.2 以前のものだけのためだ。新しいカーネルをブ
  ートし、RedHat Linux「contrib」CDROM からローダブルモジュールをインストール
  する。
  
  ______________________________________________________________________
  bash# rpm -i /mnt/cdrom/contrib/kernel-modules*.rpm
  ……(insmod がプレインストールされていない古い Linux システム用)
  ______________________________________________________________________



  11.
     このステップは、Linux カーネルソースの新しいバージョンをダウンロードして
     いる場合のみ、必要だ。ローダブルモジュールは /lib/modules にある。

     ___________________________________________________________________
     bash# cd /usr/src/linux
     bash# make modules
     bash# make modules_install
     ___________________________________________________________________



  12.
      新しいカーネル「myker」がブートし、正しく動いている場合、ブートディスク
      を作成できる。空のフロッピーディスクを差し込む。

     ___________________________________________________________________
     bash# cd /usr/src/linux
     bash# make bzdisk
     See also mkbootdisk -
     bash# rpm -i mkbootdisk*.rpm
     bash# man mkbootdisk
     ___________________________________________________________________



  2.1.  よくある間違い

  以下は初心者ユーザーがしょっちゅう犯す間違いだ。

  新しいカーネルがブートしないで、以下のメッセージが出る場合
  
  ______________________________________________________________________
  Warning: unable to open an initial console
  Kernel panic: no init found. Try passing init= option to kernel
  ______________________________________________________________________


  /etc/lilo.conf の「root=」パラメータが正しく設定されていないせいで問題が起こ
  っている。私の場合、root=/dev/hda1 とした。/dev/hda1 にルートパーティション
  「/」があるからだ。lilo.conf で正しくルートデバイスを指示しなければならない。
  それは /dev/hdb2 あるいは /dev/hda7 かもしれない。
  

  カーネルは /sbin/init にある init コマンドを探す。そして /sbin ディレクトリ
  はルートパーティションに存在している。詳細は man を参照。

  ______________________________________________________________________
  bash# man init
  ______________________________________________________________________



  2.2.  lilo.conf の見本

  以下にあるのは、/etc/lilo.conf ファイルの見本だ。2217 (kernel 2.2.17 に対し)、
  ker2214 (kernel 2.2.14 に対し)のような命名の慣例にしたがわなければならない。
  同じ /boot システム上にカーネルイメージを多数置くことができる。私のマシンは
  以下のようになっている。



  ______________________________________________________________________
  boot=/dev/hda
  map=/boot/map
  install=/boot/boot.b
  prompt
  timeout=50
  default=firewall

  image=/boot/vmlinuz-2.2.14-5.0
          label=ker2214
          read-only
          root=/dev/hda9

  image=/boot/vmlinuz-2.2.17-14
          label=ker2217
          read-only
          root=/dev/hda9

  #image=/usr/src/linux/arch/i386/boot/bzImage
  #       label=myker
  #       root=/dev/hda7
  #       read-only

  image=/boot/bzImage.myker.11feb2001
          label=myker11feb
          root=/dev/hda9
          read-only

  image=/boot/bzImage.myker.01jan2001
          label=myker01jan
          root=/dev/hda9
          read-only

  image=/boot/bzImage.myker-firewall.16mar2001
          label=firewall
          root=/dev/hda9
          read-only
  ______________________________________________________________________

次は 3章重要な質問と回答  »

関連テーマ
プリンター用
記事を転送
この記事をクリップ!
japan.internet.com Androidアプリ
japan.internet.com Androidアプリ Android で japan.internet.com のニュースがどこでも、いつでも読めて、ニュースをTwitterに直接つぶやいたり、Facebookにコメントできる。 人気ニュースランキング、ブックマーク機能なども使えます。詳しくは こちらから
注目のトピックス
Copyright 2012 internet.com K.K. (Japan) All Rights Reserved.