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

[debian-users:33087] Re: driver-X.bin の作成法は?



佐野@浜松です。

In <200205210556.0053EF890330000.oni.ME@xxxxxxxxxxxxxxxxxxxxxxx>,
  on "Tue, 21 May 2002 14:56:49 +0900',
   with "[debian-users:33060] Re: driver-X.bin の作成法は?",
 oni@xxxxxxxxxxxxxx (Takenori Higashimura) さん wrote:

> ヘッダの内容はわかりやすいように思いましたよ。後に述べるビルド
> より楽かも。特にオリジナルのカーネルに対するビルドは大変です。

お疲れさまでした。次からは README を読んでもらえると
もうすこし楽ができるかもしれません。

> 弊社では、woody でビルドしました。しかし、ビルドにたどり着くまではなかなか
> 大変でした。もしトライするなら、以下の手順でやってみてください。
> 
> ----------------------------------------------------------------
> (1) 展開の後、make check を実行する
> ビルドに必要なパッケージが指摘される
> 
> (2) make check で指摘された必要パッケージを全てインストールする。
> 弊社の場合、20個近く新たにインストールしました。このとき、必要パッケージのうち
> いくつかが「|」で複数候補の選択で表示されますが、このうち「utf8」を含む
> 名前のパッケージの方を選択しないとだめでした。理由は分かりません。

config ファイルの

# whether to use the language chooser in dbootstrap for kernel flavours that
# support it, `true' or `false'
ifneq (,$(filter $(architecture),i386 arm powerpc ia64 m68k hppa))
    export USE_LANGUAGE_CHOOSER := true
    export LC := true
else
    export USE_LANGUAGE_CHOOSER := false
    export LC := false
endif

により、i386 の場合は Language-Chooser がデフォルトで
有効となります。

Language-Chooser は日本語を含む各国語のメッセージを
同じコンソールターミナルで表示させるために UTF8 な
フォントを利用しています。このため、Slang や Newt など
 dbootstrap が使うライブラリも UTF8 対応版が必要に
なります。

逆に Language-Chooser を使わない環境の場合、make/checks の

check_non_i18n:
#        if utf8 packages are installed and we're not doing an i18n build,
#        that's bad
ifneq ($(USE_LANGUAGE_CHOOSER), true)
        @echo "checking for i18n packages which will mess up non-i18n build"
        @perl -e \
          '%M = ("libnewt-utf8-0"=>1, "libnewt-utf8-pic"=>1,  \
                 "slang1a-utf8"=>1, "slang1-utf8-pic"=>1); \
           $$/ = "\n\n"; \
           @Q = (); \
           while (<>) { \
             /^Status: \S+ \S+ installed$$/ms or next; \
             /^Package: (\S+)/ms && $$M{$$1} && push(@Q, $$1); \
           } \
           foreach my $$q (@Q) { \
             print "  found $$q\n"; \
           } \
           if (@Q) { \
             print "To remove these packages: apt-get remove ", \
               join (" ", @Q), "\n"; \
             exit 1; \
           }' /var/lib/dpkg/status
endif

により、utf8 版のパッケージをシステムから削除するよう
警告されます。

> (3) make
> この段階でダウンロードサイトから必要パッケージをさらにダウンロードする
> ようです。デフォルトでは、(config ファイルに記述)、http.us.debian.org
> がダウンロードサイトになっていたように思います。デフォルトでは、
> 関係するカーネルイメージを全て(全てのアーキテクチャに対して)
> ダウンロードするので、細い回線ではたいへんです。あらかじめ、config を
> 変更して、対象を限定しておかないといけません。

## Debian mirror we can download from, must be http://, ftp:// or file://
##
export MIRRORS  := http://http.us.debian.org/debian

の箇所ですね。

> ----------------------------------------------------------------
> でも、ここで大事なことですが、コンパイルオプションを変更したオリジナルの
> カーネルに対しては、この手順が使えないことなのです。すなわち、(3)の段階で、
> 例えば、kernel-image-2.4.18-bf2.4_2.4.18-5_i386.deb など公式のカーネルイメージ
> をダウンロードして、それから各種のディスクイメージを作成する手順になって
> いるからです。そのため、もしこの方法でオリジナルのカーネルイメージから
> ビルドするとすれば、次の手順が必要になってしまいます。

実は README ファイルをじっくり読んでもらうと

- If you have any local packages you need to use, you can put them in
  the directories specified with the variables 'incoming' or 'local_dir'
  from the file 'config'.  In the 'make localfiles' step those will be
  copied to a 'updates' dir.

と書いてあります。

config ファイルには

## file locations
##

# Top-level directory where we will look for external stuff required
# to build the boot-floppies.  It has to be an absolute PATH or else
# the basedisks.sh script will fail.
ftp_archive     := /archive/debian

# files from Incoming; note they must be named *_all.deb or *_<arch>.deb
incoming        := $(ftp_archive)/Incoming

# if you want another place to look for updates, i.e., local packages;
# these files are just *.deb
export local_dir        := $(ftp_archive)/local

# tools, such as rawrite2 (i386 only)
tools_dir       := $(ftp_archive)/tools

# where required .debs are downloaded
## FIXME: is the export really helping here
export archive  := $(ftp_archive)/download

とありますから、デフォルトの状態なら /archive/debian/local に
ローカルパッケージを置いておけば、そちらが使われるように
なるはずです。

ちなみに rootdisk の中にも Kernel module が置かれたりすることが
あるので、自分で作成したカーネルを使う場合は全部作成しなおした
ほうが良さそうな気もします。

> ----------------------------------------------------------------
> (4) 専用のダウンロードサイトを作成し、そこにオリジナルのカーネルイメージ
> (+ kerenel-headers + pcmcia...)を何かの公式のフレーバーの名前を借用して
> 置く。このサイトは、ftp でなく http でなければならなかったかも。

> もし、オリジナルのフレーバーを作成する場合は、Makefile を含む多くの
> ファイルの変更が必要です。

Flavor までいじろうとすると、たしかに面倒ですね。

-- 
 # (わたしのおうちは浜松市、アカウミガメのふるさとの街)
   <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)