Difference between revisions of "Frontend Auto Login"

From MythTV Official Wiki
Jump to: navigation, search
(overhaul, bit by bit..., merging methodologies where appropriate)
(overhaul, bit by bit..., cleanup)
Line 8: Line 8:
  
 
=== mingetty vs openvt ===
 
=== mingetty vs openvt ===
The first method has the option of using ''mingetty'' or ''openvt''. We will show the method for ''mingetty'' below as it requires a few extra steps.  
+
The first method has the option of using ''mingetty'' or ''openvt''. We will show the method for ''mingetty'' below as it requires a few extra steps. Further below we will briefly explain what needs to be modified to use openvt.
  
==== openvt====
 
 
''openvt'' has the advantage that if your distribution has a graphical boot sequence like Ubuntu, Red Hat, Mandriva, etc, you will not see any text before MythTV starts.  It thus can look slightly more professional.  This method also does not require the modification to the .bash_profile script.
 
''openvt'' has the advantage that if your distribution has a graphical boot sequence like Ubuntu, Red Hat, Mandriva, etc, you will not see any text before MythTV starts.  It thus can look slightly more professional.  This method also does not require the modification to the .bash_profile script.
  
Where below you see the use of ''mingetty',
 
/sbin/mingetty --autologin=mythtv tty6
 
the user can use ''openvt'' by using,
 
/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null
 
 
''Note: the 2 above tells openvt which virtual terminal number to use, so adjust it appropriately. This is described further below.''
 
 
You may also need to add the following to your '/etc/login.defs' file to allow a no password login,
 
{{Code box|/etc/login.defs|
 
<pre>
 
NO_PASSWORD_CONSOLE tty2
 
</pre>
 
}}
 
  
You should test the command above, ''/usr/bin/startx >& /dev/null'', to verify that the the mythtv user is authorized to start the X server.
 
If not, modify your /etc/X11/Xwrapper.conf file to include:
 
allowed_users=anybody
 
  
 
=== inittab ===
 
=== inittab ===
Line 300: Line 283:
 
''Note: The mythtvstart.jpg file is just something knocked up with the GIMP, the user can choose whichever image they wish to use.''
 
''Note: The mythtvstart.jpg file is just something knocked up with the GIMP, the user can choose whichever image they wish to use.''
 
''Editors Note: Can someone who runs fvwm explain what this is all doing?''
 
''Editors Note: Can someone who runs fvwm explain what this is all doing?''
 +
 +
==== openvt====
 +
Where above you see the use of ''mingetty',
 +
/sbin/mingetty --autologin=mythtv tty6
 +
the user can use ''openvt'' by using,
 +
/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null
 +
 +
''Note: the 2 above tells openvt which virtual terminal number to use, so adjust it appropriately. This is described further below.''
 +
 +
You may also need to add the following to your '/etc/login.defs' file to allow a no password login,
 +
{{Code box|/etc/login.defs|
 +
<pre>
 +
NO_PASSWORD_CONSOLE tty2
 +
</pre>
 +
}}
 +
 +
The command, ''/usr/bin/startx >& /dev/null'', should be tested to verify that the the mythtv user is authorized to start the X server.
 +
If not, modify your /etc/X11/Xwrapper.conf file to include:
 +
allowed_users=anybody
  
 
==== Optional ====
 
==== Optional ====

Revision as of 16:00, 24 July 2010

Part of a proper frontend system is having it automatically login as the mythtv user and loading mythfrontend. There are a variety of methods to do this. KDM allows for auto-login, but doesn't handle mythfrontend crashes well. The best method is to use inittab to login the user straight into mythfrontend.

Method 1

The first method involves using the system's initialization scripts to automagically log in as the mythtv user (or whichever user you wish to run the MythTV frontend as) without using a graphical log in manager, and have mythfrontend launch. The user can then choose whether to use a GUI or to run "window-less".

System Boot Initialization

The standard command line login is considered a "virtual" terminal and uses a program called getty to provide the login prompt. We will replace the standard getty with an alternative, mingetty, which allows for an autologin feature. Depending on your chosen distribution one of the following setups will work for you, (may need to be slightly amended for your distribution).

mingetty vs openvt

