startx命令做什么?


18

在阅读有关Ubuntu的信息时,我发现以下语句.....

如果默认情况下未在默认运行级别下启动显示管理器,则可以在登录文本模式控制台后通过从命令行运行startx来以其他方式启动X。

成为默认运行级别意味着什么?当我在终端上尝试此操作时,我得到了:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

我只运行了startx,但是遇到了与您相同的错误,因此我将其设为sudo。轮到它登录到根帐户。我要返回给用户的操作是从root用户注销。

Answers:


25

从前(1),当以千字节为单位测量计算机的内存,以兆字节为单位测量磁盘时,始终运行图形界面被认为是有害的。

大多数Unix计算机用于多用户环境中的科学计算和仿真,并且在它们上运行的图形界面会减少它们可用的内存和CPU能力。

因此,当您需要图形界面时,只需从startx(2)开始。

startx基本上运行Xserver(图形“驱动程序”)和在其上运行的命令,该命令通常是窗口管理器。默认情况下,运行的命令~/.xinitrc位于主目录中的文件中,否则位于某些常规系统文件中。

人们认为现代系统自下而上一直都在运行一个图形化系统,因此可能没有人检查过它的运行时间startx了-这说明了您可能会遇到的许多奇怪行为。

如果您想尝试并感觉美好的过去,那么最好的方法是执行以下操作:

A)安装XnestfvwmXnest是服务器中的图形服务器,是一种将在常规系统中作为窗口打开的服务器。Fvwm是一个非常简单的窗口管理器,当时非常流行。您也将需要旧的pixmap字体。

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B)将此文件写入某个位置,例如在您的主目录中,然后调用它~/test

#!/bin/bash 
#
xterm & 
exec fvwm2

C)运行(注意:startx通常先使用client命令,然后使用双破折号,再使用server命令运行。正如我所说,大多数新系统并没有startx单独的明智默认值。)

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

...并且您有80ies工作站屏幕:

在此处输入图片说明

(您可以通过单击“ Xnest”桌面获得菜单)。

...如果您真的很喜欢冒险,可以通过使用Ctrl-Alt-F1转到其中一个,登录并在另一个虚拟控制台上启动本机会话(阅读其他答案)。

startx ~/test 

通常会在Ctrl-Alt-F8上打开。

注意:现代桌面环境并非设计为在两个不同的控制台中针对同一用户同时运行。因此,在进行此实验时请勿使用gnome-shellunity或现代的东西,否则您可能会弄乱配置。


脚注:

(1)在这里大约讲1980-90年。

(2)例如,我有一台具有256k RAM的笔记本电脑。(B&W!)图形界面的速度很慢,但是控制台却很活泼。所以,我做了我的大部分工作(编辑CLaTeX在控制台模式和类似的文件),并切换到只在真正需要的图形环境。


4
谢谢@ Rmano,伟大的解释完全理解了……
lazarus

9

startx 启动xsession或图形界面,您将在其中看到一个登录屏幕,而不仅仅是一个ascii控制台(文本会话)。

因为xsession已经启动,并且您正在尝试从tty7的xsession内部执行命令,所以您收到此错误。

tty7是存在于ctrl+ alt+ f7(默认xsession)的用户界面。

tty1是存在于ctrl+ alt+ 处的用户界面f1

tty2是存在于ctrl+ alt+ 处的用户界面f2。。。等等。

tty1-tty6是文本会话,您可以在这些屏幕之一上使用用户名和密码登录。登录后,可以运行命令startx,如果xsession在tty7中尚未运行,它将在tty7中启动;如果tty7已经在运行xsession,则它将在tty8中启动。


运行级别:

运行级别0暂停-关闭系统。

运行级别1单用户模式-管理任务的模式。

运行级别2具有网络功能的图形多用户-正常启动系统。

运行级别3-5未使用,但配置为与运行级别2相同

运行级别6重新引导-重新引导系统。

