Linux开机自动登录(文本模式)
• Linux系统启动登录过程
以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下:
1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等硬件信息、设备启动顺序、时钟信息等等
2> 根据BIOS的启动顺序信息,依次执行,直到找到引导文件
3> Boot Loader:加载启动引导文件
4> 加载内核,完成Linux核心环境的建立
5> 执行/sbin/init程序,读取配置文件/etc/inittab,设定运行等级,如level 3(这是加载完内核后,系统执行的第一个程序)
6> init程序执行脚本/etc/rc.d/rc.sysinit:设定PATH变量、设定网络配置、启动swap分区、设定/proc等等
7> 依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块
8> 选择的运行等级是3,启动/etc/rc.d/rc.3.d/目录下的脚本程序,就是常说的开机自启服务
9> 执行/etc/rc.local脚本程序
10> 执行/sbin/mingetty程序,读取用户列表,并将用户名转化为/bin/login程序调用的参数
11> 执行/bin/login程序,等待输入并验证用户名和密码
至此,就清楚在level3模式下,想要实现自动登录,就需要在第10和11这两步进行修改。
• 重新编译/sbin/mingetty 程序
1. 查看当前系统的/sbin/mingetty 所属的软件包及其版本(例如:mingetty-1.08-5.el6.x86_64)
rpm -qf /sbin/mingetty
2. 根据当前版本,进入网站http://download.chinaunix.net/,搜索关键字“mingetty”,然后下载对应的源码软件包(由于该网站的相关资源不足,因此就下载mingetty-1.07-5.src.rpm 这个版本,也可直接在当前系统下通过wget 命令直接下载)
wget http://down1.chinaunix.net/distfiles/mingetty-1.07-5.src.rpm
3. 将下载/上传的源码软件包移动到/opt/rh 目录下,然后解压(应当有规划地放置和管理文件)
mv mingetty-1.07-5.src.rpm /opt/rh
cd /opt/rh
rpm2cpio mingetty-1.07-5.src.rpm |cpio -div
tar -zxvf mingetty-1.07.tar.gz
4. 修改文件mingetty-1.07/mingetty.c 中的代码(设置开机自动登录的用户为xxx,其中xxx必须是个可登录的用户):
1) 把第352 行的 char *logname, *s; 修改为 char *logname = "xxx", *s;
2) 把第409~415 行删掉或注释掉:
/*
409 if (autologin) {
410 do_prompt (0);
411 printf ("login: %s (automatic login)\n", autologin);
412 logname = autologin;
413 } else
414 while ((logname = get_logname ()) == 0)
415 /* do nothing */;
*/
5. 编译生成mingetty(编译过程需要时间,切勿中断)
cd /opt/rh/mingetty-1.07/ && make
6. 将make 生成的文件mingetty 强制覆盖到/sbin 目录下,至此,mingetty 的源码更改就完成了。
cp -f /opt/rh/mingetty-1.07/mingetty /sbin
• 重新编译生成/bin/login 程序
1. 查看当前系统的/bin/login 所属的软件包及其版本(例如:util-linux-ng-2.17.2-12.14.el6.x86_64)
rpm -qf /bin/login
2. 根据当前版本,进入网站http://download.chinaunix.net/,搜索关键字“util-linux”,然后下载对应的源码软件包(根据当前系统版本,推荐下载:util-linux-ng-2.17.2.tar.bz2)
cd /opt/rh
wget http://down1.chinaunix.net/distfiles/util-linux-ng-2.17.2.tar.bz2
3. 解压下载/上传的源码软件包
tar -jxvf util-linux-ng-2.17.2.tar.bz2
4. 修改文件util-linux-ng-2.17.2/login-utils/login.c 中的代码
1) 把第434 行的 passwd_req = 1; 修改为 passwd_req = 0;
432 username = tty_name = hostname = NULL;
433 fflag = hflag = pflag = 0;
434 passwd_req = 0;
435
436 while ((ch = getopt(argc, argv, "fh:p")) != -1)
2) 在文件声明部分添加: #include <locale.h>
80 #include <sys/param.h>
81
82 #include <locale.h>
83
84 #include <stdio.h>
5. 先安装gcc 编译器,然后再编译生成login(编译过程需要时间,切勿中断)
yum install gcc
gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../include/
6. 将生成的文件login 强制覆盖到/bin 目录下,至此,login 的源码更改就完成了
cp -f login /bin/login
7. 最后就可以重启机器了。
Linux开机自动登录(文本模式)的更多相关文章
- Linux图形界面从登录列表中隐藏用户和开机自动登录
从GDM-GNOME显示管理器:“ GNOME显示管理器(GDM)是一个管理图形显示服务器并处理图形用户登录的程序.” 显示管理器为X Window System和Wayland用户提供图形登录提示. ...
- Linux设置以root用户开机自动登录桌面
目录 Ubuntu 18.04系统下设置 Redhat7.6系统下设置 Ubuntu 18.04系统下设置 1. 允许使用root用户登录桌面 Ubuntu默认不允许使用root用户登录桌面的, ...
- [分享]在ubuntu9.10下实现开机自动登录并运行自己的图形程序
在ubuntu9.10下实现开机自动登录并运行自己的图形界面程序(本人接触ubuntu时日不长,文中一些说法难免有错误和疏漏之处,还请大家不吝批评指正.)实现步骤分以下三大步:1. 实现ubuntu文 ...
- WIN7开机自动登录设置
WIN7开机自动登录设置 1 执行rundll32 netplwiz.dll,UsersRunDll 开始菜单中找到运行并单击运行:如下图1所示 ...
- Windows 设置开机自动登录
1. 自己一些windows的虚拟机 有时候开机之后 输入用户名密码时间特别长. 需要等待很久, 如果能够设置开机自动登录的话 能够节约很多时间. 2. 最简单的办法 运行输入 control us ...
- Windows开机自动登录及取消自动登录的设置
开机自动登录 1.开始菜单搜索框输入 “netplwiz” 按回车 或“Win+R”组合键打开“运行”框内输入“netplwiz” 或“运行”框内输入“control userpasswords2”( ...
- Win10如何设置开机自动登录
原文:Win10如何设置开机自动登录 第一步: 小娜搜索"netplwiz",进入用户账户设置. 第二步: 先勾选选中一次,要使用本计算机,用户必须输入用户名和密码. 第三步: 取 ...
- Windows开机自动登录账户
如何在Windows设了账户密码的情况下开机自动登录账户,有以下两种方法. 通过Windows设置自动登录 按“Win+R”组合键打开“运行”框内输入“netplwiz”. 打开以下窗口,将“要使用本 ...
- Linux expect自动登录ssh,ftp
[http://blog.51yip.com/linux/1462.html#] #!/usr/bin/expect -f set ip 192.168.1.201 set password meim ...
随机推荐
- WPF 自定义滑动ScrollViewer
自定义滑动滚动条 预期目标:横向滚动条,可以左右滑动,用鼠标按住(触摸)然后释放可以实现快速滑动. 我们有几种方案: 1.ScrollViewer,修改其中的横向滚动条,将其中的背景设置为透明. 但是 ...
- php在5.5.0默认提供了Zend OPcache
eaccelerator无法兼容php5.5.0,好在php在5.5.0默认提供了Zend OPcache,所以一直习惯eaccelerator的朋友如果要升级到php5.5.0的话,可能要暂时和ea ...
- SNMP与MIB
简单网络管理协议(SNMP:Simple Network Management Protocol)是一套网络管理协议,注意,SNMP是一个强大的网络管理协议,而不是"简单"的.利用 ...
- 【每日一linux命令5】命令的结合与定向
命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>). 管道(途径)的用法: "命令一[选项]"|"命令二[选项]",也就是将& ...
- appscan 对api的手工检测
AppScan 在 API 安全测试中的实例介绍 在本项目中,API 遵循标准的的 REST 架构和背端服务器进行通信.针对 API 的功能测试由两部分组成:一部分是用一个 Web 的测试页面直接实现 ...
- 【转】虚拟机VMware与主机共享文件介绍
from: http://www.cnblogs.com/kerrycode/p/3818095.html 写的比较详细,但是vm版本较旧. 2:通过共享文件夹功能 虚拟机VMware提供了在宿主机与 ...
- django之一些feature
前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...
- PHP环境的搭建(Apache)
一,下载XAMPP集成软件包. 二,Apache的安装配置: Apache的安装就点击下一步下一步,默认路径在系统的C盘. 三,在star Apache的时候,出现了端口号80冲突(被占用),解决 ...
- PAT 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- 数据库 数据库SQL语句一
字符和日期 --字符和日期都要包含在单引号中 --字符大小写敏感,日期格式敏感 --默认的日期格式是DD-MON-RR --查询当前系统时间 SQL> select sysdate from d ...