Linux自启动


NEO Ubuntu 16.04


/******************************/


/lib/systemd/system/console-getty.service:17:ExecStart=-/sbin/agetty --noclear --keep-baud console 115200,38400,9600 $TERM
/lib/systemd/system/container-getty@.service:18:ExecStart=-/sbin/agetty --noclear --keep-baud pts/%I 115200,38400,9600 $TERM
/lib/systemd/system/serial-getty@.service:23:ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM






archlinux系统的设置


###在命令行模式下开机自动登陆
编辑文件(没有的话自己手动创建):/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf

内容为:
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username -s %I 115200,38400,9600 vt102

其中username为你要自动登陆的账户

###开机自动执行一条命令
在文件夹/usr/lib/systemd/system/里面新建一个文件example.service
内容为:
[Unit]
Description=example
[Service]
Type=oneshot
ExecStart=/path/to/scriptfile/example.sh
[Install]
WantedBy=multi-user.target
然后设置此服务开机启动
sudo systemctl enable example.service
此方法的好处是:
有以后需要修改命令或者添加什么命令只用修改/path/to/scriptfile/example.sh就可以



/********************************************************************************/



树莓派 Raspbian 系统启动之后,如果要进入图形界面 LXDE,需要在命令行输入用户名密码之后再通过 startx 来加载 LXDE。按照下面的方法,可以将树莓派配置为开机自动进入图形界面。适用于 Raspbian 系统。

1.配置自动登录

在终端输入下面指令,编辑启动文件。

1
sudo nano  /etc/inittab

滚动到下面这一行

1
1:2345:respawn:/sbin/getty 115200 tty1

将它修改为:

1
#1:2345:respawn:/sbin/getty 115200 tty1

再在这行下面新增一行,内容如下:

1
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1

Ctrl+X 退出编辑器, 按下 Y 确认保存后回车。

2.配置 LXED 自动启动

在终端输入下面指令,编辑启动文件。

1
sudo nano  /etc/rc . local

滚动到最下面,加入一行,内容如下:

1
su -l pi -c startx

Ctrl+X 退出编辑器, 按下 Y 确认保存后回车。

这样通电开机之后,系统将自动以账号 pi 登录。

本文来自: 树莓派实验室
链接地址: http://shumeipai.nxez.com/2015/02/27/raspberry-pi-configured-to-automatically-log-lxde.html



/******************************************************************************/


agetty

打开 tty
端口,为登录名称建立命令控制符,并引出
login
程序

如何使你的Linux系统省略输入用户名密码

1、省略密码验证

 

很简单,只需把/etc/passwd中的root:x:0:0:root:/root:/bin/bash,改为root::0:0:root:/root:/bin/bash,就可以了,就是去掉了里面的x,这样root用户就不用密码了。其他用户也一样。

 

2、省略输入用户名

 

(1)修改/etc/inittab

 

在inittab中,有如下配置

 

1:2345:respawn:/sbin/agetty tty1 9600

2:2345:respawn:/sbin/agetty tty2 9600

3:2345:respawn:/sbin/agetty tty3 9600

4:2345:respawn:/sbin/agetty tty4 9600

5:2345:respawn:/sbin/agetty tty5 9600

6:2345:respawn:/sbin/agetty tty6 9600

 

表示系统可以有六个控制台,可以用ALT+(F1~F6)来切换。而/sbin/agetty就是一个登陆验证程序,执行它,会提示用户输入用户名和密码,然后启动一个指定的shell(在passwd文件中指定的)。

 

所以,我们只需将其修改为不执行agettty,而是执行自己编写的一个脚本,就可以跳过用户名和密码的输入。修改如下:

 

1:2345:respawn:/root/logintest tty1 9600

 

这里我在/root/下放了一个测试脚本,这样系统启动时就会执行那个脚本,脚本内容:

 

#!/bin/sh

/bin/login -f root

 

脚本其实就是执行了一个root用户的登陆而已,如果有其他要求,也可以添加到脚本中。






/****************************************************************************/


本篇是系列文章的一部分。讲的是让linux不经过认证,直接登录。

[@more@]

请参见其它系列文章。

由于linux发行版本的不同,可能会有一些不同,请读者细心。

名词:login-----linux用于认证用户的密码是否正确的程序。

         agetty----linux用于启动tty终端的程序。

          tty终端---这个概念很麻烦,linux启动后,只是内存中程序,如果没有stdin,stdout,就没

          法和用户交互。

与自动登录最相关的两个程序是agetty,login。

系统内核加载后,第一个运行的是init程序,init运行系统脚本,然后调用agetty,agetty调用loing。

运行到agetty时,它显示login name: 等你输入用户名,然后把它作为参数传给login。

login显示password:接收你的密码,结合用户名去验证用户的合法性。

最后启用bash,你就会发现自己在提示符$下了。

由于agetty和login程序的作者并没有把它作成可配置的。所以我们必需要修改源代码才能实现自动登录。

它们分别是agetty.c login.c

我们修改之后把它用gcc编译一下,代替原来的程序就好了。

找到agetty.c的调用get_logname函数的地方,把它注释掉。这样就不会去读用户名了。

login.c很复杂,它是让别的程序去取得密码并验证。我没时间研究它,所以呢,直接写一个空的login程序好了,其中,我们自己设定用户的uid sid 环境变量等等。再在login.c的最后调用一个bash就好了。

重启动一个系统吧!~:)

提醒:你的机器上最好有两个linux系统,当你修改其中一个不能进入系统的话,可以另一个linux加载它的分区,并把程序改回去。

累了,不想给的太细。给需要的人一个方向好了。

/**********************************************************************************/


http://bbs.archlinuxcn.org/安心.php?id=3203




/*************************************************************************/


1、设置root密码

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo -s  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo passwd root  

 

2、如果lightdm.conf文件存在

可编辑/etc/lightdm/目录下的lightdm.conf文件,如没有此文件,直接创建

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [SeatDefaults]  
  2.   
  3. autologin-user=root  
  4.   
  5. user-session=ubuntu  
  6.   
  7. greeter-show-manual-login=true  


注意:如果有lightdm.conf就不需要步骤3了


3、如果lightdm.conf文件不存在

在terminal下输入

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf  


内容如下:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [SeatDefaults]  
  2.   
  3. autologin-user=root  
  4.   
  5. user-session=ubuntu  
  6.   
  7. greeter-show-manual-login=true  


4、在terminal下输入

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. gedit /root/.profile  


将文件末尾的 “mesg n”,修改为 “tty -s && mesg n”。

注意:如果这里不修改,登录会提示如下信息:

Error found when loading /root/.profile

stdin:is not a tty


5.用reboot命令重启即可

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值