有一台線上伺服器(簡稱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 = no5 在機器u上啟動 dhcp 服務和 tftp 服務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 ,防止因為許可權的原因不能讀取檔案。
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上面的操作完成後,/home/hhy/tftpd/ubuntu-boot 下ls得到的結果如下:prompt 1
timeout 30
# install linux
label linux
kernel vmlinuz
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...