注意]改GRUB 的配置文件(不建议直接改 grub.conf)
file:/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
替换为 GRUB_CMDLINE_LINUX_DEFAULT="text"
保存后 sudo update-grub 重启即可
在ubuntu10.04版本一下的系统中:
方法:
sudo vim /etc/default/grub
找到这一行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改为:GRUB_CMDLINE_LINUX_DEFAULT="text "或者"quiet splash text"
保存后sudo update-grub 重启即可。
note:
quiet的意思是内核启动时候简化提示信息
splash的意思是启动的时候使用图形化的进度条代替init的字符输出过程
===========================================================================================
在ubuntu10.04以上版本中:
方法1:
Ubuntu安装后默认的run level为2 也就是默认为图形界面启动
Ubuntu之所以能直接启动到图形界面,是由于运行gdm所致。所以,只要把gdm的启动脚本禁用就可以了,方法就是把文件名的第一个字母S改成K:
cd /etc/rc2.d
sudo mv S30gdm K30gdm
note:此方法不适用于11.10
方法2:
ubuntu兼容inittab,所以新建一个/etc/inittab文件
输入:
id:3:initdefault:
进入到/etc/rc3.d/中,看看gdm的启动脚本文件名:
ls -l *gdm
如果是以S打头的,把文件名改成以K打头
============================================================================================
从字符界面进入图形界面的方法:startx 即启动X Window
一、前言
无论你想要在ubuntu 12.04(11.10适用)开机启动图形程序,或者非图形程序,相信这篇文章能帮上大忙。
我将根据我的需求讲解我的做法,并解释为什么这么做。完了以后,各位看官根据自己的需求不加修改或稍加修改即可适用。我这边,总得来说,需求是做一个RDP瘦客户端,在一个板子上装上ubuntu 12.04,然后要这个系统启动后能立即弹出RDPclient登录框,而不是进入ubuntu的图形桌面。
二,三部分讲解我是怎么做的,四部分总结设置程序为开机启动的方法,五部分主要针对需要把图形界面程序弄成开机启动的同学,讲解startx。
第六部分为后来补充的:如何关闭ubuntu的启动时载入画面(“loading screen”)。
二、阻止默认图形桌面启动
ubuntu 12.04默认的开机会进入一个图形界面,用命令pstree可以看到图形界面所在的进程树:
首先要做的,就是阻止这个lightdm的进程开机启动。 做法:
一、查看文件/etc/init/rc-sysinit.conf,在第14行附近:确认“env DEFAULT_RUNLEVEL=2”。2是新装系统默认的,确保不被修改。
二、编辑文件 /etc/init/lightdm.conf,在第12行附近,原句“ and runlevel [!06]” 改为“ and runlevel [!026]”。
解释:linux系统都有一个运行级别(runlevel)的概念,不同的运行级别配置将导致系统的启动过程有很大差异,比如当配置 runlevel 为 1 是,是不进入图形界面的。系统启动过程中会有一个init进程来拉起许多其他进程(各种系统服务,窗口界面)。在ubuntu上(11.10,12.04是这样,其他版本或其他linux发行版不确定)init会执行两个目录下的脚本,一个是/etc/init/下的,另一个是/etc/rc?.d/下的,问号可能是0~6的其中一个数字,代表运行级别。接下来,讲解一下流程以加深理解。
在ubuntu上,init进程首先执行/etc/init/目录下的rc-sysinit.conf,这个文件指明了本次启动的默认运行级别。这是上面第一步的意义:确保默认运行级别是2。接下来目录/etc/init下的其他脚本的执行都会根据不同的运行级别做出不同的动作,比如lightdm会判断运行级别是否处于1,2,3,4,5中的一个,是则启动lightdm,不是则不启动lightdm。这便是上面第二步的意义,修改 lightdm.conf ,把“2”加入到判断语句,使得lightdm在运行级别2的时候不要启动。明白了这些,你就可以灵活一点,例如把默认级别设置为3,而把3加入那个判断语句,也可以达到阻止lightdm启动的效果。完成了/etc/init/目录下的启动动作,init 进程会继续执行/etc/rc2.d目录下的脚本。
三、设置自己的程序为开机启动
阻止了lightdm的启动之后,还要做的就是把我的RDPClient设置为开机启动。做法:
一、在目录/usr/bin下,有个文件startx,在当前目录复制出一份来,命名为mystartx(cp startx mystartx)。编辑mystartx,在文件末尾有一行“xinit "$client" $clientargs -- "$server" $display $serverargs”,在这一行的前面加入一行"client="/root//myRdpClient/myRdpClient.py"。
二、编辑文件/etc/rc.local,在"exit 0"前添加一行:/usr/bin/mystartx。
解释:第一步里,我制作了一个启动RDPClient的脚本,第二步里,我把这个脚本设置为开机启动。制作RDPClient或其他图形应用程序的启动脚本请看本文的第五部分,第四部分讲解开机启动的方法和注意事项。
四、添加开机启动程序的方法及其注意事项
1.在/etc/init/目录下添加开机启动程序的方法。该目录下新建文件myrdpclient.conf。将下面的内容拷贝至文件保存即可。
start on login-session-start
script
/usr/bin/mystartx end script
这样init进程就会启动的时候执行/usr/bin/mystartx。之前我解释运行级别(runlevel)的时候,说这个目录下的是脚本,是不想在那个地方废话。其实,这个目录下的 .conf 文件是供init进程读取的配置文件,每个配置文件的内容包含两个内容,一是一段脚本在告诉init要启动哪个程序,即指定一个job,或者说任务;二是一些标签(如“start on”)表明这个程序在什么时候启停。首先被读取执行的是rc-sysinit.conf。关于具体该如何写一个conf文件来让init在适当的时候运行某个程序请自行搜索,我给出个这个配置是个非常简单的配置,如果你需求不多的话,把/usr/bin/mystartx 替换为你的程序就够了。
2.在/etc/rc2.d目录下添加开机启动程序的方法。执行命令:
ln -s /usr/bin/mystartx ./S99mystartx
这个命令将会该目录下建立一个指向/usr/bin/mystartx 的链接,这样init在启动时就会执行这个链接指向的命令。那个S99打头的命名规则,我其实不清楚其意义是什么,大约是在标明启动优先级。总之,你只需要将/usr/bin/mystartx替换为你想要执行的命令(你的程序),同时链接的名字以"S99"为前缀即可。
3.在/etc/rc.local文件里添加启动程序,在“exit 0”之前写上你的命令就可以了,我正是这么做的。
4.在文件/etc/crontab里添加开机启动程序,编辑该文件,在文件末尾添加一行:
@reboot root /usr/bin/mystartx
这样你的程序会被一个叫 cron 的例程拉起(而不是 init ),实际上,是 init 在启动过程中启动啦 cron 例程,而 cron 例程通常在系统中做一些定时作业,通过配置也可以让 cron 在启动时做一些作业。
所以,如果你要添加自己的开机启动程序,以上四个地方都可以,其中要大家注意的几点:
一、前两种方法可能是不稳妥的,因为这两个阶段是系统启动阶段,你添加的程序若对系统某些服务有依赖,将导致你的程序出现错误,比如我的RDPclient会出现段错误。
二、第三种方法,添加到/etc/rc.local里面,是网上出现最多的答案,这也是我采用的方法。。事实上,rc.local是系统特地为用户提供的一个添加开机启动程序的接口。需要注意的是,并非每个运行级别都会运行rc.local,在ubuntu里只有2,3,4,5运行级别会执行,所以如果运行级别设置不对的话,你写在rc.local里的命令可能就不能如期执行了。如果你对rc.local如何被执行感兴趣的话读下面。实际上运行rc.local是rc2.d目录下所有脚本中的最后一个脚本。接下来证明这点,可以在rc2.d目录下执行命令:ls -l:
S99rc.local -> ../init/rc.local
可以看到,rc2.d目录下的S99rc.local是一个到 /etc/init.d/rc.local 的链接,运行 S99rc.local 就是在运行 /etc/init.d/rc.local ,而打开这个文件发现里面的注释:
# Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Run /etc/rc.local if it exist
实际上,就是在运行 /etc/rc.local 。所以,执行rc2.d目录下的所有脚本,最后一步,就是执行 /etc/rc.local 。其中的注释同样表明了只有2、3、4、5运行级别会执行rc.local,这是因为,只有在2、3、4、5对应的 /etc/rc?.d 目录才有运行 rc.local 的链接。
五、制作图形应用程序启动脚本
对于要开机启动非图形界面的同学来说,事情是非常简单的,在rc.local里添加你的命令即可(或者使用第四部分的其他方法)。之前的阻止lightdm启动你都不需要做,做了也无妨。至于运行级别,你没动过的话应该是2,是ok的。
对于要启动图形化界面的同学,要知道为什么我在startx里面添加一行,设置为开机启动,同时屏蔽lightdm的启动,就可以达到目的,可能还需要进一步的说明。
在linux里,要运行图形界面,需要同时有 X server(或者叫X11 server,"11"是当前的版本号), 和X client,这是 x windows 工作的模式(据说以后会改成wayland什么的,那是后话)。X server在目录 /etc/X11 下,X server启动后的进程名字叫 Xorg ,如果你的系统启动了图形桌面。那么运行命令 pstree 一定可以看到Xorg,正如我在第一部分的贴图里显示,在那里,Xorg 是被 lightdm 拉起来的。
所以,如果ubuntu系统要跑图形程序,不管是它的默认图形桌面lightdm,还是我的RDPClient,都必须先启动 X server(Xorg),再启动图形程序作为X client。没有修改过的ubuntu的图形桌面就是这样启动的,从图中你可以看到它先启动了Xorg,再启动了自己的一大堆metacity什么的。那么,我现在阻止了lightdm的启动,要运行RDPCLient,也同样要分两步:一、启动X server,二、启动RDPClient(作为X client)。
这看起来真难,因为我其实也不知道如何启动X server。但是在 /usr/bin 下有一个脚本叫 startx 。这个脚本是个历史遗留脚本,在过去的ubuntu,或者现在某些其发行版本linux,是这个脚本负责启动默认的图形桌面的。它会做两件事,一、启动X11server,二,启动图形桌面作为 X client。我可以拿这个脚本稍作修改,替换掉其中的图形桌面为我的RDPClient就可以了,具体做法在第二部分。
为什么我不修改lightdm.conf来达到目的?lightdm也是做了两件事,不是也可以替换它的X client为我的X client就可以了么?也许这样是可以的,但是,lightdm.conf那个脚本,哥们儿,你去看看吧,我反正下不了手。反观startx,startx的启动逻辑是非常清晰的,它通过执行了一个 xinit 命令来同时启动X server 和 X client,建议你使用命令“man xinit” 查看xinit的相关内容。修改startx来达到目的比较容易,这就是为什么我不修改lightdm。
总结,阻止lightdm启动默认桌面,通过修改startx来制作一个脚本mystartx以启动X server和我的RDPClient,把mystartx搞成开机启动。这是这样!
六、关闭Ubuntu的载入画面
ubuntu启动时,会有一个ubuntu字样出现在屏幕,文字下方有闪烁的点,这时按ESC可以在动画和文字界面之间切换。这一步骤不属于lightdm,而是一个叫 plymouth 的进程在起作用。实际上,plymouth的意义就在于,在开机到图形桌面 (lightdm)起来这段时间里展示出一个动画,从而提高用户体验。
屏蔽的方法:
一、编辑 /etc/default/grub 文件,原文11行附近:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
去掉”splash“,改后:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
二、执行命令:
sudu updat-grub
重启,即可看到,不再有载入画面出现了。
ubuntu设置开机默认进入字符界面方法 ubuntu 12.04 桌面版关闭图形界面(转)的更多相关文章
-
ubuntu 12.04 桌面版关闭图形界面
对于12.04的ubuntu桌面系统,如果想在开机的时候直接进入字符界面,那可以: 编辑文件 /etc/init/lightdm.conf,在第12行附近,原句“ and runlevel [!06] ...
-
ubuntu 14.04 桌面版关闭图形界面
ubuntu 14.04 桌面版关闭图形界面 问题: 怎样将ubuntu14.04设置为文本模式启动? 解决方式: 改动改GRUB 的配置文件(不建议直接改 grub.conf) $sudo vim ...
-
Linux(ubuntu 12.04桌面版) 搭建Android开发环境
因为一些工作上的原因,需要切换到Linux环境下做点开发,我选择的Linux发行版本为ubuntu(我不建议使用fedora,我最开始就是使用的fedora,但发现并不是特别好使,有些插件没办法安装, ...
-
设置IE默认文本模式的方法
设置IE默认文本模式的方法 <meta http-equiv="X-UA-Compatible" content="IE=8" /> IE=5.6. ...
-
Ubuntu关闭图形界面
方法一 sudo /etc/init.d/lightdm stop 方法二 init 3 关闭图形界面 init 5 开启图形界面
-
在Ubuntu 12.04 桌面上设置启动器(快捷方式)
在Ubuntu 12.04 桌面上设置启动器(快捷方式)过程讲解: 如下图所示,Eclipse 和 SQLDeveloper 都可以直接双击打开,这些应用程序的启动器都在 /usr/share/app ...
-
Ubuntu 忘记root user密码 关闭图形界面
忘记root密码 删除recovery nomodeset 才删除的后面添加 quiet splash rw init=/bin/bash.然后按F10, 启动 忘记User密码 http://blo ...
-
CentOS 7 关闭图形界面
CentOS 7 关闭图形界面 查看/etc/inittab如下: # systemd uses 'targets' instead of runlevels. # by default, there ...
-
【转】ubuntu 12.04 LTS将关闭最大化最小化移动到右上角
原文网址:http://www.4byte.cn/learning/114801.html ubuntu 12.04 LTS将关闭最大化最小化移动到右上角 还是按下“ALT +F2”组合键,输入g ...
随机推荐
-
[摘录]第三部分 IBM文化(1)
第二十章 论公司文化如果是在20世纪90年代初期,当一个人看见或者听到“IBM”时,他会联想到什么呢?或许是“大计算机”.“个人电脑”或者“ThinkPads”.但是,他们同时也必然会想到“大公司”. ...
-
linux 查找 并删除 文件
find / -name "*.mp3" |xargs rm -rf会删除所有以mp3为扩展的文件.操作的时候先: find / -name "*.mp3" 会 ...
-
oracle 导库建立测试库
由于客户要定制的关系,需要对产品的数据进行相关的修改,所以需要复制原来的库出来,然后在此基础上再进行修改.步骤如下: 在PL/SQL下操作: /*分为四步 *//*第1步:创建临时表空间 */cre ...
-
在Eclipse中使用MAT分析Android程序内存使用状况(转)
对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题 ...
-
Flink - Generating Timestamps / Watermarks
https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/event_timestamps_watermar ...
-
IOS中UICollectionView和UICollectionViewController的用法
1.新建一个xib描述UICollectionViewCell(比如DealCell.xib),设置好resuse identifier(比如deal) 2.控制器继承UICollectionView ...
-
text-align:justify实现文本两端对齐布局,兼容IE
要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清楚的概念.大多 IE下的显示错误,就是源于 haslayout. 什么是 haslayout ...
-
WF4的数据库 表
WF4的数据库 表 SQL 建表 SqlPersistenceProviderSchema.sql InstanceData 实例数据表 SqlPersistenceService_Schema.sq ...
-
[Hibernate] 注解映射例子
Hibernate 注解(Hibernate Annotation) 是一种比较新的方式,通过在 java 简单类增加注解,来声明 java 类和数据库表的映射,作用和 xml 文件相似.hibern ...
-
Freemarker日期函数处理【转】
Freemarker日期函数处理[转] (2012-08-01 14:32:13) 转载▼ 标签: 杂谈 string(当和一个日期值一起使用) 这个内置标签用指定的格式把日期转换成字符串,(把默 ...