1
0
mirror of synced 2026-02-23 07:01:53 +00:00

Compare commits

...

20 Commits

Author SHA1 Message Date
Axel Beckert
cc2a6d4e41 Change all occurrences of $prefix in hooks and roles with $TARGET
"target" is also the name used in the debian installer for the
installation target while "prefix" is too ambiguous.
2013-04-18 21:01:19 +02:00
Axel Beckert
5ac0f15c32 Remove all redundant pod-inline occurrences of "=cut"
Also care that there are always two blank lines before each "=head1"
(except behind "=head1 NAME").
2013-04-18 20:41:51 +02:00
Axel Beckert
dcb9284636 Remove unused Perl modules Xen::Tools and Xen::Tools::Log
Further developement of the (if any) will happen in the git branch
"xen-tools-moose" where they are still available.

Also remove the according (already disabled) tests and test
modifications from the test suite.

Also remove no the more needed build-dependency on Moose as well as
one Makefile line installing the above mentioned Perl modules.
2013-04-18 20:17:33 +02:00
Axel Beckert
07622d8ed0 t/xen-delete-image.t: Check xen-delete-image exit code
Also run xen-delete-image verbose and print output.
2013-04-18 16:26:55 +02:00
Axel Beckert
081c0370d4 Properly clean up after t/xt-create-xen-config.t 2013-04-18 16:21:25 +02:00
Axel Beckert
ea209f085b Refactor some code duplication in xen-delete-image 2013-04-18 16:21:25 +02:00
Axel Beckert
a70b79f63f Hopefully catch all remaining "ARRAY(0x…).log" issues 2013-04-18 14:45:27 +02:00
Axel Beckert
c482220b99 Rework xci POD: New SYNOPSIS; add EXAMPLES, rename old SYNOPSIS to OPTIONS 2013-04-18 13:52:45 +02:00
Axel Beckert
dcd0bf09f1 Add reference for the three types of MAC relevant for DomUs 2013-04-16 18:03:33 +02:00
Axel Beckert
92a825b87b Axel's Break-Backwards-Compatibility Wishlist: MAC stuff 2013-04-16 17:57:12 +02:00
Axel Beckert
6871954f6e Merge branch 'lib-vs-share' 2013-04-11 19:49:53 +02:00
Axel Beckert
e9d8bd0896 xt-install-image: Don't bail out if only cdebootstrap is installed
There was a duplicated check on debootstrap being installed and only
one has been expanded when cdebootstrap support was added. So
xen-tools bailed out if debootstrap wasn't installed even if it had
been instructed to use cdebootstrap instead.

This also adds support for cdebootstrap-static.

Additionally xt-install-image dispatcher has been extended to hand
array refs of command paths instead of just single command paths.

Thanks to Elmar Heeb for reporting this issue!
2013-04-11 19:47:05 +02:00
Axel Beckert
9369fd2a03 Update debian/changelog 2013-04-11 19:18:41 +02:00
Axel Beckert
04dd81ec07 Mention http.debian.net as default mirror also in POD 2013-04-11 15:59:42 +02:00
Axel Beckert
d39255dc5e Reindent options in POD 2013-04-11 15:59:19 +02:00
Axel Beckert
5a48067d9e Make some x-c-i commandline options negatable
Update documentation and tests accordingly.

Also add pygrub = 1 as example to xen-tools.conf, now that the effect
can be reversed via commandline options.
2013-04-11 15:51:31 +02:00
Axel Beckert
6fc51d20be Update xen-tools.conf comments to be more concise and consistent
Thanks Elmar Heeb!
2013-04-11 13:08:31 +02:00
Axel Beckert
16dbe870f2 TODO: test for --size constraints
... and its prerequisites
2013-04-11 10:52:45 +02:00
Axel Beckert
cb3227d61b Don't only allow lowercase "b" for "bytes".
Also put some examples in the according error message.
2013-04-11 10:32:20 +02:00
Axel Beckert
a89aa86511 Consistent amount of blank lines in POD 2013-04-11 10:29:56 +02:00
76 changed files with 617 additions and 1243 deletions

View File

