天天看點

ubuntu設定開機預設進入字元界面方法一、前言二、阻止預設圖形桌面啟動 三、設定自己的程式為開機啟動 四、添加開機啟動程式的方法及其注意事項五、制作圖形應用程式啟動腳本六、關閉Ubuntu的載入畫面

ubuntu 12.04 桌面版關閉圖形界面

注意]改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設定開機啟動圖形應用程式,替換預設圖形桌面

一、前言

無論你想要在ubuntu 12.04(11.10适用)開機啟動圖形程式,或者非圖形程式,相信這篇文章能幫上大忙。

我将根據我的需求講解我的做法,并解釋為什麼這麼做。完了以後,各位看官根據自己的需求不加修改或稍加修改即可适用。我這邊,總得來說,需求是做一個RDP瘦用戶端,在一個闆子上裝上ubuntu 12.04,然後要這個系統啟動後能立即彈出RDPclient登入框,而不是進入ubuntu的圖形桌面。

二,三部分講解我是怎麼做的,四部分總結設定程式為開機啟動的方法,五部分主要針對需要把圖形界面程式弄成開機啟動的同學,講解startx。

第六部分為後來補充的:如何關閉ubuntu的啟動時載入畫面(“loading screen”)。

二、阻止預設圖形桌面啟動

ubuntu 12.04預設的開機會進入一個圖形界面,用指令pstree可以看到圖形界面所在的程序樹:

ubuntu設定開機預設進入字元界面方法一、前言二、阻止預設圖形桌面啟動 三、設定自己的程式為開機啟動 四、添加開機啟動程式的方法及其注意事項五、制作圖形應用程式啟動腳本六、關閉Ubuntu的載入畫面

首先要做的,就是阻止這個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或其他圖形應用程式的啟動腳本請看本文的第五部分,第四部分講解開機啟動的方法和注意事項。

四、添加開機啟動程式的方法及其注意事項

對于開機啟動程式,需要關注4個地方(排序有分先後):1.目錄 /etc/init/ 下的所有conf都會被init程序首先執行。2.運作級别為2的時候,目錄 /etc/rc2.d/ 下的所有腳本會其次執行,其他運作級别雷同。3.檔案/etc/rc.local裡的指令會得到執行。4.在檔案/etc/crontab裡面配置為@reboot的指令會得到執行。 以下分别講解每個地方該怎麼做。

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

重新開機,即可看到,不再有載入畫面出現了。