diff --git a/scripts/integrate-distro.sh b/scripts/integrate-distro.sh index 5f2fa414..de2061bb 100644 --- a/scripts/integrate-distro.sh +++ b/scripts/integrate-distro.sh @@ -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 +