The first method has the option of using mingetty or openvt. We will show the method for mingetty below as it requires a few extra steps. Further below we will briefly explain what needs to be modified to use openvt.

openvt has the advantage that if your distribution has a graphical boot sequence like Ubuntu, Red Hat, Mandriva, etc, you will not see any text before MythTV starts. It thus can look slightly more professional. This method also does not require the modification to the .bash_profile script.


inittab

inittab is one of the older initialization systems for SysV.

Initiall your inittab will look like,

Script.png /etc/inittab

# inittab for linux
id:1:initdefault:
rc::bootwait:/etc/rc
1:1:respawn:/etc/getty 9600 tty1
2:1:respawn:/etc/getty 9600 tty2
3:1:respawn:/etc/getty 9600 tty3
4:1:respawn:/etc/getty 9600 tty4

The exact number of virtual, ttyX, terminals will vary. Here the user will either replace, or add to the list the mingetty command. The user can also at this point decide if they wish to run fewer virtual terminals. This can save valuable memory for those running on low memory systems, but the amount is small; or they can eliminate them for "aesthetic" reasons. It is not recommended to only have the one MythTV terminal as a minimum of one standard should be kept in case of emergency.

As such, one of the lines will need to look similar to,

Script.png /etc/inittab

7:12345:respawn:/sbin/mingetty --autologin=mythtv tty7

The first portion of the line, is the id for that entry. It is generally accepted that a line with a single number for the id is to designate the launch of a virtual terminal. Adding a letter, A, B, or C will cause the line to be considered OnDemand. This is left to the user to google and decide whether it is how they would like their system set up. For the sake of this exercise in use with MythTV we will omit the letter.

This line, upon reboot, will cause a virtual terminal 7 to be created and the user mythtv will automatically, with no password prompt, be logged in.

You may also need to add the following to your '/etc/login.defs' file to allow a no password login,

Script.png /etc/login.defs

NO_PASSWORD_CONSOLE tty7

event.d / init.d for ttyX

Some distributions use a system that stores scripts in their /etc/event.d or /etc/init.d directory to handle daemon initialization. Here the user will see ttyX files that correspond to their virtual terminal number.

Here the user can decide to add to the virtual terminals and create a new one, or replace an existing one, and of course able to limit the number of virtual terminals as described above, again, keeping at least one standard terminal in case of emergency.

The standard ttyX file will look like,

Script.png /etc/event.d/tty6

# tty6 - getty
#
# This service maintains a getty on tty6 from the point the system is
# started until it is shut down again.

start on runlevel 2
start on runlevel 3

stop on runlevel 0
stop on runlevel 1
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6

respawn
exec /sbin/getty 38400 tty6

The new ttyX file will thus need to look like

Script.png /etc/event.d/tty2

# tty2 - mingetty for MythTV
#
# This service maintains a mingetty on tty7 from the point the system is
# started until it is shut down again.

start on runlevel 2

stop on runlevel 0
stop on runlevel 1
stop on runlevel 3
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6

respawn
exec /sbin/mingetty --autologin=mythtv tty2

This line, like above, upon reboot, will cause a virtual terminal 6 to be created and the user mythtv will automatically, with no password prompt, be logged in.

As well, like above, you may also need to add the following to your '/etc/login.defs' file to allow a no password login,

Script.png /etc/login.defs

NO_PASSWORD_CONSOLE tty2

UpStart

UpStart is one of the newer initialization systems written by Canonical for use in their Ubuntu distribution, and it's sub distributions Mythbunut, Kubuntu, etc. UpStart does not use the inittab file for login terminals. UpStart, like the init system uses scripts to launch daemons, etc. The user will find ttyX.conf files in their /etc/init directory where UpStart stores these files.

Here the user can decide to add to the virtual terminals and create a new one, or replace an existing one, and of course able to limit the number of virtual terminals as described above, again, keeping at least one standard terminal in case of emergency.

The standard ttyX.conf file will look like,

Script.png /etc/init/tty6.conf

# tty6 - getty
#
# This service maintains a getty on tty6 from the point the system is
# started until it is shut down again.

start on runlevel [23]
stop on runlevel [!23]

respawn
exec /sbin/getty -8 38400 tty6

The specifics, like the runlevel, may be different depending on your specific distribution. We will assume that you have the correct runlevels if you choose a terminal script that launches upon standard boot, as the template.

