Erasing GPT backup header block, if expr is good enough
This commit is contained in:
@ -15,7 +15,7 @@
|
||||
# announces.
|
||||
|
||||
xdt_print_version() {
|
||||
echo "xorriso-dd-target , version 1.5.3 , 2020.01.06.204949"
|
||||
echo "xorriso-dd-target , version 1.5.3 , 2020.01.07.123808"
|
||||
}
|
||||
|
||||
|
||||
@ -225,6 +225,10 @@ xdt_reset_job() {
|
||||
xdt_sudo_cmd=
|
||||
xdt_have_su_power=
|
||||
xdt_end_after_setup=
|
||||
xdt_dev_bytes=
|
||||
xdt_dev_end=
|
||||
xdt_dd_bs="bs=1M"
|
||||
xdt_dd_silent=
|
||||
|
||||
return 0
|
||||
}
|
||||
@ -350,7 +354,9 @@ xdt_arg_interpreter() {
|
||||
done
|
||||
xdt_predict_su_power || return "$?"
|
||||
# Prepare for using dd pacifier if desired and available
|
||||
# Prepare for using silent dd with GPT backup erasure if available
|
||||
xdt_dd_bs="bs=1M"
|
||||
xdt_dd_silent=
|
||||
if test -n "$xdt_dd_cmd"
|
||||
then
|
||||
if test -z "$xdt_no_pacifier" && \
|
||||
@ -359,6 +365,11 @@ xdt_arg_interpreter() {
|
||||
then
|
||||
xdt_dd_bs="bs=1M status=progress oflag=dsync"
|
||||
fi
|
||||
if "$xdt_dd_cmd" if=/dev/zero of=/dev/null count=1 bs=512 status=none \
|
||||
2>/dev/null
|
||||
then
|
||||
xdt_dd_silent="status=none"
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
@ -615,8 +626,8 @@ xdt_list_devices() {
|
||||
# Optional tests for size
|
||||
if test -n "$xdt_max_size" || test -n "$xdt_min_size"
|
||||
then
|
||||
xdt_size=$("$xdt_lsblk_cmd" -n -b -o SIZE /dev/"$xdt_name" \
|
||||
| head -1 | xdt_round_down_div_million)
|
||||
xdt_dev_bytes=$("$xdt_lsblk_cmd" -n -b -o SIZE /dev/"$xdt_name" | head -1)
|
||||
xdt_size=$(echo "$xdt_dev_bytes" | xdt_round_down_div_million)
|
||||
if test -z "$xdt_size"
|
||||
then
|
||||
xdt_yucky=y
|
||||
@ -752,12 +763,37 @@ xdt_write_image() {
|
||||
echo "No executable program dd found in: $xdt_sudo_x_dir_list" >&2
|
||||
return 6
|
||||
fi
|
||||
|
||||
# Erase possible GPT backup table at end of device
|
||||
# if expr can properly divide device size by 512
|
||||
if test -n "$xdt_dev_bytes"
|
||||
then
|
||||
xdt_dev_end=$(expr "$xdt_dev_bytes" / 512 2>/dev/null)
|
||||
if test "$(expr "$xdt_dev_end" '*' 512 2>/dev/null)" = "$xdt_dev_bytes"
|
||||
then
|
||||
xdt_dev_end=$(expr "$xdt_dev_end" - 1)
|
||||
else
|
||||
xdt_dev_end=
|
||||
fi
|
||||
fi
|
||||
xdt_gpt_erase_line="$xdt_sudo_cmd $xdt_dd_cmd if=/dev/zero of=/dev/'${2}' bs=512 seek='$xdt_dev_end' count=1 $xdt_dd_silent"
|
||||
|
||||
xdt_copy_line="$xdt_sudo_cmd $xdt_dd_cmd if='${1}' of=/dev/'${2}' $xdt_dd_bs ; sync"
|
||||
if test -n "$xdt_dummy_run"
|
||||
then
|
||||
echo " $xdt_sudo_cmd $xdt_dd_cmd if='${1}' of=/dev/'${2}' $xdt_dd_bs ; sync"
|
||||
if test -n "$xdt_dev_end"
|
||||
then
|
||||
echo " $xdt_gpt_erase_line"
|
||||
fi
|
||||
echo " $xdt_copy_line"
|
||||
else
|
||||
echo "Performing:"
|
||||
echo " $xdt_sudo_cmd $xdt_dd_cmd if='${1}' of=/dev/'${2}' $xdt_dd_bs ; sync"
|
||||
if test -n "$xdt_dev_end"
|
||||
then
|
||||
echo " $xdt_gpt_erase_line"
|
||||
$xdt_sudo_cmd "$xdt_dd_cmd" if=/dev/zero of=/dev/"${2}" bs=512 seek="$xdt_dev_end" count=1 $xdt_dd_silent
|
||||
fi
|
||||
echo " $xdt_copy_line"
|
||||
$xdt_sudo_cmd "$xdt_dd_cmd" if="${1}" of=/dev/"${2}" $xdt_dd_bs
|
||||
xdt_ret="$?"
|
||||
sync
|
||||
@ -768,8 +804,6 @@ xdt_write_image() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# >>> ??? Erase possible GPT backup table at end of device ?
|
||||
|
||||
if test -n "$xdt_dummy_force"
|
||||
then
|
||||
echo "BE SMART. BE CAUTIOUS. BEWARE."
|
||||
|
Reference in New Issue
Block a user