
The EBS and S3 (instance-store) AMIs are now created from the same image. HVM instance-store AMIs are also generated. Disk image generation has been factored out into a function (nixos/lib/make-disk-image.nix) that can be used to build other kinds of images. (cherry picked from commit e018e10ba64e3277f11f4123bc46fc68def970dd)
89 lines
2.7 KiB
Diff
89 lines
2.7 KiB
Diff
From 1895d10a7539d055a4e0206af1e7a9e5ea32a4f7 Mon Sep 17 00:00:00 2001
|
|
From: Juerg Haefliger <juerg.haefliger@hp.com>
|
|
Date: Wed, 25 Mar 2015 13:59:20 +0100
|
|
Subject: [PATCH] Support new sfdisk version 2.26
|
|
|
|
The sfdisk usage with version 2.26 changed. Specifically, the option
|
|
--show-pt-geometry and functionality for CHS have been removed.
|
|
Also, restoring a backup MBR now needs to be done using dd.
|
|
---
|
|
bin/growpart | 28 ++++++++++------------------
|
|
1 file changed, 10 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/bin/growpart b/bin/growpart
|
|
index 595c40b..d4c995b 100755
|
|
--- a/bin/growpart
|
|
+++ b/bin/growpart
|
|
@@ -28,7 +28,6 @@ PART=""
|
|
PT_UPDATE=false
|
|
DRY_RUN=0
|
|
|
|
-MBR_CHS=""
|
|
MBR_BACKUP=""
|
|
GPT_BACKUP=""
|
|
_capture=""
|
|
@@ -133,7 +132,8 @@ bad_Usage() {
|
|
}
|
|
|
|
mbr_restore() {
|
|
- sfdisk --no-reread "${DISK}" ${MBR_CHS} -I "${MBR_BACKUP}"
|
|
+ dd if="${MBR_BACKUP}-${DISK#/dev/}-0x00000000.bak" of="${DISK}" bs=1 \
|
|
+ conv=notrunc
|
|
}
|
|
|
|
sfdisk_worked_but_blkrrpart_failed() {
|
|
@@ -148,34 +148,26 @@ sfdisk_worked_but_blkrrpart_failed() {
|
|
|
|
mbr_resize() {
|
|
RESTORE_HUMAN="${TEMP_D}/recovery"
|
|
- MBR_BACKUP="${TEMP_D}/orig.save"
|
|
+ MBR_BACKUP="${TEMP_D}/backup"
|
|
|
|
local change_out=${TEMP_D}/change.out
|
|
local dump_out=${TEMP_D}/dump.out
|
|
local new_out=${TEMP_D}/new.out
|
|
local dump_mod=${TEMP_D}/dump.mod
|
|
- local tmp="${TEMP_D}/tmp.out"
|
|
- local err="${TEMP_D}/err.out"
|
|
|
|
- local _devc cyl _w1 heads _w2 sectors _w3 tot dpart
|
|
+ local tot dpart
|
|
local pt_start pt_size pt_end max_end new_size change_info
|
|
|
|
- # --show-pt-geometry outputs something like
|
|
- # /dev/sda: 164352 cylinders, 4 heads, 32 sectors/track
|
|
- rqe sfd_geom sfdisk "${DISK}" --show-pt-geometry >"${tmp}" &&
|
|
- read _devc cyl _w1 heads _w2 sectors _w3 <"${tmp}" &&
|
|
- MBR_CHS="-C ${cyl} -H ${heads} -S ${sectors}" ||
|
|
- fail "failed to get CHS from ${DISK}"
|
|
+ tot=$(sfdisk --list "${DISK}" | awk '{ print $(NF-1) ; exit }') ||
|
|
+ fail "failed to get total number of sectors from ${DISK}"
|
|
|
|
- tot=$((${cyl}*${heads}*${sectors}))
|
|
+ debug 1 "total number of sectors of ${DISK} is ${tot}"
|
|
|
|
- debug 1 "geometry is ${MBR_CHS}. total size=${tot}"
|
|
- rqe sfd_dump sfdisk ${MBR_CHS} --unit=S --dump "${DISK}" \
|
|
+ rqe sfd_dump sfdisk --dump "${DISK}" \
|
|
>"${dump_out}" ||
|
|
fail "failed to dump sfdisk info for ${DISK}"
|
|
-
|
|
{
|
|
- echo "## sfdisk ${MBR_CHS} --unit=S --dump ${DISK}"
|
|
+ echo "## sfdisk --dump ${DISK}"
|
|
cat "${dump_out}"
|
|
} >"${RESTORE_HUMAN}"
|
|
[ $? -eq 0 ] || fail "failed to save sfdisk -d output"
|
|
@@ -237,7 +229,7 @@ mbr_resize() {
|
|
exit 0
|
|
fi
|
|
|
|
- LANG=C sfdisk --no-reread "${DISK}" ${MBR_CHS} --force \
|
|
+ LANG=C sfdisk --no-reread "${DISK}" --force \
|
|
-O "${MBR_BACKUP}" <"${new_out}" >"${change_out}" 2>&1
|
|
ret=$?
|
|
[ $ret -eq 0 ] || RESTORE_FUNC="mbr_restore"
|
|
--
|
|
2.1.4
|
|
|