«前の日記(2007年04月18日) 最新 次の日記(2007年04月21日)» 編集

めも


2007年04月19日

_ [Ubuntu] カーネルの再構築をして嵌る del.icio.usに追加 はてなブックマークに追加 livedoor クリップに追加

ソースを取ってくる。

$ sudo apt-get install linux-source
$ cd /usr/src
$ sudo tar jxvf linux-source-2.6.20.tar.bz2
$ sudo ln -s linux-source-2.6.20 linux
$ cd /usr/src/linux

どんなカーネルにするか決める。

$ sudo cp /boot/config-2.6.20-15-generic .config
$ sudo make oldconfig
$ sudo make menuconfig

ここで、自分の環境に合わせてCPUの種類やら何やらを決める。Ubuntuのカーネルは様々な環境で動くように沢山のオプションが有効になっているので、いらんものは片っ端から無効にする。

CPU Frequency scaling、PCI Hotplug、APM、ARCnet、ISDN、Dallas's 1-wire bus、OSS、などなど。

迷ったのはCONFIG_HZの値。Ubuntuでは250。同じじゃ面白くないし、1000だと負荷が高くなりそうなので300にした。

終わったらパッケージを作る。

$ sudo make-kpkg clean
$ sudo make-kpkg --initrd --revision=hoge01 kernel_image kernel_headers
$ cd ..
$ sudo dpkg --install *.deb

再起動して、新しいカーネルを選んで立ち上げると、無事起動するのでホッとする。

んで、たまに使うVMware Playerのためのカーネルモジュールを作る。

$ sudo apt-get install vmware-player-kernel-source
$ cd /usr/src
$ tar jxvf linux-source-2.6.20.tar.bz2
$ cd /usr/src/linux
$ sudo make-kpkg --revision=hoge01 modules_image

とやればパッケージができる、筈なのだが、、、

make[2]: ディレクトリ `/usr/src/modules/vmware-player-kernel' に入ります
echo '# NOTE: THIS FILE IS AUTO-GENERATED FROM control.modules.in.in' > \
      debian/control.modules.in
sed -e 's/@@KVERSION@@/2.6.15/g' \
        -e 's/@@ABIVER@@/2.6.15-23/g' \
       debian/control.modules.in.in >> debian/control.modules.in
if [ "" ]; then \
        echo '# NOTE: THIS FILE IS AUTO-GENERATED FROM control.in' > \
          debian/control; \
        sed -e 's/@@KVERSION@@/2.6.15/g' \
            -e 's/@@ABIVER@@/2.6.15-23/g' \
           debian/control.in >> debian/control ; \
    fi
dh_testdir
dh_testdir: cannot read debian/control: No such file or directory

make[2]: *** [clean] エラー 1
make[2]: ディレクトリ `/usr/src/modules/vmware-player-kernel' から出ます
make[1]: *** [kdist_build] エラー 2
make[1]: ディレクトリ `/usr/src/modules/vmware-player-kernel' から出ます
Module /usr/src/modules/vmware-player-kernel failed.

となってしまい失敗する。

vmware-player-kernel-source.tar.bz2を適当な場所に展開して、手動でmakeするもエラーでコンパイルできない。

VMwareのサイトからVMware-player-1.0.3-34682.tar.gzを落としてmakeすると、vmnetは警告は出るもののなんとかmakeは通るが、vmmonは駄目。

こんな感じ。

Using 2.6.x kernel build system.
make -C /lib/modules/2.6.20.3-ubuntu1/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
make[1]: ディレクトリ `/usr/src/linux-source-2.6.20' に入ります
  CC [M]  /home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/linux/driver.o
In file included from /home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/linux/driver.c:80:
/home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘compat_exit’
/home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘exit_code’
/home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/./include/compat_kernel.h:21: 警告: type defaults to ‘int’ in declaration of ‘_syscall1’
make[2]: *** [/home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only/linux/driver.o] エラー 1
make[1]: *** [_module_/home/hogehoge/download_files/vmware-player-distrib/lib/modules/source/vmmon-only] エラー 2
make[1]: ディレクトリ `/usr/src/linux-source-2.6.20' から出ます
make: *** [vmmon.ko] エラー 2

解決方法を発見。

vmmon-only/include/compat_kernel.hを

+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
 static inline _syscall1(int, compat_exit, int, exit_code);
+#endif

な感じに修正するといいらしい。

なんとかvmmon.oとvmnet.oができたので

$ sudo mkdir /lib/modules/2.6.20.3-ubuntu1/misc/
$ sudo cp vmmon.o vmnet.o /lib/modules/2.6.20.3-ubuntu1/misc/
$ sudo depmod -a
$ sudo modprobe vmmon
FATAL: Module vmmon not found.

orz

手で、 modules.depに

/lib/modules/2.6.20.3-ubuntu1/misc/vmmon.o:
/lib/modules/2.6.20.3-ubuntu1/misc/vmnet.o:

modules.symbolsに

alias symbol:VMX86_RegisterMonitor vmmon

と書けばいいのだがなんだか腑に落ちない。

小一時間ほど検索しまくったり、うーーーんと悩んでふと気づく。

$ cd /lib/modules/2.6.20.3-ubuntu1/misc/
$ sudo mv vmmon.o vmmon.ko
$ sudo mv vmnet.o vmnet.ko
$ sudo depmod -a
$ sudo modprobe vmmon
$

・・・。

[]

がんばれ!!JUSTSYSTEM

ここに書かれている内容は全て無保証です

リンクはご自由にどうぞ

gmail.comのyasumemo

このサイトの広告は情報収集のためクッキーおよびウェブビーコンを利用しています

ブラウザの設定でクッキー、Javascriptを無効にしてもサイトの閲覧そのものに問題はありません