SSブログ

VMware playerとbarcode readerが使えるkernel [プログラム]

ちとハマったのでメモです。

新しいバージョンのカーネルのパッケージがあったので、インストールしました。
# apt-get install linux-image-2.6.XX-YY-686
おっと、kernelにパッチをあてないとバーコードリーダが使えないんでした。まったくもうlinuxのピーどもめが。
# apt-get source --compile linux-image-2.6.XX-YY-686
(適当なところで止め、パッチをあてる)
# cd linux-2.6.XX-ZZ
おや? バージョンが違っているみたいですね。ま、いいでしょう。そのほうがパッチがあたっているということも分かりますし。
# cp /boot/config-2.6.XX-YY-686 .config
# make oldconfig
# make
# make modules
# make install modules_install
# update-initramfs -u
# update-grub
インストールが終わったのでソースは不要です。カーネルもバカでかくなっているので、削除しておきましょう。
# cd ..
# rm -rf linux-2.6.XX-ZZ
リブートして、パッチをあてたカーネルを立ち上げます。そして、バーコードリーダを試します。
問題ありません。

VMware playerを立ち上げます。へんなダイアログが!? 「linux-headersがインストールされていないから、実行できない。どこにある?」みたいなことを言われます。VMware toolsをインストールしてあったからでしょうか? ともかくインストールしましょう。
# apt-get install linux-headers-2.6.XX-YY-686
ほれ、これで満足か? …だめです。カーネルをコンパイルしなおしたとき、バージョンが異なっていたからでしょう。じゃ、どうすればいいのでしょう? linux-headersは/usr/src/の下にあるようですから、そこへソースを展開して入れてしまいましょう。ディレクトリはlinux-headers-2.6.XX-ZZとしました。で、再度VMware playerを立ち上げます。…だめです。
インストール先が悪いのでしょうか? いや、そもそもVMware playerは、種々のディストリビューションにおいても、なぜ的確なlinux-headersを探し当てることができるのでしょうか?
googleで「vmware linux-headers」などで探していて、ヒットしたページのサマリをながめていて、ふと目に入ったのが、それらに共通なディレクトリ/lib/modules/でした。たしかに、それは共通化されてますな。で、/lib/modules/linux-2.6.XX-ZZ/を見てみると、そこにbuildとsourceというシンボリックリンクがありました。そのリンク先は… 削除したソースディレクトリでした。なるほど。

というわけで、この2つのシンボリックリンクを展開したソースのディレクトリにリンクしなおします。で、VMware playerを立ち上げると、別のウィンドウが出てきて、それが終わると、通常どおりに立ち上がりました。

あとは、ソース全体じゃなく、linux-headersと同じだけに減らせば完璧ですね。というか、もうソースはいらないから、削除してしまいましょう。 (最初に戻る? :-)


共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。