Re: init requires /dev/vc devices
On Saturday 28 January 2006 19:11, Martin Michlmayr wrote:
> I'm taking this discussion to the busybox list in the hope that they
> can help. In debian-installer, we use buxybox. For the 2.6 images,
> we're not using udev to create devices. However, busybox's init is
> started before udev and it require some devices, so among others, we
> create /dev/vc/0 to 4.
You're using devfs names, so I'm guessing you have CONFIG_FEATURE_DEVFS
enabled.
Which version of busybox are you using?
> While this works well on most machines, I get error messages later on
> because the devices /dev/vc/2..4 don't exist - my device doesn't
> actually have any virtual terminal, just a serial console. vc 2-3
> (if available) are used in the installer to display debugging
> information.
What inittab are you feeding it? (Or are you leaving it to the default one?)
> I was wondering whether we could only create /dev/vc/0 and 1, start
> init and then udev create the rest. But this is too late for init.
> Even running init -q doesn't help to bring those debugging messages on
> vc 2-3.
The "::sysinit:/etc/init.d/rcS" line should get run first. You can
populate /dev from there. There is actually decent documentation on busybox
init's inittab format, but you have to know it's in the "init" entry of
http://www.busybox.net/downloads/BusyBox.html).
(I mention here for completeness that busybox has a new mini-udev called mdev,
but you probably already knew that, and it produces traditional names rather
than devfs names. Basically it just copies whatever directory names it finds
in /sys. I _really_ need to do a properly release announcement, after we get
1.1.1 out the door...)
> Below is some more background information. I was wondering if you
> have any ideas how to handle this situation. IMHO, it should be
> possible to run "init -q" later on. i.e. we could have an inittab
> file which'll only reference the first terminal, create that device,
> start init, have udev create the rest, then add more inittab entries
> (if the machine has the virtual terminals) and then run init again to
> re-read inittab. Unfortunately, this doesn't work at the moment.
Re-reading inittab is unfortunately flakier than it should be, but it should
minimally work. You mentioned a floppy, do you have an image we could try to
reproduce the failure?
I'd still try calling udev from the sysinit script, which should be before it
tries to spawn the consoles.
> > Having looked into it a bit, I don't see how this can be caused by the
> > devices existing. After all, the objection from init is that the devices
> > *don't* exist! Why is stat() failing on them?
>
> The device nodes are there but my device doesn't actually have those
> _devices_.
Not a lot busybox init can do about your vcs device nodes pointing to
nonexistent devices.
If you're using busybox "mdev -s" to populate your /dev, you might want to try
the svn version which has had some bugfixes. But that seems unlikely if
you're using devfs names...
Rob
--
Steve Ballmer: Innovation! Inigo Montoya: You keep using that word.
I do not think it means what you think it means.
Reply to: