zoukankan      html  css  js  c++  java
  • 关于Ubuntu修改默认运行级别

    第一种方法:(内核级别的)
     
    Sudo vi /etc/default/grub
    修改GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
    为:GRUB_CMDLINE_LINUX_DEFAULT=” text”
    然后运行下sudo update-grub2就可了
     
    第二种方法:(基于upstart的”正统”方法)
     
    ubuntu的upstart的体系下,/etc/init.d里面基本上都是连接到/lib/init/upstart-job的软连接,所以,对 initscripts的请求全部转化为upstart事件,upstart系统对启动项目的管理全部根据/etc/init里面的配置文件来启动,可以启动lightdm的事件就让人咂舌
     
    编辑文件 /etc/init/lightdm.conf
     
    start on ((filesystem
    and started dbus
    and (graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1
    or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
    or stopped udevtrigger))
    or runlevel PREVLEVEL=s)
    stop on runlevel [016]
     
    可见,一旦发生文件系统初始化,DBUS总线启动和发生graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1 or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udevtrigger or runlevel PREVLEVEL=s这里面的任何一个事件,GDM就会被启动,只在运行级别在016的时候,GDM不启动。
    所以,事件也就明了了、要在upstart层面干掉gdm,把上面的启动相关事件注释掉,改写下就行了
     
    由于ubuntu 默认模式为2,所以:
    start on (filesystem
    and started dbus
    and (graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1
    or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
    or stopped udevtrigger)
    and runlevel [345])
    stop on runlevel [0126]
     
    重启。
     
    第三种方法:
     
    1、阻止默认图形桌面启动
     
    ubuntu 12.04默认的开机会进入一个图形界面,他是由lightdm进程来实现的。
     
    首先要做的,就是阻止这个lightdm的进程开机启动。 做法:
     
    (1)、查看文件/etc/init/rc-sysinit.conf,在第14行附近:确认“env DEFAULT_RUNLEVEL=2”。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目录下的脚本。
     
    2、关闭Ubuntu的载入画面
     
    ubuntu启动时,会有一个ubuntu字样出现在屏幕,文字下方有闪烁的点,这时按ESC可以在动画和文字界面之间切换。这一步骤不属于lightdm,而是一个叫 plymouth 的进程在起作用。实际上,plymouth的意义就在于,在开机到图形桌面 (lightdm)起来这段时间里展示出一个动画,从而提高用户体验。
     
    屏蔽的方法:
     
    (1)、编辑 /etc/default/grub文件,原文11行附近:
     
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
     
    去掉”splash“,改后:
     
    GRUB_CMDLINE_LINUX_DEFAULT="quiet"
     
    (2)、执行命令:
     
    sudu updat-grub
     
    重启,即可看到,不再有载入画面出现
     
     
     
    阅读下文能够更好的理解(扩展阅读):
     
     
     
    Linux 系统主要启动步骤:
     
    1. 读取 MBR的信息,启动 Boot Manager
     
     Windows 使用 NTLDR作为 Boot Manager,如果您的系统中安装多个版本的 Windows,您就需要在 NTLDR中选择您要进入的系统。Linux 通常使用功能强大,配置灵活的 GRUB作为 Boot Manager。
     
     2. 加载系统内核,启动 init进程
     
       init 进程是 Linux的根进程,所有的系统进程都是它的子进程。
     
     3. init 进程读取 /etc/inittab文件中的信息,并进入预设的运行级别,
     
       按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start参数启动,并指向一个系统中的程序。通常情况下, /etc/rcS.d/目录下的启动脚本首先被执行,然后是/etc/rcN.d/目录。例如您设定的运行级别为 3,那么它对应的启动目录为 /etc/rc3.d/。
     
    4. 根据 /etc/rcS.d/文件夹中对应的脚本启动 Xwindow服务器 xorg Xwindow为 Linux下的图形用户界面系统。
     
    5. 启动登录管理器,等待用户登录
     
      Ubuntu 系统默认使用 GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/文件夹中找到一个名为 S13gdm 的链接)
     
     
     
    ubuntu的init与系统服务设置
     
    init
     
    Init是位于/sbin/init的一个程序,它是在linux下,在系统启动过程中,初始化所有的设备驱动程序和数据结构等之后,由内核启动的一个用户级程序,并由此init程序进而完成系统的启动过程。
     
     
     
    ubuntu与传统的linux略有不同,使用upstart完成系统的启动,但表面上仍维持init程序的形式。
     
    运行级别
     
    传统上,linux有几种不同的运行级别,包括如下几种:
     
     
     
    # 0 - 停机
     
    # 1 - 单用户模式
     
    # 2 - 多用户,没有 NFS
     
    # 3 - 完全多用户模式(标准的运行级)
     
    # 4 –系统保留的
     
    # 5 – X11(x window)
     
    # 6 - 重新启动
     
     
     
    系统启动后处于哪一种级别由init读取/etc/inittab文件中的缺省级别设置来确定,一半图形界面的系统是进入级别3。
     
     
     
    但是ubuntu与传统的不太一样,默认情况下是找不到/etc/inittab文件的,而且运行级别也有差别,具体分这样几个级别:
     
     
     
    # 0 –关闭系统
     
    # 1 –单用户模式
     
    # 2~5 –完整的多用户模式
     
    # 6 –重新启动
     
    也就是说,默认情况下级别2、3、4、5都是一样的,同时系统的默认级别设定也不是在inittab文件中,而是写在/etc/init/rc- sysinit.conf文件中。打开此文件,可以找到下面一句:
     
    env DEFAULT_RUNLEVEL=2
     
    这表明系统当前默认是进入级别2。
     
    另外,在此文见中还有一段以if [ -r /etc/inittab ] 开始的代码,这里保留了使用inittab指定系统默认运行级别的功能,也就是说,如果用户手动创建了/etc/inittab,那么init将以 /etc/inittab中指定的默认运行级别进行系统的启动。比如说用户希望系统以级别3为默认运行级别,则只需在inittab文件中加入如下一行:
     
    id:3:initdefault:
     
    在经过/etc/init/rc-sysinit.conf确定运行级别后,init将进一步运行/etc/init.d/rc,然后根据级别进入 /etc/rc[?].d启动或关闭相应的服务。
     
    服务的启动与关闭脚本
     
    ubuntu下启动与关闭服务的脚本存放与/etc/rc[?].d目录下。其中[x]表示0~6,分别对应级别0~6,如/etc目录下的 rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d。假设rc-sysinit.conf或inittab中指定的默认级别是2,那么init将执行/etc/rc2.d目录下的脚本启动或关闭相应服务。
     
     
     
    如果打开/etc/rc[?].d目录,会发现这些目录下的文件都是形如Snnxxxx或Knnxxxx的符号链接,而且都是指向/etc /init.d。也就是说不同运行级别下服务的启动或关闭脚本均是放在/etc/init.d下,只不过根据不同级别的需要,在对应/etc /rc[?].d目录下放一个链接,不同的级别会需要不同的服务,因此不同/etc/rc[?].d目录下的链接文件也不尽相同以此区分。
     
     
     
    其中链接文件中以S开头的表示在调用/etc/init.d目录中对应脚本的时候会传递一个start参数,也就是启动对应服务,而以K开头的则是传递一个stop参数,由此关闭此服务,此处的K表示kill。
     
     
     
    S和K后面的nn是一个数字,表示本脚本被执行的先后顺序,小号在前大号在后,这样以解决不同服务之间可能存在的先后依赖关系。比如说ftp服务依赖于网络服务的启动,所以ftp服务的编号就要大于网络服务的编号,在网络服务启动后再行启动。
     
     
     
    最后的xxxx则是服务的名字。
     
    另外,除了/etc/rc[0~6].d文件外,还有一个/etc/rcS.d目录,这个目录下的服务脚本与/etc/rc[0~6].d格式类似,也为指向/etc/init.d中的脚本的链接,但是会在/etc/rc[0~6].d中的脚本执行前首先被执行。
  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/kayvan/p/4592568.html
Copyright © 2011-2022 走看看