Debian Installer images with a custom kernel

カスタムカーネルを用いたDebianインストーライメージ(CDイメージなど)の作成法.
VAIO Type S(VGN-S92PS)にDebianをインストールしようとしたが,HDDが認識されずに困ったことから作成することに.

(1) DebianInstallerModify - DebianWiki
(2) Building Debian Installer images with a custom kernel
上記のサイトを参考にした.以下の手順は(2)を日本語訳したものに近い^^

準備

  • Debian sid環境(sargeでも可能かな)
  • aptで各パッケージを最新にしておく(e2fs〜系が古く,kernel-wedgeが止まることがあったため)
  • kernel-wedgeパッケージ

Step 1. Kernel deb

インストールに使用するkernelを用意する.
今回はkernel-image-2.6.11-1-386を使用した(様々なモジュールが含まれている/ビルドする必要がないため).
自分でビルドする際は,devfs,initrd support,tmpfs,ext2を組み込んだconfigを用意し,make-kpkgを用いてdebを作ればよいだろう.

$ sudo apt-get install kernel-image-2.6.11-1-386

インストールするだけでよく,再起動する必要はない.

Step 2. Kernel udebs

linux-kernel-di-i386-2.6のソースパッケージをダウンロードし,解凍する.
(http://packages.debian.org/unstable/source/linux-kernel-di-i386-2.6)

$ mkdir /usr/local/src/d-i
$ cd /usr/local/src/d-i
$ wget http://ftp.debian.org/debian/pool/main/l/linux-kernel-di-i386-2.6/linux-kernel-di-i386-2.6_1.02.tar.gz
$ tar zxvf linux-kernel-di-i386-2.6_1.02.tar.gz

次にkernel-versionsファイルに使用するカーネルのバージョンを記述する.

$ cd linux-kernel-di-i386-2.6
$ vi kernel-versions
# arch   version  flavour       installedname        suffix build-depends
i386     2.6.11-2 386           2.6.11-1-386         -      kernel-image-2.6.11-1-386

と書いていたのだが,versionを2.6.11-2じゃなくて2.6.11-1にしないと,modules.depが存在しないinitrdが出来てしまう.
これはハマった.次が正しい.(ただ単に俺が勘違いしてただけ?)

# arch   version  flavour       installedname        suffix build-depends
i386     2.6.11-1 386           2.6.11-1-386         -      kernel-image-2.6.11-1-386
$ kernel-wedge build-all

上記でudebが作られるはずなのだが,missing module drivers/pcmcia/ds.oとエラーが出た.適当に対処する(汗

$ vi modules/i386/pcmcia-modules
drivers/pcmcia/ds.o ←削除

リトライ

$ kernel-wedge build-all

今度はsome modules are in more than one packageとエラーが出た.また,適当に対処する(汗
必要ない(と思われる)モジュールを削除.

$ rm modules/i386/pcmcia-storage-modules
$ rm modules/i386/serial-modules
$ rm -r debian/*-di

リトライ

$ kernel-wedge build-all

Step 3. Initrds and images

debian-installerのソースパッケージをダウンロードし,解凍する.
(http://packages.debian.org/unstable/source/debian-installer)

$ cd /usr/local/src/d-i
$ wget http://ftp.debian.org/debian/pool/main/d/debian-installer/debian-installer_20050317.tar.gz
$ tar zxvf debian-installer_20050317.tar.gz

次にbuild/config/i386.cfgファイルのKERNELVERSION_2.6フィールドを書き換える.

$ cd installer/build/
$ vi config/i386.cfg
KERNELVERSION_2.6 = 2.6.11-2-386

Step 2で作成したudebをlocaludebsディレクトリにコピーする.

$ cp ../../*.udeb localudebs/

ISOイメージを作成したいのでbuild_monolithic_2.6ターゲットを使用するのだが,デフォルトで無効となっていた.

$ vi config/i386.cfg
MEDIUM_SUPPORTED = cdrom netboot floppy hd-media monolithic ←#を外す
$ fakeroot make build_monolithic_2.6

またもやエラー.libdevmapper1.00-udebパッケージが見つからないらしい.調べたところlibdevmapper1.01-udebが存在していた.パッケージリストを書き換える.

$ vi pkg-lists/monolithic/common
libdevmapper1.01-udeb ←libdevmapper1.00-udebだった

リトライ

$ fakeroot make build_monolithic_2.6

ここで依存関係が解決できない(apt)系のエラーが出た場合,インストーライメージの作成に必要なパッケージが足りないことを示している. 対象のパッケージをapt-getすべし.

update-manifest dest/monolithic/2.6/mini.iso "small bootable CD image for network install"

と出れば成功.
dest/monolithic/2.6/mini.isoにイメージが出来ている.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 11 Sep 2005 17:28:29 JST (1784d)