2016-12-18 8 views
0

私はホビープロジェクトとして、Silberschatzの本Operating System Conceptsにあるプロジェクトの部分に従ってビルドしようとしています、ガルビンとガニエ。本の状態:Linuxカーネル の最近のバージョンの/usr/src/linux-2.x/include/asm-i386/unistd.hのようなディレクトリがありません

システムコール番号が/usr/src/linux-2.x/include/asm-i386/unistd.hに記載されています。

このディレクトリは見つかりません。 linux-2.xのようなディレクトリはありません。すべてはの形式です。

+0

あなたの本はLinuxカーネル2.xを記述しており、現在のバージョンは4.9です(2016-12-17のsayeth [kernel.org](https://kernel.org))。あなたの本は古いので、(少なくとも軽度の)誤解を招くことがあります。オフラインでは、 'linux-3.x'の代わりに' linux-4.x'が必要か、4.xにバージョンが変更されたにもかかわらず '3.x'を保っているかどうかはわかりません。 –

+0

私はこれもまた見ました[リンク](https://www.csee.umbc.edu/courses/undergraduate/CMSC421/fall02/burt/projects/howto_build_kernel.html)これはほぼ同じディレクトリに言及しています。だから、もし私が探しているはずのファイルをシステムコールハンドラへのポインタのリストを見たいのですか? –

+0

「Fall 02」は約14年前です。当時、カーネルのバージョンは2.xでした。もう2.xではありません。 2.xカーネルをビルドしたい場合は、2.xソースを入手する必要があります。その後、 'linux-2.x'ディレクトリがあります。 Silberschatzのどのエディションをお使いですか?第9版は2012年となっています。これはすでに出版されているときに「ほぼ最新」だったかもしれないが、それ以来カーネルは動いています。 –

答えて

1

これらのヘッダーは現在自動的に生成され、そのテーブルはたとえばlinux-4.4.5/arch/x86/entry/syscalls/です。配布物によっては、カーネルヘッダを別々にインストールする必要があるかもしれません。たとえば、Ubuntuで(パケット、バージョンはカーネルバージョンに合わせてにする必要があります)。私はそれらが/usr/src/linux-headers-3.13.0-37-generic/arch/x86/include/generated/asm/にインストールされていることを発見しました(Linux MintはUbuntuをベースにしています)。そこにあるヘッダーはの正規のもの()に含まれています。 (カーネルの実際のバージョンは異なる場合があります)。

メジャーバージョン2を搭載した最後のカーネルは2011年8月の2.6.39.4です。これを試すことはできますが、古いPentiumよりも新しいハードウェアでは起動しません。あなたがそのような古いマシンを持っているか、仮想Pentiumマシンを動かすのに十分な馬力を持ったマシンを持っているなら、それを手に入れてください。しかし、私は代わりに本をアップグレードすることをお勧めします。

最新の4.9ではなくバージョン3を持っている理由が不思議に思えるなら、あなたのハードウェアがそれと共に走っても、深刻なセキュリティ関連のバグはなく、あなたは何もする必要はありません最新のカーネルを使って、あなたのディストリビューションがあなたに与えたものを使用して、彼らは何をしているのかを知っている(彼は大胆に言った)。

関連する問題