[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:14046] Re: [Q] make bzdisk



日下部%裏稼業は M$ Windoz の設計・開発者です。

会社来てもやる気がないのでちょっと調べました。(こら

>>> Wed, 22 May 2002 06:18:52 +0900 (JST) 頃に
>>> fb9c-hgc@asahi-net.or.jp(HIGUCHI Chihiro) さんは書きました
> 
> 樋口です.
> 
> From: KOJIMA Mitsuhiro <kojima@linet.gr.jp>
> kojima> このメッセージは bzImage じゃなくて zImage のころの話じゃないかな?
> 
> 手元の 2.4.18 で確認しましたが,make bzImage すると
> 
> tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage
> Root device is (3, 5)
> Boot sector 512 bytes.
> Setup is 2634 bytes.
> System is 1215 kB
> warning: kernel is too big for standalone boot from floppy
> make[1]: 出ます ディレクトリ `/usr/src/linux-2.4.18/arch/i386/boot'
> bash-2.04# 

試したところ、確かに余りにでかいと出るみたいです。失礼しました。
でも 915KB 程度の bzImgage では no warnning でも、NGでした。

どうやら判定が甘い模様ですね。
気になったので解析してみると、
/usr/src/linux/arch/i386/boot/tools/build.c
にこんな行が…

        sz = sb.st_size;
        fprintf (stderr, "System is %d kB\n", sz/1024);
        sys_size = (sz + 15) / 16;
        /* 0x28000*16 = 2.5 MB, conservative estimate for the current
maximum */
        if (sys_size > (is_big_kernel ? 0x28000 : DEF_SYSSIZE))
                die("System is too big. Try using %smodules.",
                        is_big_kernel ? "" : "bzImage or ");
        if (sys_size > 0xefff)
                fprintf(stderr,"warning: kernel is too big for
standalone boot "
                    "from floppy\n");

なんだ 0xefff ってのは?! って感じです。

(sz + 15) / 16 > 0xefff → sz > 0xefff * 16 - 15 = 983009Bytes
つまり、この警告が出る境界は 983009 / 1024 ~= 959.97KB となりますね。

実測値とずれているのはなんでですかね。
-- 
//                   東京都練馬区   ぶるぼん企画                   //
//                 日下部 俊昭 <kusakabe@reccoa.net>               //

References
[plamo:14038] Re: [Q] make bzdisk, KUSAKABE -bourbon!- Toshiaki
[plamo:14041] Re: [Q] make bzdisk, KOJIMA Mitsuhiro
[plamo:14044] Re: [Q] make bzdisk, HIGUCHI Chihiro

[検索ページ] [メール一覧]
Plamo ML 公開システム