CentOS Grub、BASH 故障、解決方法

来源:http://www.cnblogs.com/wangxiaoqiangs/archive/2016/06/30/5630349.html
-Advertisement-
Play Games

簡介: Grub 常見的兩種故障:Grub.conf 文件丟失、MBR 損壞 ( 不管恢復怎麼樣,還是先備份好吧 ) 一、Grub.conf 文件丟失 ## 故障現象如下: ## 就這個樣子,無法登陸系統,下麵是解決方法 ## 0, 1, 2 代表分區編號,上面顯示有文件系統,分區類型,像 83 就 ...



簡介:

Grub 常見的兩種故障:Grub.conf 文件丟失、MBR 損壞 ( 不管恢復怎麼樣,還是先備份好吧 )

一、Grub.conf 文件丟失

shell > rm -rf /boot/grub/grub.conf ## 刪除文件、模擬故障
shell > reboot

## 故障現象如下:

GNU GRUB verstion 0.97 (634k lower / 1046400k upper memory )
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]

grub>

## 就這個樣子,無法登陸系統,下麵是解決方法

grub> root (hd0,) # 輸入 root (hd0,) 這時按 TAB 鍵會列印出系統上所有的分區 ( 註意在急救模式下不支持 TAB , 很傷~ )
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
Partition num: 2, Filesystem type is ext2fs, partition type 0x83

## 0, 1, 2 代表分區編號,上面顯示有文件系統,分區類型,像 83 就是 Linux 普通分區,82 是虛擬分區 SWAP ( 硬碟分區時的知識 )
## 這裡不分 IDE / SATA 什麼的,都用 hd 代表,hd0 代表第一塊硬碟,hd0,0 代表第一塊硬碟的第一個分區,系統中是用 sda1 代表第一塊硬碟的第一個分區

grub> root (hd0,0)/ # 輸入 root (hd0,0)/ 這裡按 TAB 鍵搜索內核在不在此分區上 ( boot 分區 ),如果有會輸出下麵信息 ( 試 83 的分區,82 是交換分區就沒必要試了 )
Possible files are: lost+found grub efi .VMlinuz-2.6.32-504.e16.x86_64.hmac System.map-2.6.32-504.e16.x86_64 config-2.6.32-504.x86_64 symvers-2.6.32-504.x86_64.gz VMlinuz-2.6.32-504.e16.x86_64 initramfs-2.6.32-504.e16.x86_64.img

## 如果可以看到 vmlinuz- 跟 initramfs- 字樣,說明這就是我們想要的東西

grub> root (hd0,2)/ # 下麵是搜不到的顯示, 仔細看看 ( 發現這是根分區哎~~ hd0,2 是根分區,我們用的是 SATA , 所以根分區是 /dev/sda3 很有用 !)
Possible files are: lost+found boot dev proc sys var tmp etc root selinux lib64 usr bin home lib media mnt opt sbin srv .autorelabel

grub> root (hd0,0) # 綁定啟動分區
Filesystem type is ext2fs, partition type 0x83

grub> kernel /VMlinuz-2.6.32-504.e16.x86_64 ro root=/dev/sda3 # 指定啟動內核,ro 只讀模式,root= 指定根分區, 一定要指對 ( 可能如果 boot 沒有單獨分區不指定也是可以的 )

grub> initrd /initramfs-2.6.32-504.e16.x86_64.img # 這是內核映像吧 ( kernel 、initrd 都是上面搜出來的,輸入一點點按 TAB 可以補全 )

grub> boot # 啟動系統,手動編寫 grub.conf 或恢復備份

shell > vim /boot/grub/grub.conf

default=0 # 啟動哪個系統
timeout=5 # 等待時間
title CentOS 6.6 # 描述信息
kernel /VMlinuz-2.6.32-504.e16.x86_64 ro root=/dev/sda3 # 內核
initrd /initramfs-2.6.32-504.e16.x86_64.img # 啟動映像

## 這裡有個 vim 的用法,直接主機上 vim 是不可以用滑鼠複製命令行內容的,那 kernel 跟 initrd 又那麼長,不好記
## 方法:末行模式下輸入 .! ls /boot/vmlinuz- 按 TAB 就可以補全了,這時按 Enter 鍵就可以將此條信息放到當前文件中

shell > reboot

## 這樣就恢覆成功了!還是記得備份吧

## 如果 kernel 沒有指對根分區就會這樣~ 還要重啟系統,重新來過

dracut Warning: Signal caught!
?dracut Warning: Boot has faild. To debug this issue add "rdshell" to the kernel command line.
?Kernel panic - not syncing: Attempted to kill init!
?Pid: 1, comm: init Not tainted 2.6.32-504.e16.x86_64 #1
?Call Trace:
[<ffffffff815292bc] ? panic+0xa7/0x16f
? [<ffffffff815292bc] ? do_exit+0xa7/0x16f
? [<ffffffff815292bc] ? fput+0xa7/0x16f
? [<ffffffff815292bc] ? system_call_fastpath+0xa7/0x16f?
?

