Ubuntu的默認開機的runlevel是2,可以用runlevel來查看當前的默認運行級別。
debian系(ubuntu是基於debian)的Linux一直是用runlevel 2來默認啟動,並且runlevel定義也與redhat有區別。debian的runlevel級別定義如下:
0 – Halt,關機模式
1 – Single,單用戶模式
2 - Full multi-user with display manager (GUI)
3 - Full multi-user with display manager (GUI)
4 - Full multi-user with display manager (GUI)
5 - Full multi-user with display manager (GUI)
6 – Reboot,重啟
可以發現2~5級是沒有任何區別的。他們為多用戶模式,這和一般的linux不一樣。而redhat的runlevel級別定義如下:
0:關機。不能將系統缺省運行級別設置為0,否則無法啟動。
1:單用戶模式,只允許root用戶對系統進行維護。
2:多用戶模式,但不能使用NFS(相當於Windows下的網上鄰居)
3:字符界面的多用戶模式。
4:未定義。
5:圖形界面的多用戶模式。
6:重啟。不能將系統缺省運行級別設置為0,否則會一直重啟。
這里補充一下,多數的linux都是用一種叫System V的機制來啟動運行級別,而ubuntu使用upstart代替init啟動系統進程。所以沒有那個inittab文件來改默認運行級別。ubuntu 的默認運行級別文件是/etc/init/rc-sysinit.conf。
成功的方法:
第一種方法:(內核級別的)
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
重啟,即可看到,不再有載入畫面出現。