私はLinuxカーネルの開発が初めてです。システムコールを作成し、カーネルをコンパイルする作業があります。このタスクでは、サーバー上の他のカーネルソース(kernel.orgなど)を使用する必要があります。これがなぜ必要なのか知りたいです。ネイティブカーネル(実行中のOSのデフォルトカーネル)を直接コンパイルできますか?
答え1
あなたを混乱させる2つのことがあります:
- カーネルの実行(システムに電力を供給する)
- カーネルを構築するために使用できるカーネルソースコード。
実行中のカーネルは通常、圧縮されたバイナリとして配布されます。通常は/boot
システムディレクトリにあり、linux
ソフトウェアパッケージの一部として配布されます。
カーネルの構築に使用されるLinuxソースコードは独立しており、通常は別々のパッケージにあります。たとえば、Ubuntuはこれを次の場所に配布します。linux-source
パック。パッケージをダウンロードすると、これはカーネルソースコードのリパッケージにすぎず、作業に直接使用できることがわかります。