您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了Linux系統怎么啟動與登錄故障排查的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“Linux系統怎么啟動與登錄故障排查”的知識吧。
系統啟動異常:
1,部分centos啟動黑屏,無異常報錯的場景,可以fsck一下系統盤
2,根分區空間滿,以及inode耗盡
3,升級內核或者從老的共享實例遷移到獨享規格導致的啟動異常
3.1 手動注入驅動 (mkinitrd virtio相關驅動 )
3.2 修改grub 的啟動順序,優先嘗試使用老內核啟動
3.3 boot目錄下面內核的關聯文件是否全(下面僅為demo,不同系統內核版本文件不一致,部分內核版本boot下的i386目錄也是有用的)
config-4.9.0-7-amd64 initrd.img-4.9.0-7-amd64 System.map-4.9.0-7-amd64 vmlinuz-4.9.0-7-amd64
3.4 /boot/grub/device.map里面的hda改成vda
4,fstab/grub中的 uuid不對,可以直接修改為/dev/vda1這種形式嘗試
數據盤分區異常加載起不來的場景,可以去注釋ftab所有的行,添加類似下面的啟動項嘗試,也適用用系統盤快照創建云盤掛載后,uuid一致導致的啟動異常,改成非UUID的掛載即可
/dev/vda1 / ext4 defaults 1 1
5,根目錄777(部分目錄777)也會導致啟動異常,或者ssh登陸異常
6,常見的關鍵目錄缺失,有的是軟鏈,也可以看看對應目錄下面的文件數量(文件數量要跟同內核版本或者相差不大的版本對比),簡單判斷
/bin /sbin /lib /lib32 /lib64 /etc /boot /usr/bin /usr/sbin /usr/lib /usr/lib64等目錄或文件缺失for i in /bin /sbin /lib /lib32 /lib64 /etc /boot /usr/bin /usr/sbin /usr/lib /usr/lib64 ;do ls -l $i |wc -l ;done
7,影響啟動的參數
如果參數設置不當,是會導致啟動異常的,如/etc/sysctl.conf以及檢查rc.local的配置,profile的檢查
vm.nr_hugepages vm.min_free_kbytes
8,centos的需要selinux需要關閉,走
# cat /etc/selinux/config # This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled 把這一行改成disabled# SELINUXTYPE= can take one of three values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected.# mls - Multi Level Security protection.SELINUXTYPE=targeted
1,find /boot/grub/stage1
顯示為 (hd0,0)
2,確認一下內核的具體版本ls -l /boot去看
3,手動設置grub,具體步驟
grub> root (hd0,0) #是說跟分區在第一塊硬盤的第1個分區 實際對于前面的find出來的那個文件
grub> kernel /boot/vmlinuz-2.6.32-696.3.2.el6.x86_64 ro root=/dev/vda1 #指明內核路徑和根分區,注意ro是只讀
grub> initrd /boot/initramfs-2.6.32-696.3.2.el6.x86_64.img #指明initramfs路徑啟動系統加載驅動
grub> boot #啟動上面指定的系統,如果是reboot就等于重啟整個系統了,剛才的設置就失效了
如果沒有報錯的話,即可成功啟動,進入到系統內部后需要繼續執行下面的操作
4,mount -e remount,rw / 重新掛載分區為讀寫
5,service network restart
如果提示eth0 eth2失敗,ifconfig看不到網卡的話
6,lsmod |grep net
看下virtio_net 這個驅動有沒有,如果沒有的話(網卡報錯基本都不會有)
7,
insmod /lib/modules/2.6.32-696.3.2.el6.x86_64/kernel/drivers/net/virtio_net.ko
8, 重啟網絡服務,嗨~網通了
9,登陸ssh,找個同版本系統的grub.conf, 拷貝一份過來,不然重啟之后又進grub了
背景信息:客戶反饋系統無法遠程登陸,實際系統啟動本身就有問題
根據報錯信息來看,是系統內讀取user有問題,需要掛盤查看
1,掛盤后chroot如下 ihave no name,這里本身就是有問題了,說明系統內缺少了什么文件導致異常
2,strace跟蹤一下chroot的過程,看下丟失的文件
strace -F -ff -t -tt -s 256 -o ch.out chroot /mnt grep -i "no such" ch.out.pid |grep "so"
3,查看對應文件的關系(測試機補圖)
4,確認系統上丟了最終的libnss_files-2.12.so,嘗試拷貝一個
ifconfig eth2 ip netmask maskroute add default gw gwip
5,此時已經可以上網了,去拷貝一個同版本的文件試試吧
1,/etc/passwd /etc/shadow (用戶名 root polikt dbus等關鍵用戶存在與否,文件為空,格式亂(dos2unix)
2,/etc/pam.d 目錄下是否有為空的文件及參數設置是否正常,如常見的 system-auth passwd
3,/etc/pam.d 下面所有文件里面涉及的so文件,看看文件是否存在,是否為空 /usr/lib64/security
4,查/etc /lib64 /bin /sbin /usr/bin /usr/sbin等目錄有沒有size為0的文件
5,/etc/profile /etc/profile.d(打印列表) /etc/bashrc /root/.bash_profile /root/.bashrc 等涉及登陸環境設置的文件是否異常
6,注意內核版本,是否存在新老內核,多更換幾個內核試下
7,系統日志也是一個比較重要的檢查項(后面介紹下無法登陸怎么檢查)
9,ubuntu1204登陸異常 在/etc/login.defs 里面配置了錯誤的ERASECHAR導致,恢復默認0177即可
configuration error - cannot parse erasechar value
10,輸入root后直接login失敗三連,日志如下
找個同內核版本的機器對比發現沒有/etc/pam.d/login 有一個login.defs
rpm包校驗一下,確認login沒了,手動創建一個,內容拷貝過來,好了
[root@iZbp1cabe6lyx26ikmjie2Z pam.d]# rpm -V util-linuxmissing c /etc/pam.d/login [root@iZbp1cabe6lyx26ikmjie2Z pam.d]# rpm -ql util-linux|egrep -vi "gz|mo|share"/etc/mtab/etc/pam.d/chfn/etc/pam.d/chsh/etc/pam.d/login/etc/pam.d/runuser/etc/pam.d/runuser-l/etc/pam.d/su/etc/pam.d/su-l
12,/etc/ssh/sshd_config 相關參數如 LoginGraceTime/Allowusers/PermitRootLogin
13,問題不好確認的時候,可以將shadow密碼字段清空,看看登陸是否正常,可以判斷是否到密碼驗證階段了
實戰案例3–ssh可以登陸root,但是管理終端無法登陸root用戶
ssh可以登陸,管理終端無法登陸root,
提示 login in…
cat /var/log/secure Jun 2 09:26:48 iZbp1begsz1x269nxhtip4Z login: FAILED LOGIN 1 FROM tty1 FOR root, Authentication failure
看日志是login驗證模塊的問題,檢查相關模塊的設置
# cat /etc/pam.d/login #%PAM-1.0auth required pam_succeed_if.so user != root quiet auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth substack system-auth auth include postlogin account required pam_nologin.so account include system-authpassword include system-auth # pam_selinux.so close should be the first session rulesession required pam_selinux.so closesession required pam_loginuid.sosession optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user contextsession required pam_selinux.so opensession required pam_namespace.sosession optional pam_keyinit.so force revokesession include system-authsession include postlogin -session optional pam_ck_connector.so
這一行比較關鍵
auth required pam_succeed_if.so user != root quiet
禁止本地登陸了,注釋掉即可
背景:登陸卡住,需要ctrl +c 才能進去,如圖
如果一直等的話,會提示
原因:
/etc/profile 里面有 source /etc/profile 引起死循環,注釋即可
阿里云新推出的卸載系統盤功能,可以把系統盤卸載掉,作為數據盤掛載到一個新的機器,這樣就可以執行上面的檢查了
詳見:云服務器ECS卸載和掛載系統盤
關于“Linux系統怎么啟動與登錄故障排查”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。