术语运行级别是指在实现Unix系统V型初始化的计算机操作系统之一中的一种操作模式。按照惯例,存在七个运行级别,从零到六个。尽管最多可以使用十个,从零到九个[需要引用]。S有时用作其中一个级别的同义词。仅一个“运行级别”是在启动时执行-运行级别将被不按顺序执行,即,或者运行级别被执行2或3或4,而不是2然后3然后4 - en.wikipedia.org/wiki/Runlevel


Thanx mchid对我有很大帮助,
lazarus

但是当我登录到tty1并执行$ startx时,我得到了一个没有任何启动栏和其他选项的桌面窗口... startx上的选项(仅此处为桌面)
lazarus 2014年

1
@jazzz这是您的默认x环境。您很可能安装了多个桌面环境。您应该可以使用CTRL + T来获取终端,以便可以运行诸如unityor gnome-shell --replace或什至gnome-panelor的命令metacity --replace
mchid 2014年

@jazzz另外,如果您接受此答案,请单击左侧的图标将其关闭。谢谢!
2014年

抱歉,我对此问题的另一个查询很晚-我如上所述通过Ctrl + Alt + F8获得的新窗口类似于工作区吗?
lazarus 2014年

4

它只是意味着不同的tty

引用链接的问题:

默认情况下,Ubuntu有7个tty。

1-6仅限于命令行,7运行您的X会话(您的普通图形桌面)。

要访问它们,请使用以下键盘快捷键:Ctrl+ Alt+F1

(更改F1为F1-F6以访问所需的终端)

要返回X会话(普通桌面),请使用:Ctrl+ Alt+F7

after logging on to a text-mode console 只是意味着登录到另一个tty并键入命令:

startx

1

正如Rmano所指出的那样,startx是一种非常古老的方法。使用此方法时,X11二进制文件已安装为setuid root。

我只是在VM中进行了尝试,实际上,startx默认情况下,您所描述的失败。chmod u+s /usr/lib/xorg/Xorg虽然解决了。

我不建议Xorg为setuid根。世界有充分的理由摆脱了这个世界。但是,如果您正在扔掉的虚拟机中玩耍,那就是如何进行startx工作。


1

QEMU + Buildroot最小示例

我最喜欢的学习某项功能的方法是制作一个运行它的最小示例。

在Ubuntu上,这很困难,因为一秒钟startx可能会与当前桌面冲突。

/ubuntu//a/519164/52975建议Xnest,但是有了QEMU + Buildroot,我们可以做得更小,并且只安装X11就能创建一个微型发行版。

这样,应该更容易理解发生了什么。

我已经在以下网址描述了发行版的创建:https//unix.stackexchange.com/a/306116/32558

一旦图像在QEMU上运行,就从TTY shell开始。

然后,当您这样做时:

root
startx

它会启动一个X11 GUI:

在此处输入图片说明

现在看一下startx该发行版内部的源代码,它只是一个shell脚本。

它是一个简单的包装/usr/bin/xinit,传递/etc/X11/xinit/xinitrcxinit

如果打开/etc/X11/xinit/xinitrc,它将包含以下几行:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

所以我们看到它启动了:

  • twm:一个非常简单而古老的窗口管理器
  • xclockxterm我们看到屏幕上

对于/usr/bin/xinit,我们可以这样做:

man xinit

它说:

如果在命令行上未指定特定的客户端程序,则xinit将在用户的主目录中查找名为.xinitrc的文件,以作为Shell脚本运行以启动客户端程序。如果不存在这样的文件,则xinit将使用以下默认值:

xterm  -geometry  +1+1  -n  login  -display  :0

如果在命令行上未提供特定的服务器程序,则xinit将在用户的主目录中查找名为.xserverrc的文件,以作为Shell脚本运行以启动服务器。如果不存在这样的文件,则xinit将使用以下默认值:

X  :0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.