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

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


咨詢
建站咨詢