Thus, to use mingetty to login your mythtv user your ttyX.conf should look similar to,

Script.png /etc/init/tty6.conf

# tty6 - getty
#
# This service maintains a getty on tty6 from the point the system is
# started until it is shut down again.

start on runlevel [23]
stop on runlevel [!23]

respawn
exec /sbin/mingetty --autologin=mythtv tty6

This line, like above, upon reboot, will cause a virtual terminal 6 to be created and the user mythtv will automatically, with no password prompt, be logged in.

As well, like above, you may also need to add the following to your '/etc/login.defs' file to allow a no password login,

Script.png /etc/login.defs

NO_PASSWORD_CONSOLE tty7

The mythtv User

Once the user you wish to run mythfrontend as is set to automatically log in, we must prepare the users environment to actually log in and launch mythfrontend.

login shell

Some Myth-centric distributions create a mythtv user with no login shell. As such you will need to assign the user a login shell. This can be done through your distributions user editor, or via the command line as the root user (via su, sudo, etc),

usermod -s /bin/bash mythtv

.bash_profile

Once your user is automatically logged in the bash shell will look at certain files in the users home directory to modify how the shell works. We will use this to launch X via the .bash_profile file,

In that home directory, create/edit a .bash_profile file like this,

Script.png .bash_profile

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty7 ]; then
while [ 1 == 1 ]
     do
          startx
          sleep 10
     done
fi

this will start X only if running on virtual terminal 7, so if you telnet or ssh into the box it will not react strange. Replace tty7 with the tty you chose to use above. This will also restart X when X crashes/shutsdown due to a mythfrontend crash.

.xinitrc

When X starts it looks to the users home directory for the .xinitrc file. There are two options at this point for how to use .xinitrc, one will load a window manager, the other will not.

Running no window manager can save valuable memory in your system, and if not needed can be seen as a "cleaner" way of running. Some systems will not properly support running sans window manager though so a few lightweight window managers can be used.

No Window Manager

For no windowmanager, create/edit the user's .xinitrc and add,

Script.png .xinitrc

xset -dpms s off
xsetroot -solid black
mythfrontend -l /home/mythtv/mythfrontend.log
#mythtv-setup
#xterm

This will turn off dpms, turn the X default background color black and log to /home/mythtv/mythfrontend.log. These options can, obviously, all be changed.

Also included is an easy way to access mythtv-setup or xterm, just uncomment the appropriate line and comment out the mythfrontend line.

Note that running mythfrontend without a window manager is not a supported configuration. You may run into focus problems when trying to press buttons, enter text and generally use the system. These issues have mostly been fixed in the newer versions of MythTV and many users run this method successfully, especially with Mythbuntu

fvwm

fvwm is a popular lightweight window manager. To use fvwm, edit your .xinitrc like,

Script.png .xinitrc

xset -dpms s off
xsetroot -solid black
fvwm2 &
mythfrontend -l /home/mythtv/mythfrontend.log 2>&1
#mythtv-setup
#xterm

Next edit your .fvwm2rc,

Script.png .fvwm2rc

#Set Windows Styles
Style "*" RandomPlacement, DumbPlacement
Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, 
BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0
Style xmame* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, 
BorderWidth 0, StaysOnTop,BoundaryWidth 0, HilightFore Black, HilightBack #c06077, 
Color Black/#60a0c0
Style mplayer* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, 
BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0
Style xine* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, 
BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0

#set the desk top size in units of physical screen size
DeskTopSize 1X1

# Starts mythfrontend from the keyboard using F1
Key F1  R   A   exec /usr/local/bin/mythfrontend -v important,general -l /var/log/mythfrontend.log 2>&1

can someone who runs fvwm explain what this is all doing?

ratpoison

Another popular lightweight window manager is ratpoison. To use ratpoison, edit your .xinitrc like,


Script.png .xinitrc

xset -dpms s off
xsetroot -solid black
ratpoison &
mythfrontend > /home/mythtv/mythfrontend.log 2>&1

And the associated .ratpoisonrc file,


Script.png .ratpoisonrc

# This is a sample .ratpoisonrc file
#
# Set the prefix key to that of screen's default
escape C-a

