[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:48352] Re: etch版d-iのpreseedファイルでGRUB/LILOをスキップする方法
有家@松山記念病院@自己レスです。
さきほど何とかlilo-installerをskipできました。
くるし紛れのチカラ技で、本当にこれでいいのかどうか不安ですが、
私の方法を整理してみます。
●目的: etch版d-iでGRUB/LILOのインストールをskipする。
●方法: /usr/lib/post-base-installer.d 以下に
「/var/lib/dpkg/info/lilo-installer.isinstallable に "exit 1" を
上書きし、これに実行属性を与える」ためのashスクリプトを書く。
●疑問点:
後述する上記スクリプトに 80skip-lilo-installer という名前をつけてみました。
この最初の数字は処理される順序を表わすものと思われますが、
"80" が妥当なのかどうかよくわかりません。
これは /usr/lib 以下の他のディレクトリに置く方がより適切なのかも知れません。
このあたりはd-iの動作(処理の順序)をよく知らないため、
まったくのヤマカンです。
●詳細:
GRUBのmenu.lstでは以下のようなエントリーでd-iを起動します。
- menu.lst(一部)------------------------------------------
..
title Install Debian4.0 Etch with IDE-HDD#1
root (hd0,0)
kernel /etch/boot/vmlinuz root=/dev/ram devfs=mount,dall \
vga=0x305 \
ramdisk_size=10000 \
DEBIAN_FRONTEND=newt \
debconf/priority=high \
debian-installer/locale=en_US \
console-keymaps-at/keymap=jp106 \
preseed/file=/hd-media/etch/cfg/myconf.cfg
initrd /etch/boot/initrd.gz
..
------------------------------------------------------------
この同じ(hd0,0)のパーティションに debian-40r0-i386-netinst.iso を置き、
/etch/cfg/myconf.cfg のGRUB/LILO 前後の記述を次のようにします。
- myconf.cfg(一部)--------------------------------------------------
..
d-i grub-installer/skip boolean true
d-i preseed/early_command string /hd-media/etch/install/di_early.sh
d-i nobootloader/confirmation_common note
..
d-i preseed/late_command string /hd-media/etch/install/di_late.sh
..
----------------------------------------------------------------------
これらの行の順序はあまり関係ないのかも知れません。
d-iが適宜、処理しているようにも思えます。
/etch/install 以下には、次のような内容の di_early.sh と di_late.sh を置きます。
- di_early.sh ------------------------------------------------------
#!/bin/sh
infdir=/var/lib/dpkg/info
lisf=$infdir/lilo-installer.isinstallable
pstdir=/usr/lib/post-base-installer.d
cmdf=$pstdir/80skip-lilo-installer
# create '80skip-lilo-installer' under /usr/lib/post-base-installer.d
if [ -d $pstdir ]; then
echo "echo exit 1 > $lisf" > $cmdf
echo "chmod 755 $lisf" >> $cmdf
chmod 755 $cmdf
fi
# always exit successfully
exit 0
# end of di_early.sh
--------------------------------------------------------------------
この di_early.sh が、冒頭に述べた
「/var/lib/dpkg/info/lilo-installer.isinstallable に "exit 1" を上書きし、
これに実行属性を与える」ためのashスクリプトです。
このあとの di_late.sh は ramdisk環境を
/target/root/var 以下に保存するためのスクリプトで、
これがけっこう解析に役立ちました。
本題とは直接関連しませんが参考までに載せてみます。
- di_late.sh -------------------------------------------------------
#!/bin/sh
target=/target
ramdir=/root/var/d-i_ramdisk
# copy d-i files under /root/var/d-i_ramdisk
mkdir -p $target/$ramdir
for i in /*; do
case $i in
/bin | /etc | /lib | /root | /sbin | /tmp | /usr | /var )
cp -a $i $target/$ramdir # recursive copy
;;
* ) # file copy and make dummy directory
test -f $i && cp -p $i $target/$ramdir
test -d $i && mkdir -p $target/$ramdir/$i
;;
esac
done
# always exit successfully
exit 0
# end of di_late.sh
--------------------------------------------------------------------
svnでd-iのソースをダウンロードして、その厖大さに圧倒されていました。
ソースを読めばもっと確かなことが言えるとは思うのですが、力尽きました。
--
pba00250@xxxxxxxxx
-------------------------
有家佳紀 Yoshinori Ariie