• 了解startx/xinit

1.概述

  用户可以通过 xinit 程序手动启动 Xorg 显示服务器,startx脚本是 xinit 的前端。

  xinit 通常用在启动 X 时执行窗口管理器 或 桌面环境。虽然可以使用 xinit 在无窗口管理器的情况下启动图形程序,大部分图形程序都需要一个兼容 EWMH 的窗口管理器。显示管理器 启动 Xorg 并读取 xprofile。

  启动X主要有两种方法:

  • 一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;
  • 另一种是通过xinit,此种方法适用于字符界面登录。

  常用于登录X的startx命令也是通过传递参数给xinit来启动X的,也就是说,最终启动X的是xinit。startx只是一个bash脚本。

1.1.startx

  The startx script is a front end to xinit that provides a somewhat nicer user interface for running a single session of the X Window System. It is often run with no arguments.

  startx命令用来启动X-Window,它负责调用X-Window系统的初始化程序xinit。以完成 X-Window运行所必要的初始化工作,并启动X-Window系统。

  startx 最重要的任务就是找出使用者或者是系统默认的 X server 与 X client 的配置档,而使用者也能够使用 startx 外接参数来取代配置档的内容。这个意思是说:startx 可以直接启动,也能够外接参数,例如底下格式的启动方式:

[root@www ~]# startx [X client 参数] – [X server 参数]

参考实例:
已默认方式启动X-windows系统:
[root@linuxcool ~]# startx以16位颜色深度启动X-windows系统:
[root@linuxcool ~]# startx -- -depth 16强制启动 X-windows系统:
[root@linuxcool ~]# startx -w要使用 .xinitrc 脚本启动 X 会话,请输入:
startx -x .xinitrc要使用 mwm 窗口管理器启动 X 会话,请输入:
startx -m mwm

1.2.xinit

  当 startx 找到需要的配置值后,就呼叫 xinit 实际启动 X 。xinit先启动先启动X服务器,再启动基于X的应用程序。事实上启动 X 的是 xinit 这支程序, startx 仅是在帮忙找出配置值而已!那么 startx 找到的配置值可用顺序为何呢?基本上是这样的:

  • X server 的参数方面:
    使用 startx 后面接的参数;
    若无参数,则找寻使用者家目录的文件,亦即 ~/.xserverrc
    若无上述两者,则以 /etc/X11/xinit/xserverrc
    若无上述三者,则单纯运行 /usr/bin/X (此即 X server 运行档)

  • X client 的参数方面:
    使用 startx 后面接的参数;
    若无参数,则找寻使用者家目录的文件,亦即 ~/.xinitrc
    若无上述两者,则以 /etc/X11/xinit/xinitrc
    若无上述三者,则单纯运行 xterm (此为 X 底下的终端机软件)

1.2.1.启动 X server 的文件: xserverrc

  xserverrc 文件是一个启动 X server 的 shell 脚本。如果存在 ~/.xserverrc ,startx 和 xinit 都会执行这个文件。如果文件不存在,startx 会使用 /etc/X11/xinit/xserverrc.

  1 #!/bin/sh                                                                                                                                                                                                                                2 3 exec /usr/bin/X -nolisten tcp "$@"

  X 窗口最先需要启动的就是 X server,那 X server 启动的脚本与参数是透过 /etc/X11/xinit/ 里面的 xserverrc 。其实就是运行 /usr/bin/X 这个命令啊! 这个命令也是系统最原始的 X server。

  在启动 X Server 时,Xorg 会去读取 /etc/X11/xorg.conf 这个配置档。如果一切顺利,那么 X 就会顺利的在 tty7 的环境中启动了 X 。 单纯的 X 启动时,你只会看到画面一片漆黑,然后中心有个鼠标的光标而已。

  启动了 X server 后,接下来就是加载 X client 到这个 X server 上面啦!

1.2.2.xinitrc

  假设家目录并没有 ~/.xinitrc ,则此时 X Client 会以 /etc/X11/xinit/xinitrc 来作为启动 X Client 的默认脚本。最后,其实最终就是加载 KDE 或者是 GNOME 而已。

  ~/.xinitrc 可以方便的启动依赖 X 的程序,并在 X 启动时设置环境变量。如果用户主目录中存在 .xinitrc,startx 和 xinit 会执行此文件。如果不存在,startx 会执行默认的 /etc/X11/xinit/xinitrc。

  /etc/X11/xinit/xinitrc:7 # invoke global X session script8 . /etc/X11/Xsession

1.2.3.Xsession

  A display manager refers to a user’s login and startup of a window manager and desktop as a session. When the user quits the desktop and logs out, the session ends. When another user logs in, a new session starts. The X Window System never shuts down; only desktop or window manager programs shut down. Session menus on the display manager login window list different kinds of sessions you can start—in other words, different kinds of window managers or desktops. For each session, the Xsession script is the startup script used to configure a user’s X Window System display and to execute the selected desktop or window manager. Although this script is unnecessary for gdm, it is still used in the gdm Red Hat implementation.

  Xsession is the display manager session startup script used by the Red Hat implementation of gdm (other display managers such as kdm and xdm also use Xsession). It contains many of the X commands also used with the xinitrc startup script. Xsession usually executes the same xmodmap and xrdb commands using the .Xmodmap and .Xrsources files in the /etc/X11/xinit directory. Shown here is the Xsession script used by gdm on Red Hat systems, which is located in the /etc/X11/xdm directory. Notice that any errors are saved in the user’s .xsession-errors file in their home directory. Xsession will also read any shell scripts located in the /etc/X11/xinit/xinitrc.d directory. Currently this holds an input script to detect the kind of language a keyboard uses.

  • /etc/X11/Xsession.d/00deepin-dde-env:
  1 if [ "$1" = "/usr/bin/startdde" ]; then                                                                                                                                                                                                  2     if [ -f "$HOME/.dde_env" ]; then3         . "$HOME/.dde_env"4         # Handling configuration migration issues5         if [ -n "$QT_SCALE_FACTOR" ]; then6             unset QT_SCALE_FACTOR7             unset QT_SCREEN_SCALE_FACTORS8             unset QT_AUTO_SCREEN_SCALE_FACTOR9             unset QT_FONT_DPI10             export STARTDDE_MIGRATE_SCALE_FACTOR=111         fi12     elif [ -f "$HOME/.pam_environment" -a -n "$QT_SCALE_FACTOR" ]; then13         # Handling configuration migration issues for earlier version14         unset QT_SCALE_FACTOR15         export STARTDDE_MIGRATE_SCALE_FACTOR=116     fi17 fi