# put something informative on the screen while we load stuff
exec xloadimage -onroot -quiet -center /home/mythtv/.mythtv/mythtvstart.jpg

# Gets rid of that ugly crosshairs default cursor and set the background to black
exec xsetroot -cursor_name left_ptr

# Use the name of the program rather than the title in the window list
defwinname name

### fire up an xterm with ctrl-A x
bind x exec xterm -j -fn '*-courier-*-r-*-14-*'

# Since running a 720x576 definition the ratpoison screens are too big for the
# display so we reduce the size of them with defpadding to make them fit
#defpadding 25 25 25 25

keystate_numlock = enable

Note: The mythtvstart.jpg file is just something knocked up with the GIMP, the user can choose whichever image they wish to use. Editors Note: Can someone who runs fvwm explain what this is all doing?

openvt

Where above you see the use of mingetty',

/sbin/mingetty --autologin=mythtv tty6

the user can use openvt by using,

/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null

Note: the 2 above tells openvt which virtual terminal number to use, so adjust it appropriately. This is described further below.

You may also need to add the following to your '/etc/login.defs' file to allow a no password login,

Script.png /etc/login.defs

NO_PASSWORD_CONSOLE tty2

The command, /usr/bin/startx >& /dev/null, should be tested to verify that the the mythtv user is authorized to start the X server. If not, modify your /etc/X11/Xwrapper.conf file to include:

allowed_users=anybody

Optional

The user can choose to add some extra functionality to their .xinitrc, some popular options are,

VNC

Adding the following before mythfrontend will allow the user to connect to the machine via VNC. Proper setup of VNC is left to the user to manage.

x11vnc -many -q -bg -rfbauth .vnc/passwd
log rotation

Ideally the user will use the lograte daemon, logrotated, to rotate their log files. If this method does not please the user another option is to add the following before launching mythfrontend,

Script.png .xinitrc

for i in 5 4 3 2 1 ; do
  if [ -f mythfrontend.log.$i ]; then
    mv -f mythfrontend.log.$i  mythfrontend.log.$(($i + 1))
  fi
done

Method 2

Method 2 is a modification to the first method above. This method does not require the use of BASH to manage the user login.

This method is almost identical to the method above, and as such we will just explain the differences.

openvt

Where above we used mingetty, this method uses openvt, and as such, where above you see

/sbin/mingetty --autologin=mythtv tty6

this method will use

/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null

Note: the 2 above tells openvt which virtual terminal number to use, so adjust it appropriately as per above

As well, like above, you may also need to add the following to your '/etc/login.defs' file to allow a no password login,

Script.png /etc/login.defs

NO_PASSWORD_CONSOLE tty2

The user should test the command above, /usr/bin/startx >& /dev/null, to verify that the the mythtv user is authorized to start the X server. If not, modify your /etc/X11/Xwrapper.conf file to include:

allowed_users=anybody

This command will start X as the mythtv user, and much like above, will restart X automatically if MythTV or X crash. This option has the advantage that if your distribution has a graphical boot sequence like Ubuntu, Red Hat, Mandriva, etc, you will not see any text before MythTV starts. It thus can look slightly more professional. This method also does not require the modification to the .bash_profile script.

The user must still edit the .xinitrc file according to the directions above.


Method 3

The final method is to use

Note on Ubuntu Edgy (6.10)

Important.png As of Ubuntu Edgy, inittab is no longer an option for an automatic login setup. However, you can use Gnome to automatically login and run mythfrontend. Note that this option requires Gnome and X.

First, edit your /etc/gdm/gdm.conf-custom file:

Script.png /etc/gdm/gdm.conf-custom

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=mythtv

Next, create and edit .gnomerc in the user's home folder:

touch /home/mythtv/.gnomerc
chmod 755 .gnomerc

Now edit this file and add the following line:

sleep 10 && mythfrontend > /tmp/mythfrontend.log 2>&1 &


KDM Auto Login

For the default user, create a link in ~/.kde/Autostart that points either to the script listed above (or some other script that starts the front end) or merely to mythfrontend itself. The system will now log in automatically, and immediately start the frontend.

Frontend Auto Login with Fedora Core 5 and GNOME / GDM

To set GDM to auto-login your mythtv user, edit your GDM configuration:

 vi /etc/gdm/custom.conf

