使用したものはld.so-1.7.14.tar.gzです。
これはコンパイルの必要がないのでこれからやります。
これは簡単です。展開したディレクトリにinstldso.shという
シェルスクリプトがあるのでそれを実行するだけです。
これも展開したディレクトリにmakeのバイナリがあるので それを/usr/binに置くだけです。
# ldd /bin/shとか打てばlibcのバージョンが見れます。
# rm -f /lib/lib.so /lib/libm.soこれはカレントディレクトリにlibc-5.3.12.bin.tar.gzがある場合です。
# rm -f /usr/lib/libc.so /usr/lib/libm.so
# rm -f /usr/include/wcstr.h /usr/include/mbstr.h
# rm -f /usr/include/iolibio.h /usr/include/iostdio.h
# rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h
# rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread
# ln -fs /usr/src/linux/include/scsi /usr/include/scsi
# tar zxf libc-5.3.12.bin.tar.gz -C /
# ldconfig
# rm /usr/lib/libstdc++.so /usr/lib/libg++.soこれもカレントディレクトリにlibgPP-2.7.1.4.bin.tar.gzがある場合です。
# rm -rf /usr/include/g++
# tar zxf libgPP-2.7.1.4.bin.tar.gz -C /
# ldconfig
# tar zxf binutils.2.6.0.14.bin.tar.gz -C /これもカレントディレクトリにbinutils-2.6.0.14.bin.tar.gzがある場合です。
# ln -fs /usr/lib/libbfd.so.2.6.0.14 /usr/lib/libbfd.so
# ln -fs /usr/lib/libopcodes.so.2.6.0.14 /usr/lib/libopcodes.so
# rm -f /usr/bin/cc /usr/bin/g++ /usr/bin/cppこれもアーカイブがカレントにあるとしています。
# tar zxf gcc-2.7.2.bin.tar.gz -C /
# ln -fs /usr/lib/gcc-lib/i486-linux/2.7.2/cpp /lib/cpp
# rm -f /usr/lib/libform.* /usr/lib/libpanel.*
# rm -f /usr/lib/libncurses.* /usr/lib/libmenu.*
# tar xzf ncurses-1.9.9e.bin.tar.gz -C /
# makeでOKです。 rcファイルの入れ換えは以下のようにしてバックアップを取って入れ換え、 それからrcファイルへの自分の変更点を新しいrcファイルに忘れずに 反映しましょう。
# make install
# mkdir /etc/rc.d/old
# cp -p /etc/rc.d/rc* /etc/rc.d/old
# rm -f /etc/rc.d/rc.0
# cp -p /etc/inittab /etc/inittab.old
# cd slackware/etc/rc.d
# cp ../inittab /etc
# tar cf - rc* | tar xf - -C /etc/rc.d
# chmod 700 /etc/rc.d/rc*
# chown root.root /etc/rc.d/rc*
# cd /usr/srcの様にしています。
# mkdir linux-2.2.14
# ln -s linux-2.2.14 linux
# tar xvfz linux-2.2.14.tar.gz
# cd /usr/src/linux/Documentationとします。次は、カーネルオプションを設定しましょう。
# mv Configure.help Configure.help.orig
# mv Configure.help-2.2.14.ja Configure.help
# make configとします。これでカーネルに取り込む機能や、デバイスドライバを指定します。 どの版からなのかは定かではありませんが、今は
# make xconfigという手もあります。これはX WindowのGUIで設定が行えて、 helpも表示されますし、私はこちらをお勧めします。
設定が終わったらコンパイルします。
# make cleanmake bzdiskでは最後にフロッピーディスクドライブ(FDD)へ 新しいカーネルイメージが書き出されますので、 フロッピーをさしておいてください。 これはいきなりハードディスク上へカーネルをインストールするのでなく、 まずはFDDでブートしてカーネルが正しいかを確認するためです。 (あなたが冒険家ならば modulesのバージョンアップ に進んでいきなりハードディスクへインストールしましょう)
# make dep
# make bzdisk (またはmake zdisk。bzdiskの方が圧縮率が高いです)
無事にシステムは立ち上がったでしょうか?
この段階ではまだモジュールが読み込まれていないと思いますが、
新しいカーネル自体はうまく動いているようならば
モジュールをインストールしてから、
カーネルをハードディスクにインストールしましょう。
ただ、うまく動いているかどうかの見極めも、まぁ、
いろいろチェックポイントがあるのですが、詳しくは割愛します。
よく分からなかったら、少なくともログインプロンプトが出ているかどうか、
uname -a してバージョン番号は正しいか、を見てみましょう。
# make modulesこれでモジュールがインストールされます。 具体的には/lib/modules/配下にカーネルのバージョン名のついた ディレクトリが作成されます。 しかし、RedHat系Linuxの方は RedHat系Linuxでの注意点を読んでください。
# make modules_install
# cd /usr/src/linuxこれで新しいカーネルイメージが/にコピーされ、 そのliloの設定もなされます。 あとはリブートすれば新しいカーネルで起動されます。
# make bzlilo
注:/sbin/installkernel という コマンドもこれらをやってくれます。 このコマンドが存在するディストリビューションならば こちらでやった方が簡単でしょう。
# cd /usr/src/linux
# /sbin/installkernel 2.2.14 arch/i386/boot/bzImage System.map
とすると、作ったカーネルとSystem.mapをそれぞれ vmlinuz-2.2.14, System.map-2.2.14 という名にして /bootに置いてくれます。 System.map -> /boot/System.map-2.2.14 なシンボリックリンクも張ってくれます。
これだけではブート時にモジュールを認識してくれません。 Vineでは起動時に/etc/rc.d/rc.sysinitのスクリプトが カーネルのバージョンを見て、モジュールディレクトリの preferredという名前のシンボリックリンクを張っています。 /etc/rc.d/rc.sysinitを見ると、
# Set up kernel version-dependent symlinks. rm -f /lib/modules/preferred if [ -n "$USEMODULES" ]; then ktag="`cat /proc/version`" mtag=`grep -l "$ktag" /lib/modules/*/.rhkmvtag` 2> /dev/null if [ -n "$mtag" ]; then mver=`echo $mtag | sed -e 's,/lib/modules/,,' -e 's,/.rhkmvtag,,' -e 's,[ ].*$,,'` ln -sf /lib/modules/$mver /lib/modules/preferred ln -sf /boot/System.map-$mver /boot/System.map ln -sf /boot/module-info-$mver /boot/module-info fi fiとやっていますので、/proc/versionの内容と /lib/modules/配下にある.rhkmvtagというファイルの内容が一致する ディレクトリへ/lib/modules/preferredとしてリンクを張ります。 なので、あるカーネルに対応したモジュールは、そのディレクトリ内に その起動されたカーネルが吐き出す/proc/versionと同じ内容を持つ .rhkmvtagというファイルを持っていないとなりません。 持っていないとカーネル起動後に モジュールが正しく参照されません(上記リンクが張られないので)。
そして再度ブートをすれば、
今度はちゃんと新カーネルに新モジュールが読み込まれるはずです。
無論、/etc/lilo.confは手で修正して
/bootにある正しいカーネルがロードされるように編集して、
/sbin/liloコマンドを実行しておくことを忘れずに。
ちなみに私の/etc/lilo.confは、
boot = /dev/hda timeout = 50 prompt vga = normal append = "mem=130688k" read-only map=/boot/map install=/boot/boot.b image = /boot/vmlinuz-2.2.14 label = linux root = /dev/hda5 image = /boot/vmlinuz-2.2.12-y1 label = linux_2.2.12 root = /dev/hda5 image = /boot/vmlinuz-2.0.36-3vl3 label = linux.sysorg initrd = /boot/initrd-2.0.36-3vl3.img root = /dev/hda5 other = /dev/hda1 label = win table=/dev/hdaです。
それから、Vine1.0beta→Vine1.1のバージョンアップインストール
をした後、同様にカーネルのリコンパイルをしたのですが、
その時にはPPxPが
うまく動きませんでした。
userlinkのモジュールが認識されず読み込まれません。
起動時のエラーをCtrl-Sで止めて見てみると、
/lib/modules/misc/userlink.o
を読み込もうとしてエラーがでます。
なので、もう一度、自分でuserlinksをリコンパイルして
同じところに置きました。
# tar xvfz userlink-0.99.tar.gz
# cd userlink-0.99
# configure
# make
# mv /lib/modules/misc/userlink.o /lib/modules/misc/userlink.o.sysorg
# cp -pi userlink.o /lib/modules/misc/.
ちなみに起動時のPPxPの処理は/etc/rc.d/init.d/ppxp の中でやっています。(userlinkのロードなど)
注:kernel2.2にする時も同様です。
All Right Reserved, Copylight (C) Yoshinori ARAI. 1996-2000