linux ÔÚÆô¶¯¹ý³ÌµÄ×îºó½×¶Î£¨¾ßÌåÆô¶¯²½ÖèÂÔ£©£¬init »á¸ù¾Ý /etc/inittabÎļþµÄ×îºóÒ»ÐÐx:5:respawn:/etc/X11/prefdm -nodaemonÔËÐÐ/etc/X11/prefdm½Å±¾,£¨Red hat 7.2ȱʡʱÊÇÕâÑùµÄ£©¡£prefdm½Å±¾µÄÖ÷ÒªÈÎÎñÊÇÍê³ÉX windowµÄÆô¶¯£¬¿ÉÒÔÓм¸ÖÖÆô¶¯X windowµÄ·½·¨£¬¶¼°üº¬ÔÚprefdm½Å±¾ÖУ¬¼¸ÖÖÖ÷Òª·½·¨ÓУº
[list][*]ÔËÐÐxdmÆô¶¯X window£»[*]ÔËÐÐgdm£¬½øÈëgnome×ÀÃæ»·¾³£»[*]ÔËÐÐkdm½øÈëkde×ÀÃæ»·¾³£»[*]×Ô¶¯µÇ¼½øÈëlinux£»[/list]prefdm½Å±¾¿ò¼Ü´óÖÂÈçÏ£º[table=98%][tr][td]
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
. /etc/profile.d/lang.sh
# µÚÒ»²½£º²é¿´ÊÇ·ñΪ×Ô¶¯µÇ¼
if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
if /usr/sbin/autologin; then
exit 0
fi
fi
# µÚ¶þ²½£ºÈç¹û²»ÊÇ×Ô¶¯µÇ¼·½Ê½£¬¾Í»áÔÚ/etc/sysconfig/desktopÖÐËÑѰÓû§Æ«°®µÄµÇ¼·½Ê½
......
# ¿ÉÒÔÊÇkdm¡¢gdmÒÔ¼°xdm£¬²¢ÔËÐÐÏàÓ¦µÄkdm¡¢gdmÒÔ¼°xdm¡£
......
[/td][/tr][/table]
¶þ¡¢×Ô¶¯µÇ¼µÄʵÏÖ£¨autologinµÄʵÏÖ£©
ÔÚ/etc/X11/prefdm½Å±¾ÖУ¬ÊÇ·ñʵÏÖ×Ô¶¯µÇ¼ÓÐÒ»¸öÌõ¼þ²âÊÔ¿ª¹Ø£¬ÊÂʵÉÏ£¬¿ÉÒÔÔÚÕâÀï×¢Ê͵ô²âÊÔ¿ª¹Ø£¬Ö±½ÓÖ´ÐÐÆô¶¯X windowµÄ²Ù×÷¡£
×Ô¶¯µÇ¼ʵÖÊÉϾÍÊÇÈÆ¹ýÉí·ÝÑéÖ¤£¬Ö±½ÓÆô¶¯X window¡£X windowµÄÆô¶¯¿ÉÒÔÓÉxinitÀ´Íê³É¡£
[list=1][*]Xinit ÓÃÀ´Æô¶¯X windowϵͳ·þÎñÆ÷ÒÔ¼°ÏµÍ³ÉϵĵÚÒ»¸ö¿Í»§³ÌÐò£¬¿ÉÒÔͨ¹ýΪxinit´«µÝÃüÁîÐвÎÊýµÄÐÎʽָ¶¨ÒªÆô¶¯µÄ·þÎñÆ÷¼°¿Í»§³ÌÐò¡£Èç¹û²»´«µÝ²ÎÊý¸ø xinit£¬Ëü½«ÔÚÓû§µÄ¸ùĿ¼ÏÂѰÕÒ²¢ÔËÐÐ .xinitrc½Å±¾À´Æô¶¯¿Í»§³ÌÐò£»ÔÚÓû§µÄ¸ùĿ¼ÏÂѰÕÒ²¢ÔËÐÐ .xserverrc½Å±¾À´Æô¶¯·þÎñÆ÷¡£Èç¹ûxinitÔÚÓû§µÄ¸ùĿ¼ÏÂÕÒ²»µ½.xinitrc¡¢.xserverrc£¬xinit½«Ê¹ÓÃȱʡµÄX :0¡£[*]ʵ¼ÊÉÏ£¬ÓÃstartxÀ´Æô¶¯X¸üΪ·½±ã¡£¶ÔÓÚÔËÐе¥Ò»»á»°µÄX window ϵͳ£¬startxÌṩÁ˸üΪÁ¼ºÃµÄÓû§½Ó¿Ú¡£Í¬Ñù£¬startxÊ×ÏÈÔÚÓû§µÄ¸ùĿ¼ÏÂѰÕÒ .xinitrc¼°.xserverrc½Å±¾£¬Èç¹ûÕÒ²»µ½ÕâÁ½¸ö½Å±¾£¬startx½«Ê¹ÓÃ/etc/X11/xinit/xinitrcÒÔ¼° /etc/X11/xinit/xserverrc½Å±¾¡£[/list]startx½Å±¾µÄ×î»ù±¾¿ò¼ÜÊÇ£º
[list]a¡¢ ѰÕÒ.xinitrc£¬Èç¹ûûÓÐÔòʹÓÃxinitrc£»
b¡¢ ѰÕÒ.xserverrc£¬Èç¹ûûÓÐÔòʹÓÃxserverrc£»
c¡¢ ¸ù¾ÝÕÒµ½µÄ½Å±¾È·¶¨xinitµÄ²ÎÊý£»
[/list]Óɴ˿ɿ´³ö£¬startxÔÚ²»ÐèÒª´«µÝÈκβÎÊýµÄÇé¿öÏ£¬¿ÉÒÔÍê³ÉÆô¶¯XµÄÈÎÎñ£¬Òò´Ë£¬¿ÉÒÔÈçÏÂÐÞ¸Ä/etc/X11/prefdm½Å±¾À´ÊµÏÖ×Ô¶¯µÇ¼£º[table=98%][tr][td]
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
. /etc/profile.d/lang.sh
# µÚÒ»²½£º²é¿´ÊÇ·ñΪ×Ô¶¯µÇ¼
#if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
#×¢Ê͵ôÉϱߵÄÌõ¼þ²âÊÔ£¬Ö±½ÓÔËÐÐstartx
if /usr/X11R6/bin/startx; then
exit 0
fi
#fi
[/td][/tr][/table]µ±È»£¬Ó¦È·±£/etc/inittabÖÐµÄÆô¶¯¼¶±ðΪ5¡£
ÖØÐÂÆô¶¯ÏµÍ³£¬»á·¢ÏÖϵͳ²»ÑéÖ¤Óû§Éí·Ý£¬Ö±½Ó½øÈëX window£¬´ËʱµÄÓû§Éí·ÝΪroot¡£µ«ÊÇ£¬Èç¹ûÔÀ´rootÓÐ×Ô¼ºµÄ×ÀÃæ¡¢Ä¬ÈÏshellʱ£¬ÉÏÊö·½·¨Æô¶¯X²»Ò»¶¨±£Ö¤»¹ÄÜÓµÓÐÔÀ´µÄÉèÖá£ÎªÁËÔÚÆô¶¯Xºó£¬ÔÚ±ÜÃâÑéÖ¤Éí·ÝµÄͬʱ£¬ÓÖ²»¸Ä±äÓû§ÔÀ´µÄÉèÖã¬ÄÇôÔÚÔËÐÐstartx֮ǰ£¬»¹Óй¤×÷Òª×ö¡£
Èý¡¢×Ô¶¯µÇ¼ºó£¬±£³ÖÓû§ÔÀ´µÄÅäÖã¨×ÀÃæ¡¢shellÒÔ¼°ÆäËüµÄһЩ»·¾³±äÁ¿£©¡£
¹Û²ìÔÀ´/etc/X11/prefdm½Å±¾µÄ×Ô¶¯µÇ¼²¿·Ö£º
[table=98%][tr][td]
......
# µÚÒ»²½£º²é¿´ÊÇ·ñΪ×Ô¶¯µÇ¼
if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
if /usr/sbin/autologin; then
exit 0
fi
fi
......
[/td][/tr][/table]²»ÄÑ¿´³ö£¬½Å±¾Öб£ÁôÁË×Ô¶¯µÇ¼µÄ½Ó¿Ú£ºÒ»¸ö¿ÉÖ´ÐÐÎļþ/usr/sbin/autologinÒÔ¼°Ò»¸öÅäÖÃÎļþ/etc/sysconfig/autologin¡£
1¡¢/etc/sysconfig/autologinÅäÖÃÎļþµÄʵÏÖ£º[table=98%][tr][td]
#config for autologin
USER=root
EXEC=/usr/X11R6/bin/startx
˵Ã÷£¬USERÖ¸¶¨×Ô¶¯µÇ¼ʱµÄÓû§Ãû£»EXECÖ¸¶¨Æô¶¯XÒªÔËÐеijÌÐò¡£
[/td][/tr][/table]2¡¢/usr/sbin/autologin¿ÉÖ´ÐÐÎļþµÄʵÏÖ£º[table=98%][tr][td]
/*********************
**** autologin.c ****
*********************/
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
struct stat st;
FILE *f;
char *cfg;
struct passwd *pw;
uid_t uid;
gid_t gid;
char *dir, *shell;
char *user=NULL;
char *cmd=NULL;
user="root";
/*ΪÁËÄÜ˵Ã÷ÎÊÌâÓÖ±£³Ö³ÌÐò¼ò½à£¬ÕâÀïĬÈϵǼÓû§Îªroot£¬Êµ¼ÊÉÏ£¬
µÇ½Óû§ÃûÓ¦¸Ã´Ó/etc/sysconfig/autologinÖеõ½£¬
³ÌÐòʵÏÖʱҪעÒâ¹ýÂ˵ô/etc/sysconfig/autologinÖеÄÎÞЧÓû§Ãû*/
cmd="/usr/X11R6/bin/startx";
/*ͬÑù£¬ÕâÀïÖ±½ÓÖ¸¶¨Æô¶¯X windowµÄ³ÌÐò£¬Êµ¼ÊÉÏ£¬¸Ã³ÌÐòÓ¦¸Ã´Ó/etc/sysconfig/autologinÖеõ½*/
pw = getpwnam(user);
//getpwnam·µ»Ø°üº¬Óû§ÐÅÏ¢µÄpasswd½á¹¹£¨¸Ã½á¹¹ÔÚpwd.hÖж¨Ò壩¡£
if(pw) {
uid=pw->pw_uid;
gid=pw->pw_gid; dir=strdup(pw->pw_dir);
shell=strdup(pw->pw_shell);
}
//»ñµÃÓû§Ïà¹ØÐÅÏ¢
else {
printf("ERROR: No such user %s!\n", user);
return 1;
}
chown("/dev/console", uid, gid);
chown("/dev/tty", uid, gid);
//Ϊ¿ØÖÆÌ¨ºÍÖÕ¶ËÉèÖÃÓû§ID¼°×éID
//ÏÂÃæÊÇÉèÖÃÓû§Ïà¹ØID
setregid(gid, gid);
setegid(gid);
setgid(gid);
setreuid(uid, uid);
seteuid(uid);
setuid(uid);
setenv("HOME", dir, 1);
setenv("SHELL", shell, 1);
setenv("USER", user, 1);
setenv("LOGNAME", user, 1);
//ÉèÖÃÓû§Ïà¹Ø»·¾³±äÁ¿
chdir(dir);
//Çл»µ½Óû§¸ùĿ¼
user=NULL;
execvp(cmd, argv);
/*ÔÚÅäÖÃÍêÓû§µÄÏà¹ØÐÅÏ¢ºó£¬Ö´ÐÐÆô¶¯X window²Ù×÷¡£×¢ÒâÕâÀïĬÈÏÖ´ÐÐ/usr/X11R6/bin/startx */
printf("ERROR: Couldn't exec %s: %s\n", cmd, strerror(errno));
return 2;
}
[/td][/tr][/table]ÔËÐÐgcc -o autologin autologin.c£¬¿½±´autologin¿ÉÖ´ÐÐÎļþµ½/usr/sbin/autologin£¬¿½±´autologinÅäÖÃÎļþµ½ /etc/sysconfig/autologin¡£ ÖØÐÂÆô¶¯ÏµÍ³£¬»áÖ±½Ó½øÈëX window²¢±£ÁôÓû§ÔÀ´ËùÓеķç¸ñ¡£
Èç¹û²»ÐèÒª×Ô¶¯µÇ¼µÄÅäÖÃÎļþ/etc/sysconfig/autologin£¬ËùÓеIJÙ×÷¶¼ÔÚ /usr/sbin/autologinÒÔĬÈϵķ½Ê½ÊµÏÖ£¨±ÈÈ磬ĬÈϵǼÉí·ÝΪroot£¬Ä¬ÈÏÖ´ÐвÙ×÷Ϊ/usr/X11R6/bin/startx µÈ£©£¬ÄÇô£¬/etc/X11/prefdm½Å±¾µÄ×Ô¶¯µÇ¼²¿·Ö¿É¼ò»¯ÈçÏ£º[table=98%][tr][td]
......
# µÚÒ»²½£º²é¿´ÊÇ·ñΪ×Ô¶¯µÇ¼
if /usr/sbin/autologin; then
exit 0
fi
//µÚ¶þ²½ ......
......
[/td][/tr][/table]¼´Ôڽű¾ÖÐÈ¥µôÌõ¼þ²âÊÔ¿ª¹Ø£¬Ö±½ÓÖ´ÐÐ/usr/sbin/autologin£¬Õâʱ£¬Ö»ÐèÒª¿½±´autologin¿ÉÖ´ÐÐÎļþµ½/usr/sbin/autologin£¬²»ÔÙÐèÒª¿½±´autologinÅäÖÃÎļþµ½/etc/sysconfig/autologin¡£
ËÄ¡¢Ñ¡Ôñ½øÈëkde»òÕßgnome£¬²¢×Ô¶¯Æô¶¯X windowÓ¦ÓóÌÐò
[list=1][*]Èç¹ûÖØÐÂÆô¶¯ºóϵͳ½øÈëÁËkde£¬¶øÓû§ÐèÒª½øÈëgnome£¬Ö»ÐèÔËÐÐswitchdesk gnomeÔÚÖØÐÂÆô¶¯ÏµÍ³¼´¿É£¬ÒÔºóÿ´ÎÆô¶¯Ê±»á×Ô¶¯½øÈëgnome£»·´Ö®ÒàÈ»¡£[*]Ò»°ãϵͳ×Ô¶¯µÇ¼µÄÄ¿µÄÊÇÆô¶¯X window ºó×Ô¶¯ÔËÐÐij¸öX window³ÌÐò¡£Èç¹ûϵͳĬÈÏµÄÆô¶¯¼¶±ðΪ3£¬ÄÇôÈç¹ûÒªÔÚϵͳÆô¶¯ºó×Ô¶¯ÔËÐÐijЩӦÓóÌÐò£¬Ö»ÐèÒªÔÚijЩ½Å±¾ÖмÓÈëÏàÓ¦ÃüÁî¼´¿É£¬²»ÔÙÏêÊö¡£ÔÚX windowÆô¶¯ºó×Ô¶¯ÔËÐÐÓ¦ÓóÌÐòÒª¸´ÔÓһЩ£¬ÐҺã¬kdeºÍgnome¶¼Îª´ËÁôÏÂÁË×Ô¶¯Æô¶¯½Ó¿Ú¡£Èç¹ûÔÚkde×ÀÃæ»·¾³ÏÂ×Ô¶¯Æô¶¯Ó¦ÓóÌÐò£¬Ö»ÐèÒª°ÑÓ¦ÓóÌÐòÃû×Ö¼ÓÈë/root/.kde/Autostart/Ŀ¼Ï¼´¿É£¨ÕâÀï×¢ÒⲻͬÓû§µÄ¸ùĿ¼¿ÉÄܲ»Í¬£¬ÈçÓû§zyxµÄ¸ùĿ¼¿ÉÄÜΪ /home/zyx£©¡£Èç¹ûÔÚgnome×ÀÃæ»·¾³ÏÂ×Ô¶¯Æô¶¯Ó¦ÓóÌÐò£¬Ö»Ðè°ÑÓ¦ÓóÌÐòµÄÃû×Ö¼ÓÈë/Ö÷²Ëµ¥/³ÌÐò/ÉèÖÃ/»á»°/»á»°ÌØÐÔ¼°Æô¶¯³ÌÐòµÄ startup programsÊôÐÔÒ³Öм´¿É¡£[/list]