Add the following lines to the [daemon] section:

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=mythtv

Then, set the $HOME/.xsession file for your mythtv user to start mythwelcome.

 vi ~mythtv/.xsession

Important.png Note: more recent versions of Fedora (possibly 9 and later) don't automatically run the .xsession file in $HOME. Following an installation you may well find that gnome-desktop is run as the window manager which may not be what you want on a dedicated MythTV PC. You can specify the window manager of your choice and the programs executed on starting X Windows in your own $HOME/.xsession file. In order to ensure your own $HOME/.xsession is executed you need to click the Sessions menu at the bottom of the GDM automatic login screen and select "User script". This will force the execution of $HOME/.xsession file. (Note that you may have to click a username first in the login window in order to get the menu bar to display at the bottom of the GDM auto-login screen).

An example $HOME/.xsession file , which will start the Metacity window manager, an xterm (which you can start with F12 from mythwelcome) and finally, mythwelcome itself is shown here:

Important.png Note: If mythwelcome dies for some reason, GDM will restart it.

Script.png ~mythtv/.xsession

#!/bin/bash
metacity &
xterm &
mythwelcome

Make sure to make it executeable:

 chmod 755 ~mythtv/.xsession

If you'd like to be able to login as a different user before GDM logs in your mythtv user, replace the AutomaticLogin lines in your GDM configuration with TimedLogin lines.

This example will wait 10 seconds before logging in the mythtv user.

[daemon]
TimedLoginEnable=true
TimedLogin=mythtv
TimedLoginDelay=10

Frontend Auto Login with Kubuntu / KDM

To set KDM to auto-login your mythtv user, edit your KDM configuration:

 sudo vi /etc/kde3/kdm/kdmrc

Go to (almost) the bottom of the file and edit the next lines:

[X-:0-Core]
AutoLoginDelay=0
AutoLoginEnable=true
AutoLoginUser=mythtv

Frontend Auto Login for Fedora and KDE

Fedora Core 6 uses a script to let you choose which login manager to use. If no default is given it uses xdm. You can set the default by creating a file called /etc/sysconfig/desktop and adding DISPLAYMANAGER="KDE" or DISPLAYMANAGER="GNOME". Once this file is there then you can set the auto login from within KDE like so:

  1. Click on the K menu.
  2. In the K menu, click on Control Center.
  3. When the control center screen appers there is a list of options to pick. Select the System option.
  4. The System menu will expand and give a list of sub menus - click on Login Manager.
  5. When the login manager is displayed there are tabs that you can select Appearance/Font/Background/Sessions/Users/Convenience. Click on the Convenience tab.
  6. Go to the Automatic Login box, you will see there is 2 check boxes and a drop down menu. Click Enable Auto-login. Select user from the drop down menu.
  7. Click the Apply button down on the bottom right.
  8. Close window. The automatic login process will take effect when you restart your computer.

Frontend Auto Login for Fedora 9

If Fedora 9 seems to ignore any changes to /etc/inittab try making the changes in /etc/event.d/ttyX. (Not sure what directs using /etc/inittab versus /etc/event.d)

exec /sbin/mingetty --autologin mythtv tty1

Frontend Auto Login for Fedora 9 Method 2

In /etc/gdm/custom.conf in the [daemon] section ensure you have the following lines present (subsitute "myth" for your mythtv user).

[daemon]
TimedLoginEnable=true
TimedLoginDelay=5
AutomaticLoginEnable=true
AutomaticLogin=myth
TimedLogin=myth
RemoteGreeter=/usr/libexec/gdmgreeter

Frontend Auto Login for openSUSE 10.2

Auto Login and Graphical Login

If you want to be able to easily change between auto-login and normal xdm login you can restrict the autologin to eg. runlevel 3, so the auto-start line is /etc/inittab looks like this:

6:3:respawn:/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null

The default runlevel specification in inittab can then be set to 3 for auto-login or 5 for X-login.

id:3:initdefault:             # auto-login to MythTv

If you have booted in auto-login mode and want to change to X-login mode you can just change run level with the init command:

/sbin/init 5

or back to mythtv mode with:

/sbin/init 3


Geeko head48.png see the Opensuse_10.2 page