小结:startx 的默认启动过程为: startx 调用并将系统文件 /etc/X11/xinit/xinitrc 和 /etc/X11/xinit/xserverrc 作为参数传给 xinit , xinit 就会先执行系统文件 /etc/X11/xinit/xserverrc 以启动 X Server ,然后执行 /etc/X11/xinit/xinitrc ,而 xinitrc 则会执行脚本 /etc/X11/Xsession ,而 Xsession 则会按顺序调用执行 /etc/X11/Xsession.d 目录下的文件,从而最终调用了 gnome-session 这个用于 启动 GNOME 桌面环境的程序

refer to

  • https://www.computerhope.com/unix/startx.htm
  • http://cn.linux.vbird.org/linux_basic/0590xwindow.php
  • https://wiki.archlinux.org/index.php/Xinit_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

操作系统 - startx/xinit相关推荐

  1. linux startx xinit

    startx启动过程分析 startx 及xinit 介绍(经典) startx启动过程 startx用法: startx [ [ client ] options ... ] [ -- [ serv ...

  2. 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍

    第二十四章. X Window 配置介绍 最近升级日期:2009/08/07 在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗!为何称之为系统呢?这 ...

  3. Shell脚本学习-阶段二十七-命令解释二

    文章目录-命令解释二 前言 emacs jed joe nano================ pico sed=================== vi,vim============ mtyp ...

  4. 第二十四章、 X Window 配置介绍

    好文章 第二十四章. X Window 配置介绍 http://vbird.dic.ksu.edu.tw/linux_basic/0590xwindow.php 最近升级日期:2009/08/07 在 ...

  5. 恢复系统记录(by quqi99)

    作者:张华 发表于:2017-02-09 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 今天系 ...

  6. X Window System介绍

    1.概述     X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是运行在UNIX系统上的视窗系统.严格地说,X Window System并不是一个软件 ...

  7. 鸟哥的Linux私房菜基础篇第三版 -- 目录

    服务器端使用的OS,Linux是最最常用的,所以,日常的部署.排查问题,就不可避免的与Linux打交道,日积月累,对Linux就有了多多少少的了解. 反过来,再系统的从头开始,读一本关于Linux基础 ...

  8. 大鸟老师AIX 223认证考试 AU13培训视频学习笔记

    大鸟老师个人网站:http://www.qujon.com/ 小型机-RISC-简单指令集计算机 PC服务器-CISC 远程登陆-rlogin ctrl+d  //关闭一个终端 cal 8 2009 ...

  9. CentOS 7下 VNC 服务的配置和开启、常见问题

    文章目录 1. X server.Xvnc 和 VNC server X Window System X Server X Client X Window Manager Display Manage ...

最新文章

  1. 言有三文章 - AI系列完整阅读
  2. 【以太坊】深入理解智能合约(合约调合约)
  3. Spring boot指定日志配置
  4. dbms_random.seed
  5. gvim设置字体和隐藏菜单栏工具栏
  6. python基础代码大全-python文件及目录操作代码汇总
  7. [转载] arrayproxy转numpy_Python numpy.ptp() 使用实例
  8. Android开发遇到的异常及解决办法
  9. linux入门 适合初学者_听说 C++ Primer-不适合初学者入门!元芳,你怎么看呢?
  10. 【读书笔记《Android游戏编程之从零开始》】18.游戏开发基础(碰撞检测)
  11. MySQL数据库建立数据库和表(命令行方式)
  12. 下载知乎视频并在线播放
  13. 2017 Postgres大象会 TBase可靠性探究ppt
  14. 因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
  15. 怎么将计算机的触摸鼠标锁定,终极:如何在笔记本电脑上锁定触摸鼠标
  16. 安装caffe遇到/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o):relocation R_X86_64_32S against
  17. Jmeter--压力测试工具
  18. 基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建
  19. H3C IRF2典型应用
  20. 4.1.3 消费者轮询的流程

热门文章

  1. larval 进程管理
  2. 代码性能优化--NENO编程
  3. 西门子逻辑运算指令_西门子plc 算术、逻辑运算指令
  4. 路由器接口及静态路由配置
  5. 已知某分页系统,主存容量为 64K 字节,页面大小为 1K,对一个 4 页大的作 业,其 0、1、2、3 页分别被分配到主存的 2、4、6、7 块中,试:将十进制的逻 辑地址 1023、2500、35
  6. ajax富客户端存在的意义,基于AJAX的网上银行富客户端研究与设计
  7. java时区ZoneId集
  8. 90后薪资5年翻10倍,靠的不是钢琴手,而是真家伙!
  9. Redis 设置密码登录
  10. 学会放松和享受当下极其重要