首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >startx命令做什么?

startx命令做什么?
EN

Ask Ubuntu用户
提问于 2014-08-31 18:00:00
回答 3查看 128.6K关注 0票数 25

在阅读关于Ubuntu的文章时,我发现了以下的声明……

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

默认的运行级别意味着什么?当我在我的终端上尝试这个时,我得到了这个:

代码语言:javascript
复制
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
EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2014-09-02 13:51:48

从前,当计算机的内存以千字节为单位,磁盘以兆字节为单位测量时,一直运行图形接口被认为是有害的。

大多数Unix计算机都用于多用户环境下的科学计算和仿真,运行在它们上的图形界面将减少它们可用的内存和CPU功率。

因此,当您需要图形界面时,您只需使用startx (2)启动它。

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

现代系统自下而上地被认为一直在运行图形系统,所以很久以来没有人检查过startx的工作--这就解释了很多奇怪的行为。

如果你想尝试并感受过去的美好时光,最好的办法是做以下几件事:

A)安装Xnestfvwm克尼斯特是一个服务器内部的图形服务器,它是一种在正常系统中作为窗口打开的服务器.Fvwm是一个非常简单的窗口管理器,当时非常流行。你也需要旧的像素地图字体。

代码语言:javascript
复制
sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

( B)将该文件写入某个地方,例如在您的home dir中,并将其命名为~/test

代码语言:javascript
复制
#!/bin/bash 
#
xterm & 
exec fvwm2

C)运行(注意:startx通常首先使用客户端命令,然后是双破折号,然后是服务器命令。正如我所说的,大多数新系统并不是仅针对startx就有合理的默认设置。)

代码语言:javascript
复制
cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

...and您有一个80个工作站屏幕:

(单击"Xnest“桌面即可获得菜单)。

如果您感到非常冒险,您可以在另一个虚拟控制台上启动本机会话(阅读其他答案),方法是使用Ctrl-Alt-F1,loggin和

代码语言:javascript
复制
startx ~/test 

通常在Ctrl-Alt-F8上开放。

注意:现代桌面环境不是为同一用户在两个不同的控制台中同时运行而设计的。所以,在做这个实验时,不要使用gnome-shellunity或现代的东西,否则你可能会搞砸你的配置。

脚注:

(1)在这里谈论1980-90年代前后。

(2)例如,我有一台有256 K内存的笔记本电脑。这是痛苦的慢(B&W!)图形界面,但在控制台中很快。因此,我在控制台模式下完成了大部分工作(编辑CLaTeX和类似文件),只有在真正需要时才切换到图形环境。

票数 34
EN

Ask Ubuntu用户

发布于 2016-08-28 10:46:50

QEMU + Buildroot最小示例

我最喜欢的学习方法就是做一个运行它的极小的例子。

在Ubuntu上,这是很困难的,因为第二个startx可能与当前桌面发生冲突。

https://askubuntu.com/a/519164/52975建议使用Xnest,但是使用QEMU + Buildroot,我们可以使用更少的方法创建一个只安装了X11的微发行版。

这样,应该更容易理解正在发生的事情。

我在:https://unix.stackexchange.com/a/306116/32558描述了发行版的创建

在QEMU上运行映像之后,就可以启动TTY shell了。

当你这样做的时候:

代码语言:javascript
复制
root
startx

它启动一个X11 GUI:

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

它是/usr/bin/xinit上的一个简单包装器,它将/etc/X11/xinit/xinitrc传递给xinit

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

代码语言:javascript
复制
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

所以我们看到它开始了:

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

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

代码语言:javascript
复制
man xinit

上面写着:

如果命令行上没有给出特定的客户端程序,xinit将在用户的主目录.xinitrc中查找一个文件,作为启动客户端程序的shell脚本运行。如果不存在这样的文件,xinit将使用以下默认值: xterm -geometry +1+1 -n登录-display :0如果命令行上没有提供特定的服务器程序,则xinit将在名为.xserverrc的用户主目录中查找一个文件,以作为shell脚本运行以启动服务器。如果不存在这样的文件,xinit将使用以下默认值:x :0

票数 4
EN

Ask Ubuntu用户

发布于 2018-04-28 03:50:45

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

我刚刚在VM中尝试了这一点,实际上,默认情况下,startx失败了。不过,chmod u+s /usr/lib/xorg/Xorg修复了这个问题。

我不建议让Xorg成为setuid。这个世界已经有了很好的理由而放弃了这一点。但是,如果您在一个丢弃的VM中游玩,这就是如何使startx工作的方法。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/518454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档