@@ -210,7 +210,6 @@ install-hooks:
# #
install-libraries: install-libraries:
-mkdir -p ${prefix}/usr/share/perl5/Xen/Tools -mkdir -p ${prefix}/usr/share/perl5/Xen/Tools
cp ./lib/Xen/*.pm ${prefix}/usr/share/perl5/Xen
cp ./lib/Xen/Tools/*.pm ${prefix}/usr/share/perl5/Xen/Tools cp ./lib/Xen/Tools/*.pm ${prefix}/usr/share/perl5/Xen/Tools
# #

View File

@@ -187,6 +187,13 @@ Bugs to fix and features to add for 5.0
* Remove from the (unused) Xen::Tools what's already in the used * Remove from the (unused) Xen::Tools what's already in the used
Xen::Tools::Common. Xen::Tools::Common.
* Add test for `--size` constraints (upper- and lowercase letters,
with and without `B`, etc.)
* Needs a `--dry-run` or `--check-constraints` option in
`xen-create-image` first. Which probably both would be a good
idea.
Stuff from Steve's TODO list / Generic TODOs Stuff from Steve's TODO list / Generic TODOs
-------------------------------------------- --------------------------------------------
@@ -232,3 +239,9 @@ Axel's Break-Backwards-Compatibility Wishlist
Maybe add some `--autostart` or such. Maybe add some `--autostart` or such.
* Maybe replace findBinary with File::Which * Maybe replace findBinary with File::Which
* MAC addresses should no more depend on the distribution.
* Let the admin switch between MAC addresses based on XenSource's OUI,
its organisation's own OUI or locally administrated MAC addresses.
See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses

View File

@@ -4,39 +4,53 @@
xen-create-image - Easily create new Xen instances with networking and OpenSSH. xen-create-image - Easily create new Xen instances with networking and OpenSSH.
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xen-create-image --hostname=<hostname> <further options>
=head1 EXAMPLES
xen-create-image --hostname=some-domu --dist=wheezy --lvm=vg0
xen-create-image --hostname=some-domu --dist=precise --dir=/srv/xen
See below for more specific examples: LOOPBACK EXAMPLES, LVM EXAMPLE
and EVMS EXAMPLE.
=head1 OPTIONS
Help Options: Help Options:
--help Show the help information for this script. --help Show the help information for this script.
--manual Read the manual, and examples, for this script. --manual Read the manual, and examples, for this script.
--verbose Show useful debugging information. --(no)verbose (Don't) show more of what xen-create-image is
currently doing.
--dumpconfig Show current configuration. --dumpconfig Show current configuration.
--version Show the version number and exit. --version Show the version number and exit.
Size / General options: Size / General options:
--accounts Copy all non-system accounts to the guest image --(no)accounts
(Don't) copy all non-system accounts to the guest
image
--admins Specify that some administrators should be created for --admins Specify that some administrators should be created for
this image, using xen-shell. this image, using xen-shell.
--boot Boot the new instance after creating it. --(no)boot (Don't) boot the new instance after creating it.
--cache=bool Cache .deb files on the host when installing the new --cache=bool Cache .deb files on the host when installing the new
guest with the debootstrap tool. Accepted values: guest with the debootstrap tool. Accepted values:
"yes" (default) and "no". "yes" (default) and "no".
--cachedir=/path/to/cache/directory --cachedir=/path/to/cache/directory
Override the default .deb cache directory. Defaults to Override the default .deb cache directory. Defaults to
/var/cache/apt/archives/ if it exists (i.e. on Debian /var/cache/apt/archives/ if it exists (i.e. on Debian
@@ -47,7 +61,9 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
Read the specified file in addition to the global Read the specified file in addition to the global
configuration file. configuration file.
--copyhosts Copy entries from the dom0's /etc/hosts file to the guest --(no)copyhosts
(Don't) copy entries from the dom0's /etc/hosts file
to the guest
--copy-cmd NOP: Ignored. --copy-cmd NOP: Ignored.
@@ -57,61 +73,64 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
installed. Specifying the path is optional. installed. Specifying the path is optional.
--disk_device=diskname --disk_device=diskname
Use specified device name for virtual devices instead of Use specified device name for virtual devices instead
the default value "xvda". of the default value "xvda".
--extension=ext --extension=ext
Specify the suffix to give the Xen configuration Specify the suffix to give the Xen configuration
file. (Default value: ".cfg") file. (Default value: ".cfg")
--force Force overwriting existing images. This will remove --(no)force (Don't) force overwriting existing images. This will
existing images or LVM volumes which match those which remove existing images or LVM volumes which match
are liable to be used by the new invocation. those which are liable to be used by the new
invocation.
--fs=fs Specify the filesystem type to use for the new guest. --fs=fs Specify the filesystem type to use for the new guest.
Valid choices are 'ext2', 'ext3', 'ext4', 'reiserfs', Valid choices are 'ext2', 'ext3', 'ext4', 'reiserfs',
'xfs' or 'btrfs'. (Note: pygrub *DOES NOT* support xfs) 'xfs' or 'btrfs'. (Note: pygrub *DOES NOT* support
xfs)
--genpass=1 Generate a random root password (default, set to 0 to turn off) --genpass=1 Generate a random root password (default, set to 0 to
turn off)
--genpass_len=N --genpass_len=N
Override the default password length of 8 and generate a Override the default password length of 8 and generate
random password of length N. Note: this only works in a random password of length N. Note: this only works
conjunction with --genpass in conjunction with --genpass
--hash_method=algorithm --hash_method=algorithm
Override the default hashing method of sha256 and use the Override the default hashing method of sha256 and use
provided algorithm. Can be : md5, sha256 or sha512 the provided algorithm. Can be : md5, sha256 or sha512
--hooks=1 Specify whether to run hooks after the image is created. --hooks=1 Specify whether to run hooks after the image is created.
--ide Use IDE names for virtual devices (i.e. hda not xvda) --ide Use IDE names for virtual devices (i.e. hda not xvda)
--image=str Specify whether to create "sparse" or "full" disk images. --image=str Specify whether to create "sparse" or "full" disk
Full images are mandatory when using LVM, so this setting images. Full images are mandatory when using LVM, so
is ignored in that case. this setting is ignored in that case.
--image-dev=/path/to/device --image-dev=/path/to/device
Specify a physical/logical volume for the disk image. Specify a physical/logical volume for the disk image.
--initrd=/path/to/initrd --initrd=/path/to/initrd
Specify the initial ramdisk. If an image is specified it Specify the initial ramdisk. If an image is specified
must exist. it must exist.
--install=1 Specify whether to install the guest system or not. --install=1 Specify whether to install the guest system or not.
--keep Don't delete our images if installation fails. It maybe --(no)keep (Don't) keep our images if installation fails. It
unmounted, though. maybe unmounted, though.
--kernel=/path/to/kernel --kernel=/path/to/kernel
Set the path to the kernel to use for domU. If a Set the path to the kernel to use for domU. If a
kernel is specified it must exist. kernel is specified it must exist.
--memory=size --memory=size
Setup the amount of memory allocated to the new instance. Setup the amount of memory allocated to the new
As suffix recognized size units are "M", "MB", "G" and instance. As suffix recognized size units are "M",
"GB" (case does not matter). If there's no unit given, "MB", "G" and "GB" (case does not matter). If there's
megabytes are assumed. no unit given, megabytes are assumed.
--modules=/path/to/modules --modules=/path/to/modules
Set the path to the kernel modules to use for domU. Set the path to the kernel modules to use for domU.
@@ -126,9 +145,8 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--no-xen-ok Don't complain if xen seems not installed or xend is --no-xen-ok Don't complain if xen seems not installed or xend is
not running. (Needed for the testsuite.) not running. (Needed for the testsuite.)
--output=dir Specify the output directory to create the xen configuration --output=dir Specify the output directory to create the xen
file within. configuration file within.
--partitions=file --partitions=file
Use a specific partition layout configuration file. Use a specific partition layout configuration file.
@@ -141,23 +159,23 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--password=passphrase --password=passphrase
Set the root password for the new guest. Set the root password for the new guest.
--passwd Ask for a root password interactively during setup. --(no)passwd (Don't) ask for a root password interactively during
NOTE: This overrides --genpass --password setup. NOTE: This overrides --genpass --password.
--pygrub DomU should be booted using pygrub. --(no)pygrub DomU should (not) be booted using pygrub.
--role=role Run the specified role script(s) post-install. --role=role Run the specified role script(s) post-install. Role
Role scripts are discussed later in this manpage. scripts are discussed later in this manpage. Can be
Can be an absolute path. Otherwise it's relative to the an absolute path. Otherwise it's relative to the value
value of --roledir. of --roledir.
--role-args="--arg1 --arg2" --role-args="--arg1 --arg2"
Pass the named string literally to any role script. Pass the named string literally to any role script.
This is useful for site-specific roles. This is useful for site-specific roles.
--finalrole=role --finalrole=role
Similar to role scripts. Run the specified role script(s) Similar to role scripts. Run the specified role
after cfg file creation. script(s) after cfg file creation.
--roledir=/path/to/directory --roledir=/path/to/directory
Specify the directory which contains the role scripts. Specify the directory which contains the role scripts.
@@ -184,20 +202,22 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
beforehand. beforehand.
--vcpus=num --vcpus=num
Set the number of vcpus that the new instance will have Set the number of vcpus that the new instance will
instead of the default value of "1". have instead of the default value of "1".
Installation options: Installation options:
--arch=arch Pass the given architecture to debootstrap, rinse, --arch=arch Pass the given architecture to debootstrap, rinse, or
or rpmstrap when installing the system. This argument rpmstrap when installing the system. This argument is
is ignored for other install methods. ignored for other install methods.
--dist=dist Specify the distribution you wish to install. --dist=dist Specify the distribution you wish to install.
--install-method=method --install-method=method
Specify the installation method to use. Valid methods are: Specify the installation method to use. Valid methods
are:
* debootstrap * debootstrap
* cdebootstrap * cdebootstrap
@@ -215,12 +235,13 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--mirror=url Setup the mirror to use when installing via --mirror=url Setup the mirror to use when installing via
debootstrap. (Default value: mirror used in debootstrap. (Default value: mirror used in
/etc/apt/sources.list or for Debian /etc/apt/sources.list or for Debian
"http://cdn.debian.net/debian/" and for Ubuntu "http://http.debian.net/debian/" and for Ubuntu
"http://archive.ubuntu.com/ubuntu/") "http://archive.ubuntu.com/ubuntu/")
The above mentioned Debian mirror hostname uses GeoIP The above mentioned Debian mirror hostname
to choose a more or less close Debian mirror. See automatically tries to choose a more or less close
http://wiki.debian.org/DebianGeoMirror for details. Debian mirror. See http://http.debian.net/ for
details.
--apt_proxy=url --apt_proxy=url
Specify a proxy to be used by debootstrap, and within Specify a proxy to be used by debootstrap, and within
@@ -235,15 +256,15 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
Networking options: Networking options:
--bridge=brname --bridge=brname
Optionally, set a specific bridge for the new instance. Optionally, set a specific bridge for the new
This can be especially useful when running multiple instance. This can be especially useful when running
bridges on a dom0. multiple bridges on a dom0.
--broadcast=123.456.789.ABC --broadcast=123.456.789.ABC
Setup the broadcast address for the new instance. Setup the broadcast address for the new instance.
--dhcp The guest will be configured to fetch its networking --(no)dhcp The guest will (not) be configured to fetch its
details via DHCP. networking details via DHCP.
--gateway=gw Setup the network gateway for the new instance. --gateway=gw Setup the network gateway for the new instance.
@@ -253,8 +274,9 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
one is setup as the "system" IP, and the additional one is setup as the "system" IP, and the additional
ones are added as aliases. ones are added as aliases.
Note that Xen 3.x supports a maximum of three vif statements Note that Xen 3.x supports a maximum of three vif
per guest. This option conflicts with --dhcp. statements per guest. This option conflicts with
--dhcp.
--mac=AA:BB:CC:DD:EE:FF --mac=AA:BB:CC:DD:EE:FF
Specify the MAC address to use for a given interface. Specify the MAC address to use for a given interface.
@@ -268,26 +290,31 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--nameserver="123.456.789.ABC 123.456.789.DEF" --nameserver="123.456.789.ABC 123.456.789.DEF"
Setup the nameserver of the machine, multiple space Setup the nameserver of the machine, multiple space
separated nameservers are allowed. separated nameservers are allowed. If not provided,
If not provided, Dom0's /etc/resolv.conf will be copied Dom0's /etc/resolv.conf will be copied to guest.
to guest.
--vifname=vifname --vifname=vifname
Optionally, set a specific vif name for the new instance. Optionally, set a specific vif name for the new
instance.
Mandatory options: Mandatory options:
--dir=/path/to/directory --dir=/path/to/directory
Specify where the output images should go. Specify where the output images should go.
Subdirectories will be created for each guest Subdirectories will be created for each guest.
If you do not wish to use loopback images specify --lvm
or --evms. (These three options are mutually exclusive.) If you do not wish to use loopback images specify
--lvm or --evms. (These three options are mutually
exclusive.)
--evms=lvm2/container --evms=lvm2/container
Specify the container to save images within, i.e. '--evms Specify the container to save images within,
lvm2/mycontainer'. If you do not wish to use EVMS specify i.e. '--evms lvm2/mycontainer'. If you do not wish to
--dir or --lvm. (These three options are mutually exclusive.) use EVMS specify --dir or --lvm. (These three options
are mutually exclusive.)
--hostname=host.example.org --hostname=host.example.org
Set the hostname of the new guest system. Ideally Set the hostname of the new guest system. Ideally
@@ -299,8 +326,6 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
If you do not wish to use LVM specify --dir or --evms. If you do not wish to use LVM specify --dir or --evms.
(These three options are mutually exclusive.) (These three options are mutually exclusive.)
=cut
=head1 NOTES =head1 NOTES
@@ -323,8 +348,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
The result of invoking these three scripts, and some minor glue between The result of invoking these three scripts, and some minor glue between
them, is a simple means of creating new Xen guest domains. them, is a simple means of creating new Xen guest domains.
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -347,7 +370,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
If you wish to install additional packages or do any additional If you wish to install additional packages or do any additional
configuration of your new guests, please read the section on "ROLES". configuration of your new guests, please read the section on "ROLES".
=cut
=head1 CONFIGURATION =head1 CONFIGURATION
@@ -427,9 +449,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
This makes use of loopback images stored beneath /home/xen and This makes use of loopback images stored beneath /home/xen and
will be installed via the debootstrap command. will be installed via the debootstrap command.
=cut
=head1 NETWORKING AUTO-SETUP =head1 NETWORKING AUTO-SETUP
@@ -465,8 +484,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
and would no longer be available. If all the IP addresses are taken and would no longer be available. If all the IP addresses are taken
then the system will fail. then the system will fail.
=cut
=head1 PARTITIONING =head1 PARTITIONING
@@ -481,8 +498,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
Now when you create a new image specify the name of this file with as Now when you create a new image specify the name of this file with as
an argument to the --partition option. an argument to the --partition option.
=cut
=head1 XEN CONFIGURATION FILE =head1 XEN CONFIGURATION FILE
@@ -500,8 +515,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
Alternatively you can create multiple configuration files and Alternatively you can create multiple configuration files and
specify the one to use with the --template option. specify the one to use with the --template option.
=cut
=head1 LOOPBACK EXAMPLES =head1 LOOPBACK EXAMPLES
@@ -537,8 +550,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
The '/domains/' subdirectory will be created if necessary. The '/domains/' subdirectory will be created if necessary.
=cut
=head1 LVM EXAMPLE =head1 LVM EXAMPLE
@@ -560,7 +571,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo mkdir -p /mnt/foo
mount /dev/myvolumegroup/vm01.my.flat-disk /mnt/foo mount /dev/myvolumegroup/vm01.my.flat-disk /mnt/foo
=cut
=head1 EVMS EXAMPLE =head1 EVMS EXAMPLE
@@ -582,8 +592,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo mkdir -p /mnt/foo
mount /dev/evms/vm01.my.flat-disk /mnt/foo mount /dev/evms/vm01.my.flat-disk /mnt/foo
=cut
=head1 INSTALLATION METHODS =head1 INSTALLATION METHODS
@@ -599,7 +607,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
arguments, or settings in the configuration file. Only one installation arguments, or settings in the configuration file. Only one installation
method may be specified at a time; they are mutually-exclusive. method may be specified at a time; they are mutually-exclusive.
=cut
=head1 INSTALLATION SPEEDUPS =head1 INSTALLATION SPEEDUPS
@@ -629,8 +636,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
--lvm=myvolumegroup --hostname=vm01.my.flat \ --lvm=myvolumegroup --hostname=vm01.my.flat \
--install-method=copy --install-source=/path/to/copy/from --install-method=copy --install-source=/path/to/copy/from
=cut
=head1 DEBOOTSTRAP CACHING =head1 DEBOOTSTRAP CACHING
@@ -658,8 +663,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
If you set your cache directory to anything else, simply rm the If you set your cache directory to anything else, simply rm the
contents of the directory. contents of the directory.
=cut
=head1 ROLES =head1 ROLES
@@ -736,9 +739,6 @@ Install an X11 server, using VNC and XDM
NOTE: Multiple role scripts may be invoked if you separate their NOTE: Multiple role scripts may be invoked if you separate their
names with commas. names with commas.
=cut
=head1 THE SKELETON DIRECTORY =head1 THE SKELETON DIRECTORY
@@ -766,7 +766,6 @@ Install an X11 server, using VNC and XDM
Dmitry Nedospasov, http://nedos.net/ Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -1422,8 +1421,8 @@ sub checkOption
# Define argument types # Define argument types
my %types = ( my %types = (
integerWithSuffix => { integerWithSuffix => {
check => qr/^[0-9.]+[GgMmKk]b?$/, check => qr/^[0-9.]+[GMk]B?$/i,
message => "takes a suffixed integer.\n", message => "takes a suffixed (mb, MB, G, k, etc.) integer.\n",
}, },
distribution => { distribution => {
check => sub { -d "/usr/share/xen-tools/$_[0].d" }, check => sub { -d "/usr/share/xen-tools/$_[0].d" },
@@ -1614,14 +1613,14 @@ sub parseCommandLineArguments
"disk_device=s", \&checkOption, "disk_device=s", \&checkOption,
# Hosts options # Hosts options
"nohosts", \$CONFIG{ 'nohosts' }, "nohosts", \$CONFIG{ 'nohosts' },
"copyhosts", \$CONFIG{ 'copyhosts' }, "copyhosts!", \$CONFIG{ 'copyhosts' },
# Deprecated legacy options for backwards compatibility # Deprecated legacy options for backwards compatibility
"no-hosts", \$CONFIG{ 'nohosts' }, "no-hosts", \$CONFIG{ 'nohosts' },
"copy-hosts", \$CONFIG{ 'copyhosts' }, "copy-hosts!", \$CONFIG{ 'copyhosts' },
# Networking options # Networking options
"dhcp", \$CONFIG{ 'dhcp' }, "dhcp!", \$CONFIG{ 'dhcp' },
"bridge=s", \&checkOption, "bridge=s", \&checkOption,
"gateway=s", \&checkOption, "gateway=s", \&checkOption,
"hostname=s", \&checkOption, "hostname=s", \&checkOption,
@@ -1642,11 +1641,11 @@ sub parseCommandLineArguments
"debootstrap-cmd=s", \$CONFIG{ 'debootstrap-cmd' }, "debootstrap-cmd=s", \$CONFIG{ 'debootstrap-cmd' },
# Misc. options # Misc. options
"accounts", \$CONFIG{ 'accounts' }, "accounts!", \$CONFIG{ 'accounts' },
"admins=s", \&checkOption, "admins=s", \&checkOption,
"arch=s", \&checkOption, "arch=s", \&checkOption,
"fs=s", \&checkOption, "fs=s", \&checkOption,
"boot", \$CONFIG{ 'boot' }, "boot!", \$CONFIG{ 'boot' },
"cache=s", \&checkOption, "cache=s", \&checkOption,
"cachedir=s", \&checkOption, "cachedir=s", \&checkOption,
"config=s", \&checkOption, "config=s", \&checkOption,
@@ -1654,8 +1653,8 @@ sub parseCommandLineArguments
"scsi", \$CONFIG{ 'scsi' }, "scsi", \$CONFIG{ 'scsi' },
"install=i", \&checkOption, "install=i", \&checkOption,
"hooks=i", \&checkOption, "hooks=i", \&checkOption,
"pygrub", \$CONFIG{ 'pygrub' }, "pygrub!", \$CONFIG{ 'pygrub' },
"passwd", \$CONFIG{ 'passwd' }, "passwd!", \$CONFIG{ 'passwd' },
"genpass=i", \&checkOption, "genpass=i", \&checkOption,
"genpass-len=i", \&checkOption, "genpass-len=i", \&checkOption,
"genpass_len=i", \&checkOption, "genpass_len=i", \&checkOption,
@@ -1666,20 +1665,20 @@ sub parseCommandLineArguments
"role-args=s", \&checkOption, "role-args=s", \&checkOption,
"finalrole=s", \&checkOption, "finalrole=s", \&checkOption,
"roledir=s", \&checkOption, "roledir=s", \&checkOption,
"force", \$CONFIG{ 'force' }, "force!", \$CONFIG{ 'force' },
"no-xen-ok", \$CONFIG{ 'no_xen_ok' }, "no-xen-ok", \$CONFIG{ 'no_xen_ok' },
"keep", \$CONFIG{ 'keep' }, "keep!", \$CONFIG{ 'keep' },
"template=s", \&checkOption, "template=s", \&checkOption,
"output=s", \&checkOption, "output=s", \&checkOption,
"extension:s", \&checkOption, "extension:s", \&checkOption,
"dontformat", \&checkOption, "dontformat", \&checkOption,
# Help options # Help options
"debug", \$CONFIG{ 'debug' }, "debug!", \$CONFIG{ 'debug' },
"help", \$HELP, "help", \$HELP,
"manual", \$MANUAL, "manual", \$MANUAL,
"dumpconfig", \$DUMPCONFIG, "dumpconfig", \$DUMPCONFIG,
"verbose", \$CONFIG{ 'verbose' }, "verbose!", \$CONFIG{ 'verbose' },
"version", \$VERSION "version", \$VERSION
) ) ) )
{ {

View File

@@ -36,8 +36,6 @@ xen-create-nfs - Create a Xen configuration file for an NFS-root guest.
--nfs_server Specify the NFS server to mount the root partition from. --nfs_server Specify the NFS server to mount the root partition from.
--nfs_root Specify the path, upon the NFS server, to mount. --nfs_root Specify the path, upon the NFS server, to mount.
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -55,11 +53,8 @@ Read the manual for this script.
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -71,8 +66,6 @@ Show the version number and exit.
support more than the minimal number of options to completement the support more than the minimal number of options to completement the
existing xen-create-image script, however it is hopefully useful. existing xen-create-image script, however it is hopefully useful.
=cut
=head1 REFERENCE =head1 REFERENCE
@@ -81,16 +74,12 @@ Show the version number and exit.
http://www.debian-administration.org/articles/505 http://www.debian-administration.org/articles/505
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -102,7 +91,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut

View File

@@ -30,8 +30,6 @@ xen-delete-image - Delete previously created Xen instances.
--test Don't complain if we're not invoked by root. --test Don't complain if we're not invoked by root.
--no-xen-ok Don't complain if xen seems not installed or xend is not running --no-xen-ok Don't complain if xen seems not installed or xend is not running
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -61,11 +59,8 @@ Do not complain, or exit, if the script is not executed by the root user.
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -79,8 +74,6 @@ Show the version number and exit.
but will fail to remove anything which the user does not have permission but will fail to remove anything which the user does not have permission
to delete.) to delete.)
=cut
=head1 LOOPBACK EXAMPLE =head1 LOOPBACK EXAMPLE
@@ -96,8 +89,6 @@ Show the version number and exit.
(The matching Xen configuration files beneath /etc/xen will also be (The matching Xen configuration files beneath /etc/xen will also be
removed.) removed.)
=cut
=head1 LVM EXAMPLE =head1 LVM EXAMPLE
@@ -114,8 +105,6 @@ Show the version number and exit.
The Xen configuration files will also be removed from beneath /etc/xen. The Xen configuration files will also be removed from beneath /etc/xen.
=cut
=head1 EVMS EXAMPLE =head1 EVMS EXAMPLE
@@ -132,8 +121,6 @@ Show the version number and exit.
The Xen configuration files will also be removed. The Xen configuration files will also be removed.
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -141,8 +128,6 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -154,7 +139,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut
@@ -232,25 +216,17 @@ E_O_ROOT
# #
# Loop over the supplied arguments, and attempt to delete each # Loop over the supplied arguments, and attempt to delete each
# image. # image. Check both, bare parameters as well as --hostname options.
# #
while ( my $name = shift )
{ my @hosts = ();
if ( $CONFIG{ 'no_xen_ok' } or !xenRunning($name, \%CONFIG) ) if (exists($CONFIG{ 'hostname' }) and defined($CONFIG{ 'hostname' })) {
{ my $hostname_option = $CONFIG{ 'hostname' };
deleteXenImage($name); @hosts = 'ARRAY' eq ref($hostname_option) ?
} @$hostname_option : $hostname_option;
else
{
print "Skipping xen guest '$name' - it appears to be running.\n";
}
} }
# foreach my $name (@ARGV, @hosts)
# Also delete any which were specified using the --hostname flag
#
my $hosts = $CONFIG{ 'hostname' };
foreach my $name (@$hosts)
{ {
my %PER_HOST_CONFIG = %CONFIG; my %PER_HOST_CONFIG = %CONFIG;
$PER_HOST_CONFIG{ 'hostname' } = $name; $PER_HOST_CONFIG{ 'hostname' } = $name;
@@ -416,7 +392,8 @@ sub deleteXenImage
} }
} }
my %PER_HOST_CONFIG = %CONFIG;
$PER_HOST_CONFIG{ 'hostname' } = $hostname;
if ( defined( $CONFIG{ 'dir' } ) ) if ( defined( $CONFIG{ 'dir' } ) )
{ {
my $prefix = $CONFIG{ 'dir' } . "/domains/"; my $prefix = $CONFIG{ 'dir' } . "/domains/";
@@ -450,7 +427,7 @@ sub deleteXenImage
print "Would remove LVM swap volume /dev/$CONFIG{'lvm'}/$hostname-swap\n"; print "Would remove LVM swap volume /dev/$CONFIG{'lvm'}/$hostname-swap\n";
} else { } else {
print "Removing swap volume\n"; print "Removing swap volume\n";
runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-swap --force", \%CONFIG); runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-swap --force", \%PER_HOST_CONFIG);
} }
} }
@@ -460,7 +437,7 @@ sub deleteXenImage
print "Would remove LVM disk volume /dev/$CONFIG{'lvm'}/$hostname-disk\n"; print "Would remove LVM disk volume /dev/$CONFIG{'lvm'}/$hostname-disk\n";
} else { } else {
print "Removing LVM disk volume\n"; print "Removing LVM disk volume\n";
runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-disk --force", \%CONFIG); runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-disk --force", \%PER_HOST_CONFIG);
} }
} }
@@ -482,8 +459,8 @@ sub deleteXenImage
print "Would remove EVMS swap volume: $CONFIG{'evms'}/$hostname-swap\n"; print "Would remove EVMS swap volume: $CONFIG{'evms'}/$hostname-swap\n";
} else { } else {
print "Removing EVMS swap volume\n"; print "Removing EVMS swap volume\n";
runCommand("echo Delete : /dev/evms/$hostname-swap | evms", \%CONFIG); runCommand("echo Delete : /dev/evms/$hostname-swap | evms", \%PER_HOST_CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms", \%CONFIG); runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms", \%PER_HOST_CONFIG);
} }
} }
@@ -494,8 +471,8 @@ sub deleteXenImage
print "Would remove EVMS disk volume: $CONFIG{'evms'}/$hostname-swap\n"; print "Would remove EVMS disk volume: $CONFIG{'evms'}/$hostname-swap\n";
} else { } else {
print "Removing EVMS disk volume\n"; print "Removing EVMS disk volume\n";
runCommand("echo Delete : /dev/evms/$hostname-disk | evms", \%CONFIG); runCommand("echo Delete : /dev/evms/$hostname-disk | evms", \%PER_HOST_CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms", \%CONFIG); runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms", \%PER_HOST_CONFIG);
} }
} }

View File

@@ -20,6 +20,7 @@ xen-list-images - List all the created and configured Xen images.
Testing options: Testing options:
--test Specify an alternate Xen configuration directory. --test Specify an alternate Xen configuration directory.
=head1 OPTIONS =head1 OPTIONS
=over 8 =over 8
@@ -52,22 +53,18 @@ Show the version number and exit.
and then either the IP address configured, or "DHCP" to denote and then either the IP address configured, or "DHCP" to denote
a dynamic host. a dynamic host.
=cut
=head1 TODO =head1 TODO
It should be possible to determine the disk(s) used by the images, It should be possible to determine the disk(s) used by the images,
and then display their sizes. and then display their sizes.
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE

View File

@@ -20,8 +20,6 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
--force Force the resize to happen without a last-chance delay. --force Force the resize to happen without a last-chance delay.
--hostname Specify the hostname of the guest to resize. --hostname Specify the hostname of the guest to resize.
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -53,8 +51,6 @@ Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -74,15 +70,12 @@ Show the version number and exit.
More than once I've heard of users making mistakes and breaking their More than once I've heard of users making mistakes and breaking their
filesystems; hence this tool. filesystems; hence this tool.
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
=cut
=head1 LICENSE =head1 LICENSE
@@ -94,7 +87,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut

View File

@@ -18,9 +18,6 @@ xen-update-image - Update the software installed upon offline Xen images.
--lvm Specify the LVM volume group which contains the image(s). --lvm Specify the LVM volume group which contains the image(s).
--evms Specify the EVMS container which contains the image(s). --evms Specify the EVMS container which contains the image(s).
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -46,8 +43,6 @@ Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -65,8 +60,6 @@ Show the version number and exit.
corruption otherwise it will allow you to update your image without corruption otherwise it will allow you to update your image without
booting it. booting it.
=cut
=head1 EXAMPLES =head1 EXAMPLES
@@ -77,8 +70,6 @@ Show the version number and exit.
xen-update-images --dir=/home/xen test.my.flat x11.my.flat xen-update-images --dir=/home/xen test.my.flat x11.my.flat
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -86,7 +77,6 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE

View File

@@ -4,8 +4,6 @@
xt-create-config - Create a Xen configuration file for a new guest xt-create-config - Create a Xen configuration file for a new guest
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-create-config [options] xt-create-config [options]
@@ -39,7 +37,6 @@ xt-create-config - Create a Xen configuration file for a new guest
All other options from xen-create-image, such as the new IP address(es) All other options from xen-create-image, such as the new IP address(es)
to give to the new instance, will be passed as environmental variables. to give to the new instance, will be passed as environmental variables.
=cut
=head1 ABOUT =head1 ABOUT
@@ -53,8 +50,6 @@ xt-create-config - Create a Xen configuration file for a new guest
By default the script will use /etc/xen-tools/xm.tmpl as its input. By default the script will use /etc/xen-tools/xm.tmpl as its input.
=cut
=head1 INVOCATION =head1 INVOCATION
@@ -75,9 +70,6 @@ xt-create-config - Create a Xen configuration file for a new guest
=for example end =for example end
=cut
=head1 ARGUMENT PASSING =head1 ARGUMENT PASSING
This script will be invoked with a full copy of the arguments from This script will be invoked with a full copy of the arguments from
@@ -102,7 +94,6 @@ xt-create-config - Create a Xen configuration file for a new guest
for the "Text::Template" perl module. (If you have the perldoc for the "Text::Template" perl module. (If you have the perldoc
package installed you can read this with "perldoc Text::Template".) package installed you can read this with "perldoc Text::Template".)
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -110,7 +101,6 @@ xt-create-config - Create a Xen configuration file for a new guest
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE

View File

@@ -4,8 +4,6 @@
xt-customize-image - Customize a freshly installed copy of GNU/Linux xt-customize-image - Customize a freshly installed copy of GNU/Linux
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-customize-image [options] xt-customize-image [options]
@@ -25,7 +23,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
All other options from xen-create-image, such as the new IP address(es) All other options from xen-create-image, such as the new IP address(es)
to give to the new instance, will be passed as environmental variables. to give to the new instance, will be passed as environmental variables.
=cut
=head1 NOTES =head1 NOTES
@@ -41,8 +38,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
--location - The temporary installation root of the new install --location - The temporary installation root of the new install
--dist - The distribution which has been installed. --dist - The distribution which has been installed.
=cut
=head1 HOOK SCRIPTS =head1 HOOK SCRIPTS
@@ -57,8 +52,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
executed from '/usr/share/xen-tools/foo.d'. Each executable will executed from '/usr/share/xen-tools/foo.d'. Each executable will
be loaded and executed in sorted order. be loaded and executed in sorted order.
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -66,8 +59,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE

View File

@@ -5,8 +5,6 @@
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and xt-guess-suite-and-mirror - Tries to guess the most suitable suite and
mirror for DomUs on Debian and Ubuntu Dom0s. mirror for DomUs on Debian and Ubuntu Dom0s.
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
--suite Show suite --suite Show suite
@@ -20,7 +18,6 @@ mirror for DomUs on Debian and Ubuntu Dom0s.
--manual Show the manual for this script. --manual Show the manual for this script.
--version Show the version number and exit. --version Show the version number and exit.
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -28,14 +25,12 @@ xt-guess-suite-and-mirror tries to find the mirror and suite the Xen
Dom0 is currently using and returns them in a way suitable for Dom0 is currently using and returns them in a way suitable for
xen-create-image(1) or the backticks feature in xen-tools.conf. xen-create-image(1) or the backticks feature in xen-tools.conf.
=cut
=head1 AUTHORS =head1 AUTHORS
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE

View File

@@ -4,8 +4,6 @@
xt-install-image - Install a fresh copy of GNU/Linux into a directory xt-install-image - Install a fresh copy of GNU/Linux into a directory
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-install-image [options] xt-install-image [options]
@@ -39,8 +37,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
All other options from xen-create-image will be passed as environmental All other options from xen-create-image will be passed as environmental
variables. variables.
=cut
=head1 NOTES =head1 NOTES
@@ -50,8 +46,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
configuration, etc. configuration, etc.
=cut
=head1 INSTALLATION METHODS =head1 INSTALLATION METHODS
There are several available methods of installation, depending upon the There are several available methods of installation, depending upon the
@@ -78,8 +72,6 @@ Untar a .tar file into the new installation location. This tarfile is assumed t
=back =back
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -88,7 +80,6 @@ Untar a .tar file into the new installation location. This tarfile is assumed t
Dmitry Nedospasov, http://nedos.net/ Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -133,13 +124,19 @@ my $RELEASE = '4.4~dev';
# needDirectory Defined if we need an install-source directory specified. # needDirectory Defined if we need an install-source directory specified.
# #
# #
my $debootstrap_cmd;
my %dispatch = ( my %dispatch = (
"copy" => { sub => \&do_copy, "copy" => { sub => \&do_copy,
needBinary => "/bin/cp", needBinary => "/bin/cp",
needDirectory => 1, needDirectory => 1,
}, },
"debootstrap" => { sub => \&do_debootstrap, "debootstrap" => { sub => \&do_debootstrap,
needBinary => "/usr/sbin/debootstrap", needBinary => ["/usr/sbin/debootstrap", "/usr/bin/cdebootstrap", "/usr/bin/cdebootstrap-static"],
var => \$debootstrap_cmd,
},
"cdebootstrap" => { sub => \&do_debootstrap,
needBinary => ["/usr/sbin/cdebootstrap", "/usr/bin/cdebootstrap-static"],
var => \$debootstrap_cmd,
}, },
"rinse" => { sub => \&do_rinse, "rinse" => { sub => \&do_rinse,
needBinary => "/usr/sbin/rinse", needBinary => "/usr/sbin/rinse",
@@ -210,13 +207,35 @@ if ( defined( $CONFIG{ 'install-method' } ) &&
# #
# Do we need to test for a binary. # Do we need to test for a binary.
if ( ( $installer->{ 'needBinary' } ) && if ( $installer->{ 'needBinary' } ) {
( !-x $installer->{ 'needBinary' } ) ) if ( 'ARRAY' eq ref $installer->{ 'needBinary' } ) {
{ unless (ref $installer->{ 'var' }) {
print die "Assertion: If dispatch->->needBinary is an array ref, dispatch->->var must exist";
"The following required binary for the installation was not found\n"; }
print "\t" . $installer->{ 'needBinary' } . "\n";
exit 1; foreach my $binary (@{$installer->{ 'needBinary' }}) {
if (-x $binary) {
${$installer->{ 'var' }} = $binary;
last;
}
}
unless ( ${$installer->{ 'var' }} ) {
print
"One of the following binaries are required for the installation, but none was found\n";
print "\t" . join(', ', @{$installer->{ 'needBinary' }}) . "\n";
exit 1;
}
}
else
{
if ( !-x $installer->{ 'needBinary' } ) {
print
"The following required binary for the installation was not found\n";
print "\t" . $installer->{ 'needBinary' } . "\n";
exit 1;
}
}
} }
# Do we need a directory specified as the installation source? # Do we need a directory specified as the installation source?
@@ -572,21 +591,9 @@ sub do_debootstrap
# The command is a little configurable - mostly to allow you # The command is a little configurable - mostly to allow you
# to use cdebootstrap. # to use cdebootstrap.
# #
my $cmd = $CONFIG{ 'debootstrap-cmd' }; my $cmd = $CONFIG{ 'debootstrap-cmd' } || $debootstrap_cmd;
print "Using $cmd as debootstrap command\n";
my $cachedir = $CONFIG{ 'cachedir' }; my $cachedir = $CONFIG{ 'cachedir' };
if ( !$cmd )
{
if (-x '/usr/sbin/debootstrap') {
$cmd = '/usr/sbin/debootstrap';
} elsif (-x '/usr/sbin/cdebootstrap') {
$cmd = '/usr/sbin/cdebootstrap';
} else {
print STDERR "Found neither debootstrap nor cdebootstrap and no --debootstrap-cmd given\n";
exit 1;
}
print "Using $cmd as debootstrap command\n";
}
# #
# Cache from host -> new installation if we've got caching # Cache from host -> new installation if we've got caching

10
debian/changelog vendored
View File

@@ -9,6 +9,7 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Execute END block not on --version/--help/--manual (Closes: #684346) - Execute END block not on --version/--help/--manual (Closes: #684346)
- Move code for --boot feature to END block. Fixes missing SSH - Move code for --boot feature to END block. Fixes missing SSH
fingerprint display if --boot was used. (Closes: #679183) fingerprint display if --boot was used. (Closes: #679183)
- Correctly handle aborts in END block. (Closes: #704882)
- Use local parameter instead of global variable in unMountImage. - Use local parameter instead of global variable in unMountImage.
- Also recognize "M" and "G" instead of "MB" and "GB" as size unit for - Also recognize "M" and "G" instead of "MB" and "GB" as size unit for
--memory. (Closes: #691320) Document the recognized units. --memory. (Closes: #691320) Document the recognized units.
@@ -22,6 +23,8 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Preliminary support for Debian Jessie and Ubuntu Raring - Preliminary support for Debian Jessie and Ubuntu Raring
- Preliminary support for xl toolstack - Preliminary support for xl toolstack
- xen-create-image: Consistently use runCommand() instead of system() - xen-create-image: Consistently use runCommand() instead of system()
- xt-install-image: Don't bail out if only cdebootstrap is installed
but not debootstrap (Thanks Elmar Heeb!)
- Makefile accepts DESTDIR=… - Makefile accepts DESTDIR=…
- Move examples from debian/examples to examples. - Move examples from debian/examples to examples.
- Uses File::Which, added (build-) dependency on libfile-which-perl - Uses File::Which, added (build-) dependency on libfile-which-perl
@@ -39,10 +42,15 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Fix filesystem tools installation in 91-install-fs-tools (which was - Fix filesystem tools installation in 91-install-fs-tools (which was
broken since 4.3~rc1-1) by merging 91-install-fs-tools back into broken since 4.3~rc1-1) by merging 91-install-fs-tools back into
90-make-fstab. Also supports RPM-based distributions now. 90-make-fstab. Also supports RPM-based distributions now.
- Fix export of environment variables. Previously they could contain - Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from dashes and then were only accessible from within Perl, but not from
within Bash. within Bash.
- Fixes creation of "ARRAY(0x…).log" named log files.
- Makes some options (like --pygrub) negatable.
- Uses Test::NoTabs; add according build-dependency. - Uses Test::NoTabs; add according build-dependency.
- Removes unused Perl modules Xen::Tools and Xen::Tools::Log from
source code. Also removes the according tests from the test suite.
→ Remove no more needed build-dependency on Moose.
* Add debian/gbp.conf to be able to to build xen-tools with * Add debian/gbp.conf to be able to to build xen-tools with
git-buildpackage. git-buildpackage.
* Clean up debian/rules: * Clean up debian/rules:

1
debian/control vendored
View File

@@ -7,7 +7,6 @@ Build-Depends: debhelper (>= 7.0.0),
git, git,
libfile-slurp-perl, libfile-slurp-perl,
libfile-which-perl, libfile-which-perl,
libmoose-perl,
libtest-notabs-perl, libtest-notabs-perl,
libtest-pod-coverage-perl, libtest-pod-coverage-perl,
libtest-pod-perl, libtest-pod-perl,

View File

@@ -125,13 +125,14 @@ install-method = debootstrap
# Disk and Sizing options. # Disk and Sizing options.
## ##
# #
size = 4Gb # Disk image size. size = 4G # Root disk, suffix (G, M, k) required
memory = 128Mb # Memory size memory = 128M # Suffix (G, M, k) required
swap = 128Mb # Swap size swap = 128M # Suffix (G, M, k) required
# noswap = 1 # Don't use swap at all for the new system. # noswap = 1 # Don't use swap at all for new systems.
fs = ext3 # use the EXT3 filesystem for the disk image. fs = ext3 # Default file system for any disk
dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install. dist = `xt-guess-suite-and-mirror --suite`
image = sparse # Specify sparse vs. full disk images. # Default distribution is determined by Dom0's distribution
image = sparse # Specify sparse vs. full disk images (file based images only)
# #
# See the README for currently supported and tested distributions. You can # See the README for currently supported and tested distributions. You can
@@ -235,6 +236,13 @@ image = sparse # Specify sparse vs. full disk images.
kernel = /boot/vmlinuz-`uname -r` kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r` initrd = /boot/initrd.img-`uname -r`
#
# Uncomment the following line if you wish to use pygrub by default
# for all distributions.
#
# pygrub = 1
#
# #
# The architecture to use when using debootstrap, rinse, or rpmstrap. # The architecture to use when using debootstrap, rinse, or rpmstrap.
# #

View File

@@ -3,7 +3,7 @@
# This script sets up the kernel and fstab for CentOS 5. # This script sets up the kernel and fstab for CentOS 5.
# #
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -21,16 +21,16 @@ fi
logMessage Script $0 starting logMessage Script $0 starting
# Make the console work # Make the console work
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${prefix}/etc/inittab sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${TARGET}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${prefix}/etc/inittab sed -i "s/^1:2345/#1:2345/" ${TARGET}/etc/inittab
# MAKEDEV is needed at this point # MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV chroot ${TARGET} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd chroot ${TARGET} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab # Create fstab
logMessage Create /etc/fstab logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF cat > ${TARGET}/etc/fstab << EOF
# /etc/fstab: static file system information. # /etc/fstab: static file system information.
# #
# <file system> <mount point> <type> <options> <dump> <pass> # <file system> <mount point> <type> <options> <dump> <pass>
@@ -39,26 +39,26 @@ none /dev/pts devpts mode=0620 0 0
EOF EOF
for i in `seq 1 $NUMPARTITIONS`; do for i in `seq 1 $NUMPARTITIONS`; do
echo -n "/dev/xvde$i " >> ${prefix}/etc/fstab echo -n "/dev/xvde$i " >> ${TARGET}/etc/fstab
eval part=\$PARTITION$i eval part=\$PARTITION$i
if [ ! -z "`echo $part | grep swap`" ]; then if [ ! -z "`echo $part | grep swap`" ]; then
echo "none swap ws 0 0" >> ${prefix}/etc/fstab echo "none swap ws 0 0" >> ${TARGET}/etc/fstab
else else
echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${prefix}/etc/fstab echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${TARGET}/etc/fstab
fi fi
done done
# Install the kernel, grub and perl # Install the kernel, grub and perl
chroot ${prefix} yum clean expire-cache chroot ${TARGET} yum clean expire-cache
chroot ${prefix} yum -y install kernel-xen grub.x86_64 perl.x86_64 chroot ${TARGET} yum -y install kernel-xen grub.x86_64 perl.x86_64
KERNELVERSION=`ls ${prefix}/boot/vmlinuz-* | sed "s#$prefix/boot/vmlinuz-##"` KERNELVERSION=`ls ${TARGET}/boot/vmlinuz-* | sed "s#${TARGET}/boot/vmlinuz-##"`
logMessage "Kernel $KERNELVERSION found" logMessage "Kernel $KERNELVERSION found"
# Create grub's menu.list # Create grub's menu.list
logMessage "Creating /boot/grub/menu.lst" logMessage "Creating /boot/grub/menu.lst"
mkdir -p ${prefix}/boot/grub mkdir -p ${TARGET}/boot/grub
cat > ${prefix}/boot/grub/menu.lst << EOF cat > ${TARGET}/boot/grub/menu.lst << EOF
# WARNING : Don't forget to update this when you upgrade kernel ! # WARNING : Don't forget to update this when you upgrade kernel !
# You can also exclude kernel-xen from updates by putting # You can also exclude kernel-xen from updates by putting
# exclude=kernel-xen in in [main] in yum.conf # exclude=kernel-xen in in [main] in yum.conf

View File

@@ -3,7 +3,7 @@
# This script sets up the kernel and fstab for CentOS 5. # This script sets up the kernel and fstab for CentOS 5.
# #
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -21,16 +21,16 @@ fi
logMessage Script $0 starting logMessage Script $0 starting
# Make the console work # Make the console work
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${prefix}/etc/inittab sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${TARGET}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${prefix}/etc/inittab sed -i "s/^1:2345/#1:2345/" ${TARGET}/etc/inittab
# MAKEDEV is needed at this point # MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV chroot ${TARGET} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd chroot ${TARGET} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab # Create fstab
logMessage Create /etc/fstab logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF cat > ${TARGET}/etc/fstab << EOF
# /etc/fstab: static file system information. # /etc/fstab: static file system information.
# #
# <file system> <mount point> <type> <options> <dump> <pass> # <file system> <mount point> <type> <options> <dump> <pass>
@@ -39,26 +39,26 @@ none /dev/pts devpts mode=0620 0 0
EOF EOF
for i in `seq 1 $NUMPARTITIONS`; do for i in `seq 1 $NUMPARTITIONS`; do
echo -n "/dev/sda$i " >> ${prefix}/etc/fstab echo -n "/dev/sda$i " >> ${TARGET}/etc/fstab
eval part=\$PARTITION$i eval part=\$PARTITION$i
if [ ! -z "`echo $part | grep swap`" ]; then if [ ! -z "`echo $part | grep swap`" ]; then
echo "none swap ws 0 0" >> ${prefix}/etc/fstab echo "none swap ws 0 0" >> ${TARGET}/etc/fstab
else else
echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${prefix}/etc/fstab echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${TARGET}/etc/fstab
fi fi
done done
# Install the kernel, grub and perl # Install the kernel, grub and perl
chroot ${prefix} yum clean expire-cache chroot ${TARGET} yum clean expire-cache
chroot ${prefix} yum -y install kernel-xen grub.x86_64 perl.x86_64 chroot ${TARGET} yum -y install kernel-xen grub.x86_64 perl.x86_64
KERNELVERSION=`ls ${prefix}/boot/vmlinuz-* | sed "s#$prefix/boot/vmlinuz-##"` KERNELVERSION=`ls ${TARGET}/boot/vmlinuz-* | sed "s#${TARGET}/boot/vmlinuz-##"`
logMessage "Kernel $KERNELVERSION found" logMessage "Kernel $KERNELVERSION found"
# Create grub's menu.list # Create grub's menu.list
logMessage "Creating /boot/grub/menu.lst" logMessage "Creating /boot/grub/menu.lst"
mkdir -p ${prefix}/boot/grub mkdir -p ${TARGET}/boot/grub
cat > ${prefix}/boot/grub/menu.lst << EOF cat > ${TARGET}/boot/grub/menu.lst << EOF
# WARNING : Don't forget to update this when you upgrade kernel ! # WARNING : Don't forget to update this when you upgrade kernel !
# You can also exclude kernel-xen from updates by putting # You can also exclude kernel-xen from updates by putting
# exclude=kernel-xen in in [main] in yum.conf # exclude=kernel-xen in in [main] in yum.conf
@@ -71,10 +71,10 @@ initrd /boot/initramfs-$KERNELVERSION.img
EOF EOF
# Some use lvm but mkinitrd will generate a wrong initrd when these are present. # Some use lvm but mkinitrd will generate a wrong initrd when these are present.
rm -f ${prefix}/etc/lvm/backup/* ${prefix}/etc/lvm/archive/* rm -f ${TARGET}/etc/lvm/backup/* ${TARGET}/etc/lvm/archive/*
# Generate a correct initrd. # Generate a correct initrd.
chroot ${prefix} mkinitrd --with=xenblk --with=xennet --preload=xenblk --preload=xennet\ chroot ${TARGET} mkinitrd --with=xenblk --with=xennet --preload=xenblk --preload=xennet\
-f /boot/initramfs-$KERNELVERSION.img $KERNELVERSION -f /boot/initramfs-$KERNELVERSION.img $KERNELVERSION
# #

View File

@@ -64,51 +64,51 @@ assert ()
# #
installDebianPackage () installDebianPackage ()
{ {
prefix=$1 TARGET=$1
shift shift
# #
# Log our options # Log our options
# #
logMessage "Installing Debian packages $@ to prefix ${prefix}" logMessage "Installing Debian packages $@ to target ${TARGET}"
# #
# We require a package + prefix # We require a package + target
# #
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
# #
# Prefix must be a directory. # Target must be a directory.
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
# #
# Use policy-rc to stop any daemons from starting. # Use policy-rc to stop any daemons from starting.
# #
printf '#!/bin/sh\nexit 101\n' > ${prefix}/usr/sbin/policy-rc.d printf '#!/bin/sh\nexit 101\n' > ${TARGET}/usr/sbin/policy-rc.d
chmod +x ${prefix}/usr/sbin/policy-rc.d chmod +x ${TARGET}/usr/sbin/policy-rc.d
# #
# Disable the start-stop-daemon - this shouldn't be necessary # Disable the start-stop-daemon - this shouldn't be necessary
# with the policy-rc.d addition above, however leaving it in # with the policy-rc.d addition above, however leaving it in
# place won't hurt .. # place won't hurt ..
# #
disableStartStopDaemon ${prefix} disableStartStopDaemon ${TARGET}
# #
# Install the packages # Install the packages
# #
DEBIAN_FRONTEND=noninteractive chroot ${prefix} /usr/bin/apt-get --yes --force-yes --no-install-recommends install "$@" DEBIAN_FRONTEND=noninteractive chroot ${TARGET} /usr/bin/apt-get --yes --force-yes --no-install-recommends install "$@"
# #
# Remove the policy-rc.d script. # Remove the policy-rc.d script.
# #
rm -f ${prefix}/usr/sbin/policy-rc.d rm -f ${TARGET}/usr/sbin/policy-rc.d
# #
# Re-enable the start-stop-daemon # Re-enable the start-stop-daemon
# #
enableStartStopDaemon ${prefix} enableStartStopDaemon ${TARGET}
} }
@@ -118,7 +118,7 @@ installDebianPackage ()
# #
generateDebianGrubMenuLst () generateDebianGrubMenuLst ()
{ {
prefix="$1" TARGET="$1"
DOMU_ISSUE="$2" DOMU_ISSUE="$2"
DOMU_KERNEL="$3" DOMU_KERNEL="$3"
DOMU_RAMDISK="$4" DOMU_RAMDISK="$4"
@@ -126,27 +126,27 @@ generateDebianGrubMenuLst ()
# #
# Log our options # Log our options
# #
logMessage "Generating a legacy GRUB menu.lst into prefix ${prefix}" logMessage "Generating a legacy GRUB menu.lst into target ${TARGET}"
# #
# We require at least 3 parameters # We require at least 3 parameters
# #
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
assert "$LINENO" "${DOMU_ISSUE}" assert "$LINENO" "${DOMU_ISSUE}"
assert "$LINENO" "${DOMU_KERNEL}" assert "$LINENO" "${DOMU_KERNEL}"
# #
# Prefix must be a directory, kernel a file # Target must be a directory, kernel a file
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
assert "$LINENO" -f "${prefix}/boot/${DOMU_KERNEL}" assert "$LINENO" -f "${TARGET}/boot/${DOMU_KERNEL}"
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
mkdir -p ${prefix}/boot/grub mkdir -p ${TARGET}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst cat << E_O_MENU > ${TARGET}/boot/grub/menu.lst
default 0 default 0
timeout 2 timeout 2
@@ -256,10 +256,10 @@ E_O_MENU
# #
disableStartStopDaemon () disableStartStopDaemon ()
{ {
local prefix="$1" local TARGET="$1"
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
for starter in start-stop-daemon initctl; do for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}" local daemonfile="${TARGET}/sbin/${starter}"
mv "${daemonfile}" "${daemonfile}.REAL" mv "${daemonfile}" "${daemonfile}.REAL"
echo '#!/bin/sh' > "${daemonfile}" echo '#!/bin/sh' > "${daemonfile}"
@@ -277,10 +277,10 @@ disableStartStopDaemon ()
# #
enableStartStopDaemon () enableStartStopDaemon ()
{ {
local prefix=$1 local TARGET=$1
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
for starter in start-stop-daemon initctl; do for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}" local daemonfile="${TARGET}/sbin/${starter}"
# #
# If the disabled file is present then enable it. # If the disabled file is present then enable it.
@@ -301,28 +301,28 @@ enableStartStopDaemon ()
# #
removeDebianPackage () removeDebianPackage ()
{ {
prefix=$1 TARGET=$1
shift shift
# #
# Log our options # Log our options
# #
logMessage "Purging Debian package ${package} from prefix ${prefix}" logMessage "Purging Debian package ${package} from target ${TARGET}"
# #
# We require a prefix # We require a target
# #
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
# #
# Prefix must be a directory. # Target must be a directory.
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
# #
# Purge the packages we've been given. # Purge the packages we've been given.
# #
chroot ${prefix} /usr/bin/apt-get remove --yes --purge "$@" chroot ${TARGET} /usr/bin/apt-get remove --yes --purge "$@"
} }
@@ -332,29 +332,29 @@ removeDebianPackage ()
# #
installRPMPackage () installRPMPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
# #
# Log our options # Log our options
# #
logMessage "Installing RPM ${package} to prefix ${prefix}" logMessage "Installing RPM ${package} to target ${TARGET}"
# #
# We require a package + prefix # We require a package + target
# #
assert "$LINENO" "${package}" assert "$LINENO" "${package}"
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
# #
# Prefix must be a directory. # Target must be a directory.
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
# #
# Install the package # Install the package
# #
chroot ${prefix} /usr/bin/yum -y install ${package} chroot ${TARGET} /usr/bin/yum -y install ${package}
} }
# Backwards Compatibility Function # Backwards Compatibility Function
@@ -373,7 +373,7 @@ isYum() ( [ -x $1/usr/bin/yum ] )
# #
installPackage () installPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
if isDeb ; then if isDeb ; then
@@ -396,13 +396,13 @@ installPackage ()
# #
installGentooPackage () installGentooPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
# #
# Log our options # Log our options
# #
logMessage "Installing Gentoo package ${package} to prefix ${prefix}" logMessage "Installing Gentoo package ${package} to target ${TARGET}"
logMessage "NOTE: Not doing anything - this is a stub - FIXME" logMessage "NOTE: Not doing anything - this is a stub - FIXME"

View File

@@ -8,7 +8,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -30,20 +30,20 @@ logMessage Script $0 starting
# #
# Make sure we have a directory. # Make sure we have a directory.
# #
if [ ! -d "${prefix}/usr/sbin" ]; then if [ ! -d "${TARGET}/usr/sbin" ]; then
mkdir -p "${prefix}/usr/sbin" mkdir -p "${TARGET}/usr/sbin"
logMessage "created missing directory: ${prefix}/usr/sbin" logMessage "created missing directory: ${TARGET}/usr/sbin"
fi fi
# #
# Add the script. # Add the script.
# #
echo '#!/bin/sh' > ${prefix}/usr/sbin/policy-rc.d echo '#!/bin/sh' > ${TARGET}/usr/sbin/policy-rc.d
echo 'exit 101' >> ${prefix}/usr/sbin/policy-rc.d echo 'exit 101' >> ${TARGET}/usr/sbin/policy-rc.d
chmod 755 ${prefix}/usr/sbin/policy-rc.d chmod 755 ${TARGET}/usr/sbin/policy-rc.d

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,9 +29,9 @@ logMessage Script $0 starting
# #
# Enable the shadow passwords if the command is found. # Enable the shadow passwords if the command is found.
# #
if [ -x ${prefix}/sbin/shadowconfig ]; then if [ -x ${TARGET}/sbin/shadowconfig ]; then
chroot ${prefix} /sbin/shadowconfig on chroot ${TARGET} /sbin/shadowconfig on
else else
logMessage "/sbin/shadowconfig not found. skipping." logMessage "/sbin/shadowconfig not found. skipping."

View File

@@ -8,7 +8,7 @@
prefix=$1 TARGET=$1
# #
@@ -37,8 +37,8 @@ if [ "`uname -m`" = "x86_64" ]; then
else else
logMessage "Disabling TLS" logMessage "Disabling TLS"
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled mv ${TARGET}/lib/tls ${TARGET}/lib/tls.disabled
mkdir ${prefix}/lib/tls mkdir ${TARGET}/lib/tls
fi fi

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# Disable the startup scripts from all runlevels. # Disable the startup scripts from all runlevels.
# #
chroot ${prefix} /usr/sbin/update-rc.d -f hwclock.sh remove chroot ${TARGET} /usr/sbin/update-rc.d -f hwclock.sh remove
# #
# Log our finish # Log our finish

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
# #
@@ -33,17 +33,17 @@ logMessage Script $0 starting
# the setting to the proxy guess file. # the setting to the proxy guess file.
# #
if [ ${apt_proxy} ]; then if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${TARGET}/etc/apt/apt.conf.d/01proxy
else else
logMessage The use of a proxy detected. logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy apt-config dump | grep -i Acquire::HTTP::Proxy > ${TARGET}/etc/apt/apt.conf.d/01proxy
fi fi
# #
# Setup the sources.list file for new installations of Ubuntu GNU/Linux. # Setup the sources.list file for new installations of Ubuntu GNU/Linux.
# #
cat <<E_O_APT > ${prefix}/etc/apt/sources.list cat <<E_O_APT > ${TARGET}/etc/apt/sources.list
# #
# /etc/apt/sources.list # /etc/apt/sources.list
# #
@@ -66,7 +66,7 @@ E_O_APT
# #
# Now that the sources have been setup make sure the system is up to date. # Now that the sources have been setup make sure the system is up to date.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update
# #
@@ -76,7 +76,7 @@ chroot ${prefix} /usr/bin/apt-get update
if [ "$arch" = 'i386' -a "$dist" != 'dapper' ]; then if [ "$arch" = 'i386' -a "$dist" != 'dapper' ]; then
logMessage "Installing libc6-xen" logMessage "Installing libc6-xen"
installDebianPackage ${prefix} libc6-xen installDebianPackage ${TARGET} libc6-xen
fi fi

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,12 +29,12 @@ logMessage Script $0 starting
# #
# Update yum # Update yum
# #
if [ ! -d ${prefix}/proc ]; then if [ ! -d ${TARGET}/proc ]; then
mkdir -p ${prefix}/proc mkdir -p ${TARGET}/proc
fi fi
mount -o bind /proc ${prefix}/proc mount -o bind /proc ${TARGET}/proc
chroot ${prefix} /usr/bin/yum update chroot ${TARGET} /usr/bin/yum update
umount ${prefix}/proc umount ${TARGET}/proc
# #

View File

@@ -7,7 +7,7 @@
prefix=$1 TARGET=$1
# #
@@ -31,7 +31,7 @@ logMessage Script $0 starting
# #
# NOTE: Failure to support your favourite language is *not* a bug. # NOTE: Failure to support your favourite language is *not* a bug.
# #
installDebianPackage ${prefix} language-pack-en installDebianPackage ${TARGET} language-pack-en
# #

View File

@@ -6,7 +6,7 @@
# #
prefix=$1 TARGET=$1
# #
@@ -30,20 +30,20 @@ logMessage Script $0 starting
# #
# Upstart on Ubuntu newer than 8.04 # Upstart on Ubuntu newer than 8.04
rm -f ${prefix}/etc/init/tty[!1].conf rm -f ${TARGET}/etc/init/tty[!1].conf
[ -f ${prefix}/etc/init/tty1.conf ] && { [ -f ${TARGET}/etc/init/tty1.conf ] && {
sed -i -e s/tty1/hvc0/ ${prefix}/etc/init/tty1.conf sed -i -e s/tty1/hvc0/ ${TARGET}/etc/init/tty1.conf
mv ${prefix}/etc/init/tty1.conf ${prefix}/etc/init/hvc0.conf mv ${TARGET}/etc/init/tty1.conf ${TARGET}/etc/init/hvc0.conf
} }
# Upstart on Ubuntu 8.04 or older # Upstart on Ubuntu 8.04 or older
rm -f ${prefix}/etc/event.d/tty[!1] rm -f ${TARGET}/etc/event.d/tty[!1]
[ -f ${prefix}/etc/event.d/tty1 ] && { [ -f ${TARGET}/etc/event.d/tty1 ] && {
sed -i -e s/tty1/hvc0/ ${prefix}/etc/event.d/tty1 sed -i -e s/tty1/hvc0/ ${TARGET}/etc/event.d/tty1
mv ${prefix}/etc/event.d/tty1 ${prefix}/etc/event.d/hvc0 mv ${TARGET}/etc/event.d/tty1 ${TARGET}/etc/event.d/hvc0
} }
# Inittab # Inittab
[ -f ${prefix}/etc/inittab ] && sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e 's/tty1$/hvc0/' ${prefix}/etc/inittab [ -f ${TARGET}/etc/inittab ] && sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e 's/tty1$/hvc0/' ${TARGET}/etc/inittab
# #
@@ -59,21 +59,21 @@ if [ ! -z "${serial_device}" ]; then
# replace existing device. # replace existing device.
# Upstart on Ubuntu newer than 8.04 # Upstart on Ubuntu newer than 8.04
[ -f ${prefix}/etc/init/hvc0.conf ] && { [ -f ${TARGET}/etc/init/hvc0.conf ] && {
mv ${prefix}/etc/init/hvc0.conf ${prefix}/etc/init/${serial_device}.conf mv ${TARGET}/etc/init/hvc0.conf ${TARGET}/etc/init/${serial_device}.conf
sed -i -e s/hvc0/${serial_device}/ ${prefix}/etc/init/${serial_device}.conf sed -i -e s/hvc0/${serial_device}/ ${TARGET}/etc/init/${serial_device}.conf
} }
# Upstart on Ubuntu 8.04 or older # Upstart on Ubuntu 8.04 or older
[ -f ${prefix}/etc/event.d/hvc0 ] && { [ -f ${TARGET}/etc/event.d/hvc0 ] && {
mv ${prefix}/etc/event.d/hvc0 ${prefix}/etc/event.d/${serial_device} mv ${TARGET}/etc/event.d/hvc0 ${TARGET}/etc/event.d/${serial_device}
sed -i -e s/hvc0/${serial_device}/ ${prefix}/etc/event.d/${serial_device} sed -i -e s/hvc0/${serial_device}/ ${TARGET}/etc/event.d/${serial_device}
} }
# Inittab # Inittab
[ -f ${prefix}/etc/inittab ] && sed -i -e s/hvc0/${serial_device}/ ${prefix}/etc/inittab [ -f ${TARGET}/etc/inittab ] && sed -i -e s/hvc0/${serial_device}/ ${TARGET}/etc/inittab
# make sure that it is allowed to login. # make sure that it is allowed to login.
echo $serial_device >> ${prefix}/etc/securetty echo $serial_device >> ${TARGET}/etc/securetty
fi fi

View File

@@ -8,7 +8,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# Make sure we have an /etc/network directory. # Make sure we have an /etc/network directory.
# #
mkdir -p ${prefix}/etc/network mkdir -p ${TARGET}/etc/network
# #
@@ -40,7 +40,7 @@ setupDynamicNetworking ()
# #
# The host is using DHCP. # The host is using DHCP.
# #
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces cat <<E_O_DHCP > ${TARGET}/etc/network/interfaces
# This file describes the network interfaces available on your system # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # and how to activate them. For more information, see interfaces(5).
@@ -88,7 +88,7 @@ setupStaticNetworking ()
# #
# We have a static IP address # We have a static IP address
# #
cat <<E_O_STATIC >${prefix}/etc/network/interfaces cat <<E_O_STATIC >${TARGET}/etc/network/interfaces
# This file describes the network interfaces available on your system # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # and how to activate them. For more information, see interfaces(5).
@@ -122,7 +122,7 @@ E_O_STATIC
logMessage Adding etho:${interface} logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces cat <<E_O_STATIC >>${TARGET}/etc/network/interfaces
auto eth0:${interface} auto eth0:${interface}
iface eth0:${interface} inet static iface eth0:${interface} inet static
address ${value} address ${value}
@@ -139,12 +139,12 @@ E_O_STATIC
# will be restored after hooks are run. # will be restored after hooks are run.
# #
if [ '' != "$nameserver" ]; then if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done done
else else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi fi
} }

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# Make sure we have an /etc/sysconfig/network-scripts directory. # Make sure we have an /etc/sysconfig/network-scripts directory.
# #
mkdir -p ${prefix}/etc/sysconfig/network-scripts/ mkdir -p ${TARGET}/etc/sysconfig/network-scripts/
# #
@@ -40,7 +40,7 @@ if [ -z "${dhcp}" ]; then
# #
# Setup the initial interface # Setup the initial interface
# #
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0 cat <<E_O_STATIC >${TARGET}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 DEVICE=eth0
ONBOOT=yes ONBOOT=yes
BOOTPROTO=static BOOTPROTO=static
@@ -62,7 +62,7 @@ E_O_STATIC
logMessage Adding etho:${interface} logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface} cat <<E_O_STATIC >${TARGET}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface} DEVICE=eth0:${interface}
ONBOOT=yes ONBOOT=yes
BOOTPROTO=static BOOTPROTO=static
@@ -79,27 +79,27 @@ E_O_STATIC
# will be restored after hooks are run. # will be restored after hooks are run.
# #
if [ '' != "$nameserver" ]; then if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done done
else else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi fi
else else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0 cat <<E_O_DHCP >${TARGET}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 DEVICE=eth0
BOOTPROTO=dhcp BOOTPROTO=dhcp
ONBOOT=yes ONBOOT=yes
E_O_DHCP E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient chroot ${TARGET} /usr/bin/yum -y install dhclient
fi fi
# #
# Don't forget to setup the default route. # Don't forget to setup the default route.
# #
cat <<EOF >${prefix}/etc/sysconfig/network cat <<EOF >${TARGET}/etc/sysconfig/network
NETWORKING=yes NETWORKING=yes
GATEWAY=${gateway} GATEWAY=${gateway}
HOSTNAME=${hostname} HOSTNAME=${hostname}

View File

@@ -9,7 +9,7 @@
prefix=$1 TARGET=$1
# #
@@ -43,8 +43,8 @@ umask 022
# #
# Setup the mailname + hostname files. # Setup the mailname + hostname files.
# #
echo $GUEST_HOSTNAME > ${prefix}/etc/hostname echo $GUEST_HOSTNAME > ${TARGET}/etc/hostname
echo $GUEST_FQDN > ${prefix}/etc/mailname echo $GUEST_FQDN > ${TARGET}/etc/mailname
# #
@@ -55,7 +55,7 @@ if [ -z "${copyhosts}" ]; then
# #
# Copy localhost # Copy localhost
# #
cat > ${prefix}/etc/hosts <<EOF cat > ${TARGET}/etc/hosts <<EOF
127.0.0.1 localhost 127.0.0.1 localhost
EOF EOF
# #
@@ -65,21 +65,21 @@ EOF
# #
# If dhcp is diabled, FQDN should resolve to our IP # If dhcp is diabled, FQDN should resolve to our IP
# #
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
${ip1} $GUEST_FQDN $GUEST_HOSTNAME ${ip1} $GUEST_FQDN $GUEST_HOSTNAME
EOF EOF
else else
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME 127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME
EOF EOF
fi fi
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
# The following lines are desirable for IPv6 capable hosts # The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback ::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix ff00::0 ip6-mcastTARGET
ff02::1 ip6-allnodes ff02::1 ip6-allnodes
ff02::2 ip6-allrouters ff02::2 ip6-allrouters
ff02::3 ip6-allhosts ff02::3 ip6-allhosts
@@ -88,23 +88,23 @@ EOF
else else
# Non-IPv6 stuff. # Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts grep -v '\(::\|IPv6\)' /etc/hosts > ${TARGET}/etc/hosts
# New entry. # New entry.
if [ -z "${dhcp}" ]; then if [ -z "${dhcp}" ]; then
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
${ip1} $GUEST_FQDN $GUEST_HOSTNAME ${ip1} $GUEST_FQDN $GUEST_HOSTNAME
EOF EOF
else else
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME 127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME
EOF EOF
fi fi
# IPv6 stuff. # IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts grep '\(::\|IPv6\)' /etc/hosts >> ${TARGET}/etc/hosts
fi fi

View File

@@ -9,7 +9,7 @@
prefix=$1 TARGET=$1
# #
@@ -37,8 +37,8 @@ umask 022
# #
# Setup the mailname + hostname files. # Setup the mailname + hostname files.
# #
echo ${hostname} | sed 's/^\([^\.]*\)\..*/\1/' > ${prefix}/etc/hostname echo ${hostname} | sed 's/^\([^\.]*\)\..*/\1/' > ${TARGET}/etc/hostname
echo ${hostname} > ${prefix}/etc/mailname echo ${hostname} > ${TARGET}/etc/mailname
# #
@@ -48,21 +48,21 @@ echo ${hostname} > ${prefix}/etc/mailname
if [ -z "${dhcp}" ]; then if [ -z "${dhcp}" ]; then
# Non-IPv6 stuff. # Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts grep -v '\(::\|IPv6\)' /etc/hosts > ${TARGET}/etc/hosts
# New entry. # New entry.
echo "${ip1} ${hostname}" >> ${prefix}/etc/hosts echo "${ip1} ${hostname}" >> ${TARGET}/etc/hosts
echo " " >> ${prefix}/etc/hosts echo " " >> ${TARGET}/etc/hosts
# IPv6 stuff. # IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts grep '\(::\|IPv6\)' /etc/hosts >> ${TARGET}/etc/hosts
else else
# #
# Stub /etc/hosts for DHCP clients. # Stub /etc/hosts for DHCP clients.
# #
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
127.0.0.1 localhost 127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts # The following lines are desirable for IPv6 capable hosts

