[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [1.15.3] Problem with inittab vs. /bin/login
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2010-03-29 15:43:43
Message-ID: 1158166a1003290843n5f0df9e7y76b2c46763811757 () mail ! gmail ! com
[Download RAW message or body]

On Mon, Mar 29, 2010 at 4:26 PM, Paul Smith <paul@mad-scientist.net> wrote:
> Hi all.  I have an embedded system with a serial line hooked up to
> either ttyS0 or ttyS1, depending on the kind of hardware.  I want to put
> a login session on it so that it doesn't just give a shell prompt when
> people attach to it.
>
> So, I had this in my inittab:
>
>        # Allow login on the console
>        tty0::askfirst:/bin/login
>        ttyS0::askfirst:/bin/login
>        ttyS1::askfirst:/bin/login
>
> This worked OK, with one problem: the /bin/login spawned on the serial
> line that did NOT exist, failed: /bin/login exits because it cannot open
> the tty.  Then init sees that /bin/login fails and respawns it (I want
> this to happen so that you can log in more than one time!)
> Then /bin/login fails, then is respawned, etc. many times per second,

This is strange. Which version is it? There is an one-second sleep
to prevent such behavior:

/* Don't consume all CPU time -- sleep a bit */
sleep(1);

and it was added eight years ago...

> which puts a noticeable load on the system.  The login on the serial
> line that does exist, though, works perfectly.
>
> So, to solve this I decided to try to configure the serial line after
> the boot, once I figured out what kind of system I was on so I would
> know which serial line to use.

That's what getty is for. examples/inittab has these:

# /sbin/getty invocations for selected ttys
tty4::respawn:/sbin/getty 38400 tty5
tty5::respawn:/sbin/getty 38400 tty6

# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2

> So, during the initial boot sequence in
> rcS I figure this out, then echo 'ttyS0::askfirst:/bin/login'
>>> /etc/inittab (or ttyS1 as appropriate).  Then I "kill -HUP 1" to get
> init to reload and start /bin/login.
>
> This does work, BUT the line discipline or something is all messed up on
> the tty.  I enter the "root" username and it's printed again after I hit
> return.  Then it asks for a password and my password is displayed as I
> type it, so noecho is not working.  Then once I get a shell prompt none
> of the editing works, either in the (ash) shell or in (busybox) vi,
> etc.: in both environments the control command I type (tab, ^P, j, k,
> etc.) are all printed to the screen and the operation they perform is
> not shown (the cursor doesn't move, etc.)  However, the commands DO take
> effect; if I tab-complete and press RETURN the filename was completed
> and the command runs.  It's just the terminal display that's wrong.
>
>
> I'm interested in any solution that moves me forward: either a way to
> keep /bin/login from respawning on terminals that don't exist, or a way
> to reset the terminal after modifying inittab, or anything else.

Try using getty, and let me know what do you see with it.
-- 
vda
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic