qvm-create-default-dvm 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/sh
  2. if [ $# != 1 -a $# != 2 ] ; then
  3. echo 'Usage: qvm-create-default-dvm templatename|--default-template [script-name|--default-script]'
  4. exit 1
  5. fi
  6. if [ "$1" = --default-template ] ; then
  7. TEMPLATENAME=$(qvm-get-default-template)
  8. if [ "X"$TEMPLATENAME = "X" ] ; then
  9. echo No default template ?
  10. exit 1
  11. fi
  12. else
  13. TEMPLATENAME=$1
  14. fi
  15. if [ "X""$2" = "X""--default-script" ] ; then
  16. SCRIPTNAME="/var/lib/qubes/vm-templates/$TEMPLATENAME"/dispvm-prerun.sh
  17. if ! [ -f $SCRIPTNAME ] ; then
  18. echo $SCRIPTNAME does not exist
  19. exit 1
  20. fi
  21. else
  22. SCRIPTNAME=$2
  23. fi
  24. if ! [ -d "/var/lib/qubes/vm-templates/$TEMPLATENAME" ] ; then
  25. echo /var/lib/qubes/vm-templates/$TEMPLATENAME is not a directory
  26. exit 1
  27. fi
  28. DVMTMPL="$TEMPLATENAME"-dvm
  29. if ! [ -d "/var/lib/qubes/appvms/$DVMTMPL" ] ; then
  30. if ! qvm-create -t "$TEMPLATENAME" -l gray "$DVMTMPL" ; then exit 1 ; fi
  31. fi
  32. if ! /usr/lib/qubes/qubes_prepare_saved_domain.sh \
  33. "$DVMTMPL" "/var/lib/qubes/appvms/$DVMTMPL/dvm-savefile" $SCRIPTNAME ; then
  34. exit 1
  35. fi
  36. ROOT=/var/lib/qubes/dvmdata/savefile_root
  37. DEFAULT=/var/lib/qubes/dvmdata/default_savefile
  38. CURRENT=/var/run/qubes/current_savefile
  39. SHMDIR=/dev/shm/qubes
  40. SHMCOPY=$SHMDIR/current_savefile
  41. rm -f $ROOT $DEFAULT $CURRENT
  42. ln -s "/var/lib/qubes/appvms/$DVMTMPL/dvm-savefile" $DEFAULT
  43. ln -s "/var/lib/qubes/vm-templates/$TEMPLATENAME/root.img" $ROOT
  44. if [ -f /var/lib/qubes/dvmdata/dont_use_shm ] ; then
  45. ln -s $DEFAULT $CURRENT
  46. else
  47. mkdir -m 770 $SHMDIR 2>/dev/null
  48. chgrp qubes $SHMDIR 2>/dev/null
  49. cp $DEFAULT $SHMCOPY || exit 1
  50. chgrp qubes $SHMCOPY
  51. chmod 660 $SHMCOPY
  52. ln -s $SHMCOPY $CURRENT
  53. fi