View File

@@ -8,7 +8,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -32,8 +32,8 @@ logMessage Script $0 starting
MAKEDEV='' MAKEDEV=''
MAKEDEV_PATHS="/sbin/MAKEDEV /dev/MAKEDEV" MAKEDEV_PATHS="/sbin/MAKEDEV /dev/MAKEDEV"
for MAKEDEV_PATH in ${MAKEDEV_PATHS}; do for MAKEDEV_PATH in ${MAKEDEV_PATHS}; do
if [ -x "${prefix}${MAKEDEV_PATH}" ]; then if [ -x "${TARGET}${MAKEDEV_PATH}" ]; then
MAKEDEV="${prefix}${MAKEDEV_PATH}" MAKEDEV="${TARGET}${MAKEDEV_PATH}"
break break
fi fi
done done
@@ -44,11 +44,11 @@ if [ -n "${MAKEDEV}" ]; then
# Early termination if we have a couple of common devices present # Early termination if we have a couple of common devices present
# should speed up installs which use --copy/--tar # should speed up installs which use --copy/--tar
# #
if ( test `ls -1 ${prefix}/dev | wc -l` -gt 10 ); then if ( test `ls -1 ${TARGET}/dev | wc -l` -gt 10 ); then
# #
# We still need to make sure the basic devices are present # We still need to make sure the basic devices are present
# #
cd ${prefix}/dev cd ${TARGET}/dev
${MAKEDEV} std ${MAKEDEV} std
${MAKEDEV} hda ${MAKEDEV} hda
${MAKEDEV} sda ${MAKEDEV} sda
@@ -62,7 +62,7 @@ fi
# #
# Make the device nodes. # Make the device nodes.
# #
cd ${prefix}/dev cd ${TARGET}/dev
${MAKEDEV} generic ${MAKEDEV} generic
${MAKEDEV} std ${MAKEDEV} std

