无论是ubuntu desktop或者server版,均需要在开机启动后运行一个图形程序,这里我们使用electron开发的图形界面程序。
targets xserver xclient lightdm rc.local
运行级别是以前系统的开机启动选择概念,在16.04.5是“targets”的概念,
查看默认的target,执行:systemctl get-default
开机以命令模式启动,执行:systemctl set-default multi-user.target
开机以图形界面启动,执行:systemctl set-default graphical.target
一般ubuntu的默认target是graphical,通过更改到命令行模式,查看是否更改成功。
其实比如systemctl set-default multi-user.target 这个命令他是会新建一个软连接:Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.
重启之后你会发现你不会进入桌面了。理论上会默认进入tty1,这个时候你查看运行级别,命令runlevel,也会在级别3
在/etc/rc.local 运行该脚本,给它取个名字 mystartx
且/etc/rc.local 需要添加运行权限 即+x
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the executio
n
# bits.
#
# By default this script does nothing.
/usr/bin/mystartx
exit 0
#这一行不要忘记 它涉及到另一个执行脚本的需要,否则上面那个脚本无法执行,或者执行也没有用
这个脚本也可以抄袭/usr/bin/startx,复制一个出来然后改名为mystartx,然后修改该脚本
在这一行 xinit "$client" $clientargs -- "$server" $display $serverargs 前面添加
client=... clientargs=...
其实在这之前你可以尝试一下在命令行界面运行自己的图形程序,不过你首先需要关闭lightdm,命令是sudo service stop lightdm ,你只有关闭了图形界面之后才能在xserver上运行自己的图形界面程序,方式有其他更多种,这时候可以用xinit运行你的程序,
xinit [[client] options ] [-- [server] [display] options] 在这里所有的程序路径和参数路径都需要输入绝对路径,类似我举例说明:
xinit /usr/local/bin/electron /home/shaw/electron/workspace/myapp/. -- /usr/bin/Xorg :0
/usr/local/bin/electron是electron命令在的位置, /home/shaw/electron/workspace/myapp/. 是我编写的electron在的位置,-- 是分割xserver和xclient参数的分隔符,/usr/bin/Xorg 是Xerver在ubuntu的运行命令, :0代表默认在第一块显示屏展示你的图形界面程序。