トップページ⇒linux
986コメント359KB

☆Linux カーネルの仕組みを勉強するスレ☆

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/10/02 17:44ID:38KkZsUQ
メモリ管理、プロセス、ファイルシステム色々ありますが
カーネル全般について語り合うスレッドです。
0552login:Penguin02/11/05 23:51ID:iivfSIhp
>>550
すいませんが、今すぐには確認できません。
そこでKernelを一回作るというのは、現在の
Kernelを再構築する、ということでよろしいのですよね?
そうするとasmディレクトリが構築される、
と言う解釈でよろしいでしょうか?
055355002/11/05 23:58ID:5JSfVnIm
>>552
そう。
configだけでもいいんだけど。
再構築しておけば、いろいろ試せるはず。
0554login:Penguin02/11/06 00:02ID:yIb370Cf
>>553
make configですね。
では試してみます。
ありがとうございました。
0555login:Penguin02/12/18 21:52ID:2+/TSmSd
ここまで読んだ。
カーネルを全然知らない香具師がデバイスドライバを作ったと主張
する珍妙なスレであった。
0556login:Penguin02/12/18 23:47ID:cj+DVOLQ
どのソースから読み始めましたか?
0557Tovacox02/12/19 00:00ID:D9IEsFe0
./kernel/sched.cですね。
とりあえずカーネルの中身を見るときなどは、
なぜか。
%emacs kernel/sched.c
って打ってしまいます。。。
0558login:Penguin02/12/19 00:22ID:bALO5RwS
>>556
init/main.cだったと思います。基本ですね。
最初に読んだのは1年以上前なので、よく覚えてないなー。
最近はarch/某archとかinclude/asm-某archしか見てません。
0559login:Penguin02/12/22 14:09ID:ouHor4+l
>>556
grep -r cache kernel
だったかと。
いやね、freeで表示されるbufferとcachedの違いがわからなくてさ。
0560login:Penguin03/01/05 01:38ID:CxZrKX7Y
スレ間違えたのでここで質問します。。。
Kernel構築してるんですが、ほとんどmoduleにしたらbzImageが2MB位。
そのmoduleってどこにあるんですか?
0561login:Penguin03/01/05 02:25ID:bcfTdkeO
>>560
くだ質で聞け。
0562login:Penguin03/01/05 18:21ID:qGyrapmd
ほとんどモジュールにして、
どうして2Mもいくのかが不思議だ、、、
0563login:Penguin03/01/05 18:39ID:CxZrKX7Y
2.5.54だからかな...
0564login:Penguin03/01/06 02:25ID:polLPkwq
FreeBSDなのでスレ違いかもしれませんが、、、
カーネルを間違って、削除してしまいました・・・(TT;
(ファイルを整理していたら、誤ってrm /* を実行してしまったようです。)

カーネルを修復する方法はありますでしょうか??

当然の如く、再起動したらカーネルが見つからないと言われ、起動できなくなってしまい。
WEBで調べましたが、再構築の情報ばかりで、削除してしまった場合の対処方法はあまり載ってませんでした・・・

重要なデータが残って、仕事に影響が出るので、再インストールは避けたいのですが、
すいません、助けて下さい。。。
0565login:Penguin03/01/06 02:40ID:+ybouD2I
>>564
スレ違いじゃなくて板違い
http://pc.2ch.net/unix/

rootでファイル整理か。おめでてーな。
0566login:Penguin03/01/07 16:55ID:YuiOuLjn
>>564
http://pc.2ch.net/test/read.cgi/linux/1033652217/l50
0567login:Penguin03/01/09 02:42ID:2Y8NA8K9
IPの記録はまじでやめてほしい
0568login:Penguin03/01/09 04:13ID:qciTMwbB
泣くなよw>ID:ZBsKvw39
0569login:Penguin03/01/13 21:12ID:+j4oRwV/
Kernel 2.4.20でUDFのPacket Writeを有効にしたいんですが、
どうしてもチェックが入りません。なんで?
0570login:Penguin03/01/13 22:30ID:oIjkg+Y+
>>569
CONFIG_EXPERIMENTALを有効にしないとダメらしいが。
0571login:Penguin03/01/13 23:53ID:+j4oRwV/
>>570
くだらないこと聞いてスマソ。。。
0572山崎渉03/01/15 11:22ID:dWXij4Sa
(^^)
0573login:Penguin03/01/17 22:57ID:quy9Xyzw
全貌を現したLinuxカーネル2.6[前編]
 〜 エンタープライズ向けに刷新されたカーネル・コア 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_01a.html
0574login:Penguin03/01/17 23:37ID:eB0uQzq3
>>573
未来の日付が。。。
0575login:Penguin03/01/18 01:25ID:xFnceJeM
>>574
あそこはいつも翌日の日付を付けてるみたいだ。
こまかいことは気にせず、まぁ読んでみ。

あ、図が動いてる。
0576login:Penguin03/01/20 12:36ID:+ihWiA7A
後編期待age
0577login:Penguin03/01/26 14:47ID:/P1ziCIb
これのPDFはよさゲです。
http://slashdot.jp/linuxkernel/03/01/23/0722212.shtml?topic=2

Understanding the Linux Kernel, 2nd Edition(第二版です)
http://www.oreilly.com/catalog/linuxkernel2/
0578henoheno ◆g2j80BX5do 03/02/05 04:36ID:az2yyDu5
こんにちは。

 MINIX, Linux 0.x / 1.x, ITRONの様な、主に参照しにくい
ソースをCVSリポジトリに入れてWWW上で公開しています。
 CVSリポジトリの実体も別の場所で公開しています。
学習・実験用にご自由にお使い下さい。

 ttp://minix-up.sourceforge.jp/cgi-bin/l.cgi/

※上記にある全てのリポジトリは下記ツールのための
 テストビルドであり、正確さを保証するものではありま
 せん

 ttp://cvsknit.sourceforge.net/
057955403/02/10 09:52ID:XA+hpjDH
>555
今日久々にコンパイルの問題を考えてみました。
するとnetでgccの代わりにkgccを使えばいいとあったので
つかってみたら、何の問題もなくコンパイルできました。

カーネルを全然知らない香具師のぼくには、何でかの原因は
わかりませんが、とにかく解決してよかったです。

以上報告終りです。
0580login:Penguin03/02/10 11:16ID:Ytep6YkN
>>579
赤帽ですか。
gccのバグに引っかかって失敗すると言うやつですな。

0581login:Penguin03/02/22 01:02ID:Aw4V0i4X
全貌を現したLinuxカーネル2.6[中編]
〜 サポート・アーキテクチャ/デバイスの拡充 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_02a.html
0582login:Penguin03/02/22 05:16ID:IqNw328W
こんにちは.
最近カーネルの勉強をし始めました.バージョンは2.4.18です.

手始めにprocファイルシステムのインターフェースを使って,
タイムエポックからの経過時間を読みとるモジュールを書こうと思っています.

で,時間に関するグローバル変数xtimeの定義を調べると,
/usr/src/linux/include/linux/sched.hにexternで外部参照しています.
http://lxr.linux.no/source/include/linux/sched.h?v=2.4.18#L576
これはどこのやつを参照しているのですか?
/usr/src/linux/kernel/timer.cのやつでしょうか?
http://lxr.linux.no/source/kernel/timer.c?v=2.4.18#L35
timer.c:35 struct timeval xtime __attribute__ ((aligned (16)));
というか,カーネルヘッダファイルの変数はexternで参照しているやつが多いですが,
それは何か理由があるのですか?
0583login:Penguin03/02/22 06:21ID:OJUfFhm2
> これはどこのやつを参照しているのですか?
そこで正解。
基本的にカーネル内は一つの名前空間で作るので、どこのxtimeもそこを参照します。
> それは何か理由があるのですか?
.h といえば extern か static inline だろー。それ以外に何を期待したの?
0584login:Penguin03/02/22 15:40ID:RdpbwtMM
レスありがとうございます.
>583
>.h といえば extern か static inline だろー。それ以外に何を期待したの?
externは「参照」であって「定義」ではないわけですよね.
なぜヘッダファイルでexternをつけないで「定義」していないのかなあと思いまして.
__attribute__で16バイト境界にxtimeを割り当てるのは.hファイルではできないとか?
static inlineって普通のstaticとどう違うのですか?
0585login:Penguin03/02/22 19:31ID:U6el7Ruf
>>581
またアニメーションGIFが使われとるね。
後編が楽しみage
0586login:Penguin03/02/22 20:48ID:mMuNz1JW
>>584
そもそもexternなんて付けなくてもいいんだから。
けど一応付けとくのが作法とされてるだけでは?
0587>58603/02/22 22:05ID:kUvFWPe5
C言語では,
何も付けずに外部変数を宣言→実際にその変数のために記憶領域を割り当てる=定義
externをつけて外部変数を宣言→その変数のために記憶領域を割り当てない=参照
というのがルールですよね?
その意味で付けると付けないのとは全く意味が違うと思うのですが・・
(実際にminixではEXTERNというマクロを宣言して区別しています)
それともLinuxは特別なルールがあるのでしょうか?
0588login:Penguin03/02/22 22:57ID:VOGO6EsT
>>587
.hの中で実体を定義すると、二ヶ所でインクルードした時悲劇がおきます。
と言うことでいいのかな?
気にした事ないけど、.hでは実体を作らないルールなんでしょうね。
0589>58803/02/23 01:52ID:6VcEAka+
>気にした事ないけど、.hでは実体を作らないルールなんでしょうね。
そうなのですか.ありがとうございました.
実体の定義が一カ所にまとめられていないのを初心者なので何となく気持ち悪く思って.
ここの掲示板は親切に答えてくれる人が多いのでいいですね.
他に日本語でカーネルに関するページ
(JFなどの一般的な情報ではなく疑問を掲示板などで活発に議論しているところ)
を教えていただけると嬉しいです.
0590login:Penguin03/02/23 20:25ID:7b0qPt9M
>>584
そのexternの行はきっと参照ではなく宣言です。プロトタイプ宣言。
宣言は .h に
定義は .c で .hをインクルード(このときexternは嘘だが無視)
参照は .c で .hをインクルード
だろー。
なおstatic inline は、externに定義/参照されない真のinlineですよ。
だから 実体を定義をしてはいけない .h 内に書いても大丈夫。

>>587
嘘を無視なのでEXTERNはつかわないみたい。
ただし、extern inlineの場合は一箇所で定義して、他で参照しないといけな
いので、EXTERN_INLINE をdefineする例があるみたい。asm-alphaあたり参照。
0591login:Penguin03/02/23 20:27ID:7b0qPt9M
>>589 補足
あ、「linuxのカーネルでは」という話ね。嘘を無視するかどうかは特に。
0592>590,59103/02/23 23:24ID:OBPg6wzG
「嘘を無視する」というのはexternを使って参照宣言をしたくせに,
実体定義を同じモジュールでやるということですよね?
0593login:Penguin03/02/24 00:53ID:7yiUwah3
>>592
うん。そういう意味(外と宣言しておきながら中で定義をする)で使ったの。
Cの仕様もgccの仕様も読んだことないので、正しくないのかどうかは知らないの。

0594login:Penguin03/02/24 16:17ID:sjK/nEKg
>>593
ありがとうございました.
0595login:Penguin03/02/25 23:59ID:o0sc4vrn
カーネルの前にC言語を勉強するひつおうがあるのではないかもし
0596login:Penguin03/02/26 05:17ID:xM3Oh9Db
自分で書いたカーネルモジュールがコンパイルできません.
自分で書いたコードより以前のヘッダファイルで大量のエラーが出ます.
kernel-sourceもkernel-headersもあるし,includeファイルもリンクされているのですが・・
(以下statの出力の抜粋)
File: "/usr/src/linux" -> "linux-2.4.18"
File: "/usr/include/asm" -> "../src/linux/include/asm"
File: "/usr/include/linux" -> "../src/linux/include/linux"
何かファイルがないのかと思い,試しにカーネルをコンパイルしてみましたが,
何の問題もなくカーネルイメージを作成できました.

ネットで調べてみましたが,コンパイルでつまずくことはあまり無いらしく,
原因を突き止められませんでした.
また,ネット上のカーネルモジュールのサンプルコードを使ってコンパイルしたときも
ヘッダファイルに大量のエラーが出て,コンパイルできませんでした.
考えられる原因は何でしょうか?
どうか宜しくお願いします.
0597login:Penguin03/02/26 06:20ID:aNK4cICn
-I/usr/src/linux/includeを付けるとコンパイルできました.馬鹿すぎる・・
すいませんでした.あまり本は信用できませんね.

ってか,シンボリックリンク張ってるのになぜ??
0598login:Penguin03/02/26 06:26ID:awPWSoM5
>>597
$ man gcc
$ info gcc
0599login:Penguin03/02/26 22:59ID:5ThntVhs
>>598
マニュアルは質問する前に読みました.
問題は"/usr/include/linux" -> "../src/linux/include/linux"
というシンボリックリンクが張られているにも関わらず,
gccで-Iオプションを付ける必要があったということなんですが・・
0600login:Penguin03/02/27 00:58ID:1e6KPqQp
私も同じsymlink貼ってあるけど-Iなしでちゃんと動くよ?
0601login:Penguin03/02/27 04:16ID:a1jqWrjy
>>600
はい.カーネル本やサイトでのコンパイルの書式にも-Iオプションは含まれていませんでした.
シンボリックリンクがあるから当然なことかもしれませんが.
カーネルコンパイルの時にモジュールもコンパイルしたのですが,その時には-Iオプションを
付けていたのでもしかしたらと思い,-Iオプションを付けるとコンパイルできたのです.
0602login:Penguin03/02/27 13:43ID:t9JDv6rv
>>>601
リンク張った先がincludeの検索パスに入っていなかったとか。
0603login:Penguin03/02/27 21:05ID:K7wez/ac
>>602
/usr/includeがパスに入っていることは確かです.
他のユーザプログラムはちゃんとコンパイルできましたから.
/usr/includeがパスに入っていれば#include <linux/kernel.h>とすれば,
/usr/include/linux/kernel.hがインクルードされると思うのですが・・
で,"/usr/include/linux" -> "../src/linux/include/linux"なので,
/usr/src/linux/include/linux/kernel.hがインクルードのはず.謎です.
0604login:Penguin03/02/27 22:07ID:U6VMdoGi
>>603
asmは?
0605login:Penguin03/02/27 23:34ID:ysi2QcED
"/usr/include/asm" -> "../src/linux/include/asm"
"/usr/src/linux/include/asm" -> "asm-i386"
です.ちなみに今回のモジュールは>>582のやつです.
asmはincludeしませんでした.
コンパイル後は正常に動作しています.
0606login:Penguin03/02/28 00:14ID:oFO1qwF8
>>605
おぷしょんは? -nostdinc がついてるとかいわない?
0607login:Penguin03/02/28 03:36ID:Ph9QX781
>>606
-Iオプションを付けない場合のエラーの行数が膨大すぎてよくわかりません.
出力のリダイレクトもできないようですし・・・
試しに-nostdincを付けてコンパイルするとincludeファイルが無いという
エラーが出るだけです.
0608login:Penguin03/02/28 12:46ID:oFO1qwF8
>>607
ちょっとまった。
もとのエラーはなに? includeファイルがないってエラーじゃなかったのかな?
それと、リダイレクトなら make >& ファイル でできるとおもう。
0609login:Penguin03/02/28 13:55ID:ij45/eSj
>>608
includeファイルがないので、そこでの宣言に依存する部分が
山ほどエラーになるって事では?

>>607
リダイレクトするなら、-v付けて途中経過も見れた方がいいかも。
0610login:Penguin03/02/28 16:12ID:HFAciNpD
>>608
>もとのエラーはなに? includeファイルがないってエラーじゃなかったのかな?
はい.ヘッダファイル内での大量のparse errorやundeclaredです.

>>608,609
結局端末のスクロール行数をでかくして見てみました.エラーは
/usr/include/linux/kernel.h:73: parse error before `size_t'
/usr/include/linux/kernel.h:75: parse error before `size_t'
/usr/include/asm/string.h:47: parse error before `size_t'
/usr/include/asm/string.h: In function `strncpy':
/usr/include/asm/string.h:61: `src' undeclared (first use in this function)
/usr/include/asm/string.h:61: (Each undeclared identifier is reported only once
/usr/include/asm/string.h:61: for each function it appears in.)
/usr/include/asm/string.h:61: `dest' undeclared (first use in this function)
/usr/include/asm/string.h:61: `count' undeclared (first use in this function)
.....という感じです.
0611login:Penguin03/02/28 18:52ID:Mjgg1ddG
>>610
わかったよ、ママン
0612login:Penguin03/03/01 00:24ID:jndZSd0z
>>610
/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
ユーザプログラムで使うヘッダだよ。

あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
0613login:Penguin03/03/02 03:29ID:Lshpa1Id
>>612
>/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
>ユーザプログラムで使うヘッダだよ。
そうだったのですか.
カーネル空間のプログラムを作るときは使うべきではないのですね.

>あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
そうします.リンク先をミスするのを防ぐためですね.

ありがとうございました.
0614login:Penguin03/03/02 05:04ID:FJ0TV1/o
>>612
マジスか。知らんかった・・・
というかどこかで
/usr/include/linux -> /usr/src/linux/include/linux
とすべし というのを見たことがあったので鵜呑みにしてた
ちょっと調べるかな
0615login:Penguin03/03/02 14:03ID:Oyof/yxm
カーネルのincludeのなかでも、カーネル用とユーザでも使う定義と混在して
いて#ifdef KERNEL 等できりわけてあるの。で、glibcとkernelの開発が順調
ならここは同期するので、コピーしてもいいのですよ。
新しいカーネルで古いglibcを使うとかなると、だめになる状況が発生するの。
glibc はパッケージ化するときに glibc-kernelheaders として、その glibc
をコンパイルしたときに期待したカーネルのヘッダをとりこむので、どっちかっ
ていうとこっちを使ったほうが安全だけど、基本的にはlibcはカーネルと合せ
てつくらないとだめです。
0616login:Penguin03/03/10 22:33ID:/SdozaOc
全貌を現したLinuxカーネル2.6[第3章]
 〜 ファイルシステム/ボリューム管理機能の進化 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_03a.html
0617 03/03/10 22:36ID:2NUIK5HA
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/
0618login:Penguin03/03/17 21:44ID:7QyIeJjo
全貌を現したLinuxカーネル2.6[第4章]
〜 IPv6、UML、セキュリティ機能の統合 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04a.html
0619login:Penguin03/03/19 03:08ID:suPCGW2S
2.4把握もしてないのに…厳しい
0620login:Penguin03/03/19 11:34ID:N7reRNVS
オライリーの「詳解Linuxカーネル」で勉強中なのですが、
この本はKernel2.2用にかかれています。
2.2を学んだあと、2.4になって変更された部分などを知るのに適した
書籍などってありますでしょうか?
0621login:Penguin03/03/21 00:19ID:DvPk6Xi8
まずはコレでも読んでおいて
http://www.changelog.net/log/1999/special/wwol2.4/
0622Jet Charles03/03/25 20:22ID:Px5e54WH
カーネルモジュールに定義する関数で大きめの構造体を渡す
とときどきpanicになってしまいます。再現性が低いのですが

構造はstruct {unsigned int spectrum[2048],int start,int end};
な感じです。

ポインタで渡すことにしたら問題は無くなったかに見えるのですが、
いまいちピンとしません。

C言語ではこういう配列わたしちゃいけないのですか?(仕様など)
or
カーネルではいけないのですか?(サイズなど)

ユーザスペースで動くテストプログラムはうまく走るので
バグ混入を恐れつつ開発継続中。

どなたかご存知の方がいればよろしくお願いいたします。
0623login:Penguin03/03/25 21:03ID:fjRYSSzY
>>622
カーネルスタックはそんなに容量ないです。
でかい領域が欲しければ、素直にkmallocしましょう。
0624名無しさん@Emacs03/03/25 22:11ID:7wu3YUNo
>>622
カーネルスタック小さいからだめ。Cの仕様ではかまわない。
でもね。実際的にはだめ。コストを考えなさい。
0625Jet Charles03/03/27 06:23ID:Kwn8SiQb
ありがとう。>623、624
おかげで不安は減りました。
スタックのサイズは同時にはしる全てのモジュールが
関わるにもかかわらず、OSが落ちるというのも考え
ものですね、、
0626login:Penguin03/03/27 08:09ID:10DBd27v
>625
なんのためのオープンソースなのですか?このプロセスがあるから、
キミのような腐ったモジュールが排除されるのです。
lkmlでは自動的にスタックをたくさん使っている関数を列挙するツールや、
それで見付かったスタック喰いの関数の書き直しを精力的にやってますよ。
0627名無しさん@Emacs03/03/27 08:11ID:AAL7v3K2
>>625
確かに、ユーザ空間のようにスタックを保護してくれると便利かもしれないの
ですが、OSだったりファームウェアの場合は必ず、ユーザアプリも多くの場合
は、スタックの量を、事前にちゃんと設計しないとだめです。
それに、残念ながら、Linuxではドライバは、スタックに限らず、どんな破壊
工作でもできるので、スタックだけ保護してもさほど意味ないのですよ。弱ー。
0628login:Penguin03/03/27 13:25ID:mo6iAXIT
>>625
ドライバでそういう事するのが、そもそも間違っているという説もあります。

>>627
カーネルとドライバが同じ権限で動いている限り、どのOSでも避けられない問題のような気がしますが。
0629login:Penguin03/03/28 14:56ID:LjzZGjYj
>>628
2.6からなんとかする模様
0630名無しさん@Emacs03/03/28 23:27ID:tgiw/vfZ
>>627 > カーネルとドライバが同じ権限で動いている限り、どのOSでも避けられない....
うん。つまり、カーネルとドライバが違う権限で動いているOSでは避けられる。
0631名無しさん@Emacs03/03/28 23:28ID:tgiw/vfZ
あうん。レス先まちがった。>>628 の誤記。
0632山崎渉03/04/17 12:11ID:PWISM87M
(^^)
0633山崎渉03/04/20 06:09ID:X64WTq1+
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0634login:Penguin03/05/04 17:20ID:ide68tWq
そろそろ、2.6の季節なのですが。
0635login:Penguin03/05/06 20:57ID:/f1wWtEt
http://japan.linux.com/kernel/
にLinuxカーネルについての解析資料が移動したらしい。
0636login:Penguin03/05/14 17:38ID:+1wC02Dw
インテル C++ コンパイラ で最適化したバイナリ群で構成されたディストリビューションってありますか?
あるいはgccでガチガチ最適化カマしたやつとか。
0637ヽ(´ー`)ノ03/05/15 09:38ID:MQgHohK4
>>636
Intelコンパイラは知らないけど、gcc で最適化するのなら自分でリビルドすればいいのでは?
イマドキのマシンなら30分くらいで終わるっしょ。

// 俺のじゃ丸半日掛かるけどなー
0638login:Penguin03/05/15 20:15ID:tl6lLPOq
>636

そんな貴方にGentooLinux

(iccも使える、、と思うけど、そっちはよーしらん)
0639login:Penguin03/05/15 21:50ID:fOOiJy16
>>636
なぜCではなくC++? なのかは置いておいて、
今のバージョンのintel C compilerだとLinux kernelがコンパイルできんので無理。
というか羊頭狗肉になっちまう。
次期バージョンでkernelがコンパイルできるようになったら
それを売りにするディストロも出てくるかもな。

gcc最適済ディストリは今は無き?stampede Linuxがやってたが、
gentooとかなら自分でできるだろ。
0640山崎渉03/05/22 02:18ID:VfjbtMwi
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0641login:Penguin03/05/24 02:05ID:pFXNmjMb
プロセスディスクリプタ構造体task_structに新しいメンバを加えたいのですが,普通に加えても大丈夫でしょうか?
ソースのコメントに「これらのオフセットはハードコードされている.注意して扱うように.」みたいなことが書いてあるのですが.
0642login:Penguin03/05/24 02:12ID:B4Q+JvDP
>>641
忠告に従ったほうがいいかも。
どっかの地雷をふむかもしれないよ。(w
0643login:Penguin03/05/24 02:46ID:Ac66WbG3
>>641
archによる。
アセンブラのコードで直接見ていることがある。
Cの方はオフセットがずれて困るところはないはず。

0644login:Penguin03/05/24 03:01ID:B4Q+JvDP
>>643
いぁ、ちょと見てみたんだが。
Cでtask_struct構造体ポインタに対してaddする個所があった。(ちなみにi386ね)
grepしてみたけど修正してできない量ではない。
けど、結構気をつけないといけないかも。
0645初めて03/05/24 11:12ID:3ITeRmp+
今カーネルの再構築しているのですが、
何度やっても
Uncompressing ... Ok,booting the kernel.
で止まってしまいます。
理由がわかりません。
なにかチェックする項目を飛ばしているのでしょうか?
2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。

これだけでの情報では原因を推測することは無理でしょうか?
OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
どなたかアドバイスを頂けないでしょうか?
よろしくお願いします。
064664303/05/24 11:21ID:Ac66WbG3
>>644
そんな所あったっけ?
しばらくi386依存部分は触っていないから、記憶が薄れつつあるなー。

>>645
おとなしく2.4.20を使う。
2.5.69はハードウエア構成によっては、そういう問題がおきます。
0647login:Penguin03/05/24 14:44ID:im3d3bk6
>>645
問題が起きたらデバッグしてください。2.5シリーズというのはそのためのものです。
064864403/05/24 15:13ID:PMIRyT6T
>>646
copy_thread関数での以下の個所

int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
    unsigned long unused,
    struct task_struct * p, struct pt_regs * regs)
{
    struct pt_regs * childregs;

    childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1;
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ここ
064964403/05/24 15:31ID:PMIRyT6T
>>645
>2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。
>これだけでの情報では原因を推測することは無理でしょうか?
>OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
make oldconfigではなくmake mrproperからmakeしてみては?
065064303/05/24 17:06ID:Ac66WbG3
>>648
ああ、それか。
先頭アドレスを使うだけなので、サイズが変わっても問題なし。
065164403/05/24 19:06ID:PMIRyT6T
>>650
ん、そうか。
これは、最適化するためのページサイズでのコピーか。
スマソ
065264503/05/24 19:30ID:3ITeRmp+
すいません。初歩的な質問なのですが、
make oldconfig
というのは、
そのフォルダにある、.configをもとにして足りない所を補い,新たな.configを
作成するというのであっているのでしょうか?
そのとき作成にしようした.configはoldとかにリネームして。

よろしくお願いします。

■ このスレッドは過去ログ倉庫に格納されています