linux19-系統排錯

火星人 @ 2014-03-08 , reply:0


系統排錯:


linux rescue 進入后

如果正常情況下,會把你要修復的系統mount到/mnt/sysimage
chroot /mnt/sysimage 再去修改


有些情況下,沒有mount到/mnt/sysimage
fdisk -l 查看所有分區
然後自己手動建立目錄用來掛載排錯
例mkdir /aaa --一定要手動新建的目錄,否則不能掛載
mount /dev/sda2 /aaa
在/aaa目錄下排錯就可以了


1,mbr 446(啟動設備)+64(分區信息)+2(結束位)
mbr丟失,現象:啟動時候黑屏,左上角一個游標在閃

dd if=/dev/sda of=/mbr.bak bs=1 count=512 --備份

把備份拷到別的機器或者移動存儲設備


dd if=/dev/zero of=/dev/sda bs=1 count=512 --幹掉mbr


fdisk -l 查看不到分區信息


reboot后,系統進不了,黑屏,並且一個游標在閃

修復方式:
1,使用昨天做的usblinux引導進入,然後把崩潰系統的分區給掛載過來進行修改

2,嘗試使用挽救模式(linux rescue)進行挽救:
挽救模式就是用一個OK的臨時系統去把原來的錯誤系統掛載,然後進入臨時系統去修復原系統的錯誤

進入方法:使用光碟機插入光碟進入安裝界面,或者通過一個網路安裝伺服器進入安裝界面

在安裝界面輸入linux rescue 再回車


--按完continue后,這裡出現了“分區表不可訪問,是否重新擦除所有硬碟上的信息"的提示;所以這裡按no,進入到了挽救模式;但是這裡原系統沒有掛載到/mnt/sysimage上,並且fdisk -l查看不到分區,ls /dev/可以看到分區名,但掛載不了;也就是說找不到以前的mbr備份,無法恢復


--所以,mbr備份到U盤這種外接設備,現在就可以掛載進行恢復


dd if=/path/mbr.bak of=/dev/sda
--或者進入帶網路的挽救模式,通過網路拷過來進行恢復;但要在臨時系統使用scp遠程拷過來,它本身沒有ssh服務,但可以使用scp使用別人的ssh服務.

雙系統的情況:正確的安裝順序為先安裝windows,再安裝linux,這樣可以使用linux的grub程序去引導windows; 如果windows重裝,會進不了系統,嘗試使用挽救模式進入系統,然後grub-install

如果安裝的順序為先安裝linux,再安裝windows,現象也一樣,嘗試使用挽救模式進入系統,修改grub,然後grub-install


2,superblock 超級塊
superblock是記錄innode節點和空閑磁碟空閑信息的

模擬superblock壞掉的情況:
dd if=/dev/zero of=/dev/sda13 bs=1 count=1024 seek=1024

[root@li ~]# mount -t ext3 /dev/sda13 /quota/
mount: wrong fs type, bad option, bad superblock on /dev/sda13,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

[root@li ~]# dumpe2fs /dev/sda13
dumpe2fs 1.39 (29-May-2006)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda13
Couldn't find valid filesystem superblock.

使用e2fsck命令去修復
e2fsck - check a Linux ext2/ext3 file system

[root@li ~]# e2fsck /dev/sda13 --修復superblock損壞的磁碟

3,grub

grub文件丟失 ,現象就是啟動系統時進入到 grub> 提示符界面

模擬grub文件不存在的情況
[root@li ~]# mv /boot/grub/grub.conf /boot/grub/grub.conf.bak --刪除或者重命名來模擬grub文件丟失

重啟系統,發現出現了grub > 提示符的界面,進不了系統

這時候可以手動在grub >提示符下編輯grub進入系統


[root@li ~]# mv /boot/grub/grub.conf.bak /boot/grub/grub.conf --進入系統后沒有grub就要手動編寫,就OK

4,/etc/fstab

/etc/fstab內容錯誤:
模擬/etc/fstab錯誤,比如我這裡把根的label故意寫錯
重啟系統,在啟服務的第三步左右,就會報錯,進不了系統
此時輸入root密碼,回車進入(repair system)# 提示符界面
(repair system)# vim /etc/fstab --這樣是不能修改的,是readonly的,強制寫入也不行
(repair system)# mount -o remount,rw / --這樣以讀寫的方式重mount你的根,再用vi修改/etc/fstab就可以進入系統了

/etc/fstab丟失:
模擬/etc/fstab丟失,
[root@li ~]# mv /etc/fstab /etc/fstab.bak
重啟系統
進入系統后,問題很多
使用tty1-tty6終端去手動編寫,或者使用linux rescue模式進入系統手動編寫/etc/fstab

5,inittab
如果inittab定義的是啟動5級別,但你的圖形安裝包並沒有安裝完全,就會在文本模式進不了圖形,會報錯

網路不通
mii-tool 查看網卡是否支持,link ok表示網線插好,no link表示網線沒有插好,如果報
SIOCGMIIPHY on 'eth0' failed: Invalid argument
no MII interfaces found
之類的錯誤,那麼就是系統不支持網卡,或者網卡模塊丟失
/etc/sysconfig/network-scripts/ifcfg-eth0 查看此文件是否存在,裡面的onboot=yes(不能等於no)

不能上網,route -n 查看路由和網關, cat /etc/resolv.conf查看DNS指向,能否ping通,還有就是iptables和selinux沒有限制,firefox不是代理上網

6,服務
應用服務啟動不了: 一般是配置文件寫錯,系統許可權問題,iptables和selinux的限制問題,所有分區磁碟使用率滿了
排錯:看啟服務時的報錯,看相關服務的錯誤日誌,或者/var/log/messages等日誌

Empire CMS,phome.net


