integrate-distro.sh: Add support for parted-script option / command

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2016-11-01 12:52:34 +00:00
commit 774563869d

View file

@ -409,7 +409,7 @@ usage()
echo "
usage: $myname -h
$myname [options] [install|mount|unmount|mkinitrd|fs]
$myname [options] [install|mount|unmount|mkinitrd|fs|parted-script]
options:
-f
@ -432,13 +432,13 @@ usage()
o \$root : path to the root directory of the
distribution being integrated
"
" >&2
[ "$1" ] && exit $1
}
get_opts()
{
set -- `getopt 'hd:n:a:p:k:u:w:s:r:f' $*`
eval set -- `getopt -o 'hd:n:a:p:k:u:w:s:r:f' -l parted-script: -- "$@"`
while [ "$1" != -- ] ; do
case "$1" in
-h)
@ -484,6 +484,10 @@ get_opts()
-f)
o_force=1
;;
--parted-script)
parted_script="$2"
shift
;;
*)
usage 1
;;
@ -596,25 +600,37 @@ run_parted()
done
}
default_parted_script()
{
cat <<- EOT
mklabel gpt
mkpart primary 1M 2M
name 1 grub
set 1 bios_grub
mkpart primary 2M 10G
name 2 boot
mkpart primary 10G 40G
name 3 swap
mkpart primary 40G $max
name 4 root
EOT
}
parted_script()
{
if [ "$parted_script" ]; then
cat $parted_script
return
fi
default_parted_script
}
create_partition_table()
{
assert_not_mounted
local max=$(LANG=POSIX parted -s $install_dev print | sed '/Disk/ !d; s/.*: *//')
# FIXME mkpart primary 40G 100% doesn't work on nbd
_cat << EOT | run_parted
|mklabel gpt
|mkpart primary 1M 2M
|name 1 grub
|set 1 bios_grub
|mkpart primary 2M 10G
|name 2 boot
|mkpart primary 10G 40G
|name 3 swap
|mkpart primary 40G $max
|name 4 root
EOT
parted_script | run_parted
grub_boot_partition_num=0
grub_slash_boot_partition_num=1
}
@ -1287,7 +1303,10 @@ if [ `whoami` != root -o "$l32" ]; then
# preferring "ssh -l root localhost" over "sudo" to keep ssh-agent environment
#sudo -i $exe $@ -p $root_password_file
[ "$env_ssh_auth_sock" ] && opt_ssh_auth_sock="-s $env_ssh_auth_sock"
ssh -l root localhost $l32 $exe $@ -p $root_password_file -u $scm_user -w $cwd $opt_ssh_auth_sock
opts=""
[ "$parted_script" ] && opts="$opts --parted-script $parted_script"
#debug="/bin/bash -x"
ssh -l root localhost $l32 $debug $exe $@ -p $root_password_file -u $scm_user -w $cwd $opt_ssh_auth_sock $opts
exit $?
fi
@ -1310,8 +1329,7 @@ if [ "$install_dev" ]; then
case $install_dev in
/dev/sd*) part_sep="";;
/dev/loop*) part_sep="";;
/dev/nbd*) part_sep="p";;
/dev/nbd*|/dev/loop*) part_sep="p";;
esac
install_dev_boot=$install_dev$part_sep""2
@ -1324,7 +1342,7 @@ if [ "$install_dev" ]; then
/dev/sdc) install_grub_dev_num=2;;
/dev/sdd) install_grub_dev_num=3;;
/dev/sde) install_grub_dev_num=4;;
/dev/nbd*)
/dev/nbd*|/dev/loop*)
install_grub_dev_num=${d/\/dev\/nbd/};;
/dev/loop*)
install_grub_dev_num=0;;
@ -1375,9 +1393,13 @@ mkinitrd)
setup_boot_loader_net
exit $?
;;
parted-script)
parted_script
;;
*)
log "unknown command \"$cmd\""
usage 1
;;
esac
exit 0