二、MBR 損壞

shell > dd if=/dev/zero of=/dev/sda count=1 bs=200 # 覆蓋 MBR , 模擬故障 ( /dev/sda 前 512 個位元組是 MBR )
shell > reboot

## 故障現象如下:

Operating System not found # 基本就這樣,會出現本地硬碟找不到系統、從 PXE 獲取,DHCP xxxxxxxxxxxxx

## 解決方法:使用緊急救援模式修複

> 插入系統光碟,進入急救模式 ( 這個都會進吧,CentOS 直接選擇,RedHat boot:linux rescue )

shell > grub # 進入 grub 模式

grub> root (hd0,0) # 直接指定內核所在分區吧,沒法 TAB ( 一定要想辦法找到它, 例如:先 chroot /mnt/sysimage , 然後 df -HT 可以看到所有分區,假如 sda1 是啟動分區,那麼這裡對應就是 hd0,0 了 )

grub> setup (hd0) # 重新安裝 MBR 到該磁碟,實際上就是 /dev/sda

grub> quit

shell > reboot

## 現在就可以成功進入系統了,MBR 已經修複

附加:BASH 故障的解決方法

shell > rm -rf /bin/bash # 刪除 bash ,模擬故障
shell > reboot

## 故障現象如為:系統無法初始化,init 命令不存在,其實什麼指令都不能執行
## 進入急救模式重新安裝 bash

shell > mkdir /media # 直接在光碟系統中操作,因為這時無法 chroot 到 /mnt/sysimage
shell > mount /dev/sr0 /media # 掛載光碟鏡像,/dev/sr0 代表光碟機,如果是 IDE 介面應該是 /dev/hdc
shell > cd /media/Packages
shell > rpm -ivh --replacepkgs --root /mnt/sysimage bash-4.1.2-29.e16.x86_64.rpm # 將 bash 安裝到 --root 指定根目錄中 --replacepkgs 是替換原有包
shell > reboot

## OK ,故障已經修複!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我談論索引時,大家經常會問我在複合非聚集索引里,列的順序是否重要?簡單來說:“看情況”。我們來具體看下為啥“看情況”…… 單例查找(Singleton Lookups) 當在你的表上有進行單例查找的查詢時,在複合非聚集索引里列的順序真的不重要。假設下列查詢: 現在你可以在StateProvince ...
  • 聲明:以下的代碼成果,是參考了網上的injso技術,文章最後會給出地址。 另外一個,injso文章中的代碼實際上不能夠運行起來的,後面出現的代碼都是經過我個人修改和檢測的。 最近因為在學習一些調試的技術,但是很少有提到如何在函數運行時實現函數替換的。 為什麼會想到這一點?因為在學習調試時,難免會看到 ...
  • call和jmp都是跳轉指令,但是call的同時會把pc地址壓入堆棧,並且這兩種方式都有遠和近跳轉。下麵的分析不全,因為沒有在網上找到足夠的資料,個人創造這個情景還是有些困難。 1.例子中的call的機器碼為0xe8。 0x400204ba <+30>: e8 41 b6 05 00 call 0x ...
  • STM32除TIM6和TIM7外都可以產生PWM輸出。高級定時器TIM1和TIM8可以同時產生7路PWM,通用定時器可以產生4路PWM輸出。 1.TIM1 CH1輸出PWM配置步驟 ①開啟TIM1時鐘,配置PA8為復用輸出 APB2外設時鐘使能寄存器(RCC_APB2ENR) APB1外設複位寄存器 ...
  • 1.什麼是kqueue和IO復用 kueue是在UNIX上比較高效的IO復用技術。 所謂的IO復用,就是同時等待多個文件描述符就緒,以系統調用的形式提供。如果所有文件描述符都沒有就緒的話,該系統調用阻塞,否則調用返回,允許用戶進行後續的操作。 常見的IO復用技術有select, poll, epol ...
  • 前幾天剛好同事問起在Cortex M上延時不准的問題,在網上也沒找到比較滿意的答案,乾脆自己對這個問題做一個總結。 根據我們的經驗,最容易想到的大概通過計算指令周期來解決。該思路在Cortex上並不是很適用:一方面MCU從Flash取指是有延時的,另一方面Cortex的指令集不是固定周期的,特別從M ...
  • 簡介: 1、在 Keepalived 集群中,其實並沒有嚴格意思上的主、備節點,雖然可以在 keepalived.conf 中定義 state 選項為 MASTER 狀態,但是這並不意味著此節點就一直是 MASTER 角色。控制節點角色的是 keepalived.conf 中的 priority 值 ...
  • 簡介: Keepalived 是一個基於 VRRP 協議來實現 WEB 服務高可用的解決方案,用來避免單點故障。主伺服器會發送特定的消息給備份伺服器,當備份伺服器收不到這個消息時,即主伺服器宕機的時候,備份伺服器就會接管虛擬 IP ,繼續提供服務,從而保證高可用性。 下載地址:http://www. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...