
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu8.04にしてから、dazuko2.3.4 をコンパイルしようとしたとき、エラーがでました。
7.10の場合は何とか、コンパイルできましたが、お手上げ状態です。
$ uname -r note: カーネルのバージョンの表示
2.6.24-17-generic
linuxのソースは、synaptic ではlinux-source-2.6.24 しかないので、一応取り込みました。
/usr/src/ にあるので伸張。 $ bunzip2 -c linux-source-2.6.24.tat.bz2 | tar -xvf -
$ sudo apt-get install linux-source-2.6.24-17 とすると、エラーとなります。
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ linux-source-2.6.24-17 が見つかりません
DAZUKOのコンパイルのため、ソースが必要な場所に無理矢理コピーしました。
$ sudo cp -r /usr/src/linux-source-2.6.24/* /lib/modules/2.6.24-17-generic/source/
コンパイルの第一段階の実施
$ ./configure --disable-local-dpath
checking host system type... Linux
checking for make utility... ok (make)
checking for C compiler... ok (cc)
kernel source in /lib/modules/2.6.24-17-generic/source... yes
kernel build source in /lib/modules/2.6.24-17-generic/build... yes
acquiring Linux kernel code configuration... ok
checking if Linux is RSBAC patched... no
checking if devfs is enabled... no
discovered host system... Linux (2.6.24)
checking if security module support is enabled... yes
verifying capabilities are not built-in... built-in :(
error: capabilities are built-in to the kernel:
you will need to recompile a kernel with capabilities
as a kernel module このエラーの意味が把握できません。
また、linux-source-2.6.24-17-genericは、どこにあるのでしょうか?
www.linux.org には、ないみたいですし....
アドバイスをお願いします。この1週間ほど暗夜行路です。
最後の編集者: koisan1949 (2008-07-04 16:53:53)
オフライン
koisan1949 による投稿:
$ uname -r note: カーネルのバージョンの表示
2.6.24-17-generic
手元の8.04だと
2.6.24-16-generic
なんですが、何か別の環境とごっちゃになっていませんか?
とりあえず調べてみたらテスト用のhardy-proposedに2.6.24-17がアップロードされているんですね。
apt-cache policy linux-source-2.6.24
を実行して、インストールされているバージョンを確認してみてはいかがでしょう。2.6.24-17がインストールされていれば、
インストールされているバージョン: 2.6.24-17.31
と表示されるはずです。
DAZUKOのコンパイルの仕方は、他の方にお任せします。
オフライン
Shibata さん、早速のコメントありがとうございました。
Ubuntu8.04をクリーンインストールした最初は、2.6.24-16-genericでした。
その後、Kubuntu8.04を導入したころから2.6.24-17-genericになりました。
/usr/src/ には、これら2つのディレクトリーが共存しています。
$ uname -r note: 普通のLinuxコマンドの実行
で、現在はカーネルのバージョンは、2.6.24-17-genericとなっています。
今、勤務先なので、apt-cache policy linux-source-2.6.24 の確認が
とれません。帰宅したら行います。
>テスト用のhardy-proposedに2.6.24-17がアップロードされている
これ、どこでダウンロードするのでしょうか....
いまいちUbuntu関連のファイルがどこにあるのは、さっぱり把握できません。
これらの情報はどこに存在するのですか?
オフライン
とりあえずdazukoを使うにはカーネルのリコンパイルが必須です(エラーメッセージ
にも出ていますが、Linux capabilitiesをカーネルモジュールにしないといけません)。
http://osdir.com/ml/linux.dazuko.devel/2007/msg00019.html
たぶん、普通の人ならdazukoを使わない方が楽でしょう。
オフライン
hito さん、超初心者への度々のご助言ありがとうございます。
>Linux capabilitiesをカーネルモジュールにしないといけません
と言うことは、capabilityとかAppArmorをカーネルに組み込めとの意味かな?
確か、こんどのUbuntu8.04は、ディフォルトではセキュリティ関連のモジュール
が、lsmod コマンドを実行したとき表示されなかったと思います。
synaptic で検索すると、apparmorはありました。
Ubuntu7.10の場合は、apparmorが最初から組み込まれており表示されました。
よって、$ sudo modeprobe -i apparmor にてカーネルに組み込めば、
先のDAZUKOのコンパイルエラーは回避できると解釈してOKなのでしょうか?
(8.04では、synaptic でインストールすればよい)
それとも、Linuxのソースコードのどこかを修正する必要があるのでしょうか?
エラーメッセージの英語は訳せても、その具体的意味内容が咀嚼できません。
また、参照のURLの2項目に、コンパイルエラーを無視する手法がありましたが、
こちらでもOKと解釈していいのでしょうか?
日本語で記載されていても、意味不明なのです。初心者だとこんなものです。
ps. source-2.6.24-17についてですが、素朴な疑問です。
-17て、Ubuntu独自の修正カーネル版を明示したものですか?
2.6.24は、linuxソースの原本にあたるのかな?
最後の編集者: koisan1949 (2008-05-16 13:10:00)
オフライン
hardy-proposedを意図して使われているわけではないようなので、ちょっとだけ詳しめに説明します。まず、リリース後にパッケージのアップデートが行われる場合、次の4種類のリポジトリのどれかにパッケージがアップロードされます。アップデートとかアップロードとか似た単語が踊っていますがご容赦ください。
・hardy-security
重要なセキュリティアップデートを提供するリポジトリです。最初から有効になっていますので、ここにパッケージがアップロードされた場合、アップデート・マネージャが通知します。
・hardy-updates
推奨のアップデートを提供するリポジトリです。Ubuntuでは基本的に正式リリース後はセキュリティアップデート以外のパッケージアップデートは行わないというポリシーをとっています。ただ、セキュリティ以外の不具合であっても修正すべきだと判断され、ちゃんとしたパッケージが作成され、コアの開発者の二人以上が確認し、OKを出せばアップデートされます。それが「推奨のアップデート」です。これも最初から有効になっています。
・hardy-proposed
hardy-security/hardy-updatesにアップロードするためには事前にパッケージが正しくアップデートされるか確認を行わなければなりません。その確認用に使われます。つまり、「意図しない動作をする可能性を含んでいるパッケージ」がアップロードされる場所ですので、通常は無効化されています。
・hardy-backports
上記3つは、正式リリース後のUbuntuの品質を維持するために必要なプロセスです。しかし、正式リリース版でも、「不具合を含んでいるかもしれないが新機能を使える」最新版を利用したいという要望もあります。そのような要望に応えるために、より条件を低くしてアップロード可能なリポジトリです。このリポジトリにアップロードされるパッケージは、品質を十分に確認されているわけではありません。よって通常は無効化されています。
どのリポジトリを使うかどうかは、システム>システム管理>ソフトウェア・ソースのアップデートタブで変更することができます。で、パッケージのインストールによってhardy-proposedが有効になるってことは、ないと思います(確証はない)。よって、koisan1949さんが「手動で」hardy-proposedをオンにしたとしか考えられないのですが、何か心当たりはないでしょうか(他にも、過去に/etc/apt/sources.listを書き換えたとか)。
koisan1949 による投稿:
>テスト用のhardy-proposedに2.6.24-17がアップロードされている
これ、どこでダウンロードするのでしょうか....
いまいちUbuntu関連のファイルがどこにあるのは、さっぱり把握できません。
これらの情報はどこに存在するのですか?
パッケージそのものやそれに含まれるファイルについては、packages.ubuntu.comを使うといいでしょう。Ubuntu Weekly Recipeの第16回でも紹介されています。ただ、hardy-proposedの情報は反映されないので、Launchpadあたりを検索すると良いでしょう。Linuxカーネルなんかだと、このへんです。
koisan1949 による投稿:
ps. source-2.6.24-17についてですが、素朴な疑問です。
-17て、Ubuntu独自の修正カーネル版を明示したものですか?
2.6.24は、linuxソースの原本にあたるのかな?
そうです。2.6.24-17.31だと、2.6.24がベースとしたカーネルのバージョン、17.31がUbuntu独自パッチのバージョンです。パッケージ名は、カーネルのバージョンも含めてlinux-source-2.6.24になり、そのパッケージのバージョンは2.6.24-17.31になります。ちなみに、linux-sourceパッケージをインストールすれば、依存関係に従って自動的にlinux-source-2.6.24パッケージがインストールされます。
オフライン
Shibata さん、詳細なご説明ありがとうございました。
おかげさまで、Ubuntuのsynapticマネージャーに関する疑問点がほぼ解消しました。
hardy-proposedが取り込まれたのは、synapticの設定でUbuntuのアップデート項の
全てにcheck_markを何も考えずに入れてしまった結果と判明しました。
また、リポジトリの設定に関して、推奨される設定とは何かがようやく理解できました。
教えていただいたコマンドでの現マシンのカーネルの状況です。
$ sudo apt-cache policy linux-source-2.6.24
[sudo] password for user_name:
linux-source-2.6.24:
インストールされているバージョン: 2.6.24-17.31
候補: 2.6.24-17.31
バージョンテーブル:
*** 2.6.24-17.31 0
500 http://ftp.jaist.ac.jp hardy-proposed/main Packages
100 /var/lib/dpkg/status
2.6.24-16.30 0
500 http://ftp.jaist.ac.jp hardy/main Packages
と言うことは、2.6.24-16.30 に復帰させるには、synaptic にて2.6.24-17.31群を
削除すればよいことになりますね?
/etc/apt/sources.listについては、こんなところにリストがあるんだと理解しました。
hitoさんがご指摘されたように、AVG7.5のためだけにDAZUKOを導入するのは
邪道の様な気もしてきました。他のセキュリティが8.04では提供されています。
(リアルタイム・スキャンをしなければ、DAZUKOは必要ありませんので。)
オフライン
hitoさんがご指摘されたように、AVG7.5のためだけにDAZUKOを導入するのは
邪道の様な気もしてきました。他のセキュリティが8.04では提供されています。
(リアルタイム・スキャンをしなければ、DAZUKOは必要ありませんので。)
もう少し頑張りませんか?
ここを参考にすればうまくいきそうですよ。
ttp://backslash.ddo.jp/wordpress/index.php/archives/category/linux/page/2
オフライン
hardy さん、励ましありがとうございます。
背中を押されましたので、コンパイルに挑戦します。
hitoさんが提示されたURL
http://osdir.com/ml/linux.dazuko.devel/ … 00019.html
hardyさんが提示されたURL
http://backslash.ddo.jp/wordpress/index … nux/page/2
これらの2カ所を参考に、
「また、参照のURLの2項目に、コンパイルエラーを無視する手法がありましたが、
こちらでもOKと解釈していいのでしょうか?
日本語で記載されていても、意味不明なのです。初心者だとこんなものです。」
の解釈が妥当性があったと再確認できました。
コンパイルの結果です。
$ ./configure --enable-syscalls --mapfile=/boot/System.map --without-dep checking host system type... Linux checking for make utility... ok (make) checking for C compiler... ok (cc) kernel source in /lib/modules/2.6.24-17-generic/source... yes ...... checking for System.map file... failed error: /boot/System.map not found となります。そこで、挫けず/boot/のマップファイルを参照すると該当する名前が相違。 $ ./configure --enable-syscalls --mapfile=/boot/System.map-2.6.24-17-generic --without-dep checking host system type... Linux checking for make utility... ok (make) checking for C compiler... ok (cc) kernel source in /lib/modules/2.6.24-17-generic/source... yes kernel build source in /lib/modules/2.6.24-17-generic/build... yes acquiring Linux kernel code configuration... ok checking if Linux is RSBAC patched... no checking if devfs is enabled... no discovered host system... Linux (2.6.24) checking whether __d_path() is exported... yes checking for System.map file... ok (/boot/System.map-2.6.24-17-generic) locating sys_call_table... ok (0xc0325500) checking sys_call_table status... read-only IMPORTANT NOTE: If you get a kernel panic or segmentation fault while loading the Dazuko module, you will need to reboot and try to configure Dazuko again with the --sct-readonly option. locating do_execve... ok (0xc01975d0) identifying device API... ok inspecting class type... ok (class) inspecting suspend function... ok (suspend2) inspecting task_struct structure... ok (using parent) configure: creating Makefile configure: creating library/Makefile configure: creating example_c/Makefile ./configure successful ======================= Configuration summary ======================= module events = ON_OPEN ON_CLOSE ON_EXEC devfs support = no rsbac support = no hooking via syscalls = yes local __d_path() = no module debug = no library 1.x compatibility = yes
Congratulation!
さて、makeの実行です。エラーが出ましたので、まだ少々時間が必要です。
Ubuntu7.10と比較して、この8.04はやっかいですね。
$ sudo make [sudo] password for user_name: make -C /lib/modules/2.6.24-17-generic/build SUBDIRS="/home/user_name/download/dazuko-2.3.4" modules make[1]: ディレクトリ `/usr/src/linux-headers-2.6.24-17-generic' に入ります CC [M] /home/user_name/download/dazuko-2.3.4/dazuko_core.o CC [M] /home/user_name/download/dazuko-2.3.4/dazuko_transport.o CC [M] /home/user_name/download/dazuko-2.3.4/dazuko_linux.o /home/user_name/download/dazuko-2.3.4/dazuko_linux.c:90: error: conflicting types for ‘__d_path’ include/linux/dcache.h:304: error: previous declaration of ‘__d_path’ was here make[2]: *** [/home/user_name/download/dazuko-2.3.4/dazuko_linux.o] エラー 1 make[1]: *** [_module_/home/user_name/download/dazuko-2.3.4] エラー 2 make[1]: ディレクトリ `/usr/src/linux-headers-2.6.24-17-generic' から出ます make: *** [dummy_rule] エラー 2
最後の編集者: koisan1949 (2008-05-23 13:19:22)
オフライン
$ sudo apt-cache policy linux-source-2.6.24
linux-source-2.6.24:
インストールされているバージョン: 2.6.24-17.31
.....
と言うことは、2.6.24-16.30 に復帰させるには、synaptic にて2.6.24-17.31群を
削除すればよいことになりますね?
そこで、synapticで削除しました。
$ sudo apt-cache policy linux-source-2.6.24
linux-source-2.6.24:
インストールされているバージョン: (なし)
候補: 2.6.24-17.31
バージョンテーブル:
2.6.24-17.31 0
500 http://ftp.jaist.ac.jp hardy-proposed/main Packages
2.6.24-16.30 0
500 http://ftp.jaist.ac.jp hardy/main Packages
note: インストールされているバージョンがないことになってしまいました。
$ uname -r
2.6.24-16-generic
note: 普通のバージョンチェックでは表示されます。
Ubuntu8.04環境が、グチャグチャになってしまったのでしょうか、今のところ
http://forum.ubuntulinux.jp/viewtopic.p … 307#p12307
の操作をして、GNOMEしか起動しないのですが、不具合は他にはなさそうです。
オフライン
取り敢えずhardy-proposedは無効にしてlinux-source-2.6.24をインストール。
cd /usr/src/
sudo tar xjvf linux-source-2.6.24.tar.bz2
cd dazuko-2.3.4
sudo vim dazuko_linux.c
88-92行を削除して保存
sudo ./configure --enable-syscalls --disable-load-dpath --disable-chroot-support --mapfile=/boot/System.map-2.6.24-16-generic --kernelsrcdir=/usr/src/linux-source-2.6.24 --kernelobjdir=/usr/src/kernel-headers-2.6.24-16-generic
sudo make clean
sudo make
以下動作確認
cd example_c
sudo make clean
sudo make
sudo mkdir /tmp/dazuko
sudo insmod ../dazuko.ko
sudo ./example /tmp/dazuko
別の端末を開く
cd /tmp/dazuko
適当にファイル操作する
/tmp/dazuko内でファイル操作した時にexampleを実行している端末にメッセージが表示されればdazukoが動いているらしい。
オフライン
hardyさん、ご助言ありがとうございます。
synapticのhardy-proposedおよびhardy-backportsのチェックを外しました。
残念ながら、ご指摘されたdazuko_linux.cの箇所を削除しても、コマンド部を/* */
にしても、makeでエラーが出ます。
<追記>configureのエラーはご指摘の処置をすると、#def kernel >24項の1箇所
に減ります。これをマスクすると、configureは通りますが、makeでエラーになります。
8.04のカーネルを2.6.24-16.30に戻しましたが、ダメでした。
./configure --enable-syscalls --disable-local-dpath
--disable-chroot-support
--mapfile=/boot/System.map-2.6.24-16-generic
--kernelsrcdir=/usr/src/linux-source-2.6.24 (カーネルソース・ディレクトリ)
--kernelobjdir=/usr/src/kernel-headers-2.6.24-16-generic
(カーネルオブジェクト・ディレクトリ)
のコンパイル・オプションを種々変更して試しましたが、すべてmakeで様々なエラーが
でます。エラーへの対処をすると、他の部分に派生し、堂々巡りでした。
どうやら、dazuko本体のソースをじっくり検討するしかないようです。
また、カーネルのコンパイルエラーを無視する手法は、やはり無理があるようで、
根本から取り組む必要があるようです。
この2日間試行錯誤しました。余裕があれば再挑戦しますが、DAZUKOのコンパイルは
私としてはここでに保留にします。
メールを発信するとき、相手に迷惑が及ばないように、手動でAVGスキャンを実行して対処
することにしました。入る方は、今のところUbuntuでのリスクは少ないと思いますので、
考慮しないことにしました。(定期スキャンで十分と考えます。)
最後の編集者: koisan1949 (2008-05-22 17:19:57)
オフライン
dazukoのコンパイルはubuntu8.04で実際に試した結果ですので
>すべてmakeで様々なエラーがでます
これはどこかで間違いをしているだけです。
エラー内容を検討すれば解決すると思いますよ。
オフライン