私のカーネルにカスタムアプリケーションコードを追加してコンパイルしたいです。
.c
私のカーネル "bin"ディレクトリに私とファイルをどのように追加して.o
コンパイルする必要がありますか?
カーネルの起動時に実行されるようにカーネルに追加したいhello.c
ファイルを作成しました。いくつかのメイクファイルを編集する必要がありますか?hello.o
hello.o
答え1
カーネルの起動時にこのhello.oファイルが実行され実行されるように、このファイルを私のカーネルに追加したいと思います。
達成しようとしているのは、カーネルバージョンで達成してはいけません。カーネルプログラミングの経験がなくても、起動時にプログラムの実行をより簡単な方法で処理できます。あなたはできます:
シェルの起動時に実行:または最後に記録されます/path/to/hello/executable
。これらのファイルは、シェル(より具体的にはbash)を起動するたびに取得されます。これは、端末を開くたびに実行可能ファイルが実行されることを意味します。/etc/profile
~/.profile
~/.bashrc
init.d システムの使用:コードをコンパイルして追加する初期化スクリプト到着システム初期化。必要なすべての情報を見つけることができます。このページからまたはここでUbuntuの詳細をご覧ください。。
これは簡単な例です初期化スクリプトhello 実行可能ファイルの場合:
#!/bin/sh
### BEGIN INIT INFO
# Provides: hello
# Default-Start: 1 2 3 4 5
# Short-Description: Prints Hello World somewhere.
# Description: Some more description...
### END INIT INFO
case "$1" in
start)
/path/to/hello/executable
;;
stop|restart|force-reload)
;;
*)
;;
esac
exit 0
これで、次のようにhelloを実行できます。
service hello start
initスクリプトの名前が指定されhello
実行可能であるとします。起動時に実行するには、次のようにします。
update-rc.d hello defaults
実際、カーネルは実行ファイルよりライブラリに依存しています。また、見たいと思うかもしれませんカーネルモジュール開発ガイド、カーネルモジュールの基本を紹介します。繰り返しますが、これは本当にひどいことです。通過あなたがしたいことのために。