如何自动登录(无需输入用户名和密码)(在文本模式下)

我安装了Ubuntu 12.04&并编辑了/ etc / default / grub文件以自动启动进入文本模式。 但每次我打开电脑时都要求输入用户名和密码(在文本模式下),我希望它能自动登录而不需要用户名和密码,所以在图形模式下我进入“系统设置 – >用户帐户”并检查“自动登录”,但它无法正常工作。 那么即使在文本模式下我该怎么办才能自动登录?

启动进入文本模式

sudo vim / etc / default / grub

并更改以下行:

GRUB_CMDLINE_LINUX_DEFAULT="text" 

退出并输入:

  sudo update-grub 

在不指定用户标识或密码的情况下自动以文本模式登录

Ubuntu的新贵版本

在行中添加-a

 exec /sbin/getty -8 38400 tty1 

在文件/etc/init/tty1.conf中

像这样:

 exec /sbin/getty -8 38400 tty6 -a gruber 

/etc/init/tty1.conf是在适当的时间运行的upstart作业,用于在tty1上启动终端会话。 添加-a选项告诉getty使用-f选项调用登录程序来签署该用户,绕过getty的用户提示和登录时的密码提示。

Upstart是作为内核init进程运行的Ubuntu系统(进程1)。

我在我的tty6上测试了这个,效果很好。 如果退出shell,由于新贵重生行,它将自动重新启动。

Ubuntu的系统版本

较新版本的Ubuntu主要使用systemd来管理系统进程。 因此,有新的做事方式。

systemd tty用法也可能与前几个虚拟终端上运行的图形终端略有不同。 tty6被保留为带有systemd的文本虚拟终端,并且可能还有其他的。

要在输入时签署tty6:

 sudo systemctl edit getty@tty6 

纳米编辑器将出现在临时文件中。 在该编辑器中输入以下内容:

  [Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -f gruber' -a gruber --noclear %I $TERM 

退出编辑器。

放入额外的ExecStart =行不是拼写错误。 这非常重要,因为它告诉systemd忘记它已经知道的原始ExecStart参数(来自/lib/systemd/system/getty@.service),这样你就可以替换ExecStart。

您可以使用以下命令检查结果:

  systemd-analyze verify getty@tty6.service 

我尝试这个时会看到一些警告,但不是我们在这里做的事情。

如果在tty6上已经有一个tty进程,你将不得不重新启动它以查看结果。


为了解决这个问题,我在https://askubuntu.com/a/659268/63886上提到了很好的答案。 Muru碰巧使用相同的目标作为如何定制系统的例子。 他的ExecStart系列是:

  ExecStart=-/sbin/agetty -a muru --noclear %I $TERM 

差异似乎是在我的版本中出现了几个系统相关的环境变量。

上述编辑的最终结果是在/etc/systemd/system/getty@tty6.service.d/中创建名为override.conf的文件,其中包含您在上面输入的内容。 如果您要自己创建这样的文件,则需要运行systemctl daemon-reload命令以使systemd识别它,然后再次重新启动该虚拟控制台上的任何现有agetty进程。 systemctl –edit为您处理守护进程重新加载。

打开终端并按照

 sudo kate /etc/default/grub 

然后找到这一行并改变如下所示

 GRUB_CMDLINE_LINUX_DEFAULT="text" 

现在关闭编辑器并按照

 sudo update-grub 

并立即重新启动

sudo gedit etc/default/grub

并替换

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="text"

另请注释GRUB_HIDDEN_TIMEOUT = 0此行用于取消隐藏GRUB菜单(注释是将“#”放入行中)

sudo update-grub

并启动x只需输入startx

 sudo update-rc.d -f gdm remove 

如果您使用Kubuntu,请在上面的命令中将gdm替换为kdm。

如果它仍然执行图形启动/关闭,但它会在启动后在命令行中丢弃。 您应该检查grub配置。 为此点击这里