Debian Installer images with a custom kernel
http://www.lifeflow.jp/wiki/index.php?Debian%20Installer%20images%20with%20a%20custom%20kernelDebian 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にイメージが出来ている.