Package: yaird
Version: 0.0.12-18
Severity: normal

init will only start when /dev/console is avalable.
This inplies the static /dev directory must contain a console entry.
This is not good, device numbers may have changed.
I have encoutered this problem when moving to an 'evms' environment,
where I had copied the rootfs to a new place and ended with an empty
/dev directory.  This is not bad since udev will populate everything
after booting. However /dev/console is needed before that time.

Further investigation has shown that /etc/init.d/udev is prepared
to continue with an already mounted tmpfs on /dev.

I have solved this problem by changing the /etc/yaird/Template.cfg file 
by mounting a tmpfs on /mnt/dev and creating /mnt/dev/console before
doing the 'switchroot'.

The attached patch contains this and some other 'clenups' for
file /etc/yaird/Template.cfg.


-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 
'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17-2-686
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages yaird depends on:
ii  cpio                         2.6-17      GNU cpio -- a program to manage ar
ii  dash                         0.5.3-3     The Debian Almquist Shell
ii  libc6                        2.3.6.ds1-4 GNU C Library: Shared libraries
ii  libhtml-template-perl        2.8-1       HTML::Template : A module for usin
ii  libparse-recdescent-perl     1.94.free-3 Generates recursive-descent parser
ii  perl                         5.8.8-6.1   Larry Wall's Practical Extraction 

yaird recommends no packages.

-- no debconf information
--- /etc/yaird/Templates.cfg    2006-08-27 05:36:05.000000000 +0200
+++ Templates.cfg       2006-09-11 21:20:49.000000000 +0200
@@ -91,14 +91,17 @@
                        !# Kernel version: <TMPL_VAR NAME=version>.
                        !#
                        !INIT_DEBUG=
-                       !if [ "$INIT_DEBUG" != "" ]
-                       !then
-                       !       set -x
-                       !fi
+                       ![ -n "$INIT_DEBUG" ] && set -x
                        !
                        !#
                        !#  Utility functions
                        !#
+                       !debugshell () {
+                       !       [ -n "$INIT_DEBUG" ] && {
+                       !               echo "Debugging opportunity, type ^D to 
continue."
+                       !               /bin/dash
+                       !       }
+                       !}
                        !mksymdev () {
                        !       devfile="$1"
                        !       sysfile="$2"
@@ -117,11 +120,7 @@
                        !       if [ "$devpair" = "" ]
                        !       then
                        !               echo "Device $sysfile seems to be down."
-                       !               if [ "$INIT_DEBUG" != "" ]
-                       !               then
-                       !                       echo "Debugging opportunity, 
type ^D to continue."
-                       !                       /bin/dash
-                       !               fi
+                       !               debugshell
                        !       fi
                        !
                        !       maj=${devpair%:*}
@@ -136,11 +135,7 @@
                        !}
                        !
                        !switchroot () {
-                       !       if [ "$INIT_DEBUG" != "" ]
-                       !       then
-                       !               echo "Debugging opportunity, ^D to 
continue."
-                       !               /bin/dash
-                       !       fi
+                       !       debugshell
                        !
                        !       echo "Switching root ..."
                        !       /bin/umount -n /sys
@@ -156,7 +151,7 @@
                        !/bin/mount -nt proc proc /proc
                        !#
                        !# We don't set up a separate /dev file system,
-                       !# since rootfs is writable without problem.
+                       !# since initial rootfs is writable without problem.
                        !#
                        !
                        !# /dev/tty is needed for eg cryptsetup.
@@ -219,10 +214,7 @@
                        !               INIT_DEBUG=yes
                        !       esac
                        !done
-                       !if [ "$INIT_DEBUG" != "" ]
-                       !then
-                       !       set -x
-                       !fi
+                       ![ -n "$INIT_DEBUG" ] && set -x
                END SCRIPT
        END TEMPLATE
 
@@ -263,10 +255,7 @@
                SCRIPT "/init"
                BEGIN
                        !# activate for <TMPL_VAR NAME=target>
-                       !if [ ! -c /dev/evms ]
-                       !then
-                       !       /bin/mkdir /dev/evms
-                       !fi
+                       ![ -c /dev/evms ] || /bin/mkdir /dev/evms
                        !/sbin/evms_activate 
                END SCRIPT
        END TEMPLATE
@@ -481,6 +470,10 @@
        BEGIN
                SCRIPT "/init"
                BEGIN
+                       !# allow starting with empty /dev in new rootfs while 
still ro
+                       ![ -c /mnt/dev/console ] || {
+                       !       mount -n -o size=10M,mode=0755 -t tmpfs udev 
/mnt/dev
+                       !       mkcdev /mnt/dev/console tty/console ;}
                        !switchroot "$@"
                END SCRIPT
        END TEMPLATE

Reply via email to