關閉iptables iptables -F
service iptables stop
chkconfig iptables off

關閉selinux vim /etc/selinux/config
SELINUX=disabled --把這一句改為disabled,再重啟系統

7,密碼
密碼修改不了,看/etc/passwd和/etc/shadow文件的許可權問題,lsattr /etc/shadow是否有隱藏屬性(i屬性)

破解root密碼
1,單用戶模式進入去修改 (進入單用戶模式的方法為在grub里第二行,按e編輯,然後在後面加1 ,回車,按b啟動)
2,如果grub加了密碼,就不能用單用戶模式,就要用linux resuce模式進入修改
3,如果又沒有光碟機,bios被加密碼,就可以通過主板放電,去掉BIOS密碼,


圖形登錄,報xsession持續10秒的情況,很可能是/etc/passwd的root用戶那一行有問題

/etc/passwd很重要,不要亂改,

例子: 把/etc/passwd里的root用戶的信息進行修改:如把/bin/bash改成/bi/bash

重啟后,在圖形登錄界面會發現登錄不了

用普通用戶登錄,然後切換su - root 失敗

可以使用單用戶模式進行修復

8,包的安裝,yum

rpm 基本錯誤 依賴性
相互依賴性

rpm 安裝是如果報錯(不是依賴性),可能是包本身的問題,可能嘗試--noscript等參數安裝,但不保證功能的完整性

如果安裝包並沒有拷貝完全,報的錯類似於
error: unpacking of archive failed on file /usr/lib/vmware/isoimages/linux.iso;4c2eb301: cpio: read
看到類似報錯,就可以去用ll 查看包的大小


yum的錯誤:
一般是配置文件路徑寫錯
或者就是iso沒有拷貝完全
如果報key相關的錯誤,系統版本是否一致,嘗試導入iso包里的key文件rpm --import RPM-GPG-KEY-redhat-release

Empire CMS,phome.net

如果剛安裝好的系統,忘記安裝你的中文包,配置好yum,然後使用system-config-packages調出圖形安裝包的界面(就是剛開始安裝系統時選包的界面),去選擇中文支持安裝就可以了


圖形界面
啟動后,登錄圖形系統界面非常慢,很有可能是主機名造成的,把主機名三步給修改好,如果還是有問題,可以使用如下步驟
rm /root/.gnome -rf
rm /root/.gnome2 -rf
find /tmp -name "*root*" -exec rm {} -rf \;
reboot

主機名臨時修改過,會造成開機時sendmail會等待很久

/etc/hosts里的IP與主機名對應不要寫錯,127.0.0.1那一行也不要刪除


有規律的重啟或者是做一些事情

有規律的重啟,要注意是否在啟動系統要讀取的文件里加了重啟的命令,比如/etc/rc.local加了/sbin/init 6等,還有要檢查crontab

比如說在登錄用戶時,就會執行一些事情或者腳本,就應該要考慮全局的環境變數文件是否加了一些代碼 /etc/profile /etc/bashrc

對於單獨用戶而言,那就要查看/home/用戶名/.bash* 那幾個文件

mount, nfs ,其他

mount命令如果不存在,文件幾乎都不能保存

nfs umount時,如果等待時間比較長,一般是做過大量數據拷貝后,程序在sync
umount 不了 ,嘗試fuser -k /mnt 去殺掉進程

/usr/src/kernels/`uname -r` 包含了內核的源碼,所以不要刪除,否則虛擬機安裝不了,虛擬機要去這裡找這裡的文件去編譯使用的模塊

/lib/modules/`uname -r`不能刪除,否則不能modprobe載入模塊


題目:

使用一個12G以上大小的虛擬機安裝排錯系統:

獲取伺服器IP:2.2.2.10
安裝名:troubleshooting

答案:

下面是做錯誤系統的ks.cfg文件

#platform=x86, AMD64, or 英特爾 EM64T
# System authorization information
auth --useshadow --enablemd5
key --skip
# System bootloader configuration
bootloader --append="rhgb quiet" --location=mbr --md5pass=$1$L6AAtsMq$pfsFWTLiwFtwzBhK.YrD11
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --enabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=2.2.2.10 --dir=/share/yum
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$hQIi/tax$TbbGDhI6XCSHEtw.r4qVi/

# SELinux configuration
selinux --enforcing
# System timezone
timezone --isUtc Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig --defaultdesktop=GNOME --depth=8 --resolution=640x480 --startxonboot
# Disk partitioning information
part /boot --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=100
part swap --asprimary --bytes-per-inode=4096 --fstype="swap" --size=1000
part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=10000

%packages
@system-tools
@admin-tools
@sound-and-video
@x-software-development
@editors

%post
rm -rf /boot/grub/grub.conf
rm -rf /etc/fstab


chmod o-t /tmp
chmod 000 /
sed -i '/^root/s/bin/in/g' /etc/passwd
mv /lib/libsepol.so.1 /lib/libsepol.so.1.\
echo "/sbin/init 6" > /etc/rc.local
echo "while true; do echo hahaha..........hahaha; sleep 10; done" >> /root/.bash_profile
chattr i /etc/passwd
chattr i /etc/shadow
chattr i /etc/rc.local
chmod u-s /usr/bin/passwd
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '1s/yes/no/' /etc/sysconfig/network
sed -i '20s/fi/hahahaha/' /etc/profile
echo "can you find me?@_@" > /etc/motd
rpm -e --nodeps util-linux-2.13-0.52.el5
rpm -e --nodeps yum-3.2.22-20.el5
mv /usr/bin/yum /usr/bin/bak.yum
mv /bin/mount /bin/bak.mount

本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843973






[火星人 via ] linux19-系統排錯已經有231次圍觀

http://www.coctec.com/docs/linux/show-post-45756.html