PAEに対応していない古いPCへCentOS6を入れてみた
とある理由で譲ってもらった古いPC (TOSHIBA dynabook Satellite J32)を自宅用のサーバとして使おうかと思い付き、CentOSを入れてみることにした。
せっかくなので、2014年9月時点で最新のCentOS 7 を入れようかと思ったのだが、32bit対応してくれていないようだ。
自力で32bit用パッケージをコンパイルするのも気の遠くなるような作業なので、しかたなく今回はCentOS6をいれることにした。
で、軽い気持ちでCentOS6.5の最小構成インストール用のisoイメージをネットからダウンロードし、PCに入れて起動してみたところ、
This kernel requires the following features not present on the CPU: pae Unable to boot - please use a kernel appropriate for your CPU.
だと…
ここからが結構大変だった。
同じ泥沼に入ってしまうかもしれない方々のために、手順を簡単に残しておこうと思う。
用意するもの
- インストール対象の非PAEなPC
これにインストールする
_ - VMware Player
非PAE対応用カーネルを再構築するために使う
_ - CentOS 6.5 最小構成用インストールiso
_ - 空のDVD-R またはDVD-RW
非PAE対応用カーネルを含んだ最小構成インストールDVDを書き込む
_ - 非PAE対応のカーネル作成用スクリプトのダウンロード
下記のサイトで公開してくれているスクリプト(以下、DIGITAGEスクリプト)をダウンロードしておきましょう
DIGITAGE Installing CentOS 6.4 (or 6.5) on non-PAE Hardware
http://www.digitage.co.uk/digitage/library/linux/installing-centos-6-4-on-non-pae-hardware
基本的にここの「8. Download and install the Digitage tarball of scripts and config files (it’s very small) 」以降の手順のとおりにやっていけばできあがる。
感謝、感謝。
ざっくり手順
- 非PAE対応用カーネル再構築用のCentOS6をVMware Player にインストール
- コンパイル環境の構築
- カーネルソースのダウンロード&展開
- カーネルパラメータの編集
- カーネルコンパイル
- 非PAE用CentOSインストール用イメージの作成
- 対象PCへインストール
カーネルがアップデートされた時の対応
- 前回のカーネルコンパイル環境の削除
- カーネルソースのダウンロード&展開
- カーネルパラメータの編集
- カーネルコンパイル
- 対象PCへ再構築したカーネルrpmをコピー
- 対象PCでのカーネルアップデート(インストール)
非PAE対応用カーネル再構築用のCentOS6をVMware Player にインストール
VMware ゲストとして、普通にCentOS6をインストールする。
ちなみに32ビット版を入れましょう(#^^#)
コンパイル環境の構築
DIGITAGEスクリプトのダウンロード
上記DIGITAGEのサイトからカーネル再構築用のDIGITAGEスクリプトをダウンロードし、/root直下に解凍しておく。
あらかじめyumのリポジトリの[updates]を無効にしておくほうが良いかと思う。
kernel-develのインストール
#yum install kernel-devel
コンパイル環境の構築
必要なパッケージ類をインストールしておく
#yum -y install \ wget \ rpm-build \ gpm \ make \ gcc \ redhat-rpm-config \ patchutils \ xmlto \ asciidoc \ hmaccalc \ elfutils-libelf-devel \ zlib-devel \ binutils-devel \ newt-devel \ python-devel \ 'perl(ExtUtils::Embed)' \ bison \ genisoimage \ createrepo \ ncurses-devel \ yum-utils
これもダウンロードしたDIGITAGEスクリプトの中に入っている「install-rpms.sh」を使うと楽。
カーネルソースのダウンロード&展開
#cd /root #wget http://vault.centos.org/6.5/updates/Source/SPackages/kernel-~ #rpm -ivh kernel-~
カーネルパラメータの編集
specファイルの編集
#cd ~/rpmbuild/SPEC</div> #vi kernel.spec</div> --------------------------------------------------------------- # % define buildid .local</div> ↓このように修正</div> %define buildid .nonPAE</div></pre> ---------------------------------------------------------------
SOURCEツリー生成
#rpmbuild -bp --target=$(uname -m) kernel.spec
これで rpmbuild 以下に
BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS
ディレクトリができる。
make menuconfigの実行
#cd /root/rpmbuild/BUILD/kernel-2.6.32-431.1.2.el6/linux-2.6.32-431.1.2.0.1.el6.nonPAE.i686 #make oldconfig #make menuconfig
下記のような画面が表示されるので、順次設定していく。
下記には、とりあえずPAEじゃないPCへの対応しか設定していないが、その他のカーネルパラメータの設定も同時に行っても良いかと思う。
が、
実は落とし穴がある。
ここらは後日、カーネルがアップデートされた時の対応の際に書こうと思う。
とりあえず先へすすもう。
「Processor type and features」 を選択
「High Memory Support (64GB)」を選択
「4GB」 を選択
High Memory Support の値が「(4GB)」に変更されていることを確認
変更を確定させる
カーネルコンパイル
ダウンロードしたDIGITAGEスクリプトの中に入っている「build-kernel.sh」を実行する。
このスクリプトの中で、rpmbuild -bb までやってくれるようだ。
#cd /root #sh build-kernel.sh
注).
このスクリプト「build-kernel.sh」を直接実行すると、上で変更したkernel.specファイルの内容が反映されない(nonPAEと記述した内容が反映されない)。
これは、このスクリプト「build-kernel.sh」内でkernel.specの内容を変更しているため。
気に入らないときにはスクリプトを変更しよう。
非PAE用CentOSインストール用イメージの作成
CentOS6 最小構成インストールDVDをセットしてマウントする。
#mount /dev/cdrom /mnt
ダウンロードしたDIGITAGEスクリプトの中に入っている「build-iso.sh」を実行してインストールイメージのISOファイルを作成する。
#cd /opt #cd /root #sh build-iso.sh
対象PCへインストール
DVDメディアの作成
/optディレクトリにインストールイメージのISOファイルが「boot.iso」のファイル名でできあがっているので、これをDVDに焼く。
焼く方法は何でも良い。
ボクは一旦VMwwareゲストOSからWindows PCへSFTPを使って「boot.iso」ファイルを引っ張り出し、「CD Burner XP」を使ってDVD-Rに焼く手段をとった。
あとは、できあがったDVD-Rを対象PCで起動させ、普通にCentOS6 をインストールするだけ。
さてさて
ここでボクはハマったのでメモを残しておく。
ボクがインストールに使用した TOSHIBAのdynabook Satellite J32 は、CentOS6を起動させるときに次のオプション
ipmi_si.trydefaults=0
が必要になる。
これを入れないと、OS起動時に
IPMI BT: timeout in WR_CONSUME [ H2B ] 1 retries left : failed 2 retries, sending error response
のメッセージが出て先にすすまない現象が発生してしまう。
よって、OS起動時に GRUBメニューで[TAB]キーを押し、表示されたコマンドラインの後ろに「ipmi_si.trydefaults=0」を入力して起動させる。
(GRUBメニュー編集時はキーボードが英語配列になっているので注意)
対象PCでやること
- yumでカーネルがアップデート(インストール)されてしまうのを防ぐ
独自にコンパイルしたカーネルをインストールしたので、yumでCentOSが提供しているPAE対応用のカーネルをアップデートされてしまうと動かなくなってしまう。
これを防ぐために、「yum.conf」に一行加える。
# vi /etc/yum.conf --------------------------------------------------------------- : distroverpkg=centos-release exclude=kernel* <--------------------------------- これを追記 # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to : ---------------------------------------------------------------
- grub.confの変更
TOSHIBA dynabook Satellite J32の場合、上記ブートオプションをgrub.confに追記させる必要がある。
#vi /boot/grub/grub.conf --------------------------------------------------------------- : title CentOS (2.6.32-431.el6.NOPAE.i686) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.NOPAE.i686 ro root=/dev/mapper/VolGroup-lv_root nomodeset rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet ipmi_si.trydefaults=0 initrd /initramfs-2.6.32-431.el6.NOPAE.i686.img : ---------------------------------------------------------------
カーネルアップデート時の対応
さて、インストールはこれでできるのだが、このままではカーネルがアップデートされた場合、yumでは更新を反映することができない。
アップデートされたカーネルを再びコンパイルして独自カーネルのrpmを作る必要がある。
また、カーネルがアップデートされたことを知る仕組みも必要だろう。
これらの対応を次回書いていくつもり。
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply