错误提示没了_ESC错误排查-系统启动篇
# ECS從入門到精通(錯誤排查)
# Linux啟動與登錄問題
Linux 啟動與登錄問題是 ECS 的高頻問題,而往往處理不及時會直接影響到 用戶業務的正常可持續運行,因此也變成了我們處理問題優先級的重中之重。在云環境上影響 ECS 啟動與登錄的因素非常多,鏡像、管控、虛擬化、底層 硬件、系統與文件異常等等,本文僅從系統與文件本身角度,在大量處理經驗 的基礎上,歸納總結了一些可能會引起系統啟動與登錄問題的排查點,并給出 幾個比較常見的典型案例來具體展示和說明。
## 系統啟動異常
### 1.部分 CentOS 系統啟動黑屏,無異常報錯的場景,可以 fsck 一下系統盤。
### 2.根分區空間滿,以及 inode 數量耗盡。
### 3.升級內核或者從老的共享實例遷移到獨享規格導致的啟動異常。
#### 3.1 手動注入驅動 (mkinitrd virtio 相關驅動 )。
#### 3.2 修改 grub 的啟動順序,優先嘗試使用老內核啟動。
#### 3.3 /boot 目錄下面內核的關聯文件是否全(下面僅為 demo,不同系統內核版
本文件不一致,部分內核版本 boot 下的 i386 目錄也是有用的)。
#### 3.4 /boot/grub/device.map 里面的 hda 改成 vda。
### 4.fstab/grub 中的 uuid 不對,可以直接修改為 /dev/vda1 這種形式嘗試。
? 數據盤分區異常加載起不來的場景,可以去注釋 fstab 所有的行,添加類似下面
的啟動項嘗試,也適用于系統盤快照創建云盤掛載后,uuid 一致導致的啟動異
常,改成非 UUID 的掛載即可。
### 5.根目錄權限 777(部分目錄 777)也會導致啟動異常,或者 ssh 登陸異常。
可嘗試使用以下鏈接修復:
Linux誤操作777之后的恢復方法-阿里云開發者社區
### 6.常見的關鍵目錄缺失,有的是軟鏈,也可以看看對應目錄下面的文件數量(文件 數量要跟同內核版本或者相差不大的版本對比),簡單判斷。
如果參數設置不當,是會導致啟動異常的,如 /etc/sysctl.conf 以及檢查 rc.local
的配置,profile 的檢查。
### 8. CentOS 的 selinux 需要關閉。
## root 登錄異常
1. /etc/passwd /etc/shadow ( 用戶名 root polikt dbus 等關鍵用戶存在與否,文件為空,格式(dos2unix)。
2. /etc/pam.d 目錄下是否有為空的文件及參數設置是否正常,如常見的 sys-tem-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. 系統日志也是一個比較重要的檢查項(后面會介紹無法登陸怎么檢查)。
8. Ubuntu 12.04 登陸異常 在 /etc/login.defs 里面配置了錯誤的 ERASECHAR 導致,恢復默認 0177 即可。
9. 輸入 root 后直接 login 失敗三連,日志如下。
找個同內核版本的機器對比發現沒有 /etc/pam.d/login。
? rpm 包校驗一下,確認 login 文件沒了,手動創建一個,內容拷貝過來,好了。
10. /etc/ssh/sshd_config 相關參數如 LoginGraceTime/Allowusers/Permit-RootLogin。
11. 問題不好確認的時候,可以將 shadow 密碼字段清空,看看登陸是否正常,可以判斷是否到密碼驗證階了。
? 之前有過一篇關于 ssh 問題排查的文檔,可參考:
? 一個有意思的SSH登陸案例-阿里云開發者社區
### 系統登陸不進去了,不掛盤的情況下怎么操作?
上面的檢查點很多是需要切換到另外的系統環境下去做檢查,比如掛載 LiveCD 或者 chroot 切換;但對于使用 ECS 的用戶來說,阿里云暫還未提供實例掛載 ISO 鏡像的功能,那么如何進行上面的操作呢?可以借助阿里云新推出的卸載系統盤功能,可以 把系統盤卸載掉,作為數據盤掛載到一個新的機器,這樣就可以執行上面的檢查了。
詳見:卸載或掛載系統盤_云盤_塊存儲_云服務器 ECS-阿里云
###場景覆蓋:
Linux 系統常見問題診斷覆蓋以下場景:
Linux 系統常見啟動問題修復覆蓋以下場景:
## grub.conf 文件內容被清空了怎么辦
簡介:/boot/grub/grub.conf 被清空,系統啟動就進入 grub 狀態(CentOS 6.8)。
1.find /boot/grub/stage1。
? 顯示為(hd0,0)。
2. 確認一下內核的具體版本
ls -l /boot 去看。
3. 手動設置 grub,具體步驟。
如果沒有報錯的話,即可成功啟動,進入到系統內部后需要繼續支持。
4. mount -e remount,rw / 重新掛載分區為讀寫。
5. service network restart。
如果提示 eth0 eth1 失敗,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 了。
參考 系統診斷小技巧(8):如何修復grub損壞-阿里云開發者社區
## 巧妙利用 strace 查找丟失的文件
問題描述:客戶反饋系統無法遠程登陸,實際系統啟動本身就有問題。
根據報錯信息來看,是系統內讀取 user 有問題,需要掛盤查看。
1.掛盤后 chroot 如下 ihave no name,這里本身就是有問題了,說明系統內缺少了什么文件導致異常。
2.strace 跟蹤一下 chroot 的過程,看下丟失的文件。
3.查看對應文件的關系(測試機補圖)。
4.確認系統上丟了最終的 libnss_files-2.12.so,嘗試拷貝一個。
5.此時已經可以上網了,去拷貝一個同版本的文件試試吧。
## 小心 PAM 不讓你登錄
問題描述:
ssh 可以登陸,管理終端無法登陸 root,提示 login in...
先通過 ssh 方式登錄系統,查看登錄日志是否有異常。
似乎是 login 驗證模塊的問題進一步查看對應的配置文件 /etc/pam.d/login。
其中一行的作用為禁止本地登錄,可以將其注釋掉即可。
```
auth required pam_succeed_if.so user != root quiet
總結
以上是生活随笔為你收集整理的错误提示没了_ESC错误排查-系统启动篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现 连续15签到记录_MySQL和Re
- 下一篇: 2022-2028年中国煤制天然气市场投