新聞中心
Linux作為一款自由軟件,開源、免費、安全等優(yōu)點備受青睞,尤其是在服務器領域中廣泛應用。但是,在桌面領域中,相對于 Windows 和 Mac OS,使用 Linux 的人卻比較少。其中一個原因就是,相對于其他操作系統(tǒng),Linux 的操作更為復雜,遇到問題的解決也相對更加困難。特別對于 Linux 桌面環(huán)境無法啟動這一問題,更是讓很多初學者望而生畏。因此,本文將為大家提供一些常見的解決方案。

1.重啟電腦
有時系統(tǒng)出現(xiàn)問題,重啟電腦就能解決。如果你的 Linux 桌面環(huán)境無法啟動,之一步可以嘗試重啟。
2.進入文本界面
如果重啟電腦不能解決問題,可以嘗試進入文本界面。在 Linux 中有六個虛擬控制臺,可以在圖形界面下按下Ctrl + Alt + F1 或者 F2 到 F6,進入六個不同的虛擬終端。在這個操作系統(tǒng)的控制臺下面,可以直接操作系統(tǒng)的 shell,輸入你的用戶名和密碼,這樣就可以進入到系統(tǒng)的命令行界面,可以直接操作系統(tǒng),修復桌面環(huán)境的問題。
3.查看系統(tǒng)出錯信息
在文本界面中,可以通過查看系統(tǒng)日志文件或者控制臺輸出信息了解問題所在。系統(tǒng)日志文件一般保存在/var/log目錄下。其中重要的日志文件包括 messages、dmesg、Xorg.0.log。通過查看這些文件中的內容,可以了解到出錯的原因。
4.修復系統(tǒng)包
有時,無法啟動 Linux 桌面環(huán)境的問題可能與系統(tǒng)包損壞有關。可以嘗試使用一些工具來修復系統(tǒng)包。例如,可以使用dpkg,yum,apt-get等工具來修復損壞的包。
5.重新安裝桌面環(huán)境
如果重啟電腦、進入文本界面、查看系統(tǒng)日志、修復系統(tǒng)包等方法都沒有解決問題,還可以嘗試重新安裝桌面環(huán)境。這個可以先卸載桌面環(huán)境,然后再重新安裝,在重新安裝的時候嘗試一下其他桌面環(huán)境,比如 GNOME、KDE 等。
:
正常情況下,Linux系統(tǒng)的桌面環(huán)境啟動是非常穩(wěn)定可靠的。但是如果出現(xiàn)問題,上述方法應該可以解決問題。如果還不能解決,則需要更深入的處理。不過,正如操作系統(tǒng)本身,遇到問題是很正常的,特別是在剛學習使用 Linux 系統(tǒng)時,會遇到各種問題和挑戰(zhàn)。如果你遇到問題,要保持耐心和冷靜,一步一步地解決。這樣學習的過程更有收獲,也更能對 Linux 系統(tǒng)有更全面的認識。
成都網站建設公司-創(chuàng)新互聯(lián),建站經驗豐富以策略為先導10多年以來專注數(shù)字化網站建設,提供企業(yè)網站建設,高端網站設計,響應式網站制作,設計師量身打造品牌風格,熱線:028-86922220怎樣讓linux啟動后不運行桌面而是運行自己寫的圖形界面程序?
本文以redhat 8.0操作系統(tǒng)平臺為背景,闡述如何實現(xiàn)啟動級別為3時的自動登錄,及自動運行相應程序,并簡要介紹了如何在redhat 8.0下自動登錄X window(系統(tǒng)啟動級別為5),并自動運行指定的應用程序。
一、啟動級別為3時自動登錄的實現(xiàn)
啟動級別為3時自動登錄的實現(xiàn)涉及兩個軟件包:mingetty-1.00-3.src.rpm軟件包及util-linux-2.11r-10.src.rpm軟件包。
(1)mingetty-1.00-3.src.rpm軟件包
對于啟動級別為3的自動登錄的實現(xiàn),仍然需要考察/etc/inittab腳本,
3:123:respawn:/in/mingetty tty3
因此,如果想在啟動級別3的情況下實現(xiàn)自動登錄,必須要了解mingetty的功能,甚至要修改mingetty的代碼。用命令rpm -qf /in/mingetty 可知redhat 8.0版本的mingetty包含在mingetty-1.00-3.src.rpm軟件包中,下載該軟件包,安裝源代碼,缺省情況下,代碼會安裝在/usr/src/redhat/下,我們關心的只是mingetty.c源文件。mingetty.c約有五百行代碼,主要實現(xiàn)如下功能:
打開指定的tty(由參數(shù)指定);
提示用戶登錄(login:);
獲得登錄用戶名;
把用戶登錄名作為參數(shù),調用/bin/login。
我們所關心的部分實質上只有以下三行:
… …
while ((logname = get_logname ()) == 0);//mingetty.c文件438行
execl (_PATH_LOGIN, _PATH_LOGIN, “–“, logname, NULL);
error (“%s: can’t exec ” _PATH_LOGIN “: %s”, tty, sys_errlist);
… …
之一行的功能是輸出login提示,并獲得用戶輸入的登錄用戶名,登錄用戶名由logname返回。因此,可作如下修改
… …
// while ((logname = get_logname ()) == 0);//注釋掉本行,不再提示login:
logname = “root”;//添加本行代碼
execl (_PATH_LOGIN, _PATH_LOGIN, “–“, logname, NULL);
error (“%s: can’t exec ” _PATH_LOGIN “: %s”, tty, sys_errlist);
… …
注意,枯伍這里假定用戶以超級用戶身份登錄。
第二行以用戶登錄名為參數(shù),調用/bin/login程序,進一步實現(xiàn)登錄。因此,要想實現(xiàn)自動登錄,還應該了解/bin/login的功能,必要時還應修改其源代碼。
第三行為出錯處理。
(2)util-linux-2.11r-10.src.rpm軟件包
采用同樣的方法,查看/bin/login所屬軟件包(redhad8.0版本的login包含在util-linux-2.11r-10.src.rpm軟件包中),下載并安裝util-linux-2.11r-10.src.rpm,login可執(zhí)行文件有幾個源文件編譯而成,我們最關心的是login.c源文件(大約1500行的代碼)。下面簡要分析一下login要實現(xiàn)的功能,并對相應部分作必要的修改。
Login程序主要可以分為以下幾個主要部分:
1.Login首先檢查登錄者是否為超級用戶,如果不是超級用戶,并且存在/etc/nologin文件,則輸出該文件內容,并中止登鎮(zhèn)罩錄過程;主要由checknologin()實現(xiàn);
2.如果登錄用戶是超級用戶,那么login必須在/etc/securetty/中指定的tty列表中實現(xiàn)登錄,否則將導致登錄失敗。同樣沒旅或可以不指定/etc/securetty文件,此時,超級用戶可以在任何tty上登錄。
3.經過前兩步測試后,login接下來將提示輸入登錄密碼(由getpass()調用完成,有興趣的讀者可參考其手冊頁面),并進行驗證,如果密碼不對,則提示重新登錄。
4.順利經過密碼驗證后,login還將檢查是否存在.hushlogin文件,如果該文件存在,則執(zhí)行一次”quiet”登錄(所謂的quiet登錄指的是,登錄時不再提示郵件mail,不再顯示最后一次登錄時間,不輸出任何消息。啟動級別為3時,正常情況下輸出這些信息)
5.login接下來設置登錄tty的用戶ID和組ID,并設置相應的環(huán)境變量,包括HOME、PATH、SHELL、TERM、LOGNAME等。對于普通用戶來說,PATH缺省被設置成/usr/local/bin: /bin/usr/bin:;對于超級用戶來說,PATH被設置成/in: /bin: /usr/in: /usr/bin:
6.login的最后一步是為用戶啟動shell。如果在/etc/passwd中沒有為用戶指定shell,那么將使用/bin/sh,如果在/etc/passwd中沒有給出當前工作目錄,則使用”/”。
至此,一個完整的登錄過程就結束了。
從以上對login源程序分析過程中可發(fā)現(xiàn),如果要實現(xiàn)自動登錄,應該在第三步做文章,設法繞過提示輸入密碼以及對密碼進行驗證這一過程。實際上很簡單,login源程序對是否要求輸入密碼設置了一個開關控制passwd_req,缺省情況下,其值為1(passwd_req = 1),即要求輸入密碼進行身份驗證。把該行代碼改為(passwd_req = 0)后,問題就解決了。即對源文件作如下修改即可:
… …
fflag = hflag = pflag = 0;//login.c文件402行
//passwd_req =//缺省時,要求進行密碼驗證,注釋掉本行
passwd_req = //添加本行
… …
修改后,可以直接使用util-linux-2.11r-10.src.rpm提供的Makefile進行重新編譯,也可以自己對其編譯:
gcc -o login login.c setproctitle.c checktty.c xstrncpy.c -Wall -lcrypt注意包含后面的編譯選項-lcrypt,否則會出問題。
有了新版的mingetty及l(fā)ogin后,拷貝mingetty到/in/目錄,拷貝login到/bin目錄,并將/etc/inittab中的啟動級別設置為3,再重新引導系統(tǒng)即可(讀者可以自己寫一個腳本實現(xiàn)上述過程)。
如果讀者對mingetty或login代碼的其他部分感興趣,可以反復修改login.c或mingetty.c的源代碼,測試一下代碼的功能,這里要注意的是,在拷貝新版mingetty和login之前,一定要把原來的mingetty和login備份,同時還要準備系統(tǒng)引導盤(有系統(tǒng)安裝盤亦可,這樣讀者有機會鍵入linux rescue),在測試新版程序前更應如此,如果對代碼修改稍有不當,系統(tǒng)將不能正常啟動。
如果不想再作進一步的代碼測試,只是按本文給出的方法進行代碼修改,在系統(tǒng)啟動上不會出現(xiàn)什么問題。
二、自動登錄后,自動運行特定的應用程序
在實現(xiàn)了啟動級別3時的自動登錄后,自動運行應用程序非常簡單,把應用程序添加在/etc/rc.d/rc.local腳本中既可。(讀者可以嘗試一下把startx加入腳本中,看一看效果如何。在某種意義上,又增加了一種自動登錄X window的方法)
三、對自動登錄X window(系統(tǒng)啟動級別為5),并自動運行指定的應用程序的補充
在”如何實現(xiàn)自動登錄linux”中,主要以redhat 7.2平臺為背景進行闡述的,其中的自動登錄部分可以直接用于redhat 8.0中,不需要任何修改。
但是,登錄后自動運行應用程序的接口在redhat 8.0中有所不同,主要是登錄gnome后,自動運行應用程序的接口有所改變:首先點擊面板上的GNOME幫助(那個紅色的小帽子),然后選擇/其它/首選項/Sessions,在Session對話框的啟動程序屬性頁中添加要啟動的程序即可。
對于登錄kde后,自動運行程序的接口沒有改變。
四、結論
本文同”如何實現(xiàn)自動登錄linux”一文,基本上解決了如何實現(xiàn)自動登錄Linux,并自動運行相應應用程序的問題。對于兩個最常見的啟動級別(3、5),都給出了各自的方法。
在系統(tǒng)初始化到mingetty及l(fā)ogin這一階段,內核實際上已經完成了引導過程,已經到了系統(tǒng)初始化的更高階段,與內核沒什么關系了。此時,主要是/in/init根據(jù)/etc/inittab的內容而相機行事。讀者可通過(man 8 init)或者(man 5 inittab)了解更多東西。
在對文中提到的軟件包修改時,請遵守GNU General Public License(GPL)相關標準,另外,替換login通常被視為黑客行為,應當謹慎行事。
參考文獻
1.login手冊頁面
2.mingetty-1.00-3.src.rpm,在redhat 8.0的發(fā)行版本的源代碼中,包含該軟件包;
3.util-linux-2.11r-10.src.rpm,
可在
處下載,注意下載源代碼包(..src.rpm)
關于作者
鄭彥興,男,現(xiàn)攻讀國防科大計算機學院博士學位。您可以通過電子郵件
樓主看看 startx 這個常見命令,簡閉他其實就是一個啟動 X 進程,之后再由 X 進程啟動一個 session 程序的東西。
你可以把啟動 session 進程的地方改成啟動你的程序的內容,這樣 startx 就可以啟動 X 后直接歲咐轎啟動你的程序了。
其實 start 在某些系統(tǒng)里面,會首先看當前用戶目錄里面的 .xinitrc ,如果有就執(zhí)行這個腳本,這個腳本用 exec 命令啟動你的程序就行了。
這種系統(tǒng)你可以方便的添加一個專用的用戶,之后在用戶目錄里面寫好 .xinitrc 。
之后在 inittab 或者 rc.local 里面寫上 su user -c startx 就行了。
另外,不一定非要用 startx ,你只要知道如何啟動 xinit 后乎肆再啟動你的程序就行了。
這一切都是看系統(tǒng)的設計。
更佳的還是看看如何自己寫腳本啟動 X ,再由 xinit 進程啟動你的圖形程序。這是最正統(tǒng)的辦法。詳細可以參考 xfce4 ,他自己有一個 startxfce4 的腳本,這個好像是繞過 startx 命令的,當然其實他們倆沒啥區(qū)別,就是一個啟動默認的界面,一個啟動 xfce4 而已。
把你的程序放到這沖虛個目錄殲判咐下行麼?
在/etc/rc.local文件中加入你想啟動的東西 因為這個目錄是Linux啟氏純動必須檢測執(zhí)行的一個目錄。
不進入圖形磨差界面,只要把/etc/inittab 里面的id:5:initdefault:其中的5改成3即可.
運行自己的程瞎敏皮序有好幾種拿運方法, 參考這個吧:
如下例,把initab里的
x:5:respawn:/usr/毀笑bin/xdm -nodaemon
改成
x:5:respawn:/usr/bin/my_program
linux利用desktop實行開機自啟失敗
linux利用desktop實行開機自改畢啟失敗的解決方法如下:。環(huán)亮殲拿境:redhat6,進入單用戶模式,敬搭把錯誤的開機啟動應用去掉,重新啟動服務即可。
關于linux 桌面不啟動的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
創(chuàng)新互聯(lián)是成都專業(yè)網站建設、網站制作、網頁設計、SEO優(yōu)化、手機網站、小程序開發(fā)、APP開發(fā)公司等,多年經驗沉淀,立志成為成都網站建設第一品牌!
標題名稱:Linux桌面環(huán)境無法啟動的解決方案(linux桌面不啟動)
文章路徑:http://m.5511xx.com/article/dpgipoo.html


咨詢
建站咨詢