View File

@@ -5,7 +5,7 @@
# #
prefix=$1 TARGET=$1
# #
@@ -27,8 +27,8 @@ logMessage Script $0 starting
# #
# Copy "required" files from our host. # Copy "required" files from our host.
# #
cp /etc/timezone ${prefix}/etc cp /etc/timezone ${TARGET}/etc
cp /etc/localtime ${prefix}/etc cp /etc/localtime ${TARGET}/etc
# #

View File

@@ -5,7 +5,7 @@
# #
prefix=$1 TARGET=$1
# #
@@ -32,7 +32,7 @@ if [ -d /etc/xen-tools/skel ]; then
logMessage Copying files from /etc/xen-tools/skel logMessage Copying files from /etc/xen-tools/skel
(cd /etc/xen-tools/skel; tar -cf - . ) | (cd ${prefix}/; tar -xpf -) (cd /etc/xen-tools/skel; tar -cf - . ) | (cd ${TARGET}/; tar -xpf -)
logMessage Finished logMessage Finished

View File

@@ -10,7 +10,7 @@
# -- # --
# http://nedos.net/ # http://nedos.net/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -31,13 +31,13 @@ logMessage Script $0 starting
# #
# First, create an ssh directory # First, create an ssh directory
# #
mkdir -p ${prefix}/etc/ssh mkdir -p ${TARGET}/etc/ssh
# #
# Second, Generate the Host RSA Key # Second, Generate the Host RSA Key
# #
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then if [ ! -f ${TARGET}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then if ssh-keygen -t rsa -N "" -f ${TARGET}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generated RSA host key" logMessage "successfully generated RSA host key"
else else
logMessage "failed to generate RSA host key" logMessage "failed to generate RSA host key"
@@ -47,8 +47,8 @@ fi
# #
# Third, Generate the Host DSA Key # Third, Generate the Host DSA Key
# #
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then if [ ! -f ${TARGET}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then if ssh-keygen -t dsa -N "" -f ${TARGET}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generated DSA host key" logMessage "successfully generated DSA host key"
else else
logMessage "failed to generate DSA host key" logMessage "failed to generate DSA host key"
@@ -58,7 +58,7 @@ fi
# #
# Install ssh # Install ssh
# #
installDebianPackage ${prefix} openssh-server installDebianPackage ${TARGET} openssh-server
# #
# Log our finish # Log our finish

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -28,12 +28,12 @@ logMessage Script $0 starting
# #
# Install the OpenSSH server. # Install the OpenSSH server.
# #
if [ ! -d ${prefix}/proc ]; then if [ ! -d ${TARGET}/proc ]; then
mkdir -p ${prefix}/proc mkdir -p ${TARGET}/proc
fi fi
mount -o bind /proc ${prefix}/proc mount -o bind /proc ${TARGET}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd chroot ${TARGET} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc umount ${TARGET}/proc
# #

View File

@@ -8,7 +8,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# If the file doesn't exist exit early. # If the file doesn't exist exit early.
# #
if [ ! -e ${prefix}/etc/securetty ]; then if [ ! -e ${TARGET}/etc/securetty ]; then
logMessage /etc/securetty not found. logMessage /etc/securetty not found.
exit exit
fi fi
@@ -43,13 +43,13 @@ for i in xvc0 hvc0 ; do
# #
# Only append if not presnt. # Only append if not presnt.
# #
if ( grep $i ${prefix}/etc/securetty > /dev/null ) ; then if ( grep $i ${TARGET}/etc/securetty > /dev/null ) ; then
logMessage Host already has $i entry logMessage Host already has $i entry
else else
echo $i >> ${prefix}/etc/securetty echo $i >> ${TARGET}/etc/securetty
fi fi
done done

View File

@@ -12,7 +12,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
@@ -50,16 +50,16 @@ if [ -n "${modules}" -a -d "${modules}" ]; then
# #
logMessage "Copying modules from ${modules}" logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules mkdir -p ${TARGET}/lib/modules
cp -au ${modules} ${prefix}/lib/modules cp -au ${modules} ${TARGET}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then elif chroot ${TARGET} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing" logMessage "Package '${linux_modules_package}' is available - installing"
# #
# If it worked then we can install the package. # If it worked then we can install the package.
# #
installDebianPackage ${prefix} ${linux_modules_package} installDebianPackage ${TARGET} ${linux_modules_package}
else else
# #
@@ -69,8 +69,8 @@ else
logMessage "Package '${linux_modules_package}' is not available" logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)" logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules mkdir -p ${TARGET}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules cp -au /lib/modules/$(uname -r) ${TARGET}/lib/modules
fi fi
fi # if pygrub fi # if pygrub

View File

@@ -12,7 +12,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
@@ -36,8 +36,8 @@ logMessage Script $0 starting
# Copy the modules from the host to the new system - we should only # Copy the modules from the host to the new system - we should only
# really copy the *correct* modules, but we don't know what they are. # really copy the *correct* modules, but we don't know what they are.
# #
mkdir -p ${prefix}/lib/modules mkdir -p ${TARGET}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules cp -au /lib/modules/*/ ${TARGET}/lib/modules
# #

View File

@@ -6,7 +6,7 @@
# can't really do anything bad; just waste a bit of space. # can't really do anything bad; just waste a bit of space.
# #
prefix=$1 TARGET=$1
@@ -28,14 +28,14 @@ logMessage Script $0 starting
# #
# Install either kmod or module-init-tools package. # Install either kmod or module-init-tools package.
# #
if chroot ${prefix} /usr/bin/apt-cache show module-init-tools >/dev/null 2>/dev/null; then if chroot ${TARGET} /usr/bin/apt-cache show module-init-tools >/dev/null 2>/dev/null; then
if chroot ${prefix} /usr/bin/apt-cache show module-init-tools | fgrep -qi transitional; then if chroot ${TARGET} /usr/bin/apt-cache show module-init-tools | fgrep -qi transitional; then
installDebianPackage ${prefix} kmod installDebianPackage ${TARGET} kmod
else else
installDebianPackage ${prefix} module-init-tools installDebianPackage ${TARGET} module-init-tools
fi fi
else else
installDebianPackage ${prefix} kmod installDebianPackage ${TARGET} kmod
fi fi
# #

View File

@@ -7,7 +7,7 @@
# really do anything bad; just waste a bit of space. # really do anything bad; just waste a bit of space.
prefix=$1 TARGET=$1
@@ -31,16 +31,16 @@ if [ ${pygrub} ]; then
# #
# Install the grub 0.9x package ("grub-legacy" on Debian, "grub" on Ubuntu) # Install the grub 0.9x package ("grub-legacy" on Debian, "grub" on Ubuntu)
# #
if chroot ${prefix} /usr/bin/apt-cache show grub-legacy 2>/dev/null | egrep -qi 'GRand Unified Bootloader.*Legacy'; then if chroot ${TARGET} /usr/bin/apt-cache show grub-legacy 2>/dev/null | egrep -qi 'GRand Unified Bootloader.*Legacy'; then
installDebianPackage ${prefix} grub-legacy installDebianPackage ${TARGET} grub-legacy
else else
installDebianPackage ${prefix} grub installDebianPackage ${TARGET} grub
fi fi
if [ ! -e ${prefix}/boot/grub/default ]; then if [ ! -e ${TARGET}/boot/grub/default ]; then
echo default > ${prefix}/boot/grub/default echo default > ${TARGET}/boot/grub/default
fi fi
chroot ${prefix} /usr/sbin/update-grub chroot ${TARGET} /usr/sbin/update-grub
else else
logMessage "pygrub not set, skipping grub-legacy installation" logMessage "pygrub not set, skipping grub-legacy installation"

View File

@@ -12,7 +12,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -62,7 +62,7 @@ logMessage "Root device is /dev/$device"
has_xfs=0 has_xfs=0
has_reiserfs=0 has_reiserfs=0
has_btrfs=0 has_btrfs=0
cat <<E_O_FSTAB > ${prefix}/etc/fstab cat <<E_O_FSTAB > ${TARGET}/etc/fstab
# /etc/fstab: static file system information. # /etc/fstab: static file system information.
# #
# <file system> <mount point> <type> <options> <dump> <pass> # <file system> <mount point> <type> <options> <dump> <pass>
@@ -93,9 +93,9 @@ for part in `seq 1 ${NUMPARTITIONS}`; do
esac esac
if [ "${partdata2}" = "swap" ]; then if [ "${partdata2}" = "swap" ]; then
echo "/dev/${device}${part} none swap sw 0 0" >> ${prefix}/etc/fstab echo "/dev/${device}${part} none swap sw 0 0" >> ${TARGET}/etc/fstab
else else
echo "/dev/${device}${part} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${prefix}/etc/fstab echo "/dev/${device}${part} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${TARGET}/etc/fstab
fi fi
done done
@@ -106,7 +106,7 @@ logMessage Checking for filesystem tools to install
# Install any required packages for the given root filesystem # Install any required packages for the given root filesystem
# #
if [ "$has_xfs" -eq 1 ]; then if [ "$has_xfs" -eq 1 ]; then
installPackage ${prefix} xfsprogs installPackage ${TARGET} xfsprogs
fi fi
if [ "$has_reiserfs" -eq 1 ]; then if [ "$has_reiserfs" -eq 1 ]; then
if isAPT; then if isAPT; then

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# Clean the APT package cache for Debian GNU/Linux. # Clean the APT package cache for Debian GNU/Linux.
# #
chroot ${prefix} /usr/bin/apt-get clean chroot ${TARGET} /usr/bin/apt-get clean
# #

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -29,20 +29,20 @@ logMessage Script $0 starting
# Clean up RPM files. # Clean up RPM files.
# #
logMessage Cleaning .rpm* files. logMessage Cleaning .rpm* files.
find ${prefix}/ -name '*.rpmorig' -exec rm -f \{\} \; find ${TARGET}/ -name '*.rpmorig' -exec rm -f \{\} \;
find ${prefix}/ -name '*.rpmnew' -exec rm -f \{\} \; find ${TARGET}/ -name '*.rpmnew' -exec rm -f \{\} \;
# #
# Clean yum # Clean yum
# #
logMessage Cleaning Yum Repository logMessage Cleaning Yum Repository
if [ ! -d ${prefix}/proc ]; then if [ ! -d ${TARGET}/proc ]; then
mkdir -p ${prefix}/proc mkdir -p ${TARGET}/proc
fi fi
mount -o bind /proc ${prefix}/proc mount -o bind /proc ${TARGET}/proc
chroot ${prefix} /usr/bin/yum clean all chroot ${TARGET} /usr/bin/yum clean all
umount ${prefix}/proc umount ${TARGET}/proc
# #
# Log our finish # Log our finish

View File

@@ -8,7 +8,7 @@
prefix=$1 TARGET=$1
# #
@@ -30,11 +30,11 @@ logMessage Script $0 starting
# #
# Remove the script if present. # Remove the script if present.
# #
if [ -x "${prefix}/usr/sbin/policy-rc.d" ]; then if [ -x "${TARGET}/usr/sbin/policy-rc.d" ]; then
rm -f "${prefix}/usr/sbin/policy-rc.d" rm -f "${TARGET}/usr/sbin/policy-rc.d"
logMessage "Removed: ${prefix}/usr/sbin/policy-rc.d" logMessage "Removed: ${TARGET}/usr/sbin/policy-rc.d"
fi fi

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
# #
@@ -33,17 +33,17 @@ logMessage Script $0 starting
# the setting to the proxy guess file. # the setting to the proxy guess file.
# #
if [ ${apt_proxy} ]; then if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${TARGET}/etc/apt/apt.conf.d/01proxy
else else
logMessage The use of a proxy detected. logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy apt-config dump | grep -i Acquire::HTTP::Proxy > ${TARGET}/etc/apt/apt.conf.d/01proxy
fi fi
# #
# Setup the sources.list file for new installations of Debian GNU/Linux. # Setup the sources.list file for new installations of Debian GNU/Linux.
# #
cat <<E_O_APT > ${prefix}/etc/apt/sources.list cat <<E_O_APT > ${TARGET}/etc/apt/sources.list
# #
# /etc/apt/sources.list # /etc/apt/sources.list
# #
@@ -66,7 +66,7 @@ if ( test "${dist}" "!=" "sid" && test "${dist}" "!=" "unstable" && \
test -e /etc/apt/sources.list && \ test -e /etc/apt/sources.list && \
grep ^deb.*security -r /etc/apt/sources.list /etc/apt/sources.list.d >/dev/null 2>/dev/null ) ; then grep ^deb.*security -r /etc/apt/sources.list /etc/apt/sources.list.d >/dev/null 2>/dev/null ) ; then
cat <<E_O_APT >> ${prefix}/etc/apt/sources.list cat <<E_O_APT >> ${TARGET}/etc/apt/sources.list
# #
# Security updates # Security updates
# #
@@ -75,7 +75,7 @@ deb-src http://security.debian.org/ ${dist}/updates main contrib non-free
E_O_APT E_O_APT
else else
cat <<E_O_APT >> ${prefix}/etc/apt/sources.list cat <<E_O_APT >> ${TARGET}/etc/apt/sources.list
# #
# Security updates - Uncomment to enable. # Security updates - Uncomment to enable.
# #
@@ -88,7 +88,7 @@ fi
# #
# Now that the sources have been setup make sure the system is up to date. # Now that the sources have been setup make sure the system is up to date.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update
# #
# For all systems after Sarge we install libc6-xen on i386 # For all systems after Sarge we install libc6-xen on i386
@@ -98,11 +98,11 @@ chroot ${prefix} /usr/bin/apt-get update
if [ "${arch}" = "i386" ]; then if [ "${arch}" = "i386" ]; then
if [ "${dist}" = 'sarge' ]; then if [ "${dist}" = 'sarge' ]; then
logMessage "Disabling TLS" logMessage "Disabling TLS"
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled mv ${TARGET}/lib/tls ${TARGET}/lib/tls.disabled
mkdir ${prefix}/lib/tls mkdir ${TARGET}/lib/tls
else else
logMessage "Installing xen-aware libc6" logMessage "Installing xen-aware libc6"
installDebianPackage ${prefix} libc6-xen installDebianPackage ${TARGET} libc6-xen
fi fi
fi fi

View File

@@ -9,7 +9,7 @@
# -- # --
# http://nedos.net # http://nedos.net
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -62,19 +62,19 @@ KERNEL_XEN_PKG="linux-image-xen-$XEN_ARCH"
KERNEL_PKG="linux-image-$XEN_ARCH" KERNEL_PKG="linux-image-$XEN_ARCH"
logMessage Attempting to install the $KERNEL_XEN_PKG kernel image logMessage Attempting to install the $KERNEL_XEN_PKG kernel image
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_XEN_PKG is available - installing logMessage Package $KERNEL_XEN_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_XEN_PKG installDebianPackage ${TARGET} $KERNEL_XEN_PKG
else else
logMessage Package $KERNEL_XEN_PKG is not available logMessage Package $KERNEL_XEN_PKG is not available
logMessage Attempting to install the $KERNEL_PKG kernel image logMessage Attempting to install the $KERNEL_PKG kernel image
logMessage WARNING: This kernel may not have pvops logMessage WARNING: This kernel may not have pvops
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_PKG is available - installing logMessage Package $KERNEL_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG installDebianPackage ${TARGET} $KERNEL_PKG
else else
logMessage Package $KERNEL_PKG is not available logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed logMessage pygrub set, but kernel could not be installed
@@ -83,27 +83,27 @@ else
fi fi
fi fi
DOMU_KERNEL=$(basename $(ls -1 ${prefix}/boot/vmlinuz* | tail -n 1)) DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g") KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g")
DOMU_RAMDISK="initrd.img-$KERNEL_REV" DOMU_RAMDISK="initrd.img-$KERNEL_REV"
DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${prefix}/etc/issue) DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${TARGET}/etc/issue)
# #
# Generate initrd if it does not exist # Generate initrd if it does not exist
# #
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation logMessage initrd exists, skipping generation
else else
logMessage initrd missing, generating logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi fi
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
generateDebianGrubMenuLst "${prefix}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK" generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else else

View File

@@ -6,7 +6,7 @@
# -- # --
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -29,15 +29,15 @@ logMessage Script $0 starting
# Default to the same locale as the host. # Default to the same locale as the host.
# #
if [ -e /etc/locale.gen ]; then if [ -e /etc/locale.gen ]; then
cp /etc/locale.gen ${prefix}/etc cp /etc/locale.gen ${TARGET}/etc
fi fi
# #
# Install the package # Install the package
# #
installDebianPackage ${prefix} locales installDebianPackage ${TARGET} locales
installDebianPackage ${prefix} util-linux-locales installDebianPackage ${TARGET} util-linux-locales
chroot ${prefix} /usr/sbin/update-locale LANG=C chroot ${TARGET} /usr/sbin/update-locale LANG=C
# #

View File

@@ -9,7 +9,7 @@
# -- # --
# http://nedos.net # http://nedos.net
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -37,19 +37,19 @@ KERNEL_XEN_PKG="linux-image-xen"
KERNEL_PKG="linux-image-server" KERNEL_PKG="linux-image-server"
logMessage Attempting to install the $KERNEL_XEN_PKG kernel image logMessage Attempting to install the $KERNEL_XEN_PKG kernel image
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_XEN_PKG is available - installing logMessage Package $KERNEL_XEN_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_XEN_PKG installDebianPackage ${TARGET} $KERNEL_XEN_PKG
else else
logMessage Package $KERNEL_XEN_PKG is not available logMessage Package $KERNEL_XEN_PKG is not available
logMessage Attempting to install the $KERNEL_PKG kernel image logMessage Attempting to install the $KERNEL_PKG kernel image
logMessage WARNING: This kernel may not have pvops logMessage WARNING: This kernel may not have pvops
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_PKG is available - installing logMessage Package $KERNEL_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG installDebianPackage ${TARGET} $KERNEL_PKG
else else
logMessage Package $KERNEL_PKG is not available logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed logMessage pygrub set, but kernel could not be installed
@@ -58,27 +58,27 @@ else
fi fi
fi fi
DOMU_KERNEL=$(basename $(ls -1 ${prefix}/boot/vmlinuz* | tail -n 1)) DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g") KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g")
DOMU_RAMDISK="initrd.img-$KERNEL_REV" DOMU_RAMDISK="initrd.img-$KERNEL_REV"
DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${prefix}/etc/issue) DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${TARGET}/etc/issue)
# #
# Generate initrd if it does not exist # Generate initrd if it does not exist
# #
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation logMessage initrd exists, skipping generation
else else
logMessage initrd missing, generating logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi fi
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
generateDebianGrubMenuLst "${prefix}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK" generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else else

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -27,14 +27,14 @@ logMessage Script $0 starting
# #
# Remove lines matching 'group' or 'wheel'. # Remove lines matching 'group' or 'wheel'.
# #
grep -v wheel ${prefix}/etc/pam.d/su > ${prefix}/etc/pam.d/su.tmp grep -v wheel ${TARGET}/etc/pam.d/su > ${TARGET}/etc/pam.d/su.tmp
grep -v group ${prefix}/etc/pam.d/su.tmp > ${prefix}/etc/pam.d/su grep -v group ${TARGET}/etc/pam.d/su.tmp > ${TARGET}/etc/pam.d/su
# #
# Make sure permissions are correct. # Make sure permissions are correct.
# #
chown root:root ${prefix}/etc/pam.d/su chown root:root ${TARGET}/etc/pam.d/su
chmod 600 ${prefix}/etc/pam.d/su chmod 600 ${TARGET}/etc/pam.d/su
# #
# Log our finish # Log our finish

View File

@@ -7,7 +7,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -28,7 +28,7 @@ logMessage Script $0 starting
# #
# Make sure we have an /etc/conf.d directory. # Make sure we have an /etc/conf.d directory.
# #
mkdir -p ${prefix}/etc/conf.d mkdir -p ${TARGET}/etc/conf.d
# #
@@ -39,7 +39,7 @@ setupDynamicNetworking ()
# #
# The host is using DHCP. # The host is using DHCP.
# #
cat <<E_O_DHCP > ${prefix}/etc/conf.d/net cat <<E_O_DHCP > ${TARGET}/etc/conf.d/net
# /etc/conf.d/net: # /etc/conf.d/net:
# Global config file for net.* rc-scripts # Global config file for net.* rc-scripts
# #
@@ -70,7 +70,7 @@ setupStaticNetworking ()
# #
# We have a static IP address # We have a static IP address
# #
cat <<E_O_STATIC >${prefix}/etc/conf.d/net cat <<E_O_STATIC >${TARGET}/etc/conf.d/net
# #
# First ethernet interface # First ethernet interface
# #
@@ -89,7 +89,7 @@ E_O_STATIC
logMessage Adding etho:${interface} logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/conf.d/net cat <<E_O_STATIC >>${TARGET}/etc/conf.d/net
config_eth0:${interface}=( "{value} netmask "${netmask}" ) config_eth0:${interface}=( "{value} netmask "${netmask}" )
E_O_STATIC E_O_STATIC
@@ -103,12 +103,12 @@ E_O_STATIC
# will be restored after hooks are run. # will be restored after hooks are run.
# #
if [ '' != "$nameserver" ]; then if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done done
else else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi fi
} }

View File

@@ -9,7 +9,7 @@
prefix=$1 TARGET=$1
# #
@@ -44,8 +44,8 @@ umask 022
# #
# Setup the hostname + domain names. # Setup the hostname + domain names.
# #
echo HOSTNAME=\"${name}\" >> ${prefix}/etc/conf.d/hostname echo HOSTNAME=\"${name}\" >> ${TARGET}/etc/conf.d/hostname
echo DNSDOMAIN=\"${domain}\" >> ${prefix}/etc/conf.d/domainname echo DNSDOMAIN=\"${domain}\" >> ${TARGET}/etc/conf.d/domainname
# #
@@ -55,21 +55,21 @@ echo DNSDOMAIN=\"${domain}\" >> ${prefix}/etc/conf.d/domainname
if [ -z "${dhcp}" ]; then if [ -z "${dhcp}" ]; then
# Non-IPv6 stuff. # Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts grep -v '\(::\|IPv6\)' /etc/hosts > ${TARGET}/etc/hosts
# New entry. # New entry.
echo "${ip1} ${hostname}" >> ${prefix}/etc/hosts echo "${ip1} ${hostname}" >> ${TARGET}/etc/hosts
echo " " >> ${prefix}/etc/hosts echo " " >> ${TARGET}/etc/hosts
# IPv6 stuff. # IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts grep '\(::\|IPv6\)' /etc/hosts >> ${TARGET}/etc/hosts
else else
# #
# Stub /etc/hosts for DHCP clients. # Stub /etc/hosts for DHCP clients.
# #
cat >> ${prefix}/etc/hosts <<EOF cat >> ${TARGET}/etc/hosts <<EOF
127.0.0.1 localhost 127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts # The following lines are desirable for IPv6 capable hosts

View File

@@ -10,7 +10,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
@@ -32,14 +32,14 @@ logMessage Script $0 starting
# #
# Install ssh # Install ssh
# #
installGentooPackage ${prefix} ssh installGentooPackage ${TARGET} ssh
# #
# Make sure sshd isn't running, this will cause our unmounting of the # Make sure sshd isn't running, this will cause our unmounting of the
# disk image to fail.. # disk image to fail..
# #
chroot ${prefix} /etc/init.d/ssh stop chroot ${TARGET} /etc/init.d/ssh stop
# #

View File

@@ -9,7 +9,7 @@
# -- # --
# http://nedos.net # http://nedos.net
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -37,10 +37,10 @@ KERNEL_PKG="linux-image-virtual"
logMessage Attempting to install the $KERNEL_PKG kernel image logMessage Attempting to install the $KERNEL_PKG kernel image
logMessage WARNING: This kernel may not have pvops logMessage WARNING: This kernel may not have pvops
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_PKG is available - installing logMessage Package $KERNEL_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG installDebianPackage ${TARGET} $KERNEL_PKG
else else
logMessage Package $KERNEL_PKG is not available logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed logMessage pygrub set, but kernel could not be installed
@@ -48,27 +48,27 @@ else
exit 1 exit 1
fi fi
DOMU_KERNEL=$(basename $(ls -1 ${prefix}/boot/vmlinuz* | tail -n 1)) DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g") KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g")
DOMU_RAMDISK="initrd.img-$KERNEL_REV" DOMU_RAMDISK="initrd.img-$KERNEL_REV"
DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${prefix}/etc/issue) DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${TARGET}/etc/issue)
# #
# Generate initrd if it does not exist # Generate initrd if it does not exist
# #
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation logMessage initrd exists, skipping generation
else else
logMessage initrd missing, generating logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi fi
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
generateDebianGrubMenuLst "${prefix}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK" generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else else
logMessage pygrub not set, skipping kernel install logMessage pygrub not set, skipping kernel install

View File

@@ -9,7 +9,7 @@
# -- # --
# http://nedos.net # http://nedos.net
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -38,27 +38,27 @@ linux_kernel_type="virtual"
linux_kernel_package="linux-image-${linux_kernel_type}" linux_kernel_package="linux-image-${linux_kernel_type}"
logMessage "Installing the ${linux_kernel_package} kernel image" logMessage "Installing the ${linux_kernel_package} kernel image"
if chroot ${prefix} /usr/bin/apt-cache show ${linux_kernel_package} >/dev/null 2>/dev/null; then if chroot ${TARGET} /usr/bin/apt-cache show ${linux_kernel_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_kernel_package}' is available - installing" logMessage "Package '${linux_kernel_package}' is available - installing"
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} ${linux_kernel_package} installDebianPackage ${TARGET} ${linux_kernel_package}
# Force initrd if none exists # Force initrd if none exists
echo ${prefix}/boot/initrd* | grep -q 2\\.6 echo ${TARGET}/boot/initrd* | grep -q 2\\.6
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
chroot ${prefix} update-initramfs -c -k `ls -1 ${prefix}/lib/modules/ | head -n 1` chroot ${TARGET} update-initramfs -c -k `ls -1 ${TARGET}/lib/modules/ | head -n 1`
fi fi
# Generate grub menu.lst # Generate grub menu.lst
DOMU_KERNEL=$(basename $(ls -1 ${prefix}/boot/vmlinuz* | tail -n 1)) DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
DOMU_RAMDISK=$(basename $(ls -1 ${prefix}/boot/initrd*|tail -n 1)) DOMU_RAMDISK=$(basename $(ls -1 ${TARGET}/boot/initrd*|tail -n 1))
DOMU_ISSUE=$(head -n 1 ${prefix}/etc/issue | awk -F '\' '{ print $1 }' | sed 's/[ \t]*$//') DOMU_ISSUE=$(head -n 1 ${TARGET}/etc/issue | awk -F '\' '{ print $1 }' | sed 's/[ \t]*$//')
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
generateDebianGrubMenuLst "${prefix}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK" generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else else

View File

@@ -1,332 +0,0 @@
package Xen::Tools;
use warnings;
use strict;
use Moose;
use Xen::Tools::Log;
=head1 NAME
Xen::Tools - Build Xen domains with Perl
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.01';
=head1 SYNOPSIS
my $xt = Xen::Tools->new();
=head1 FUNCTIONS
=head2 new
Instantiate the object.
=cut
override 'new' => sub {
my $class = shift;
# Initialize the base class
my $self = $class->super(@_);
$self->{_xtl} = Xen::Tools::Log->new( hostname => $self->hostname,
logpath => $self->logpath,
);
$self->_checkSystem();
return $self;
};
=head2 meta
This is a method which provides access to the current class's meta-
class. Inherited from Moose.
=cut
=head2 log
This method sends a log message to the current object's logging
mechanism
=cut
sub log {
my $self = shift;
$self->{_xtl}->print(@_);
}
=head2 hostname
Attribute which indicates the domain's hostname
=cut
has 'hostname' => ( is => 'ro', isa => 'Str', required => 1 );
=head2 logpath
Attribute which indicates the log directory. Defaults to /var/log/xen-tools
=cut
has 'logpath' => ( is => 'ro',
isa => 'Str',
default => '/var/log/xen-tools'
);
=begin doc
_findBinary
Find the location of the specified binary on the curent user's PATH.
Return undef if the named binary isn't found.
=end doc
=cut
sub _findBinary {
my $self = shift;
my( $bin ) = (@_);
# strip any path which might be present.
$bin = $2 if ( $bin =~ /(.*)[\/\\](.*)/ );
foreach my $entry ( split( /:/, $ENV{'PATH'} ) )
{
# guess of location.
my $guess = $entry . "/" . $bin;
# return it if it exists and is executable
return $guess if ( -e $guess && -x $guess );
}
return;
}
=begin doc
_checkSystem
Test that this system is fully setup for the new xen-create-image
script.
This means that the the companion scripts xt-* are present on the
host and executable.
=end doc
=cut
sub _checkSystem {
my $self = shift;
my @required = qw ( / xt-customize-image
xt-install-image
xt-create-xen-config / );
foreach my $bin ( @required )
{
if ( ! defined( $self->_findBinary( $bin ) ) )
{
$self->log("The script '$bin' was not found.\n",
"Aborting\n\n"
);
exit;
}
}
#
# Make sure that we have Text::Template installed - this
# will be used by `xt-create-xen-config` and if that fails then
# running is pointless.
#
my $test = "use Text::Template";
eval( $test );
if ( ( $@ ) && ( ! $self->{_force} ) )
{
print <<E_O_ERROR;
Aborting: The Text::Template perl module isn't installed or available.
Specify '--force' to skip this check and continue regardless.
E_O_ERROR
exit;
}
#
# Make sure that xen-shell is installed if we've got an --admin
# flag specified
#
if ( $self->{_admins} )
{
my $shell = undef;
$shell = "/usr/bin/xen-login-shell" if ( -x "/usr/bin/xen-login-shell" );
$shell = "/usr/local/bin/xen-login-shell" if ( -x "/usr/bin/local/xen-login-shell" );
if ( !defined( $shell ) )
{
print <<EOF;
You've specified administrator accounts for use with the xen-shell,
however the xen-shell doesn't appear to be installed.
Aborting.
EOF
exit;
}
}
#
# Test the system has a valid (network-script) + (vif-script) setup.
#
return $self->_testXenConfig();
}
=begin doc
Test that the current Xen host has a valid network configuration,
this is designed to help newcomers to Xen.
=end doc
=cut
sub _testXenConfig {
my $self = shift;
# wierdness.
return if ( ! -d "/etc/xen" );
#
# Temporary hash.
#
my %cfg;
#
# Read the configuration file.
#
open( my $config_fh, q{<}, '/etc/xen/xend-config.sxp' )
or die "Failed to read /etc/xen/xend-config.sxp: $!";
while( <$config_fh> )
{
next if ( ! $_ || !length( $_ ) );
# vif
if ( $_ =~ /^\(vif-script ([^)]+)/ )
{
$cfg{'vif-script'} = $1;
}
# network
if ( $_ =~ /^\(network-script ([^)]+)/ )
{
$cfg{'network-script'} = $1;
}
}
close( $config_fh );
if ( !defined( $cfg{'network-script'} ) ||
!defined( $cfg{'vif-script'} ) )
{
print <<EOF;
WARNING
-------
You appear to have a missing vif-script, or network-script, in the
Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able
to use any networking!
EOF
}
else
{
if ( ( $cfg{'network-script'} =~ /dummy/i ) ||
( $cfg{'vif-script'} =~ /dummy/i ) )
{
print <<EOF;
WARNING
-------
You appear to have a "dummy" vif-script, or network-script, setting
in the Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able to
use any networking!
EOF
}
}
return 1;
}
=head1 AUTHOR
C.J. Adams-Collier, C<< <cjac at colliertech.org> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-xen-tools at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Xen-Tools>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Xen::Tools
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Xen-Tools>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Xen-Tools>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Xen-Tools>
=item * Search CPAN
L<http://search.cpan.org/dist/Xen-Tools>
=back
=head1 COPYRIGHT & LICENSE
Copyright 2007 C.J. Adams-Collier, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
1; # End of Xen::Tools

View File

@@ -6,6 +6,7 @@ package Xen::Tools::Common;
Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts
=head1 SYNOPSIS =head1 SYNOPSIS
use Xen::Tools::Common; use Xen::Tools::Common;

View File

@@ -1,212 +0,0 @@
package Xen::Tools::Log;
use warnings;
use strict;
use Moose;
use File::Spec;
use POSIX; # strftime
use Carp;
=head1 NAME
Xen::Tools::Log - Log Xen::Tools events
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.01';
=head1 SYNOPSIS
Mostly internal to Xen::Tools. Use this to create a logging mechanism.
my $xtl = Xen::Tools::Log->new( hostname => 'firewall' );
$xtl->print("Yay for logging.");
=head1 FUNCTIONS
=head2 new
Create the log object
=cut
=head2 print
Print the given string both to our screen, and to the logfile.
=cut
sub print {
my $self = shift;
$self->print_screen( @_ );
$self->print_log( @_ );
}
=head2 print_screen
Print the given string to our screen
=cut
sub print_screen {
my $self = shift;
print map { "$_\n" } @_;
}
=head2 print_log
Print the given string to the logfile.
=cut
sub print_log {
my $self = shift;
# Create an RFC 822 conformant date string
my $date = strftime( "%a, %d %b %Y %H:%M:%S %z", localtime );
my $fh = $self->log_fh();
print $fh ( map { "$date - $_" } @_ );
}
=head2 hostname
Attribute storing the hostname this log describes
=cut
has 'hostname' => ( is => 'rw', isa => 'Str', required => 1 );
=head2 logpath
Attribute storing the directory in which the log file resides
=cut
has 'logpath' => ( is => 'rw',
isa => 'Str',
default => '/var/log/xen-tools'
);
=head2 log_fh
FileHandle attribute storing the filehandle of the log
=cut
has 'log_fh' => ( is => 'ro',
isa => 'FileHandle',
lazy => 1,
default => \&_init_fh,
);
=head2 clean_up
Boolean attribute indicating whether the log will be cleaned up when the
logger is closed
=cut
has 'clean_up' => ( is => 'ro',
isa => 'Bool',
default => 0,
);
before 'DESTROY' => sub {
my $self = shift;
# Deconstructor
};
=head2 meta
This is a method which provides access to the current class's meta-
class. Inherited from Moose.
=cut
=begin doc
_init_fh
This private method initializes the logging filehandle, creating the
containing directory if it does not exist.
=end doc
=cut
sub _init_fh {
my $self = shift;
my $logFile =
File::Spec->catfile( $self->logpath(), $self->hostname() . '.log' );
system( qw(mkdir -p), $self->logpath() ) unless -d $self->logpath();
carp "Couldn't create log directory: $!" unless $? == 0;
open( $self->{log_fh}, q{>>}, $logFile ) or
carp "Couldn't open log file for append: $!";
};
=head1 AUTHOR
C.J. Adams-Collier, C<< <cjac at colliertech.org> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-xen-tools-log at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Xen-Tools>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Xen::Tools
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Xen-Tools>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Xen-Tools>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Xen-Tools>
=item * Search CPAN
L<http://search.cpan.org/dist/Xen-Tools>
=back
=head1 COPYRIGHT & LICENSE
Copyright 2007 C.J. Adams-Collier, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
1; # End of Xen::Tools::Log

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
@@ -28,16 +28,16 @@ fi
# #
# Update APT lists. # Update APT lists.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update
# #
# Install the packages # Install the packages
# #
installDebianPackage ${prefix} dpkg-dev installDebianPackage ${TARGET} dpkg-dev
installDebianPackage ${prefix} devscripts installDebianPackage ${TARGET} devscripts
installDebianPackage ${prefix} fakeroot installDebianPackage ${TARGET} fakeroot
installDebianPackage ${prefix} debhelper installDebianPackage ${TARGET} debhelper
installDebianPackage ${prefix} build-essential installDebianPackage ${TARGET} build-essential
installDebianPackage ${prefix} lintian installDebianPackage ${TARGET} lintian
installDebianPackage ${prefix} linda installDebianPackage ${TARGET} linda

View File

@@ -6,7 +6,7 @@
# otherwise the temporary mounted directory will not be unmountable. # otherwise the temporary mounted directory will not be unmountable.
# #
prefix=$1 TARGET=$1
# #
# Source our common functions - this will let us install a Debian package. # Source our common functions - this will let us install a Debian package.
@@ -28,20 +28,20 @@ logMessage Script $0 starting
# #
# Install CFengine # Install CFengine
# #
installDebianPackage ${prefix} cfengine2 installDebianPackage ${TARGET} cfengine2
# #
# Make sure the CFengine server isn't running, this will cause our # Make sure the CFengine server isn't running, this will cause our
# unmounting of the disk image to fail.. # unmounting of the disk image to fail..
# #
chroot ${prefix} /etc/init.d/cfengine2 stop chroot ${TARGET} /etc/init.d/cfengine2 stop
# #
# Copy cfengine update.conf & defaults from Dom0 # Copy cfengine update.conf & defaults from Dom0
# #
cp /etc/cfengine/update.conf ${prefix}/etc/cfengine/ cp /etc/cfengine/update.conf ${TARGET}/etc/cfengine/
cp /etc/default/cfengine2 ${prefix}/etc/default/ cp /etc/default/cfengine2 ${TARGET}/etc/default/
# #
# Log our finish # Log our finish

View File

@@ -21,9 +21,9 @@
# #
# Our installation directory + our prefix for finding scripts from. # Our installation directory + our target for finding scripts from.
# #
prefix=$1 TARGET=$1
source=/etc/xen-tools/sed.d/ source=/etc/xen-tools/sed.d/
@@ -59,7 +59,7 @@ fi
for i in `find ${source} -name '*.sed' -print`; do for i in `find ${source} -name '*.sed' -print`; do
# #
# Get the name of the file, minus the source prefix # Get the name of the file, minus the source target
# #
file=${i#$source} file=${i#$source}
@@ -71,17 +71,17 @@ for i in `find ${source} -name '*.sed' -print`; do
# #
# Does the file exist in the new install? # Does the file exist in the new install?
# #
if [ -e "${prefix}/${file}" ]; then if [ -e "${TARGET}/${file}" ]; then
# #
# Log it. # Log it.
# #
logMessage "Running script $i - against ${prefix}/${file}" logMessage "Running script $i - against ${TARGET}/${file}"
# #
# Invoke it. # Invoke it.
# #
sed -i~ -f $i "${prefix}/${file}" sed -i~ -f $i "${TARGET}/${file}"
fi fi
done done

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
@@ -28,24 +28,24 @@ fi
# #
# Update APT lists. # Update APT lists.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update
# #
# Install the packages # Install the packages
# #
installDebianPackage ${prefix} xserver-xfree86 installDebianPackage ${TARGET} xserver-xfree86
installDebianPackage ${prefix} vncserver installDebianPackage ${TARGET} vncserver
installDebianPackage ${prefix} xfonts-100dpi installDebianPackage ${TARGET} xfonts-100dpi
installDebianPackage ${prefix} xfonts-75dpi installDebianPackage ${TARGET} xfonts-75dpi
installDebianPackage ${prefix} xfonts-base installDebianPackage ${TARGET} xfonts-base
installDebianPackage ${prefix} rxvt installDebianPackage ${TARGET} rxvt
installDebianPackage ${prefix} gdm installDebianPackage ${TARGET} gdm
installDebianPackage ${prefix} icewm-experimental installDebianPackage ${TARGET} icewm-experimental
# #
# Add a new section to the GDM configuration file. # Add a new section to the GDM configuration file.
# #
cat <<EOF >> ${prefix}/etc/gdm/gdm.conf cat <<EOF >> ${TARGET}/etc/gdm/gdm.conf
[server-VNC] [server-VNC]
name=VNC server name=VNC server
command=/usr/bin/Xvnc -geometry 800x600 -depth 24 command=/usr/bin/Xvnc -geometry 800x600 -depth 24
@@ -56,4 +56,4 @@ EOF
# #
# Make the new section the default # Make the new section the default
# #
perl -pi.bak -e 's/^0=Standard\n//g ; s/^\[servers\]/\[servers\]\n0=VNC/g' ${prefix}/etc/gdm/gdm.conf perl -pi.bak -e 's/^0=Standard\n//g ; s/^\[servers\]/\[servers\]\n0=VNC/g' ${TARGET}/etc/gdm/gdm.conf

View File

@@ -9,7 +9,7 @@
# #
prefix=$1 TARGET=$1
@@ -28,12 +28,12 @@ fi
# #
# Install some new packages - do this first to avoid dependency errors. # Install some new packages - do this first to avoid dependency errors.
# #
installDebianPackage ${prefix} syslog-ng installDebianPackage ${TARGET} syslog-ng
installDebianPackage ${prefix} deborphan installDebianPackage ${TARGET} deborphan
installDebianPackage ${prefix} less installDebianPackage ${TARGET} less
installDebianPackage ${prefix} screen installDebianPackage ${TARGET} screen
installDebianPackage ${prefix} sudo installDebianPackage ${TARGET} sudo
installDebianPackage ${prefix} vim installDebianPackage ${TARGET} vim
# #
@@ -41,28 +41,28 @@ installDebianPackage ${prefix} vim
# #
# PPP stuff. # PPP stuff.
removeDebianPackage ${prefix} pppconfig removeDebianPackage ${TARGET} pppconfig
removeDebianPackage ${prefix} pppoeconf removeDebianPackage ${TARGET} pppoeconf
removeDebianPackage ${prefix} pppoe removeDebianPackage ${TARGET} pppoe
removeDebianPackage ${prefix} ppp removeDebianPackage ${TARGET} ppp
removeDebianPackage ${prefix} libpcap0.7 removeDebianPackage ${TARGET} libpcap0.7
# Editors # Editors
removeDebianPackage ${prefix} nano removeDebianPackage ${TARGET} nano
removeDebianPackage ${prefix} ed removeDebianPackage ${TARGET} ed
removeDebianPackage ${prefix} nvi removeDebianPackage ${TARGET} nvi
# Syslog # Syslog
removeDebianPackage ${prefix} klogd removeDebianPackage ${TARGET} klogd
removeDebianPackage ${prefix} sysklogd removeDebianPackage ${TARGET} sysklogd
# manpages # manpages
removeDebianPackage ${prefix} manpages removeDebianPackage ${TARGET} manpages
removeDebianPackage ${prefix} man-db removeDebianPackage ${TARGET} man-db
removeDebianPackage ${prefix} info removeDebianPackage ${TARGET} info
# misc # misc
removeDebianPackage ${prefix} tasksel tasksel-data removeDebianPackage ${TARGET} tasksel tasksel-data
removeDebianPackage ${prefix} pciutils removeDebianPackage ${TARGET} pciutils
removeDebianPackage ${prefix} fdutils removeDebianPackage ${TARGET} fdutils
removeDebianPackage ${prefix} cpio removeDebianPackage ${TARGET} cpio

View File

@@ -6,7 +6,7 @@
# otherwise the temporary mounted directory will not be unmountable. # otherwise the temporary mounted directory will not be unmountable.
# #
prefix=$1 TARGET=$1
# #
# Source our common functions - this will let us install a Debian package. # Source our common functions - this will let us install a Debian package.
@@ -26,14 +26,14 @@ logMessage Script $0 starting
# #
# Install ssh # Install ssh
# #
installDebianPackage ${prefix} puppet installDebianPackage ${TARGET} puppet
# #
# Make sure sshd isn't running, this will cause our unmounting of the # Make sure sshd isn't running, this will cause our unmounting of the
# disk image to fail.. # disk image to fail..
# #
chroot ${prefix} /etc/init.d/puppet stop chroot ${TARGET} /etc/init.d/puppet stop
# #
# Log our finish # Log our finish

View File

@@ -3,7 +3,7 @@
# This role helps to customize guest's /etc/resolv.conf # This role helps to customize guest's /etc/resolv.conf
# #
prefix=$1 TARGET=$1
# #
# Source our common functions - this will let us install a Debian package. # Source our common functions - this will let us install a Debian package.
@@ -33,7 +33,7 @@ logMessage Script $0 starting
# #
# Create Guest's resolv.conf as resolv.conf.old (see WARNING before) : # Create Guest's resolv.conf as resolv.conf.old (see WARNING before) :
# #
cat <<RESOLV_CONF_EOF >${prefix}/etc/resolv.conf.old cat <<RESOLV_CONF_EOF >${TARGET}/etc/resolv.conf.old
nameserver 192.168.1.1 nameserver 192.168.1.1
#search domain.tld #search domain.tld
RESOLV_CONF_EOF RESOLV_CONF_EOF

View File

@@ -3,7 +3,7 @@
# This role installs sudo with host sudoers file. # This role installs sudo with host sudoers file.
# #
prefix=$1 TARGET=$1
# #
# Source our common functions - this will let us install a Debian package. # Source our common functions - this will let us install a Debian package.
@@ -24,7 +24,7 @@ logMessage Script $0 starting
# #
# Install sudo package # Install sudo package
# #
installDebianPackage ${prefix} sudo installDebianPackage ${TARGET} sudo
# #
# WARNING : # WARNING :
@@ -36,9 +36,9 @@ installDebianPackage ${prefix} sudo
# #
# Copy dom0's file to domU. # Copy dom0's file to domU.
# #
cp /etc/sudoers ${prefix}/etc/ cp /etc/sudoers ${TARGET}/etc/
chown root:root ${prefix}/etc/sudoers chown root:root ${TARGET}/etc/sudoers
chmod 440 ${prefix}/etc/sudoers chmod 440 ${TARGET}/etc/sudoers
# #
# Log our finish # Log our finish

View File

@@ -7,7 +7,7 @@
# -- # --
# #
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -28,7 +28,7 @@ logMessage Script $0 starting
# #
# Now let's fixup the fstab # Now let's fixup the fstab
# #
cat <<END_OF_TMPFS_FSTAB >> ${prefix}/etc/fstab cat <<END_OF_TMPFS_FSTAB >> ${TARGET}/etc/fstab
tmpfs /tmp tmpfs rw,nosuid,nodev 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
tmpfs /var/run tmpfs rw,nosuid,nodev,noexec,mode=1755 0 0 tmpfs /var/run tmpfs rw,nosuid,nodev,noexec,mode=1755 0 0
tmpfs /var/lock tmpfs rw,nosuid,nodev,noexec 0 0 tmpfs /var/lock tmpfs rw,nosuid,nodev,noexec 0 0

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
@@ -25,11 +25,11 @@ fi
# #
# Install udev. # Install udev.
# #
installDebianPackage ${prefix} udev installDebianPackage ${TARGET} udev
# #
# Update APT lists. # Update APT lists.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update

View File

@@ -8,7 +8,7 @@
# #
prefix=$1 TARGET=$1
@@ -27,29 +27,29 @@ fi
# #
# Update APT lists. # Update APT lists.
# #
chroot ${prefix} /usr/bin/apt-get update chroot ${TARGET} /usr/bin/apt-get update
# #
# Install the packages # Install the packages
# #
installDebianPackage ${prefix} xserver-xfree86 installDebianPackage ${TARGET} xserver-xfree86
installDebianPackage ${prefix} vncserver installDebianPackage ${TARGET} vncserver
installDebianPackage ${prefix} xfonts-100dpi installDebianPackage ${TARGET} xfonts-100dpi
installDebianPackage ${prefix} xfonts-75dpi installDebianPackage ${TARGET} xfonts-75dpi
installDebianPackage ${prefix} xfonts-base installDebianPackage ${TARGET} xfonts-base
installDebianPackage ${prefix} rxvt installDebianPackage ${TARGET} rxvt
installDebianPackage ${prefix} xdm installDebianPackage ${TARGET} xdm
installDebianPackage ${prefix} icewm-experimental installDebianPackage ${TARGET} icewm-experimental
# #
# Remove the default settings. # Remove the default settings.
# #
rm ${prefix}/etc/X11/xdm/Xserver rm ${TARGET}/etc/X11/xdm/Xserver
rm ${prefix}/etc/X11/xdm/Xservers rm ${TARGET}/etc/X11/xdm/Xservers
# #
# Setup XDM to use the VNC server we installed. # Setup XDM to use the VNC server we installed.
# #
/bin/echo ':0 /usr/bin/Xvnc /usr/bin/Xvnc -geometry 1024x768 -depth 24' > \ /bin/echo ':0 /usr/bin/Xvnc /usr/bin/Xvnc -geometry 1024x768 -depth 24' > \
${prefix}/etc/X11/xdm/Xservers ${TARGET}/etc/X11/xdm/Xservers

View File

@@ -39,7 +39,7 @@ foreach my $key ( sort keys %OPTIONS )
foreach my $line ( @lines ) foreach my $line ( @lines )
{ {
if ( $line =~ /--$key/ ) if ( $line =~ /--(\(no\))?$key/ )
{ {
$found = 1; $found = 1;
} }

View File

@@ -51,7 +51,7 @@ sub testFile
foreach my $line ( split( /\n/, $output ) ) foreach my $line ( split( /\n/, $output ) )
{ {
if ( $line =~ /[ \t]*--([a-z-_]+)/ ) if ( $line =~ /[ \t]*--(?:\(no\))?([a-z-_]+)/ )
{ {
push @documented, $1 unless( $line =~ /NOP/i ); push @documented, $1 unless( $line =~ /NOP/i );
} }
@@ -120,6 +120,11 @@ sub testFile
{ {
$o = $1; $o = $1;
} }
#print " - remove negation : $o ";
#
# Discard any "!" at the end
#
$o =~ s/!//;
#print " - remove = : $o "; #print " - remove = : $o ";
# #
# Now avoid blank lines. # Now avoid blank lines.

View File

@@ -25,7 +25,7 @@ use Test::More qw( no_plan );
EOF EOF
for i in `grep '^use ' -r .. | grep -v Expect | grep -v POSIX | grep -v Xen:: | grep -v Moose | awk '{print $2}' | tr -d for i in `grep '^use ' -r .. | grep -v Expect | grep -v POSIX | grep -v Xen:: | awk '{print $2}' | tr -d
\;\(\) | sort | uniq`; \ \;\(\) | sort | uniq`; \
do \ do \
echo "BEGIN{ use_ok( '$i' ); }"; \ echo "BEGIN{ use_ok( '$i' ); }"; \

View File

@@ -13,11 +13,6 @@ use strict;
use File::Find; use File::Find;
use Test::More; use Test::More;
eval "use Moose";
plan skip_all => "Moose required for testing Perl syntax"
if $@;
# #
# Find all the files beneath the current directory, # Find all the files beneath the current directory,
# and call 'checkFile' with the name. # and call 'checkFile' with the name.

View File

@@ -75,7 +75,9 @@ close( IMAGE );
# So we need to run the deletion script and verify the images # So we need to run the deletion script and verify the images
# are removed correctly. # are removed correctly.
# #
`perl -I./lib -I../lib ./bin/xen-delete-image --test --no-xen-ok --dir=$dir $hostname`; my $log = `perl -I./lib -I../lib ./bin/xen-delete-image --test --verbose --no-xen-ok --dir=$dir $hostname`;
ok ( $? == 0, 'Calling xen-delete-image returned exit code 0' );
print $log;
# #

View File

@@ -1,15 +0,0 @@
#!/usr/bin/perl -I../lib -I./lib
use strict;
use warnings;
use Test::More tests => 1, skip_all => 'Xen::Tools::Log is not used for now';
use File::Temp;
use Xen::Tools::Log;
my $dir = File::Temp::tempdir( CLEANUP => 1 );
my $xtl = Xen::Tools::Log->new( hostname => 'xen-tools-log-test',
logpath => $dir );
ok( $xtl->isa('Xen::Tools::Log') );

View File

@@ -1,23 +0,0 @@
#!/usr/bin/perl -I../lib -I./lib
#
# Test we can load the (stub) Xen::Tools package.
#
use strict;
use warnings;
use Test::More skip_all => 'Xen::Tools is not used for now';
SKIP: {
skip "Test only works as root", 1 if $< > 0;
eval {
use Xen::Tools;
my $xt = Xen::Tools->new( hostname => 'xen-tools-test' );
ok( $xt->isa('Xen::Tools') );
};
}
done_testing();

View File

@@ -140,7 +140,7 @@ sub runCreateCommand
# #
# Create a temporary directory, and make sure it is present. # Create a temporary directory, and make sure it is present.
# #
my $dir = File::Temp::tempdir( CLEANUP => 0 ); my $dir = File::Temp::tempdir( CLEANUP => 1 );
ok ( -d $dir, "The temporary directory was created: $dir" ); ok ( -d $dir, "The temporary directory was created: $dir" );
# #
@@ -176,7 +176,7 @@ sub runCreateCommand
my @LINES = <OUTPUT>; my @LINES = <OUTPUT>;
close( OUTPUT ); close( OUTPUT );
return( join( "\n", @LINES ) ); return( join( "\n", @LINES ), $dir );
} }
@@ -193,7 +193,7 @@ sub testOutputContains
my ( $text, %params ) = ( @_ ); my ( $text, %params ) = ( @_ );
# Get the output of running the command. # Get the output of running the command.
my $output = runCreateCommand( %params ); my ($output, $dir) = runCreateCommand( %params );
# #
# Look to see if we got the text. # Look to see if we got the text.
@@ -220,7 +220,7 @@ sub noMentionOf
my ( $text, %params ) = ( @_ ); my ( $text, %params ) = ( @_ );
# Get the output of running the command. # Get the output of running the command.
my $output = runCreateCommand( %params ); my ($output, $dir) = runCreateCommand( %params );
# #
# Look to see if we got the text. # Look to see if we got the text.