Linux升級(jí)Glibc時(shí)系統(tǒng)奔潰怎么辦
Linux系統(tǒng)中,安裝軟件的時(shí)候要求Glibc-2.7版本,可是自身Glibc版本過(guò)低需要升級(jí),從而導(dǎo)致系統(tǒng)奔潰,這是什么原因?qū)е碌哪?又該如何處理?下面學(xué)習(xí)啦小編就給大家介紹下Linux升級(jí)Glibc時(shí)系統(tǒng)奔潰的解決方法。
現(xiàn)象:
在安裝HP硬件監(jiān)控(hpasmcli)提示需要依賴(lài)Glibc-2.7,而本機(jī)的是Glibc-2.5,看來(lái)得升級(jí)Glibc了,可惜在升級(jí)時(shí)又出現(xiàn)了更多的依賴(lài)問(wèn)題,想到在其他服務(wù)器上安裝hpasmcli時(shí)很順利,就想到將其他服務(wù)器的glibc庫(kù)文件直接拷貝到本機(jī)嘗試,涉及的文件有:
/lib/libc-2.5.so # 32位系統(tǒng)
/lib64/libc-2.5.so # 64位系統(tǒng)
因?yàn)槲也僮鞯姆?wù)器系統(tǒng)是64位的,故在覆蓋/lib64/libc-2.5.so文件的瞬間,屏幕上立即報(bào)出大量?jī)?nèi)核錯(cuò)誤,如下(其中host指代服務(wù)器主機(jī)名):
Message from syslogd@ at Fri Apr 26 18:10:35 2013 。。。 host kernel: in6b rsp 00007fff8c0b8698 error 4 Message from syslogd@ at Fri Apr 26 18:10:35 2013 。。。 host kernel: init[1]: segfault at 0000000000000000 rip 00002b28b2052e6b rsp 00007fff8c0b8698 error 4 Message from syslogd@ at Fri Apr 26 18:10:35 2013 。。。 host last message repeated 17 times Message from syslogd@ at Fri Apr 26 18:10:35 2013 。。。 host kernel: init[1]: segfau6b rsp 00007fff8c0b8698 error 4 Message from syslogd@ at Fri Apr 26 18:10:35 2013 。。。 host kernel: init[16b rsp 00007fff8c0b8698 error 4
然后系統(tǒng)就崩潰了,無(wú)法再登錄了。
緊急聯(lián)系機(jī)房重啟服務(wù)器,告知無(wú)法啟動(dòng)。
誒,親手造成了此次事故呀!
要點(diǎn):
glibc是gnu發(fā)布的libc庫(kù),即c運(yùn)行庫(kù)。glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫(kù)都會(huì)依賴(lài)于glibc。glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù)的實(shí)現(xiàn)。由于 glibc 囊括了幾乎所有的 UNIX 通行的標(biāo)準(zhǔn),可以想見(jiàn)其內(nèi)容包羅萬(wàn)象。
升級(jí)Glibc的忠告:不要在運(yùn)行中的系統(tǒng)上安裝 Glibc,否則將會(huì)導(dǎo)致系統(tǒng)崩潰,至少應(yīng)當(dāng)將新 Glibc 安裝到其他的單獨(dú)目錄,以保證不覆蓋當(dāng)前正在使用的 Glibc。(我就無(wú)知的覆蓋了,囧!)
解決方法:
趕赴機(jī)房吧,幸好我在替換前在目錄/lib下保存了原來(lái)的庫(kù)文件(libc-2.5.so.bak),使用Linux系統(tǒng)盤(pán)進(jìn)入“救援模式”,將被替換的2個(gè)庫(kù)文件恢復(fù),重啟系統(tǒng)就可以了;
系統(tǒng)正常啟動(dòng)了,就交給其他部門(mén)的同事去恢復(fù)數(shù)據(jù)吧。
上面就是Linux升級(jí)Glibc時(shí)系統(tǒng)奔潰的解決方法的介紹了,方法很簡(jiǎn)單,就要進(jìn)入救援模式,將替換的庫(kù)文件恢復(fù)回來(lái)就可以了,如果你在升級(jí)Glibc的時(shí)候不覆蓋原有的Glibc就不會(huì)導(dǎo)致系統(tǒng)奔潰。