ฉันทำสคริปต์เพื่อช่วยแก้ปัญหานี้ด้วยการไม่รับประกัน (แต่ฉันทดสอบบนเครื่องเสมือนของฉัน)
รันสคริปต์ต่อไปนี้โดยใช้ HD ที่เสียหายที่พารามิเตอร์แรก: $ ./repart.sh sda
#!/bin/bash
HARDDISK=$1
PARTITIONS=$(ls -d /sys/block/${HARDDISK}/${HARDDISK}?/)
echo "unit: sectors"
for i in $PARTITIONS; do
DEVICE=$(basename $i)
START=$(cat $i/start)
SIZE=$(cat $i/size)
echo "/dev/$DEVICE : start=$START, size=$SIZE, type=XX"
done
เอาต์พุตเป็นรูปแบบ sfdisk แต่ข้อควรระวังไฟล์นี้จะต้องมีการแก้ไขเพื่อนำมาใช้ ที่พาร์ติชันเสริมขยาย = 5 ให้เพิ่มขนาดโดยใช้พื้นที่ตรรกะทั้งหมดบวกช่องว่างระหว่างการเริ่มต้นของการขยายและเริ่มต้นของโลจิคัลพาร์ติชันแรก
unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX
คุณต้องเปลี่ยนประเภทจาก XX เป็นจำนวนประเภทพาร์ติชัน ใส่พาร์ติชันที่สามารถบู๊ตได้ที่บรรทัดแรก
unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82
ใช้การเปลี่ยนแปลงนี้
cat repart.sfdisk | sfdisk -f /dev/sda
อ่านตารางพาร์ติชันอีกครั้ง
partprobe
/sbin/blockdev --rereadpt
ติดตั้งด้วงใหม่
grub-install /dev/sda