あらいです。 Subject のように、Kernel 2.6.4 を導入してみました。 Vine のバージョンは、2.6 のツリーに対して apt で upgrade してるので、 2.6r4 相当になっていると思います。 以下の二つの方針のもとにやりました。 ・2.4.X でのブートもこれまで通りできるようにする ・ブート時の / への書き込みは避ける 手順は、以下の通り。 (1) カーネルを作成し、インストールする (2) module-init-tools-3.0 をインストールする (3) /etc/rc.d の下のファイルをいじる 順に行きます。 (1) 特に変わったことはしませんでした。ただ、どれもモジュールにはせず、必 要なものは全てカーネルに組み込んでしまいました。 最初は、module-init-tools への移行が面倒かなと思ったのでこうしたので すが、結局手間は変わりませんでした。 (2) 上記の方針に沿うように、modutils はそのまま残し(.old にする方式は避 けた)、/opt/2.6env というディレクトリを作って、そこにインストールしま した。 最初は /usr/local にしたのですが、/usr をマウントする前にも必要にな ることがわかり、/ に入れました。 #ちなみに私は FHS を読んでません(^_^;)。 (3) Kernel 2.6 のときだけ module-init-tools のコマンドを使用するように $PATH を設定しました。これには、/etc/rc.d/init.d/functions を変更しま した。差分を添付します。 なお、モジュール構成の変更に対応するため、$MODULECONF も変更していま す。Kernel 2.6 用に /etc/modules.conf.2.6 というのを用意しました。 同様に、rc.sysinit も変更しました。これも差分を添付します。 rc.sysinit では、カーネルパラメータ kernel.modprobe の設定を行う箇所 を移動してますが、これは、hwclock 実行時に kernel.modprobe を参照して いると思われるためです。 #ちなみに、Kernel 2.6.3 の時にはそのようなことはありませんでした。 更に、/etc/rc.d/init.d の下の各スクリプトも変更しました。 module-init-tools に含まれるコマンド(modprobe, lsmod など)をフルパ スで起動している箇所を、パス指定なしで起動するようにしました。$PATH は、 /etc/rc.d/rc が functions 経由で指定してくれている筈です。 関連して、/etc/rc.d/init.d/functions を呼んでいない場合は呼ぶように 変更しました。これは、rc からではなくコマンドラインから呼ぶときにも確 実に PATH が設定されるようにするためです。 #これは、Vine ではパッケージのアップデートが頻繁でないからできるのか #も知れませんね(^_^;)。 さて、以上の作業でとりあえず問題なく使えています。 ただ、murasaki その他、これまで BEEP音が鳴っていた箇所で音がしなくなっ てしまいました。 また、rc.sysinit の /proc/ksyms 関連の箇所の変更は、意味もわからずやっ ているので、正しいかどうかよくわかりません。 なお、本題とは離れますが、これまではモジュール es1371 の post-install でコマンド /bin/aumix-minimal を起動してましたが、カーネ ルに組み込んでしまったため、これは /etc/rc.d/rc.local に移動しました。 それでは、RFC(コメント求む)! -- 新井 俊一 <ARAI Shun-ichi> arai@xxxxxxxxxxx
--- functions 2004-03-08 23:04:30+09 1.1 +++ functions 2004-03-09 22:55:03+09 @@ -19,6 +19,10 @@ # First set up a default search path. export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" +case "`uname -r`" in +2.6.*) export PATH=/opt/2.6env/sbin:/opt/2.6env/bin:$PATH + export MODULECONF=/etc/modules.conf.2.6 ;; +esac # Get a sane screen width [ -z "${COLUMNS:-}" ] && COLUMNS=80
--- rc.sysinit 2004-03-08 23:01:07+09 1.1 +++ rc.sysinit 2004-03-12 00:11:37+09 @@ -61,6 +61,29 @@ # Configure kernel parameters action $"Configuring kernel parameters: " sysctl -e -p /etc/sysctl.conf +case "`uname -r`" in +2.6.*) ksyms=/proc/kallsyms ;; +*) ksyms=/proc/ksyms ;; +esac +if ! grep -iq nomodules /proc/cmdline >/dev/null 2>&1 && [ -f "$ksyms" ]; then + USEMODULES=y +else + USEMODULES= +fi + +if [ -f /proc/sys/kernel/modprobe ]; then + if [ -n "$USEMODULES" ]; then + case "`uname -r`" in + 2.6.*) sysctl -w kernel.modprobe="/opt/2.6env/sbin/modprobe" >/dev/null 2>&1 ;; + *) sysctl -w kernel.modprobe="/sbin/modprobe" >/dev/null 2>&1 + esac + sysctl -w kernel.hotplug="/sbin/hotplug" >/dev/null 2>&1 + else + # We used to set this to NULL, but that causes 'failed to exec' messages" + sysctl -w kernel.modprobe="/bin/true" >/dev/null 2>&1 + sysctl -w kernel.hotplug="/bin/true" >/dev/null 2>&1 + fi +fi # Set the system clock. ARC=0 @@ -160,7 +183,7 @@ # Initialize USB controller and HID devices usb=0 if ! grep -iq "nousb" /proc/cmdline 2>/dev/null && ! grep -q "usb" /proc/devices 2>/dev/null ; then - aliases=`/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }'` + aliases=`modprobe -c | awk '/^alias usb-controller/ { print $3 }'` if [ -n "$aliases" -a "$aliases" != "off" ] ; then modprobe usbcore action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb @@ -404,17 +427,15 @@ IN_INITLOG= fi -if ! grep -iq nomodules /proc/cmdline >/dev/null 2>&1 && [ -f /proc/ksyms ]; then - USEMODULES=y -else - USEMODULES= -fi - # Our modutils don't support it anymore, so we might as well remove # the preferred link. rm -f /lib/modules/preferred rm -f /lib/modules/default -if [ -x /sbin/depmod -a -n "$USEMODULES" ]; then +case "`uname -r`" in +2.6.*) DEPMOD=/opt/2.6env/sbin/depmod ;; +*) DEPMOD=/sbin/depmod ;; +esac +if [ -x "$DEPMOD" -a -n "$USEMODULES" ]; then # If they aren't using a recent sane kernel, make a link for them if [ ! -n "`uname -r | grep -- "-"`" ]; then ktag="`cat /proc/version`" @@ -442,12 +463,12 @@ # Vine: commentted out the lines regarding iff they need persistent DMA buffers #if grep -q "options sound dmabuf=1" /etc/modules.conf 2>/dev/null ; then RETURN=0 - alias=`/sbin/modprobe -c | awk '/^alias sound / { print $3 }'` + alias=`modprobe -c | awk '/^alias sound / { print $3 }'` if [ -n "$alias" -a "$alias" != "off" ] ; then action $"Loading sound module ($alias): " modprobe $alias RETURN=$? fi - alias=`/sbin/modprobe -c | awk '/^alias sound-slot-0 / { print $3 }'` + alias=`modprobe -c | awk '/^alias sound-slot-0 / { print $3 }'` if [ -n "$alias" -a "$alias" != "off" ] ; then action $"Loading sound module ($alias): " modprobe $alias RETURN=$? @@ -459,17 +480,6 @@ action "Loading mixer settings: " /bin/aumix-minimal -f /etc/.aumixrc -L fi -if [ -f /proc/sys/kernel/modprobe ]; then - if [ -n "$USEMODULES" ]; then - sysctl -w kernel.modprobe="/sbin/modprobe" >/dev/null 2>&1 - sysctl -w kernel.hotplug="/sbin/hotplug" >/dev/null 2>&1 - else - # We used to set this to NULL, but that causes 'failed to exec' messages" - sysctl -w kernel.modprobe="/bin/true" >/dev/null 2>&1 - sysctl -w kernel.hotplug="/bin/true" >/dev/null 2>&1 - fi -fi - # Load Japanese unicon module case "$LANG" in ja_JP.eucJP|ja_JP.ujis|ja_JP) @@ -776,7 +786,7 @@ /bin/uname -a; /bin/cat /proc/cpuinfo; /bin/cat /proc/modules; - /bin/cat /proc/ksyms) >/var/log/ksyms.0 + /bin/cat "$ksyms") >/var/log/ksyms.0 # create the crash indicator flag to warn on crashes, offer fsck with timeout touch /.autofsck sleep 1