無盤啟動引導 修復super block

2021-08-16 21:20:07 字數 4052 閱讀 4996

有一台線上伺服器(簡稱s),執行 centos 6.5 系統,閒置了一段時間,再次啟動,開啟報告,super block 損壞。

為了修復super block,本想找乙個系統映象做乙個u盤啟動盤,發現竟然沒有可用的u盤。所以只能腦洞大開,使用network booting 了.

先把 network booting 的方法描述一下:

1 有一台現成的ubuntu機器(簡稱u),把 s 和 u 連上同乙個交換機。

2 在u上安裝 dhcp  server 和 tftp server

apt-get install isc-dhcp-server

apt-get install tftpd

3 配置 dhcp server,配置檔案 /etc/dhcp/dhcpd.conf ,內容如下:

allow booting;

allow bootp;

# 定義規則來識別來自於pxe和etherboot客戶端的dhcp請求。

class "pxe" {

match if substring (option vendor-class-identifier, 0, 9) = "pxeclient";

class "etherboot" {

match if substring (option vendor-class-identifier, 0, 9) = "etherboot";

subnet 10.11.0.0 netmask 255.255.255.0 {

option broadcast-address 10.11.0.255;

pool {

default-lease-time 180; # no long lease time required for booting

max-lease-time 360;     # booted system does its own dhcp request

server-name "mybootserver";

next-server 10.11.0.121; # in case your local dns only handles

# unqualified domains keep trailing '.'

filename "pxelinux.0";

allow members of "pxe";

allow members of "etherboot"; # allow etherboot, too

range 10.11.0.120 10.11.0.122;

注意上面的配置,已經盡量避免區域網內2臺dhcp伺服器並存造成不利後果,防止u的dhcp干擾閘道器的dhcp服務執行。

4 配置tftpd,配置檔案沒有,新建檔案  /etc/xinetd.d/tftpd, 內容如下:

service tftp

disable         = no

socket_type     = dgram

protocol        = udp

wait            = yes

user            = hhy

server          = /usr/sbin/in.tftpd

server_args     = -s /home/hhy/tftpd/ubuntu-boot

#source          = 11

cps             = 100 2

flags =ipv4

注意 /home/hhy/tftpd/ubuntu-boot 目錄下的所有檔案最好 chmod 777 ,防止因為許可權的原因不能讀取檔案。

5 在機器u上啟動 dhcp 服務和 tftp 服務

service isc-dhcp-server start

service xinetd restart

6 製作啟動根目錄,將 u 上的  /boot 下的 vmlinuz 和 initrd.img 拷貝到 /home/hhy/tftpd/ubuntu-boot 下

將 /usr/lib/syslinux/pxelinux.0 拷貝到 /home/hhy/tftpd/ubuntu-boot 下

在 /home/hhy/tftpd/ubuntu-boot 建立目錄 pxelinux.cfg,並在pxelinux.cfg目錄下新建乙個檔名為default的檔案,內容如下:

default linux

prompt   1

timeout  30

# install linux

label linux

kernel vmlinuz

上面的操作完成後,/home/hhy/tftpd/ubuntu-boot 下ls得到的結果如下:

initrd.img  pxelinux.0  pxelinux.cfg   vmlinuz            

7 啟動機器s,按f10,選擇從network boot(注意:我的案例是按f10,別的機器可能不是,注意看開機後bios中的提示)。這時候可以看到,s機器成功的找到u了,並從u機器的 /home/hhy/tftpd/ubuntu-boot 啟動了,最終進入 initrd 環境。

8 s機器進入initrd後,發現了乙個問題。沒有fdisk mke2fs e2fsck 這些常用的檔案系統命令。於是重新製作乙個 initrd.img.方法如下:

cd /home/hhy/tftpd/ubuntu-boot 

mkdir tmp && mv initrd.img tmp/initrd.zip

cd tmp && gunzip initrd.zip

cpio -id < ./initrd

cp /sbin/fdisk /sbin/mke2fs /sbin/e2fsck  ./sbin

用ldd命令檢查  fdisk mke2fs e2fsck 依賴的so模組是否都在當前目錄( /home/hhy/tftpd/ubuntu-boot/tmp/)下,經過檢查都有。

find ./ | grep -v initrd | cpio -h newc -o | gzip -v -9 > ./initrd.img

cp initrd.img ../initrd-full.img 

修改 /home/hhy/tftpd/ubuntu-boot/pxelinux.cfg/default 下的內容,修改 initrd=initrd.img 為 initrd=initrd-full.img

9 重啟機器s並再次 network booting,進入 initrd 後,就可以使用 fdisk mke2fs e2fsck  這些命令了。df 命令顯示 s 有2個硬碟 /dev/sda /dev/sdd.再用fdisk命令發現這2個盤竟然各有乙個 boot 分割槽。使用 dumpe2fs 發現所有的檔案系統都報告超級塊找不到,懵了?後來請伺服器廠商檢查硬碟,原來是硬碟基本報廢了,無法修復。

修復ubuntu啟動引導

解決步驟 準備乙個安裝 盤,插入電腦 開機 選擇試用try ubuntu without install 開啟終端 open terminal 獲取root許可權,執行以下命令 sudo su sudo add apt repository ppa yannubuntu boot repair ap...

使用系統盤修復系統引導

windows failed to start.a recent hardware or software change might be the caouse.中間略過 file boot bcd stattus oxc0000098 info the boot configuration dat...

CentOs7 修復 引導啟動

一 修復mbr mbr master boot record主引導記錄 硬碟的0柱面 0磁頭 1扇區稱為主引導扇區。其中446byte是bootloader,64byte為partition table,剩下的2byte為magic number。備份mbr dd if dev sda of roo...