ubuntu 自动登录/图形界面启动流程
- 启动流程
- 配置greeter和desktop自动登录
- 配置自动登录后进入的desktop
- 总结
这两天在Jetson nano 上想做一个跳过用户界面直接自动登录到桌面的功能。本来很简单的在System Setting 的Account里打开一下auto login就完成的事情,结果一直是重启两次后就不生效了。研究了两天Ubuntu DM的流程,就顺便记录下来。
如果你也是用的Nvidia的平台并且遇到了和我一样的问题,可以直接跳到最后看看这个坑在哪里。
启动流程
首先简单梳理一下ubuntu 图形界面的启动流程,方便后面理解
- 设备内核启动init进程读取inittab获取运行级别
- 找到/etc/rcX.d 启动各个服务。图形化Xwindows的服务器xorg就在这开始初始化。
- Xwindows会根据/etc/X11/default-display-manager 启动一个显示管理器一般有gdm/gdm3/lightdm
- 对应的DM会根据自己配置(/etc/gdm3或/etc/lightdm)启动desktop,常用有unity/LXDE/gnome(ubuntu)
我们在开机或者是休眠唤醒后看到的登录界面,其实就是第三步Display Manager的欢迎界面。我们要做的就是不显示这个登录界面,直接进入desktop。
配置greeter和desktop自动登录
-
确认环境配置
各个网站上一堆关于Ubuntu自动登录的配置,上来就让改这个改那个,改了lightdm配置其实用的是gdm3,这肯定是不生效的。我们要先查看自己的系统环境,使用的究竟是什么。
查看Display Manager
$ systemctl status display-manager.service
查看Desktop
$ echo $XDG_CURRENT_DESKTOP
确认自己环境中的greeter和desktop,找到下面对应得修改自动登录方式即可。
-
配置Display Manager
DM是由Xwindow启动,配置文件目录为/etc/X11/
网络上有说修改/etc/X11/default-display-manager更换DM得说法
$ cat /etc/X11/default-display-manager
/usr/sbin/lightdm
或是
/usr/sbin/gdm3
我在Ubuntu 18.04.5 LTS环境中尝试并未生效。
有效得切换DM方案是
$ sudo dpkg-reconfigure lightdm
或者
$ sudo dpkg-reconfigure gdm3
然后重启
$ sudo reboot
当然,前提是你已经安装了gdm3或者lightdm。
------------------------------------------------------------------------------------------------------------
关于gdm3和lightdm的区别
gdm3是ubuntu正统得最新发布桌面管理器,lightdm得宗旨则是面向全平台方便移植。
从界面美观和实用性上讲,gdm都要优于lightdm。
关于启动速度,我对比测试了一下没有明显得差距。
------------------------------------------------------------------------------------------------------------
-
GDM3 配置
gdm3得相关配置文件在/etc/gdm3目录下
gdm预留了custom.conf 文件方便用户更改配置。
$ cat /etc/gdm3/custom.conf
配置gdm3自动登录只需要在custom.conf的daemon节点下添加
AutomaticLogin=你的用户名
AutomaticLoginEnable=True
“=”后面空格和true的大小写都是无所谓的。
有些文章中提到的在桌面系统菜单中user account里打开autologin,其实也是系统自动修改了custom.conf中这两个属性的值。
更多关于gdm的配置,包括root用户自动登录,修改欢迎界面背景字体等配置,请查看archlinux GDM文档说明
-
LightDM 配置
若你使用的lightdm,可以在/etc/lightdm目录下找到对应的配置文件
/etc/lightdm/lightdm.conf
也可在这个目录下自己创建一个50-myconfig.conf文件
/etc/lightdm/lightdm.conf.d/50-myconfig.con
系统会优先读取lightdm.conf.d中的配置。
$ cat /etc/lightdm/lightdm.conf.d/50-myconfig.conf
若要打开自动登录,在conf文件中添加
$ autologin-user=username
同时需要将对应的用户名和密码添加到autologin和nopasswdlogin组中
$ groupadd -r nopasswdlogin
$ gpasswd -a username nopasswdlogin
然后在/etc/pam.d/lightdm 首行添加如下
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
即可完成lightdm 自动登录到桌面的配置。
更多关于lightdm的配置请查看https://wiki.archlinux.org/title/LightDM
配置自动登录后进入的desktop
通过上面的配置,就可以跳过DM直接进入桌面。但是系统内有多个桌面的用户可能会发现,进入的desktop并不是自己想要的。
这里就需要配置DM启动的桌面。首先查看系统中支持哪些桌面
$ ls /usr/share/xsessions/
ubuntu-communitheme-snap.desktop unity.desktop ux-LXDE.desktop ux-openbox.desktop ux-ubuntu.desktop
若是起用了wayland 需要查看
$ ls /usr/share/wayland-sessions/
这里看到我们支持4个桌面:unity,LXDE,openbox,ubuntu
然后再系统的Accoutserver配置文件中修改默认的Xsession
$ sudo vim /var/lib/AccountsService/users/yourusename
修改要启动的桌面后重启,即可自动登录到对应的桌面。
XSession=untiy
这个步骤对应lightdm配置文件中也有,但是由于AccountService影响,在lightdm中修改并不会生效。
或者有个简单的方法,就是在配置自动登录前,通过登录界面选择需要的桌面,然后开启自动登录,后面会保存当前的配置。
总结
到这里正常的系统环境应该都可以成功设置自动登录到桌面了。但是在我环境中,每次配置完第三次重启时,就又会出现登录界面。偶然在nvidia 论坛上看到一个类似问题的帖子,才发现问题出在nvgpu.ko。
由于我重新编译了kernel,导致nvgpu.ko 和kernel不兼容,需要进行strip操作。
$ <tool_chain_path>/aarch64-linux-gnu-strip -–strip-unneeded <path-of-kernel-module.ko>
$ /usr/bin/aarch64-linux-gnu-strip --strip-unneeded /lib/modules/4.9.253-tegra/kernel/drivers/gpu/nvgpu/nvgpu.ko
执行命令后重启,一切终于正常了。
简单记录了自动登录到桌面的步骤和流程,时间有限,期间关于wayland,终端模式自动登录,终端直接启动app等后面有空再记录吧,如有问题可以留言和我沟通
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)