1
0
mirror of synced 2026-05-06 08:03:22 +00:00

Compare commits

...

96 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
Axel Beckert
555ce383d3 Switch from /usr/lib/xen-tools/ to /usr/share/xen-tools/ to properly adhere FHS 2013-04-05 20:19:22 +02:00
Axel Beckert
b29117be02 Ignore Devel::Cover cache 2013-03-22 16:58:59 +01:00
Axel Beckert
ff7ded28e8 Only the key for %ENV, but not for %CONFIG, needs to be modified 2013-03-14 00:10:18 +01:00
Axel Beckert
f0691c9a38 Merge branch 'master' of gitorious.org:xen-tools/xen-tools
Conflicts:
	debian/changelog
2013-03-14 00:01:05 +01:00
Axel Beckert
76d9d59510 Fix export of environment variables (dash vs underscore)
Previously they could contain dashes and then were only accessible
from within Perl, but not from within Bash.

From now on potential dashes in environment variable names are
converted to underscores ("_") before being exported. May affect some
hook or role scripts.
2013-03-13 23:29:52 +01:00
Axel Beckert
5342b04ac7 Some more TODOs (mostly refactoring + code cleanup) 2013-03-13 23:17:09 +01:00
Axel Beckert
01e525106b Use Test::NoTabs in t/no-tabs.t 2013-03-05 23:07:04 +01:00
Axel Beckert
5146706536 Document 4.3.1 in NEWS 2013-01-26 01:18:28 +01:00
Axel Beckert
dfa32a97ca Also switch xt-guess-suite-and-mirror's fallback to http.debian.net 2013-01-25 17:34:39 +01:00
Axel Beckert
c409759745 Rename NEWS to NEWS.markdown 2013-01-25 17:32:20 +01:00
Axel Beckert
149b92af77 Document 4.3 release date in NEWS 2013-01-25 17:30:17 +01:00
Axel Beckert
a4b3c9c568 Also use http.debian.net as default mirror for the debian-archive 2013-01-25 17:09:54 +01:00
Axel Beckert
dbb9124666 Use http.debian.net as default Debian mirror if no mirror is given
... i.e. if even xt-guess-suite-and-mirror is not used.
2013-01-25 17:09:19 +01:00
Axel Beckert
f2d30eaa63 xen-delete-image no more passes $CONFIG{hostname} as array to logprint_with_config
The deletion of failed attempts was logged to files named like
ARRAY(0xa9dd98).log because the hostname was passed twice, i.e. as
arrayref (which didn't hurt otherwise).
2013-01-25 15:22:42 +01:00
Axel Beckert
0709308c1f Save exit code $? at the beginning of the END block
Otherwise cleaning up by doing some system() calls garbles $? with
unwanted values.
2013-01-25 13:19:36 +01:00
Axel Beckert
d3baf1f8ba KNOWN BUGS: -1 +1 2013-01-25 13:03:23 +01:00
Axel Beckert
d7f219f160 Create /boot/grub/default if non-existent
Seems to be needed at least for Squeeze.
2013-01-24 23:14:34 +01:00
Axel Beckert
bc054b1b02 chomp the output of dpkg --print-architecture 2013-01-24 23:14:34 +01:00
Axel Beckert
f18285943c Call update-grub at the end of 82-install-grub-legacy to update menu.lst 2013-01-24 23:14:34 +01:00
Axel Beckert
780839988d Remove trailing blank line 2013-01-24 23:14:34 +01:00
Axel Beckert
025e20a1f1 Better check for grub-legacy availability which ignores virtual packages 2013-01-24 23:14:34 +01:00
Axel Beckert
9330b79d51 hooks/common.sh: Fix syntax error in installCentOS4Package wrapper. 2013-01-24 23:14:10 +01:00
Axel Beckert
979b6fb166 hooks/common.sh: installDebianPackage no more installs recommends 2013-01-24 23:07:56 +01:00
Axel Beckert
57c7d13c48 Factor out legacy grub menu.lst generation 2013-01-24 23:06:53 +01:00
Axel Beckert
1de424a69d Fix filesystem tools installation in 91-install-fs-tools
Was broken since 4.3rc1.

Merged 91-install-fs-tools back into 90-make-fstab. Added support for
RPM-based distributions, too, so it's more generic now.
2013-01-23 18:02:44 +01:00
Axel Beckert
505950dae0 isAPT: Also check for dpkg and rename it to isDeb
That way we should not try to use Debian/Ubuntu package names if
apt4rpm is available.
2013-01-23 17:47:13 +01:00
Axel Beckert
0c8b5d25c4 Factor out functions to test if we should use yum or apt 2013-01-23 17:40:00 +01:00
Axel Beckert
bce580658e hooks/common.sh: Rename installCentOS4Package to installRPMPackage
Add installCentOS4Package wrapper for backward compatibility.
2013-01-23 17:00:09 +01:00
Axel Beckert
b451260f0d TODO/KNOWN_BUGS: Add some hook issues noticed recently
Found during debugging error messages and warnings in log files.
2013-01-23 16:08:01 +01:00
Axel Beckert
af6e1435aa Mention in error message why xen-create-image thinks that an installation failed 2013-01-23 13:14:35 +01:00
Axel Beckert
290ca33840 Fix some typos and grammar in log messages 2013-01-23 13:14:35 +01:00
Axel Beckert
a1838d9030 Also use linux-image-virtual instead of linux-image-server for >= karmic 2013-01-23 13:14:35 +01:00
Axel Beckert
30ae761c27 Fix typo 2013-01-22 02:37:44 +01:00
Axel Beckert
9182aaccb7 Install grub-legacy in all pygrub-based DomUs 2013-01-22 02:35:27 +01:00
Axel Beckert
a2aa1b8a02 Factor out module-init-tools (or kmod) installation 2013-01-22 02:33:12 +01:00
Axel Beckert
03506de7e4 Refactoring: Normalize 80-kernel-install for Ubuntus 2013-01-22 02:01:13 +01:00
Axel Beckert
f71460358b chmod 644 everything in xen-tools/misc 2013-01-22 01:29:13 +01:00
Axel Beckert
8c2a2878df Ubuntu: install linux-image-virtual instead of linux-image-server
By default install linux-image-virtual instead of linux-image-server
on Ubuntu Intrepid and newer.

Hopefully closes: #640099, LP #839492
2013-01-22 01:18:57 +01:00
Axel Beckert
2e69bee531 Rename misc/{xen-tools → xen-tools.bash-completion}
This prevents name space cluttering and ambiguity in xen-tools/misc/.
2013-01-22 00:21:10 +01:00
Axel Beckert
e985d4151b Ship /etc/initramfs-tools/conf.d/xen-tools with MODULES=most
This is a necessary setting to generate Dom0 initrds which are also
suitable for DomU usage.

Trigger update-initramfs in the Debian package.
2013-01-22 00:17:27 +01:00
Axel Beckert
a4a4b7a8e7 Add default mount options for ext4, identical to ext2/ext3 2013-01-21 21:23:41 +01:00
Axel Beckert
a297aa4f5b Fix quoting in hooks/common/91-install-fs-tools 2013-01-21 16:32:10 +01:00
Axel Beckert
6423a67982 Handle module-init-tools → kmod transition in wheezy/raring gracefully 2013-01-21 16:20:03 +01:00
Axel Beckert
4dbb6fe189 Bump copyright years in xen-delete-image and xen-list-images 2013-01-18 02:25:06 +01:00
Axel Beckert
d38718b24b xen-create-image seems to work now again, too: remove TODO 2013-01-18 02:21:25 +01:00
Axel Beckert
53c013f1cc xen-delete-image now also understand --extension 2013-01-18 02:13:19 +01:00
Axel Beckert
6a59d0fd9b Properly ident --extension docs in xen-list-images' POD 2013-01-18 02:12:22 +01:00
Axel Beckert
4e7f58785f Fix Markdown syntax of reference style links in README 2013-01-18 01:55:57 +01:00
Axel Beckert
e240c63c8b README: Installing Dapper and Edgy no more works on Wheezy due to #659360 2013-01-18 01:37:52 +01:00
Axel Beckert
c39628cbe4 Overwork TLS disabling on Debian and Ubuntu 2013-01-18 01:26:11 +01:00
Axel Beckert
73dabead05 unMountImage may fail if $CONFIG{FAIL} is already set 2013-01-17 22:59:34 +01:00
Axel Beckert
ce1624b83e Remove redundant and broken second setting of mirror by distribution 2013-01-17 22:59:01 +01:00
Axel Beckert
97553c50fb Handle Sarge amd64 case properly
Uses File::Which, (build-) dependency on libfile-which-perl added
2013-01-17 22:48:15 +01:00
Axel Beckert
3456849ec8 Make t/xen-lists-images.t more strict: No more /i 2013-01-17 22:17:37 +01:00
Axel Beckert
dc5b36f8ef xen-list-images now also outputs the name of the config file 2013-01-17 22:15:21 +01:00
Axel Beckert
00623e2327 Add --extension option to xen-list-images 2013-01-17 22:13:34 +01:00
Axel Beckert
c6caa0a0ad Fix "--extension=" with empty parameter 2013-01-17 21:57:50 +01:00
Axel Beckert
13dbf65793 Mention that --keep does not prevent unmounting 2013-01-17 21:19:55 +01:00
Axel Beckert
d6144d45ea It's said that just "END" is better style than "sub END". 2013-01-17 21:16:22 +01:00
Axel Beckert
b682ad1817 Normalize redundant FAIL test 2013-01-17 21:16:22 +01:00
Axel Beckert
61df2a6c51 Trap SIGINT to unmount to temporary mount point
This makes END being called again after Ctrl-C.
2013-01-17 21:16:22 +01:00
Axel Beckert
c1e7cb717a Add optional argument to unMountImage and hence runCommand to allow failure 2013-01-17 21:16:22 +01:00
Axel Beckert
a223eedf0b Remove redundant unMountImage call 2013-01-17 20:55:42 +01:00
Axel Beckert
987cf32458 TODO: Move /usr/lib/xen-tools/ to /usr/share/xen-tools/ 2013-01-17 18:30:39 +01:00
Axel Beckert
dd15b27b85 Apply wrap-and-sort to debian/control 2013-01-17 18:06:40 +01:00
Axel Beckert
0defc0f0e3 Switch to a minimal dh style debian/rules
Override dh_auto_build as it triggers the nop target.
2013-01-17 18:05:12 +01:00
Axel Beckert
1f70c8f5d7 Use dh_installexamples with a debian/examples file
This was also the reason to move the examples around in the previous
commit. :-)
2013-01-17 17:53:31 +01:00
Axel Beckert
39c6bb5974 Move examples from debian/examples to examples 2013-01-17 17:51:16 +01:00
Axel Beckert
02240309b3 Bump Copyright years at multiple place 2013-01-17 17:09:37 +01:00
Axel Beckert
ed2c2d5a14 TODO: Obvious Sarge amd64 mirror issues 2013-01-17 16:49:34 +01:00
Axel Beckert
931f88f99a No more explicitly call "make manpages"
It's a depedency of "make install" in the next line anyway.
2013-01-16 18:00:26 +01:00
Axel Beckert
5d0bd617e0 Fix copy & paste error in binary-* targets in debian/rules 2013-01-16 17:59:39 +01:00
Axel Beckert
70e0115f94 Use dh_auto_{install,clean}; use "$(MAKE)" instead of "make" 2013-01-16 16:58:10 +01:00
Axel Beckert
1d16c86eba Remove explicit mentioning of upstream changelog in debian/rules
dh_installchangelogs finds it by itself if it exist. That way building
out of a freshly clone git repository does not fail due to a missing
upstream changelog.
2013-01-16 16:55:23 +01:00
Axel Beckert
e15d6cfd5e Revert "Install upstream ChangeLog only if it exists."
This reverts commit 35477c6172.

If the upstream ChangeLog did not exist, the debian/changelog wasn't
installed either. Which was not the intention.
2013-01-16 16:47:15 +01:00
Axel Beckert
ae33f60680 Makefile: Accept "DESTDIR" instead of "prefix=", too
That way it adheres more commonly used conventions and allows using dh_auto_install
2013-01-16 16:44:42 +01:00
112 changed files with 1315 additions and 1759 deletions

3
.gitignore vendored
View File

@@ -28,3 +28,6 @@
# backups created by "make update-version"
*.bak
# Devel::Cover cache
cover_db/

View File

@@ -1,6 +1,11 @@
KNOWN BUGS in xen-tools
=======================
Bugs to fix before next release
-------------------------------
[None so far]
Bugs to fix rather soon
-----------------------
@@ -11,8 +16,6 @@ Bugs to fix rather soon
[Bug Report](http://xen-tools.org/pipermail/xen-tools-discuss/2010-May/000757.html)
* `xen-delete-image` ignores extension setting
* partitions were mounted in config file order, not in mountpoint order.
That implies that if you specified :
@@ -30,16 +33,6 @@ Bugs to fix rather soon
Fix would be to reproduce what mount does with mount `-a`.
* `xen-create-image` doesn't unmount the `tempdir` properly if `/proc`
wasn't mounted inside
* `xen-create-image` says on startup summary that the Debian mirror is
used even if Ubuntu is going to be installed (and works)
* `xen-list-images` does not honour `--extension`
* `--extension=''` (i.e. empty string) no more works
Bugs to fix later
-----------------

View File

@@ -3,7 +3,7 @@ xen-tools
---------
Copyright (c) 2005-2009: Steve Kemp. All rights reserved.
Copyright (c) 2010-2012: The Xen-Tools Development Team, currently consisting of:
Copyright (c) 2010-2013: The Xen-Tools Development Team, currently consisting of:
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>

126
Makefile
View File

@@ -22,7 +22,8 @@ VCS = git
#
# Installation prefix, useful for the Debian package.
#
prefix=
DESTDIR=
prefix=${DESTDIR}
nop:
@@ -94,7 +95,7 @@ fixup-perms:
chmod 644 etc/xen-tools.conf
chmod 644 etc/xm.tmpl
chmod 644 etc/xm-nfs.tmpl
chmod 644 misc/xen-tools misc/README
chmod 644 misc/*
#
# Install files to /etc/
@@ -109,8 +110,10 @@ install-etc:
cp etc/xm.tmpl ${prefix}/etc/xen-tools/
cp etc/xm-nfs.tmpl ${prefix}/etc/xen-tools/
cp partitions/*-* ${prefix}/etc/xen-tools/partitions.d/
-mkdir -p ${prefix}/etc/bash_completion.d
cp misc/xen-tools ${prefix}/etc/bash_completion.d/
-mkdir -p ${prefix}/etc/bash_completion.d/
cp misc/xen-tools.bash-completion ${prefix}/etc/bash_completion.d/xen-tools
-mkdir -p ${prefix}/etc/initramfs-tools/conf.d/
cp misc/xen-tools.initramfs-tools ${prefix}/etc/initramfs-tools/conf.d/xen-tools
#
@@ -144,62 +147,62 @@ install-bin:
#
install-hooks:
for i in roles/* ; do if [ -f $$i ]; then cp $$i ${prefix}/etc/xen-tools/role.d; fi ; done
for i in ${prefix}/usr/lib/xen-tools/*.d; do if [ -L "$$i" ]; then rm -vf "$$i"; fi; done
mkdir -p ${prefix}/usr/lib/xen-tools/centos-4.d/
mkdir -p ${prefix}/usr/lib/xen-tools/centos-5.d/
mkdir -p ${prefix}/usr/lib/xen-tools/centos-6.d/
mkdir -p ${prefix}/usr/lib/xen-tools/fedora-core-6.d/
cp -R hooks/centos-4/*-* ${prefix}/usr/lib/xen-tools/centos-4.d
cp -R hooks/centos-5/*-* ${prefix}/usr/lib/xen-tools/centos-5.d
cp -R hooks/centos-6/*-* ${prefix}/usr/lib/xen-tools/centos-6.d
cp -R hooks/fedora-core-6/*-* ${prefix}/usr/lib/xen-tools/fedora-core-6.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-4.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-5.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-7.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-8.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-9.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-10.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-11.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-12.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-13.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-14.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-15.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-16.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s fedora-core-6.d fedora-core-17.d
mkdir -p ${prefix}/usr/lib/xen-tools/debian.d/
cp -R hooks/debian/*-* ${prefix}/usr/lib/xen-tools/debian.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d sarge.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d etch.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d lenny.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d squeeze.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d wheezy.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d jessie.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d sid.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d testing.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d stable.d
mkdir -p ${prefix}/usr/lib/xen-tools/gentoo.d/
cp -R hooks/gentoo/*-* ${prefix}/usr/lib/xen-tools/gentoo.d
mkdir -p ${prefix}/usr/lib/xen-tools/dapper.d/
cp -R hooks/dapper/*-* ${prefix}/usr/lib/xen-tools/dapper.d/
mkdir -p ${prefix}/usr/lib/xen-tools/edgy.d/
cp -R hooks/edgy/*-* ${prefix}/usr/lib/xen-tools/edgy.d/
-cd ${prefix}/usr/lib/xen-tools/ && ln -s edgy.d feisty.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s edgy.d gutsy.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s edgy.d hardy.d
mkdir -p ${prefix}/usr/lib/xen-tools/intrepid.d/
cp -R hooks/intrepid/*-* ${prefix}/usr/lib/xen-tools/intrepid.d/
-cd ${prefix}/usr/lib/xen-tools/ && ln -s intrepid.d jaunty.d
mkdir -p ${prefix}/usr/lib/xen-tools/karmic.d/
cp -R hooks/karmic/*-* ${prefix}/usr/lib/xen-tools/karmic.d/
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d lucid.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d maverick.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d natty.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d oneiric.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d quantal.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d raring.d
cp hooks/common.sh ${prefix}/usr/lib/xen-tools
cp -r hooks/common ${prefix}/usr/lib/xen-tools
for i in ${prefix}/usr/share/xen-tools/*.d; do if [ -L "$$i" ]; then rm -vf "$$i"; fi; done
mkdir -p ${prefix}/usr/share/xen-tools/centos-4.d/
mkdir -p ${prefix}/usr/share/xen-tools/centos-5.d/
mkdir -p ${prefix}/usr/share/xen-tools/centos-6.d/
mkdir -p ${prefix}/usr/share/xen-tools/fedora-core-6.d/
cp -R hooks/centos-4/*-* ${prefix}/usr/share/xen-tools/centos-4.d
cp -R hooks/centos-5/*-* ${prefix}/usr/share/xen-tools/centos-5.d
cp -R hooks/centos-6/*-* ${prefix}/usr/share/xen-tools/centos-6.d
cp -R hooks/fedora-core-6/*-* ${prefix}/usr/share/xen-tools/fedora-core-6.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-4.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-5.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-7.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-8.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-9.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-10.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-11.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-12.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-13.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-14.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-15.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-16.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s fedora-core-6.d fedora-core-17.d
mkdir -p ${prefix}/usr/share/xen-tools/debian.d/
cp -R hooks/debian/*-* ${prefix}/usr/share/xen-tools/debian.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d sarge.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d etch.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d lenny.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d squeeze.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d wheezy.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d jessie.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d sid.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d testing.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d stable.d
mkdir -p ${prefix}/usr/share/xen-tools/gentoo.d/
cp -R hooks/gentoo/*-* ${prefix}/usr/share/xen-tools/gentoo.d
mkdir -p ${prefix}/usr/share/xen-tools/dapper.d/
cp -R hooks/dapper/*-* ${prefix}/usr/share/xen-tools/dapper.d/
mkdir -p ${prefix}/usr/share/xen-tools/edgy.d/
cp -R hooks/edgy/*-* ${prefix}/usr/share/xen-tools/edgy.d/
-cd ${prefix}/usr/share/xen-tools/ && ln -s edgy.d feisty.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s edgy.d gutsy.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s edgy.d hardy.d
mkdir -p ${prefix}/usr/share/xen-tools/intrepid.d/
cp -R hooks/intrepid/*-* ${prefix}/usr/share/xen-tools/intrepid.d/
-cd ${prefix}/usr/share/xen-tools/ && ln -s intrepid.d jaunty.d
mkdir -p ${prefix}/usr/share/xen-tools/karmic.d/
cp -R hooks/karmic/*-* ${prefix}/usr/share/xen-tools/karmic.d/
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d lucid.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d maverick.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d natty.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d oneiric.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d
cp hooks/common.sh ${prefix}/usr/share/xen-tools
cp -r hooks/common ${prefix}/usr/share/xen-tools
#
@@ -207,7 +210,6 @@ install-hooks:
#
install-libraries:
-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
#
@@ -300,7 +302,9 @@ uninstall:
-rm -rf ${prefix}/etc/xen-tools/skel
-rmdir ${prefix}/etc/xen-tools/
-rm -f ${prefix}/etc/bash_completion.d/xen-tools
# Maybe needed to remove older releases of xen-tools
rm -rf ${prefix}/usr/lib/xen-tools
rm -rf ${prefix}/usr/share/xen-tools
rm -f ${prefix}/usr/share/man/man8/xen-create-image.8.gz
rm -f ${prefix}/usr/share/man/man8/xen-delete-image.8.gz
rm -f ${prefix}/usr/share/man/man8/xen-list-images.8.gz

View File

@@ -1,5 +1,11 @@
xen-tools 4.3rc2 (released TODO)
=======================================
xen-tools 4.3.1 (released 30-Jun-2012)
======================================
Bugfix Release only
xen-tools 4.3 (released 26-Jun-2012)
====================================
Bug Fixes
---------

View File

@@ -40,11 +40,11 @@ known to work reliably, i.e.:
(only DomUs tested)
* Dapper Drake 6.06
* Edgy Eft 6.10
* Dapper Drake 6.06 (needs editing of `/usr/share/debootstrap/scripts/dapper` since at least debootstrap version 1.0.37, see [#659360][1])
* Edgy Eft 6.10 (needs editing of `/usr/share/debootstrap/scripts/edgy` since at least debootstrap version 1.0.37, see [#659360][1])
* Feisty Fawn 7.04
* Gutsy Gibbon 7.10
* Hardy Heron 8.04 (see [1][])
* Hardy Heron 8.04 (see [Installing Ubuntu 8.04 as DomU][2])
* Interpid Ibex 8.10
* Jaunty Jackaplope 9.04
* Karmic Koala 9.10
@@ -56,10 +56,11 @@ known to work reliably, i.e.:
* Quantal Quetzal 12.10
* Raring Ringtail 13.04 (preliminary support as it's not yet available)
[1]: http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest
"There is an issue with debootstrap on hardy not installing ksyslogd
This can be fixed by chrooting into the newly installed system and
removing the startup scripts."
[1]: http://bugs.debian.org/659360
"debootstrap in Wheezy can no more build Ubuntu Edgy or earlier"
[2]: http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest
"There is an issue with debootstrap on hardy not installing ksyslogd."
### CentOS

View File

@@ -3,12 +3,6 @@ TODO
See KNOWN_BUGS.markdown for real bugs.
Bugs to fix and features to add for 4.3
---------------------------------------
Refactor TLS disabling. Seems to be happen twice, once in 20-setup-apt
and once in 10-disable-tls.
Bugs to fix and features to add for 5.0
---------------------------------------
@@ -181,6 +175,25 @@ Bugs to fix and features to add for 5.0
* Use `Perl::Critic`
* Refactor the different Ubuntu hooks directories so that only one
ubuntu hooks directory is left.
Then also refactor TLS disabling so that it works on all
distributions the same. Currently Debian is a special case and
Ubuntu half a special case.
* Replace findBinary() with File::Which
* Remove from the (unused) Xen::Tools what's already in the used
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
--------------------------------------------
@@ -188,6 +201,9 @@ Stuff from Steve's TODO list / Generic TODOs
* `xen-delete-image` should unallocate any used IP addresses.
* `installGentooPackage` in `hooks/common.sh` is a stub and does
nothing yet.
Axel's Break-Backwards-Compatibility Wishlist
---------------------------------------------
@@ -223,3 +239,9 @@ Axel's Break-Backwards-Compatibility Wishlist
Maybe add some `--autostart` or such.
* 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.
=cut
=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 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:
--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
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
guest with the debootstrap tool. Accepted values:
"yes" (default) and "no".
--cachedir=/path/to/cache/directory
Override the default .deb cache directory. Defaults to
/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
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.
@@ -57,60 +73,64 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
installed. Specifying the path is optional.
--disk_device=diskname
Use specified device name for virtual devices instead of
the default value "xvda".
Use specified device name for virtual devices instead
of the default value "xvda".
--extension=ext
Specify the suffix to give the Xen configuration
file. (Default value: ".cfg")
--force Force overwriting existing images. This will remove
existing images or LVM volumes which match those which
are liable to be used by the new invocation.
--(no)force (Don't) force overwriting existing images. This will
remove existing images or LVM volumes which match
those which are liable to be used by the new
invocation.
--fs=fs Specify the filesystem type to use for the new guest.
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
Override the default password length of 8 and generate a
random password of length N. Note: this only works in
conjunction with --genpass
Override the default password length of 8 and generate
a random password of length N. Note: this only works
in conjunction with --genpass
--hash_method=algorithm
Override the default hashing method of sha256 and use the
provided algorithm. Can be : md5, sha256 or sha512
Override the default hashing method of sha256 and use
the provided algorithm. Can be : md5, sha256 or sha512
--hooks=1 Specify whether to run hooks after the image is created.
--ide Use IDE names for virtual devices (i.e. hda not xvda)
--image=str Specify whether to create "sparse" or "full" disk images.
Full images are mandatory when using LVM, so this setting
is ignored in that case.
--image=str Specify whether to create "sparse" or "full" disk
images. Full images are mandatory when using LVM, so
this setting is ignored in that case.
--image-dev=/path/to/device
Specify a physical/logical volume for the disk image.
--initrd=/path/to/initrd
Specify the initial ramdisk. If an image is specified it
must exist.
Specify the initial ramdisk. If an image is specified
it must exist.
--install=1 Specify whether to install the guest system or not.
--keep Don't delete our images if installation fails.
--(no)keep (Don't) keep our images if installation fails. It
maybe unmounted, though.
--kernel=/path/to/kernel
Set the path to the kernel to use for domU. If a
kernel is specified it must exist.
--memory=size
Setup the amount of memory allocated to the new instance.
As suffix recognized size units are "M", "MB", "G" and
"GB" (case does not matter). If there's no unit given,
megabytes are assumed.
Setup the amount of memory allocated to the new
instance. As suffix recognized size units are "M",
"MB", "G" and "GB" (case does not matter). If there's
no unit given, megabytes are assumed.
--modules=/path/to/modules
Set the path to the kernel modules to use for domU.
@@ -125,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
not running. (Needed for the testsuite.)
--output=dir Specify the output directory to create the xen configuration
file within.
--output=dir Specify the output directory to create the xen
configuration file within.
--partitions=file
Use a specific partition layout configuration file.
@@ -140,23 +159,23 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--password=passphrase
Set the root password for the new guest.
--passwd Ask for a root password interactively during setup.
NOTE: This overrides --genpass --password
--(no)passwd (Don't) ask for a root password interactively during
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 scripts are discussed later in this manpage.
Can be an absolute path. Otherwise it's relative to the
value of --roledir.
--role=role Run the specified role script(s) post-install. Role
scripts are discussed later in this manpage. Can be
an absolute path. Otherwise it's relative to the value
of --roledir.
--role-args="--arg1 --arg2"
Pass the named string literally to any role script.
This is useful for site-specific roles.
--finalrole=role
Similar to role scripts. Run the specified role script(s)
after cfg file creation.
Similar to role scripts. Run the specified role
script(s) after cfg file creation.
--roledir=/path/to/directory
Specify the directory which contains the role scripts.
@@ -183,20 +202,22 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
beforehand.
--vcpus=num
Set the number of vcpus that the new instance will have
instead of the default value of "1".
Set the number of vcpus that the new instance will
have instead of the default value of "1".
Installation options:
--arch=arch Pass the given architecture to debootstrap, rinse,
or rpmstrap when installing the system. This argument
is ignored for other install methods.
--arch=arch Pass the given architecture to debootstrap, rinse, or
rpmstrap when installing the system. This argument is
ignored for other install methods.
--dist=dist Specify the distribution you wish to install.
--install-method=method
Specify the installation method to use. Valid methods are:
Specify the installation method to use. Valid methods
are:
* debootstrap
* cdebootstrap
@@ -214,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
debootstrap. (Default value: mirror used in
/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/")
The above mentioned Debian mirror hostname uses GeoIP
to choose a more or less close Debian mirror. See
http://wiki.debian.org/DebianGeoMirror for details.
The above mentioned Debian mirror hostname
automatically tries to choose a more or less close
Debian mirror. See http://http.debian.net/ for
details.
--apt_proxy=url
Specify a proxy to be used by debootstrap, and within
@@ -234,15 +256,15 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
Networking options:
--bridge=brname
Optionally, set a specific bridge for the new instance.
This can be especially useful when running multiple
bridges on a dom0.
Optionally, set a specific bridge for the new
instance. This can be especially useful when running
multiple bridges on a dom0.
--broadcast=123.456.789.ABC
Setup the broadcast address for the new instance.
--dhcp The guest will be configured to fetch its networking
details via DHCP.
--(no)dhcp The guest will (not) be configured to fetch its
networking details via DHCP.
--gateway=gw Setup the network gateway for the new instance.
@@ -252,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
ones are added as aliases.
Note that Xen 3.x supports a maximum of three vif statements
per guest. This option conflicts with --dhcp.
Note that Xen 3.x supports a maximum of three vif
statements per guest. This option conflicts with
--dhcp.
--mac=AA:BB:CC:DD:EE:FF
Specify the MAC address to use for a given interface.
@@ -267,26 +290,31 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--nameserver="123.456.789.ABC 123.456.789.DEF"
Setup the nameserver of the machine, multiple space
separated nameservers are allowed.
If not provided, Dom0's /etc/resolv.conf will be copied
to guest.
separated nameservers are allowed. If not provided,
Dom0's /etc/resolv.conf will be copied to guest.
--vifname=vifname
Optionally, set a specific vif name for the new instance.
Optionally, set a specific vif name for the new
instance.
Mandatory options:
--dir=/path/to/directory
Specify where the output images should go.
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.)
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.)
--evms=lvm2/container
Specify the container to save images within, i.e. '--evms
lvm2/mycontainer'. If you do not wish to use EVMS specify
--dir or --lvm. (These three options are mutually exclusive.)
Specify the container to save images within,
i.e. '--evms lvm2/mycontainer'. If you do not wish to
use EVMS specify --dir or --lvm. (These three options
are mutually exclusive.)
--hostname=host.example.org
Set the hostname of the new guest system. Ideally
@@ -298,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.
(These three options are mutually exclusive.)
=cut
=head1 NOTES
@@ -322,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
them, is a simple means of creating new Xen guest domains.
=cut
=head1 DESCRIPTION
@@ -346,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
configuration of your new guests, please read the section on "ROLES".
=cut
=head1 CONFIGURATION
@@ -426,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
will be installed via the debootstrap command.
=cut
=head1 NETWORKING AUTO-SETUP
@@ -464,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
then the system will fail.
=cut
=head1 PARTITIONING
@@ -480,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
an argument to the --partition option.
=cut
=head1 XEN CONFIGURATION FILE
@@ -499,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
specify the one to use with the --template option.
=cut
=head1 LOOPBACK EXAMPLES
@@ -536,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.
=cut
=head1 LVM EXAMPLE
@@ -559,7 +571,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo
mount /dev/myvolumegroup/vm01.my.flat-disk /mnt/foo
=cut
=head1 EVMS EXAMPLE
@@ -581,8 +592,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo
mount /dev/evms/vm01.my.flat-disk /mnt/foo
=cut
=head1 INSTALLATION METHODS
@@ -598,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
method may be specified at a time; they are mutually-exclusive.
=cut
=head1 INSTALLATION SPEEDUPS
@@ -628,8 +636,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
--lvm=myvolumegroup --hostname=vm01.my.flat \
--install-method=copy --install-source=/path/to/copy/from
=cut
=head1 DEBOOTSTRAP CACHING
@@ -657,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
contents of the directory.
=cut
=head1 ROLES
@@ -735,9 +739,6 @@ Install an X11 server, using VNC and XDM
NOTE: Multiple role scripts may be invoked if you separate their
names with commas.
=cut
=head1 THE SKELETON DIRECTORY
@@ -765,11 +766,10 @@ Install an X11 server, using VNC and XDM
Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois
=cut
=head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2012 by The Xen-Tools
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2013 by The Xen-Tools
Development Team. All rights reserved.
This module is free software;
@@ -779,6 +779,7 @@ The LICENSE file contains the full text of the license.
=cut
$SIG{INT} = \&clean_up;
use strict;
use English;
@@ -787,6 +788,7 @@ use Env;
use File::Path qw/ mkpath /;
use File::Temp qw/ tempdir /;
use File::Copy qw/ mv cp /;
use File::Which;
use Getopt::Long;
use Pod::Usage;
use Data::Dumper;
@@ -1048,7 +1050,7 @@ if ( $CONFIG{ 'install' } )
#
if ( !-x $MOUNT_POINT . "/bin/ls" )
{
logprint("System installation failed. Aborting\n");
logprint("System installation failed: /bin/ls missing. Aborting.\n");
$CONFIG{'FAIL'} = 1;
exit 127;
}
@@ -1320,10 +1322,10 @@ sub setupDefaultOptions
# Initialize per distribution mirror defaults: Debian
foreach my $debdist (qw(squeeze wheezy jessie sid testing oldstable stable unstable)) {
$CONFIG{ 'mirror_'.$debdist } = $CONFIG{ 'mirror' }
$CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian';
}
foreach my $debdist (qw(sarge etch lenny)) {
$CONFIG{ 'mirror_'.$debdist } = 'http://archive.debian.org/debian';
$CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian-archive/debian';
}
# Initialize per distribution mirror defaults: Ubuntu
foreach my $ubuntudist (qw(hardy lucid oneiric precise quantal raring)) {
@@ -1333,7 +1335,9 @@ sub setupDefaultOptions
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu';
}
$CONFIG{ 'apt_proxy' } = '';
$CONFIG{ 'arch' } = '';
$CONFIG{ 'arch' } =
which('dpkg') ? `dpkg --print-architecture` : '';
chomp($CONFIG{ 'arch' });
$CONFIG{ 'fs' } = 'ext3';
$CONFIG{ 'force' } = 0;
$CONFIG{ 'no_xen_ok' } = 0;
@@ -1417,13 +1421,13 @@ sub checkOption
# Define argument types
my %types = (
integerWithSuffix => {
check => qr/^[0-9.]+[GgMmKk]b?$/,
message => "takes a suffixed integer.\n",
check => qr/^[0-9.]+[GMk]B?$/i,
message => "takes a suffixed (mb, MB, G, k, etc.) integer.\n",
},
distribution => {
check => sub { -d "/usr/lib/xen-tools/$_[0].d" },
check => sub { -d "/usr/share/xen-tools/$_[0].d" },
message => "takes a distribution name " .
"(see /usr/lib/xen-tools for valid values).\n",
"(see /usr/share/xen-tools for valid values).\n",
},
imageType => {
check => qr/^sparse|full$/,
@@ -1609,14 +1613,14 @@ sub parseCommandLineArguments
"disk_device=s", \&checkOption,
# Hosts options
"nohosts", \$CONFIG{ 'nohosts' },
"copyhosts", \$CONFIG{ 'copyhosts' },
"nohosts", \$CONFIG{ 'nohosts' },
"copyhosts!", \$CONFIG{ 'copyhosts' },
# Deprecated legacy options for backwards compatibility
"no-hosts", \$CONFIG{ 'nohosts' },
"copy-hosts", \$CONFIG{ 'copyhosts' },
"no-hosts", \$CONFIG{ 'nohosts' },
"copy-hosts!", \$CONFIG{ 'copyhosts' },
# Networking options
"dhcp", \$CONFIG{ 'dhcp' },
"dhcp!", \$CONFIG{ 'dhcp' },
"bridge=s", \&checkOption,
"gateway=s", \&checkOption,
"hostname=s", \&checkOption,
@@ -1637,11 +1641,11 @@ sub parseCommandLineArguments
"debootstrap-cmd=s", \$CONFIG{ 'debootstrap-cmd' },
# Misc. options
"accounts", \$CONFIG{ 'accounts' },
"accounts!", \$CONFIG{ 'accounts' },
"admins=s", \&checkOption,
"arch=s", \&checkOption,
"fs=s", \&checkOption,
"boot", \$CONFIG{ 'boot' },
"boot!", \$CONFIG{ 'boot' },
"cache=s", \&checkOption,
"cachedir=s", \&checkOption,
"config=s", \&checkOption,
@@ -1649,8 +1653,8 @@ sub parseCommandLineArguments
"scsi", \$CONFIG{ 'scsi' },
"install=i", \&checkOption,
"hooks=i", \&checkOption,
"pygrub", \$CONFIG{ 'pygrub' },
"passwd", \$CONFIG{ 'passwd' },
"pygrub!", \$CONFIG{ 'pygrub' },
"passwd!", \$CONFIG{ 'passwd' },
"genpass=i", \&checkOption,
"genpass-len=i", \&checkOption,
"genpass_len=i", \&checkOption,
@@ -1661,20 +1665,20 @@ sub parseCommandLineArguments
"role-args=s", \&checkOption,
"finalrole=s", \&checkOption,
"roledir=s", \&checkOption,
"force", \$CONFIG{ 'force' },
"force!", \$CONFIG{ 'force' },
"no-xen-ok", \$CONFIG{ 'no_xen_ok' },
"keep", \$CONFIG{ 'keep' },
"keep!", \$CONFIG{ 'keep' },
"template=s", \&checkOption,
"output=s", \&checkOption,
"extension=s", \&checkOption,
"extension:s", \&checkOption,
"dontformat", \&checkOption,
# Help options
"debug", \$CONFIG{ 'debug' },
"debug!", \$CONFIG{ 'debug' },
"help", \$HELP,
"manual", \$MANUAL,
"dumpconfig", \$DUMPCONFIG,
"verbose", \$CONFIG{ 'verbose' },
"verbose!", \$CONFIG{ 'verbose' },
"version", \$VERSION
) )
{
@@ -1823,9 +1827,10 @@ sub checkArguments
#
if ( $CONFIG{ 'dist' } =~ /sarge/ and
$CONFIG{ 'arch' } =~ /amd64/ and
$CONFIG{ 'mirror_sarge' } eq 'http://archive.debian.org/debian' )
$CONFIG{ 'mirror_sarge' } =~ m(/debian-archive/debian/?$))
{
$CONFIG{ 'mirror_sarge' } = 'http://archive.debian.org/debian-amd64';
$CONFIG{ 'mirror_sarge' } =~
s(/debian-archive/debian/?)(/debian-archive/debian-amd64);
}
#
@@ -3516,15 +3521,6 @@ sub installSystem
sub exportEnvironment
{
#
# Per-distribution mirror?
#
my $distMirror = "mirror_" . $CONFIG{ 'dist' };
if ( $CONFIG{ $distMirror } && length( $CONFIG{ $distMirror } ) )
{
$CONFIG{ 'mirror' } = $CONFIG{ $distMirror };
}
#
# Export partitions array to configuration
#
@@ -3534,7 +3530,9 @@ sub exportEnvironment
{
if ( defined( $CONFIG{ $key } ) )
{
$ENV{ $key } = $CONFIG{ $key };
my $envkey = $key;
$envkey =~ s/-/_/g;
$ENV{ $envkey } = $CONFIG{ $key };
}
}
}
@@ -4029,13 +4027,13 @@ sub generatePassword {
sub unMountImage
{
my ($point) = (@_);
my ($point, $fail_ok) = (@_);
#
# First we unmount /proc and /dev/pts in the guest install.
#
runCommand("umount $point/proc", \%CONFIG);
#runCommand("umount $point/dev/pts", \%CONFIG);
runCommand("umount $point/proc", \%CONFIG, $fail_ok);
#runCommand("umount $point/dev/pts", \%CONFIG, $fail_ok);
#
# Open /proc/mount and get a list of currently mounted paths
@@ -4072,7 +4070,7 @@ sub unMountImage
foreach my $path (@points)
{
$CONFIG{ 'verbose' } && print "Unmounting : $path\n";
runCommand("umount $path", \%CONFIG);
runCommand("umount $path", \%CONFIG, $fail_ok);
}
$MOUNT_POINT = undef;
@@ -4088,9 +4086,19 @@ sub unMountImage
=cut
sub END
sub clean_up () {
if ( defined($MOUNT_POINT) )
{
unMountImage($MOUNT_POINT, 1);
}
}
END
{
exit 0 if $VERSION || $HELP || $MANUAL || $DUMPCONFIG;
# Capture exit code
my $exitcode = $?;
exit $exitcode if $VERSION || $HELP || $MANUAL || $DUMPCONFIG;
my $host_rsa_key = '';
#
@@ -4108,7 +4116,7 @@ sub END
} else {
$host_rsa_key = "N/A";
}
unMountImage($MOUNT_POINT);
unMountImage($MOUNT_POINT, $CONFIG{'FAIL'});
}
#
@@ -4117,14 +4125,6 @@ sub END
#
if ( $CONFIG{ 'boot' } and !$CONFIG{'FAIL'} )
{
#
# Unmount the image and any subsequent mounts.
#
if ( defined($MOUNT_POINT) ) {
unMountImage($MOUNT_POINT);
}
#
# If there is an /etc/xen/auto directory then link in the
# domain so that it will automatically restart, if it isn't
@@ -4188,7 +4188,7 @@ sub END
# $CONFIG{'FAIL'} = 0 - Success
# $CONFIG{'FAIL'} = 1 - Failed to install, delete the image
# $CONFIG{'FAIL'} = 2 - Files exist, either .cfg or lvm... etc
if ( ($CONFIG{'FAIL'} == 1 or $CONFIG{'FAIL'} == 1) && ( !$CONFIG{ 'keep' } ) )
if ( $CONFIG{'FAIL'} == 1 && ( !$CONFIG{ 'keep' } ) )
{
#
@@ -4238,4 +4238,6 @@ sub END
}
logprint("\n");
}
exit $exitcode;
}

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

View File

@@ -8,6 +8,10 @@ xen-delete-image - Delete previously created Xen instances.
xen-delete-image [options] [--hostname=]imageName1 [--hostname=]imageName2
Filename Options:
--extension Specify the file extension to use. An empty extension is equal
to any extension.
Help Options:
--help Show help information.
--manual Read the manual for this script.
@@ -26,8 +30,6 @@ xen-delete-image - Delete previously created Xen instances.
--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
=cut
=head1 OPTIONS
@@ -57,11 +59,8 @@ Do not complain, or exit, if the script is not executed by the root user.
=item B<--version>
Show the version number and exit.
=back
=cut
=head1 DESCRIPTION
@@ -75,8 +74,6 @@ Show the version number and exit.
but will fail to remove anything which the user does not have permission
to delete.)
=cut
=head1 LOOPBACK EXAMPLE
@@ -92,8 +89,6 @@ Show the version number and exit.
(The matching Xen configuration files beneath /etc/xen will also be
removed.)
=cut
=head1 LVM EXAMPLE
@@ -110,8 +105,6 @@ Show the version number and exit.
The Xen configuration files will also be removed from beneath /etc/xen.
=cut
=head1 EVMS EXAMPLE
@@ -128,8 +121,6 @@ Show the version number and exit.
The Xen configuration files will also be removed.
=cut
=head1 AUTHORS
@@ -137,12 +128,10 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois
=cut
=head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2013 by The Xen-Tools
Development Team. All rights reserved.
This module is free software;
@@ -150,7 +139,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself.
The LICENSE file contains the full text of the license.
=cut
@@ -181,6 +169,11 @@ my $RELEASE = '4.4~dev';
#
$CONFIG{ 'xm' } = findXenToolstack();
#
# Default values
#
$CONFIG{ 'extension' } = '.cfg';
#
# Read the global configuration file if it exists.
@@ -223,27 +216,21 @@ E_O_ROOT
#
# 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 )
{
if ( $CONFIG{ 'no_xen_ok' } or !xenRunning($name, \%CONFIG) )
{
deleteXenImage($name);
}
else
{
print "Skipping xen guest '$name' - it appears to be running.\n";
}
my @hosts = ();
if (exists($CONFIG{ 'hostname' }) and defined($CONFIG{ 'hostname' })) {
my $hostname_option = $CONFIG{ 'hostname' };
@hosts = 'ARRAY' eq ref($hostname_option) ?
@$hostname_option : $hostname_option;
}
#
# Also delete any which were specified using the --hostname flag
#
my $hosts = $CONFIG{ 'hostname' };
foreach my $name (@$hosts)
foreach my $name (@ARGV, @hosts)
{
if ( $CONFIG{ 'no_xen_ok' } or !xenRunning($name, \%CONFIG) )
my %PER_HOST_CONFIG = %CONFIG;
$PER_HOST_CONFIG{ 'hostname' } = $name;
if ( $CONFIG{ 'no_xen_ok' } or !xenRunning($name, \%PER_HOST_CONFIG) )
{
deleteXenImage($name);
}
@@ -282,6 +269,7 @@ sub parseCommandLineArguments
"dry-run", \$CONFIG{ 'dry-run' },
"lvm=s", \$CONFIG{ 'lvm' },
"evms=s", \$CONFIG{ 'evms' },
"extension:s", \$CONFIG{ 'extension' },
"hostname=s@", \$CONFIG{ 'hostname' },
"test", \$CONFIG{ 'test' },
"verbose", \$CONFIG{ 'verbose' },
@@ -371,17 +359,17 @@ sub deleteXenImage
#
# Delete the Xen auto-start file if it exists.
#
if ( -e "/etc/xen/auto/$hostname.cfg" )
if ( -e "/etc/xen/auto/$hostname".$CONFIG{ 'extension' } )
{
push( @delete, "/etc/xen/auto/$hostname.cfg" );
push( @delete, "/etc/xen/auto/$hostname".$CONFIG{ 'extension' } );
}
#
# Delete the Xen configuration file if it exists.
#
if ( -e "/etc/xen/$hostname.cfg" )
if ( -e "/etc/xen/$hostname".$CONFIG{ 'extension' } )
{
push( @delete, "/etc/xen/$hostname.cfg" );
push( @delete, "/etc/xen/$hostname".$CONFIG{ 'extension' } );
}
#
@@ -404,7 +392,8 @@ sub deleteXenImage
}
}
my %PER_HOST_CONFIG = %CONFIG;
$PER_HOST_CONFIG{ 'hostname' } = $hostname;
if ( defined( $CONFIG{ 'dir' } ) )
{
my $prefix = $CONFIG{ 'dir' } . "/domains/";
@@ -438,7 +427,7 @@ sub deleteXenImage
print "Would remove LVM swap volume /dev/$CONFIG{'lvm'}/$hostname-swap\n";
} else {
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);
}
}
@@ -448,7 +437,7 @@ sub deleteXenImage
print "Would remove LVM disk volume /dev/$CONFIG{'lvm'}/$hostname-disk\n";
} else {
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);
}
}
@@ -470,8 +459,8 @@ sub deleteXenImage
print "Would remove EVMS swap volume: $CONFIG{'evms'}/$hostname-swap\n";
} else {
print "Removing EVMS swap volume\n";
runCommand("echo Delete : /dev/evms/$hostname-swap | evms", \%CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms", \%CONFIG);
runCommand("echo Delete : /dev/evms/$hostname-swap | evms", \%PER_HOST_CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms", \%PER_HOST_CONFIG);
}
}
@@ -482,8 +471,8 @@ sub deleteXenImage
print "Would remove EVMS disk volume: $CONFIG{'evms'}/$hostname-swap\n";
} else {
print "Removing EVMS disk volume\n";
runCommand("echo Delete : /dev/evms/$hostname-disk | evms", \%CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms", \%CONFIG);
runCommand("echo Delete : /dev/evms/$hostname-disk | evms", \%PER_HOST_CONFIG);
runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms", \%PER_HOST_CONFIG);
}
}

View File

@@ -8,6 +8,10 @@ xen-list-images - List all the created and configured Xen images.
xen-list-image [options]
Filename Options:
--extension Specify the file extension to use. An empty extension is equal
to any extension.
Help Options:
--help Show this scripts help information.
--manual Read this scripts manual.
@@ -16,6 +20,7 @@ xen-list-images - List all the created and configured Xen images.
Testing options:
--test Specify an alternate Xen configuration directory.
=head1 OPTIONS
=over 8
@@ -48,26 +53,22 @@ Show the version number and exit.
and then either the IP address configured, or "DHCP" to denote
a dynamic host.
=cut
=head1 TODO
It should be possible to determine the disk(s) used by the images,
and then display their sizes.
=cut
=head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/
Stéphane Jourdois
=cut
=head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2013 by The Xen-Tools
Development Team. All rights reserved.
This module is free software;
@@ -95,9 +96,10 @@ use Xen::Tools::Common;
my %CONFIG;
#
# Default prefix
# Default values
#
$CONFIG{ 'prefix' } = "/etc/xen";
$CONFIG{ 'extension' } = '.cfg';
#
# Release number.
@@ -162,6 +164,7 @@ sub parseCommandLineArguments
# Parse options.
#
GetOptions( "test=s", \$CONFIG{ 'prefix' },
"extension:s", \$CONFIG{ 'extension' },
"help", \$HELP,
"manual", \$MANUAL,
"version", \$VERSION );
@@ -192,9 +195,12 @@ sub findXenInstances
{
my @found;
foreach my $file ( sort( glob( $CONFIG{ 'prefix' } . "/*.cfg" ) ) )
foreach my $file ( sort( glob( $CONFIG{ 'prefix' } . "/*" . $CONFIG{ 'extension' } ) ) )
{
push @found, $file if ( -e $file );
push @found, $file if (
-f $file and
$file !~ m(~$|\.dpkg-[a-z]+$|\.sxp$|/xl\.conf$)
);
}
return (@found);
@@ -259,6 +265,7 @@ sub displayInstance
print "Memory: $mem\n";
print "IP: " . $ip . $mac . "\n" if length($ip);
print "DHCP" . $mac . "\n" if $dhcp;
print "Config: $file\n";
}

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.
--hostname Specify the hostname of the guest to resize.
=cut
=head1 OPTIONS
@@ -53,8 +51,6 @@ Show the version number and exit.
=back
=cut
=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
filesystems; hence this tool.
=cut
=head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/
=cut
=head1 LICENSE
@@ -94,7 +87,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself.
The LICENSE file contains the full text of the license.
=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).
--evms Specify the EVMS container which contains the image(s).
=cut
=head1 OPTIONS
@@ -46,8 +43,6 @@ Show the version number and exit.
=back
=cut
=head1 DESCRIPTION
@@ -65,8 +60,6 @@ Show the version number and exit.
corruption otherwise it will allow you to update your image without
booting it.
=cut
=head1 EXAMPLES
@@ -77,8 +70,6 @@ Show the version number and exit.
xen-update-images --dir=/home/xen test.my.flat x11.my.flat
=cut
=head1 AUTHORS
@@ -86,7 +77,6 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois
=cut
=head1 LICENSE

View File

@@ -4,8 +4,6 @@
xt-create-config - Create a Xen configuration file for a new guest
=cut
=head1 SYNOPSIS
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)
to give to the new instance, will be passed as environmental variables.
=cut
=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.
=cut
=head1 INVOCATION
@@ -75,9 +70,6 @@ xt-create-config - Create a Xen configuration file for a new guest
=for example end
=cut
=head1 ARGUMENT PASSING
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
package installed you can read this with "perldoc Text::Template".)
=cut
=head1 AUTHORS
@@ -110,7 +101,6 @@ xt-create-config - Create a Xen configuration file for a new guest
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois
=cut
=head1 LICENSE
@@ -215,7 +205,7 @@ sub parseCommandLineArguments
#
GetOptions( "admins=s", \$ENV{ 'admins' },
"output=s", \$CONFIG{ 'output' },
"extension=s", \$CONFIG{ 'extension' },
"extension:s", \$CONFIG{ 'extension' },
"template=s", \$CONFIG{ 'template' },
"verbose", \$CONFIG{ 'verbose' },
"help", \$HELP,
@@ -398,13 +388,13 @@ sub createXenConfig
$ENV{ 'image_suffix' } = '';
importPartitionsFromEnvironment();
}
elsif ( $ENV{ 'image-dev' } )
elsif ( $ENV{ 'image_dev' } )
{
$ENV{ 'image_vbd' } = "phy:$ENV{'image-dev'}";
$ENV{ 'image_vbd' } = "phy:$ENV{'image_dev'}";
if ( $ENV{ 'swap-dev' } )
if ( $ENV{ 'swap_dev' } )
{
$ENV{ 'swap_vbd' } = "phy:$ENV{'swap-dev'}";
$ENV{ 'swap_vbd' } = "phy:$ENV{'swap_dev'}";
}
else
{

View File

@@ -4,8 +4,6 @@
xt-customize-image - Customize a freshly installed copy of GNU/Linux
=cut
=head1 SYNOPSIS
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)
to give to the new instance, will be passed as environmental variables.
=cut
=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
--dist - The distribution which has been installed.
=cut
=head1 HOOK SCRIPTS
@@ -54,11 +49,9 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
the --location option.
For the distribution named 'foo' the scripts will be loaded and
executed from '/usr/lib/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.
=cut
=head1 AUTHORS
@@ -66,8 +59,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois
=cut
=head1 LICENSE
@@ -215,7 +206,7 @@ sub checkArguments
# If there are no scripts then we clearly cannot
# customise it!
#
my $dir = "/usr/lib/xen-tools/" . $CONFIG{ 'dist' } . ".d";
my $dir = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d";
if ( !-d $dir )
{
@@ -257,7 +248,7 @@ sub runDistributionHooks
#
# Hook directory.
#
my $hooks = "/usr/lib/xen-tools/" . $CONFIG{ 'dist' } . ".d/";
my $hooks = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d/";
#
# Installation prefix

View File

@@ -5,8 +5,6 @@
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and
mirror for DomUs on Debian and Ubuntu Dom0s.
=cut
=head1 SYNOPSIS
--suite Show suite
@@ -20,7 +18,6 @@ mirror for DomUs on Debian and Ubuntu Dom0s.
--manual Show the manual for this script.
--version Show the version number and exit.
=cut
=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
xen-create-image(1) or the backticks feature in xen-tools.conf.
=cut
=head1 AUTHORS
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois
=cut
=head1 LICENSE
@@ -55,9 +50,9 @@ full text of the license.
# Fallback to Debian or Ubuntu in case we can't find anything
my $fallback = 'Debian';
# Which mirrors to use if everything else fails (cdn.debian.net uses
# GeoIP, see http://wiki.debian.org/DebianGeoMirror)
my %fallback_mirror = ( Debian => 'http://cdn.debian.net/debian/',
# Which mirrors to use if everything else fails (http.debian.net
# redirects to a working mirror nearby)
my %fallback_mirror = ( Debian => 'http://http.debian.net/debian/',
Ubuntu => 'http://archive.ubuntu.com/ubuntu/' );
# Which suite to use if everything else fails. For Debian "stable"

View File

@@ -4,8 +4,6 @@
xt-install-image - Install a fresh copy of GNU/Linux into a directory
=cut
=head1 SYNOPSIS
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
variables.
=cut
=head1 NOTES
@@ -50,8 +46,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
configuration, etc.
=cut
=head1 INSTALLATION METHODS
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
=cut
=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/
Stéphane Jourdois
=cut
=head1 LICENSE
@@ -133,13 +124,19 @@ my $RELEASE = '4.4~dev';
# needDirectory Defined if we need an install-source directory specified.
#
#
my $debootstrap_cmd;
my %dispatch = (
"copy" => { sub => \&do_copy,
needBinary => "/bin/cp",
needDirectory => 1,
},
"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,
needBinary => "/usr/sbin/rinse",
@@ -210,13 +207,35 @@ if ( defined( $CONFIG{ 'install-method' } ) &&
#
# Do we need to test for a binary.
if ( ( $installer->{ 'needBinary' } ) &&
( !-x $installer->{ 'needBinary' } ) )
{
print
"The following required binary for the installation was not found\n";
print "\t" . $installer->{ 'needBinary' } . "\n";
exit 1;
if ( $installer->{ 'needBinary' } ) {
if ( 'ARRAY' eq ref $installer->{ 'needBinary' } ) {
unless (ref $installer->{ 'var' }) {
die "Assertion: If dispatch->->needBinary is an array ref, dispatch->->var must exist";
}
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?
@@ -387,7 +406,7 @@ sub checkArguments
# If there are no scripts then we clearly cannot
# customise it!
#
my $dir = "/usr/lib/xen-tools/" . $CONFIG{ 'dist' } . ".d";
my $dir = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d";
if ( !-d $dir )
{
@@ -572,21 +591,9 @@ sub do_debootstrap
# The command is a little configurable - mostly to allow you
# 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' };
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

15
debian/NEWS vendored
View File

@@ -1,3 +1,18 @@
xen-tools (4.4~dev-1) UNRELEASED; urgency=low
* Exported environment variables no more contain dashes ("-"). Dashes in
environment variable names are from now on converted to underscores
("_") before being exported. May affect some hook or role scripts.
* /usr/lib/xen-tools/ has been moved to /usr/share/xen-tools/ to
properly adhere to FHS. In case you had local scripts added to
/usr/lib/xen-tools/, please move them to /usr/share/xen-tools/, too
and then remove /usr/lib/xen-tools/ and its left-over subdirectories
which all should be empty at that point, i.e. "rmdir -p
/usr/lib/xen-tools/*" should do the trick.
-- Axel Beckert <abe@debian.org> Fri, 05 Apr 2013 20:19:02 +0200
xen-tools (4.2~rc1-1) unstable; urgency=low
By default, xen-create-image now generates a random root password and

52
debian/changelog vendored
View File

@@ -2,24 +2,70 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
* New upstream release
- Code deduplication to unify the xen-*-image scripts
- Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/
- Use http.debian.net as default Debian mirror if no mirror is given
and xt-guess-suite-and-mirror is not used.
- Fix symbolic link hooks/centos-6/15-setup-arch (Closes: #690299)
- Execute END block not on --version/--help/--manual (Closes: #684346)
- Move code for --boot feature to END block. Fixes missing SSH
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.
- Also recognize "M" and "G" instead of "MB" and "GB" as size unit for
--memory. (Closes: #691320) Document the recognized units.
- Default DomUs to use the noop scheduler (Closes: #693131)
- Overwork TLS disabling on Debian and Ubuntu
- xen-list-images now also outputs the file name of the config file.
- xen-list-images and xen-delete-image now understand --extension.
- Fixes "--extension=" with empty parameter.
- Sarge amd64 case handle properly
- Remove CVS revisions from --version output
- Preliminary support for Debian Jessie and Ubuntu Raring
- Preliminary support for xl toolstack
- 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=…
- Move examples from debian/examples to examples.
- Uses File::Which, added (build-) dependency on libfile-which-perl
- Knows about module-init-tools → kmod transition in wheezy/raring.
- Adds default mount options for ext4, identical to ext2/ext3.
- Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0
initrds also suitable for DomU usage. Trigger update-initramfs.
- By default install linux-image-virtual instead of linux-image-server
on Ubuntu Intrepid and newer (Hopefully closes: #640099, LP #839492)
- Installs a legacy grub in all pygrub based Debian/Ubuntu DomUs to be
able to update the menu.list automatically.
- hooks/common.sh: installDebianPackage no more installs recommends.
- hooks/common.sh: Rename installCentOS4Package to installRPMPackage.
Add installCentOS4Package wrapper for backward compatibility.
- 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
90-make-fstab. Also supports RPM-based distributions now.
- Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from
within Bash.
- Fixes creation of "ARRAY(0x…).log" named log files.
- Makes some options (like --pygrub) negatable.
- 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
git-buildpackage.
* Install (manually generated) upstream ChangeLog only if it
exists. Allows automatic builds from the git repository.
* Clean up debian/rules:
- Don't mention (generated) upstream changelog explicitly,
dh_installchangelogs finds it by itself if it exist. That way
building out of a freshly clone git repository does not fail due to
a missing upstream changelog.
- Use dh_auto_{install,clean}; use "$(MAKE)" instead of "make" where
dh_auto_* can't help. No more explicitly call "make manpages", it's
a depedency of "make install" in the next line anyway.
- Finally switch to a minimal dh style debian/rules.
* Bump copyright years in debian/copyright.
* Apply wrap-and-sort.
-- Axel Beckert <abe@debian.org> Tue, 13 Nov 2012 23:37:54 +0100
-- Axel Beckert <abe@debian.org> Thu, 17 Jan 2013 17:09:02 +0100
xen-tools (4.3.1-1) unstable; urgency=low

29
debian/control vendored
View File

@@ -2,7 +2,15 @@ Source: xen-tools
Section: utils
Priority: extra
Maintainer: Axel Beckert <abe@debian.org>
Build-Depends: debhelper (>= 7.0.0), libtest-pod-perl, libtext-template-perl, libfile-slurp-perl, devscripts, libmoose-perl, libtest-pod-coverage-perl, git
Build-Depends: debhelper (>= 7.0.0),
devscripts,
git,
libfile-slurp-perl,
libfile-which-perl,
libtest-notabs-perl,
libtest-pod-coverage-perl,
libtest-pod-perl,
libtext-template-perl
Standards-Version: 3.9.3
Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
@@ -10,9 +18,22 @@ Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
Package: xen-tools
Architecture: all
Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends}, openssh-client
Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse (>= 1.9.1-1), libexpect-perl, xen-utils
Suggests: reiserfsprogs, xfsprogs, cfengine2, btrfs-tools
Depends: debootstrap | cdebootstrap,
libconfig-inifiles-perl,
libfile-slurp-perl,
libfile-which-perl,
libtext-template-perl,
openssh-client,
perl-modules,
${misc:Depends}
Recommends: libexpect-perl,
rinse (>= 1.9.1-1),
xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae,
xen-utils
Suggests: btrfs-tools,
cfengine2,
reiserfsprogs,
xfsprogs
Description: Tools to manage Xen virtual servers
This package contains tools to manage Debian based Xen virtual servers.
.

2
debian/copyright vendored
View File

@@ -4,7 +4,7 @@ Tue, 20 Dec 2005 02:21:05 +0200.
It was downloaded from http://xen-tools.org/software/xen-tools/
Copyright 2005-2009: Steve Kemp <steve@steve.org.uk>
Copyright 2010-2012: The Xen-Tools Development Team, currently consisting of:
Copyright 2010-2013: The Xen-Tools Development Team, currently consisting of:
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>

2
debian/dirs vendored
View File

@@ -1,4 +1,4 @@
/etc/xen-tools
/etc/xen-tools/role.d
/etc/xen-tools/skel
/usr/lib/xen-tools
/usr/share/xen-tools

2
debian/docs vendored
View File

@@ -4,4 +4,4 @@ SUPPORT.markdown
BUGS.markdown
TODO.markdown
KNOWN_BUGS.markdown
NEWS
NEWS.markdown

1
debian/examples vendored Normal file
View File

@@ -0,0 +1 @@
examples/*

54
debian/rules vendored
View File

@@ -2,55 +2,7 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@
configure: configure-stamp
configure-stamp:
dh_testdir
touch configure-stamp
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp
dh_testdir
touch build-stamp
clean:
dh_testdir
dh_testroot
make clean
dh_clean
install: build
dh_testdir
dh_testroot
dh_prep
dh_auto_test
make manpages
make install prefix=`pwd`/debian/xen-tools
dh_installdirs
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_install
dh_installexamples debian/examples/setup-kernel-initrd debian/examples/update-modules
[ ! -e ChangeLog ] || dh_installchangelogs ChangeLog
dh_installdocs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
override_dh_auto_build:

1
debian/triggers vendored Normal file
View File

@@ -0,0 +1 @@
activate update-initramfs

View File

@@ -125,13 +125,14 @@ install-method = debootstrap
# Disk and Sizing options.
##
#
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
# noswap = 1 # Don't use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
size = 4G # Root disk, suffix (G, M, k) required
memory = 128M # Suffix (G, M, k) required
swap = 128M # Suffix (G, M, k) required
# noswap = 1 # Don't use swap at all for new systems.
fs = ext3 # Default file system for any disk
dist = `xt-guess-suite-and-mirror --suite`
# 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
@@ -235,6 +236,13 @@ image = sparse # Specify sparse vs. full disk images.
kernel = /boot/vmlinuz-`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.
#
@@ -292,6 +300,7 @@ mirror = `xt-guess-suite-and-mirror --mirror`
#
# Filesystem options for the different filesystems we support.
#
ext4_options = noatime,nodiratime,errors=remount-ro
ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults

View File

@@ -19,7 +19,7 @@ hooks/
* The installation will have a running installation of OpenSSH
The subdirectories in this hooks/ directory will be installed
to the directory /usr/lib/xen-tools/
to the directory /usr/share/xen-tools/
Steve
--

View File

@@ -3,13 +3,13 @@
# This script sets up the kernel and fstab for CentOS 5.
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -21,16 +21,16 @@ fi
logMessage Script $0 starting
# Make the console work
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${prefix}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${prefix}/etc/inittab
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${TARGET}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${TARGET}/etc/inittab
# MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd
chroot ${TARGET} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${TARGET} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab
logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF
cat > ${TARGET}/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
@@ -39,26 +39,26 @@ none /dev/pts devpts mode=0620 0 0
EOF
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
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
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
done
# Install the kernel, grub and perl
chroot ${prefix} yum clean expire-cache
chroot ${prefix} yum -y install kernel-xen grub.x86_64 perl.x86_64
chroot ${TARGET} yum clean expire-cache
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"
# Create grub's menu.list
logMessage "Creating /boot/grub/menu.lst"
mkdir -p ${prefix}/boot/grub
cat > ${prefix}/boot/grub/menu.lst << EOF
mkdir -p ${TARGET}/boot/grub
cat > ${TARGET}/boot/grub/menu.lst << EOF
# WARNING : Don't forget to update this when you upgrade kernel !
# You can also exclude kernel-xen from updates by putting
# exclude=kernel-xen in in [main] in yum.conf

View File

@@ -3,13 +3,13 @@
# This script sets up the kernel and fstab for CentOS 5.
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -21,16 +21,16 @@ fi
logMessage Script $0 starting
# Make the console work
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${prefix}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${prefix}/etc/inittab
sed -i "/Cancelled/ {G;s/$/co:2345:respawn:\/sbin\/mingetty console/;}" ${TARGET}/etc/inittab
sed -i "s/^1:2345/#1:2345/" ${TARGET}/etc/inittab
# MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd
chroot ${TARGET} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${TARGET} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab
logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF
cat > ${TARGET}/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
@@ -39,26 +39,26 @@ none /dev/pts devpts mode=0620 0 0
EOF
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
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
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
done
# Install the kernel, grub and perl
chroot ${prefix} yum clean expire-cache
chroot ${prefix} yum -y install kernel-xen grub.x86_64 perl.x86_64
chroot ${TARGET} yum clean expire-cache
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"
# Create grub's menu.list
logMessage "Creating /boot/grub/menu.lst"
mkdir -p ${prefix}/boot/grub
cat > ${prefix}/boot/grub/menu.lst << EOF
mkdir -p ${TARGET}/boot/grub
cat > ${TARGET}/boot/grub/menu.lst << EOF
# WARNING : Don't forget to update this when you upgrade kernel !
# You can also exclude kernel-xen from updates by putting
# exclude=kernel-xen in in [main] in yum.conf
@@ -71,10 +71,10 @@ initrd /boot/initramfs-$KERNELVERSION.img
EOF
# 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.
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
#

View File

@@ -60,55 +60,192 @@ assert ()
# We take special care so that daemons shouldn't start after installation
# which they might otherwise do.
#
# NOTE: Function not renamed with trailing "s" for compatability reasons.
# NOTE: Function not renamed with trailing "s" for compatibility reasons.
#
installDebianPackage ()
{
prefix=$1
TARGET=$1
shift
#
# 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.
#
printf '#!/bin/sh\nexit 101\n' > ${prefix}/usr/sbin/policy-rc.d
chmod +x ${prefix}/usr/sbin/policy-rc.d
printf '#!/bin/sh\nexit 101\n' > ${TARGET}/usr/sbin/policy-rc.d
chmod +x ${TARGET}/usr/sbin/policy-rc.d
#
# Disable the start-stop-daemon - this shouldn't be necessary
# with the policy-rc.d addition above, however leaving it in
# place won't hurt ..
#
disableStartStopDaemon ${prefix}
disableStartStopDaemon ${TARGET}
#
# Install the packages
#
DEBIAN_FRONTEND=noninteractive chroot ${prefix} /usr/bin/apt-get --yes --force-yes install "$@"
DEBIAN_FRONTEND=noninteractive chroot ${TARGET} /usr/bin/apt-get --yes --force-yes --no-install-recommends install "$@"
#
# 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
#
enableStartStopDaemon ${prefix}
enableStartStopDaemon ${TARGET}
}
#
# Generate a Debian-/Ubuntu-compliant menu.lst for legacy GRUB
#
generateDebianGrubMenuLst ()
{
TARGET="$1"
DOMU_ISSUE="$2"
DOMU_KERNEL="$3"
DOMU_RAMDISK="$4"
#
# Log our options
#
logMessage "Generating a legacy GRUB menu.lst into target ${TARGET}"
#
# We require at least 3 parameters
#
assert "$LINENO" "${TARGET}"
assert "$LINENO" "${DOMU_ISSUE}"
assert "$LINENO" "${DOMU_KERNEL}"
#
# Target must be a directory, kernel a file
#
assert "$LINENO" -d ${TARGET}
assert "$LINENO" -f "${TARGET}/boot/${DOMU_KERNEL}"
#
# Generate a menu.lst for pygrub
#
mkdir -p ${TARGET}/boot/grub
cat << E_O_MENU > ${TARGET}/boot/grub/menu.lst
default 0
timeout 2
### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below
## DO NOT UNCOMMENT THEM, Just edit them to your needs
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/xvda2 ro elevator=noop
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)
## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true
## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=
## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false
## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(single-user) single
# altoptions=(single-user mode) single
## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all
## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=false
## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false
## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false
## ## End Default Options ##
### END DEBIAN AUTOMAGIC KERNELS LIST
# Entries statically generated bu xen-tools upon installation. Maybe
# removed manually if the entries above (generated by update-grub)
# seem to work fine.
title $DOMU_ISSUE
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro elevator=noop
initrd /boot/$DOMU_RAMDISK
title $DOMU_ISSUE (Single-User)
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro single elevator=noop
initrd /boot/$DOMU_RAMDISK
title $DOMU_ISSUE (Default Kernel)
root (hd0,0)
kernel /vmlinuz root=/dev/xvda2 ro elevator=noop
initrd /initrd.img
title $DOMU_ISSUE (Default Kernel, Single-User)
root (hd0,0)
kernel /vmlinuz root=/dev/xvda2 ro single elevator=noop
initrd /initrd.img
E_O_MENU
}
@@ -119,10 +256,10 @@ installDebianPackage ()
#
disableStartStopDaemon ()
{
local prefix="$1"
assert "$LINENO" "${prefix}"
local TARGET="$1"
assert "$LINENO" "${TARGET}"
for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}"
local daemonfile="${TARGET}/sbin/${starter}"
mv "${daemonfile}" "${daemonfile}.REAL"
echo '#!/bin/sh' > "${daemonfile}"
@@ -140,10 +277,10 @@ disableStartStopDaemon ()
#
enableStartStopDaemon ()
{
local prefix=$1
assert "$LINENO" "${prefix}"
local TARGET=$1
assert "$LINENO" "${TARGET}"
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.
@@ -164,62 +301,71 @@ enableStartStopDaemon ()
#
removeDebianPackage ()
{
prefix=$1
TARGET=$1
shift
#
# 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.
#
chroot ${prefix} /usr/bin/apt-get remove --yes --purge "$@"
chroot ${TARGET} /usr/bin/apt-get remove --yes --purge "$@"
}
#
# Install a CentOS4 package via yum
# Install a RPM package via yum
#
installCentOS4Package ()
installRPMPackage ()
{
prefix=$1
TARGET=$1
package=$2
#
# Log our options
#
logMessage "Installing CentOS4 ${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" "${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
#
chroot ${prefix} /usr/bin/yum -y install ${package}
chroot ${TARGET} /usr/bin/yum -y install ${package}
}
# Backwards Compatibility Function
installCentOS4Package () ( installRPMPackage "$@" )
#
# Functions to test if we're on a redhatesk or debianesk system
#
isDeb() ( [ -x $1/usr/bin/apt-get -a -x $1/usr/bin/dpkg ] )
isYum() ( [ -x $1/usr/bin/yum ] )
#
@@ -227,14 +373,14 @@ installCentOS4Package ()
#
installPackage ()
{
prefix=$1
TARGET=$1
package=$2
if [ -x ${prefix}/usr/bin/apt-get ] ; then
if isDeb ; then
installDebianPackage "$@"
elif [ -x ${prefix}/usr/bin/yum ] ; then
installCentOS4Package "$@"
elif isYum ; then
installRPMPackage "$@"
else
logMessage "Unable to install package ${package}; no package manager found"
@@ -250,15 +396,14 @@ installPackage ()
#
installGentooPackage ()
{
prefix=$1
TARGET=$1
package=$2
#
# 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"
}

View File

@@ -8,14 +8,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -30,20 +30,20 @@ logMessage Script $0 starting
#
# 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
#
# Add the script.
#
echo '#!/bin/sh' > ${prefix}/usr/sbin/policy-rc.d
echo 'exit 101' >> ${prefix}/usr/sbin/policy-rc.d
chmod 755 ${prefix}/usr/sbin/policy-rc.d
echo '#!/bin/sh' > ${TARGET}/usr/sbin/policy-rc.d
echo 'exit 101' >> ${TARGET}/usr/sbin/policy-rc.d
chmod 755 ${TARGET}/usr/sbin/policy-rc.d

View File

@@ -7,14 +7,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,9 +29,9 @@ logMessage Script $0 starting
#
# 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
logMessage "/sbin/shadowconfig not found. skipping."

View File

@@ -8,14 +8,14 @@
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -37,8 +37,8 @@ if [ "`uname -m`" = "x86_64" ]; then
else
logMessage "Disabling TLS"
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled
mkdir ${prefix}/lib/tls
mv ${TARGET}/lib/tls ${TARGET}/lib/tls.disabled
mkdir ${TARGET}/lib/tls
fi

View File

@@ -7,14 +7,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,7 +29,7 @@ logMessage Script $0 starting
#
# 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

View File

@@ -6,8 +6,8 @@ prefix=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi

View File

@@ -8,14 +8,14 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -33,17 +33,17 @@ logMessage Script $0 starting
# the setting to the proxy guess file.
#
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
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
#
# 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
#
@@ -66,22 +66,18 @@ E_O_APT
#
# 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
#
# Now fixup TLS on non-64bit systems after dapper.
# Now fixup TLS on non-64bit systems after dapper. For dapper this is
# already fixed in 10-disable-tls.
#
if [ "$dist" != 'dapper' ]; then
if [ "`uname -m`" = "x86_64" ]; then
if [ "$arch" = 'i386' -a "$dist" != 'dapper' ]; then
logMessage "Ignoring TLS since we're a 64 bit host."
logMessage "Installing libc6-xen"
installDebianPackage ${TARGET} libc6-xen
else
logMessage "Installing libc6-xen"
installDebianPackage ${prefix} libc6-xen
fi
fi

View File

@@ -7,14 +7,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,12 +29,12 @@ logMessage Script $0 starting
#
# Update yum
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
if [ ! -d ${TARGET}/proc ]; then
mkdir -p ${TARGET}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum update
umount ${prefix}/proc
mount -o bind /proc ${TARGET}/proc
chroot ${TARGET} /usr/bin/yum update
umount ${TARGET}/proc
#

View File

@@ -7,14 +7,14 @@
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -31,7 +31,7 @@ logMessage Script $0 starting
#
# NOTE: Failure to support your favourite language is *not* a bug.
#
installDebianPackage ${prefix} language-pack-en
installDebianPackage ${TARGET} language-pack-en
#

View File

@@ -6,14 +6,14 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -30,20 +30,20 @@ logMessage Script $0 starting
#
# Upstart on Ubuntu newer than 8.04
rm -f ${prefix}/etc/init/tty[!1].conf
[ -f ${prefix}/etc/init/tty1.conf ] && {
sed -i -e s/tty1/hvc0/ ${prefix}/etc/init/tty1.conf
mv ${prefix}/etc/init/tty1.conf ${prefix}/etc/init/hvc0.conf
rm -f ${TARGET}/etc/init/tty[!1].conf
[ -f ${TARGET}/etc/init/tty1.conf ] && {
sed -i -e s/tty1/hvc0/ ${TARGET}/etc/init/tty1.conf
mv ${TARGET}/etc/init/tty1.conf ${TARGET}/etc/init/hvc0.conf
}
# Upstart on Ubuntu 8.04 or older
rm -f ${prefix}/etc/event.d/tty[!1]
[ -f ${prefix}/etc/event.d/tty1 ] && {
sed -i -e s/tty1/hvc0/ ${prefix}/etc/event.d/tty1
mv ${prefix}/etc/event.d/tty1 ${prefix}/etc/event.d/hvc0
rm -f ${TARGET}/etc/event.d/tty[!1]
[ -f ${TARGET}/etc/event.d/tty1 ] && {
sed -i -e s/tty1/hvc0/ ${TARGET}/etc/event.d/tty1
mv ${TARGET}/etc/event.d/tty1 ${TARGET}/etc/event.d/hvc0
}
# 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.
# Upstart on Ubuntu newer than 8.04
[ -f ${prefix}/etc/init/hvc0.conf ] && {
mv ${prefix}/etc/init/hvc0.conf ${prefix}/etc/init/${serial_device}.conf
sed -i -e s/hvc0/${serial_device}/ ${prefix}/etc/init/${serial_device}.conf
[ -f ${TARGET}/etc/init/hvc0.conf ] && {
mv ${TARGET}/etc/init/hvc0.conf ${TARGET}/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
[ -f ${prefix}/etc/event.d/hvc0 ] && {
mv ${prefix}/etc/event.d/hvc0 ${prefix}/etc/event.d/${serial_device}
sed -i -e s/hvc0/${serial_device}/ ${prefix}/etc/event.d/${serial_device}
[ -f ${TARGET}/etc/event.d/hvc0 ] && {
mv ${TARGET}/etc/event.d/hvc0 ${TARGET}/etc/event.d/${serial_device}
sed -i -e s/hvc0/${serial_device}/ ${TARGET}/etc/event.d/${serial_device}
}
# 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.
echo $serial_device >> ${prefix}/etc/securetty
echo $serial_device >> ${TARGET}/etc/securetty
fi

View File

@@ -8,13 +8,13 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,7 +29,7 @@ logMessage Script $0 starting
#
# 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.
#
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
# and how to activate them. For more information, see interfaces(5).
@@ -88,7 +88,7 @@ setupStaticNetworking ()
#
# 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
# and how to activate them. For more information, see interfaces(5).
@@ -122,7 +122,7 @@ E_O_STATIC
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
cat <<E_O_STATIC >>${TARGET}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
@@ -139,12 +139,12 @@ E_O_STATIC
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi
}

View File

@@ -7,14 +7,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,7 +29,7 @@ logMessage Script $0 starting
#
# 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
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
cat <<E_O_STATIC >${TARGET}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
@@ -62,7 +62,7 @@ E_O_STATIC
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}
ONBOOT=yes
BOOTPROTO=static
@@ -79,27 +79,27 @@ E_O_STATIC
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi
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
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
chroot ${TARGET} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
cat <<EOF >${TARGET}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}

View File

@@ -9,14 +9,14 @@
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -43,8 +43,8 @@ umask 022
#
# Setup the mailname + hostname files.
#
echo $GUEST_HOSTNAME > ${prefix}/etc/hostname
echo $GUEST_FQDN > ${prefix}/etc/mailname
echo $GUEST_HOSTNAME > ${TARGET}/etc/hostname
echo $GUEST_FQDN > ${TARGET}/etc/mailname
#
@@ -55,7 +55,7 @@ if [ -z "${copyhosts}" ]; then
#
# Copy localhost
#
cat > ${prefix}/etc/hosts <<EOF
cat > ${TARGET}/etc/hosts <<EOF
127.0.0.1 localhost
EOF
#
@@ -65,21 +65,21 @@ EOF
#
# 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
EOF
else
cat >> ${prefix}/etc/hosts <<EOF
cat >> ${TARGET}/etc/hosts <<EOF
127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME
EOF
fi
cat >> ${prefix}/etc/hosts <<EOF
cat >> ${TARGET}/etc/hosts <<EOF
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff00::0 ip6-mcastTARGET
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
@@ -88,23 +88,23 @@ EOF
else
# Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts
grep -v '\(::\|IPv6\)' /etc/hosts > ${TARGET}/etc/hosts
# New entry.
if [ -z "${dhcp}" ]; then
cat >> ${prefix}/etc/hosts <<EOF
cat >> ${TARGET}/etc/hosts <<EOF
${ip1} $GUEST_FQDN $GUEST_HOSTNAME
EOF
else
cat >> ${prefix}/etc/hosts <<EOF
cat >> ${TARGET}/etc/hosts <<EOF
127.0.1.1 $GUEST_FQDN $GUEST_HOSTNAME
EOF
fi
# IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts
grep '\(::\|IPv6\)' /etc/hosts >> ${TARGET}/etc/hosts
fi

View File

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

View File

@@ -8,14 +8,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -32,8 +32,8 @@ logMessage Script $0 starting
MAKEDEV=''
MAKEDEV_PATHS="/sbin/MAKEDEV /dev/MAKEDEV"
for MAKEDEV_PATH in ${MAKEDEV_PATHS}; do
if [ -x "${prefix}${MAKEDEV_PATH}" ]; then
MAKEDEV="${prefix}${MAKEDEV_PATH}"
if [ -x "${TARGET}${MAKEDEV_PATH}" ]; then
MAKEDEV="${TARGET}${MAKEDEV_PATH}"
break
fi
done
@@ -44,11 +44,11 @@ if [ -n "${MAKEDEV}" ]; then
# Early termination if we have a couple of common devices present
# 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
#
cd ${prefix}/dev
cd ${TARGET}/dev
${MAKEDEV} std
${MAKEDEV} hda
${MAKEDEV} sda
@@ -62,7 +62,7 @@ fi
#
# Make the device nodes.
#
cd ${prefix}/dev
cd ${TARGET}/dev
${MAKEDEV} generic
${MAKEDEV} std

View File

@@ -5,14 +5,14 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -27,8 +27,8 @@ logMessage Script $0 starting
#
# Copy "required" files from our host.
#
cp /etc/timezone ${prefix}/etc
cp /etc/localtime ${prefix}/etc
cp /etc/timezone ${TARGET}/etc
cp /etc/localtime ${TARGET}/etc
#

View File

@@ -5,14 +5,14 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -32,7 +32,7 @@ if [ -d /etc/xen-tools/skel ]; then
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

View File

@@ -10,13 +10,13 @@
# --
# http://nedos.net/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -31,34 +31,34 @@ logMessage Script $0 starting
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
mkdir -p ${TARGET}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/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
logMessage "successfully generetaged Host RSA"
if [ ! -f ${TARGET}/etc/ssh/ssh_host_rsa_key ]; 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"
else
logMessage "failed to generate Host RSA Key"
logMessage "failed to generate RSA host key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/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
logMessage "successfully generetaged Host DSA"
if [ ! -f ${TARGET}/etc/ssh/ssh_host_dsa_key ]; 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"
else
logMessage "failed to generate Host DSA Key"
logMessage "failed to generate DSA host key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
installDebianPackage ${TARGET} openssh-server
#
# Log our finish

View File

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

View File

@@ -8,14 +8,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -29,7 +29,7 @@ logMessage Script $0 starting
#
# 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.
exit
fi
@@ -43,13 +43,13 @@ for i in xvc0 hvc0 ; do
#
# 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
else
echo $i >> ${prefix}/etc/securetty
echo $i >> ${TARGET}/etc/securetty
fi
done

View File

@@ -12,15 +12,15 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -50,16 +50,16 @@ if [ -n "${modules}" -a -d "${modules}" ]; then
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
mkdir -p ${TARGET}/lib/modules
cp -au ${modules} ${TARGET}/lib/modules
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"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
installDebianPackage ${TARGET} ${linux_modules_package}
else
#
@@ -69,15 +69,10 @@ else
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
mkdir -p ${TARGET}/lib/modules
cp -au /lib/modules/$(uname -r) ${TARGET}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#

View File

@@ -12,15 +12,15 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -36,8 +36,8 @@ logMessage Script $0 starting
# 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.
#
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules
mkdir -p ${TARGET}/lib/modules
cp -au /lib/modules/*/ ${TARGET}/lib/modules
#

View File

@@ -0,0 +1,44 @@
#!/bin/sh
#
# Ensure that either modules-init-tools or kmod is setup.
#
# This is required in most setups. But even if it isn't required it
# can't really do anything bad; just waste a bit of space.
#
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
#
# Log our start
#
logMessage Script $0 starting
#
# Install either kmod or module-init-tools package.
#
if chroot ${TARGET} /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 | fgrep -qi transitional; then
installDebianPackage ${TARGET} kmod
else
installDebianPackage ${TARGET} module-init-tools
fi
else
installDebianPackage ${TARGET} kmod
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1,52 @@
#!/bin/sh
#
# Ensure that either modules-init-tools or kmod is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
#
# Log our start
#
logMessage Script $0 starting
if [ ${pygrub} ]; then
#
# Install the grub 0.9x package ("grub-legacy" on Debian, "grub" on Ubuntu)
#
if chroot ${TARGET} /usr/bin/apt-cache show grub-legacy 2>/dev/null | egrep -qi 'GRand Unified Bootloader.*Legacy'; then
installDebianPackage ${TARGET} grub-legacy
else
installDebianPackage ${TARGET} grub
fi
if [ ! -e ${TARGET}/boot/grub/default ]; then
echo default > ${TARGET}/boot/grub/default
fi
chroot ${TARGET} /usr/sbin/update-grub
else
logMessage "pygrub not set, skipping grub-legacy installation"
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -12,13 +12,13 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -62,7 +62,7 @@ logMessage "Root device is /dev/$device"
has_xfs=0
has_reiserfs=0
has_btrfs=0
cat <<E_O_FSTAB > ${prefix}/etc/fstab
cat <<E_O_FSTAB > ${TARGET}/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
@@ -93,13 +93,41 @@ for part in `seq 1 ${NUMPARTITIONS}`; do
esac
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
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
done
logMessage Checking for filesystem tools to install
#
# Install any required packages for the given root filesystem
#
if [ "$has_xfs" -eq 1 ]; then
installPackage ${TARGET} xfsprogs
fi
if [ "$has_reiserfs" -eq 1 ]; then
if isAPT; then
installDebianPackage reiserfsprogs
elif isYum; then
installRPMPackage reiserfs-utils
else
logMessage "Unable to install reiserfs tools; no package manager recognized"
fi
fi
if [ "$has_btrfs" -eq 1 ]; then
if isAPT; then
installDebianPackage btrfs-tools
elif isYum; then
installRPMPackage btrfs-progs
else
logMessage "Unable to install btrfs tools; no package manager recognized"
fi
fi
#
# Log our finish
#

View File

@@ -1,45 +0,0 @@
#!/bin/sh
#
# Some root filesystems will require the installation of new packages
#
# Steve
# --
# http://www.steve.org.uk/
prefix=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
else
. ./hooks/common.sh
fi
#
# Log our start
#
logMessage Script $0 starting
#
# Install any required packages for the given root filesystem
#
if [ $has_xfs -eq 1 ]; then
installDebianPackage ${prefix} xfsprogs
fi
if [ $has_reiserfs -eq 1 ]; then
installDebianPackage ${prefix} reiserfsprogs
fi
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

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

View File

@@ -8,14 +8,14 @@
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -30,11 +30,11 @@ logMessage Script $0 starting
#
# 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

View File

@@ -0,0 +1 @@
../common/81-install-modules-init-tools

View File

@@ -1 +0,0 @@
../common/91-install-fs-tools

View File

@@ -8,14 +8,14 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -33,17 +33,17 @@ logMessage Script $0 starting
# the setting to the proxy guess file.
#
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
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
#
# 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
#
@@ -66,7 +66,7 @@ if ( test "${dist}" "!=" "sid" && test "${dist}" "!=" "unstable" && \
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
cat <<E_O_APT >> ${prefix}/etc/apt/sources.list
cat <<E_O_APT >> ${TARGET}/etc/apt/sources.list
#
# Security updates
#
@@ -75,7 +75,7 @@ deb-src http://security.debian.org/ ${dist}/updates main contrib non-free
E_O_APT
else
cat <<E_O_APT >> ${prefix}/etc/apt/sources.list
cat <<E_O_APT >> ${TARGET}/etc/apt/sources.list
#
# Security updates - Uncomment to enable.
#
@@ -88,32 +88,22 @@ fi
#
# 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 sid or etch systems we install libc6-xen
# For all systems after Sarge we install libc6-xen on i386
#
# For sarge we don't have that option, so we disable TLS.
# For Sarge we don't have that option, so we disable TLS the hard way.
#
if [ "`uname -m`" = "x86_64" ]; then
logMessage "Ignoring TLS since we're a 64 bit host."
else
case "${dist}" in
*)
logMessage "Installing xen-aware libc6"
installDebianPackage ${prefix} libc6-xen
;;
sarge)
logMessage "Disabling TLS"
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled
mkdir ${prefix}/lib/tls
;;
esac
if [ "${arch}" = "i386" ]; then
if [ "${dist}" = 'sarge' ]; then
logMessage "Disabling TLS"
mv ${TARGET}/lib/tls ${TARGET}/lib/tls.disabled
mkdir ${TARGET}/lib/tls
else
logMessage "Installing xen-aware libc6"
installDebianPackage ${TARGET} libc6-xen
fi
fi

View File

@@ -9,14 +9,14 @@
# --
# http://nedos.net
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -62,19 +62,19 @@ KERNEL_XEN_PKG="linux-image-xen-$XEN_ARCH"
KERNEL_PKG="linux-image-$XEN_ARCH"
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
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} $KERNEL_XEN_PKG
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} $KERNEL_XEN_PKG
else
logMessage Package $KERNEL_XEN_PKG is not available
logMessage Attempting to install the $KERNEL_PKG kernel image
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
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} $KERNEL_PKG
else
logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed
@@ -83,48 +83,28 @@ else
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")
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
#
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then
if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation
else
logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV
chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi
#
# Generate a menu.lst for pygrub
#
mkdir -p ${prefix}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst
default 0
timeout 2
generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
title $DOMU_ISSUE
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro elevator=noop
initrd /boot/$DOMU_RAMDISK
title $DOMU_ISSUE (Single-User)
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro single elevator=noop
initrd /boot/$DOMU_RAMDISK
E_O_MENU
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
else
logMessage pygrub not set, skipping kernel install

View File

@@ -0,0 +1 @@
../common/81-install-modules-init-tools

View File

@@ -0,0 +1 @@
../common/82-install-grub-legacy

View File

@@ -1 +0,0 @@
../common/91-install-fs-tools

View File

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

View File

@@ -9,14 +9,14 @@
# --
# http://nedos.net
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -27,7 +27,7 @@ fi
logMessage Script $0 starting
if [ ${pygrub} ]; then
if [ "${pygrub}" ]; then
#
# Attempt to install a xen kernel, if that fails, then install a normal one
@@ -37,19 +37,19 @@ KERNEL_XEN_PKG="linux-image-xen"
KERNEL_PKG="linux-image-server"
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
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} $KERNEL_XEN_PKG
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} $KERNEL_XEN_PKG
else
logMessage Package $KERNEL_XEN_PKG is not available
logMessage Attempting to install the $KERNEL_PKG kernel image
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
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} $KERNEL_PKG
else
logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed
@@ -58,52 +58,32 @@ else
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")
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
#
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then
if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation
else
logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV
chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi
#
# Generate a menu.lst for pygrub
#
mkdir -p ${prefix}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst
default 0
timeout 2
generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
title $DOMU_ISSUE
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro elevator=noop
initrd /boot/$DOMU_RAMDISK
title $DOMU_ISSUE (Single-User)
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro single elevator=noop
initrd /boot/$DOMU_RAMDISK
E_O_MENU
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
else
logMessage pygrub not set, skipping kernel install
fi
fi # if pygrub
#
# Log our finish

View File

@@ -0,0 +1 @@
../common/81-install-modules-init-tools

View File

@@ -0,0 +1 @@
../common/82-install-grub-legacy

View File

@@ -1 +0,0 @@
../common/91-install-fs-tools

View File

@@ -7,13 +7,13 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -27,14 +27,14 @@ logMessage Script $0 starting
#
# Remove lines matching 'group' or 'wheel'.
#
grep -v wheel ${prefix}/etc/pam.d/su > ${prefix}/etc/pam.d/su.tmp
grep -v group ${prefix}/etc/pam.d/su.tmp > ${prefix}/etc/pam.d/su
grep -v wheel ${TARGET}/etc/pam.d/su > ${TARGET}/etc/pam.d/su.tmp
grep -v group ${TARGET}/etc/pam.d/su.tmp > ${TARGET}/etc/pam.d/su
#
# Make sure permissions are correct.
#
chown root:root ${prefix}/etc/pam.d/su
chmod 600 ${prefix}/etc/pam.d/su
chown root:root ${TARGET}/etc/pam.d/su
chmod 600 ${TARGET}/etc/pam.d/su
#
# Log our finish

View File

@@ -7,13 +7,13 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -28,7 +28,7 @@ logMessage Script $0 starting
#
# 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.
#
cat <<E_O_DHCP > ${prefix}/etc/conf.d/net
cat <<E_O_DHCP > ${TARGET}/etc/conf.d/net
# /etc/conf.d/net:
# Global config file for net.* rc-scripts
#
@@ -70,7 +70,7 @@ setupStaticNetworking ()
#
# 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
#
@@ -89,7 +89,7 @@ E_O_STATIC
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}" )
E_O_STATIC
@@ -103,12 +103,12 @@ E_O_STATIC
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi
}

View File

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

View File

@@ -10,14 +10,14 @@
# http://www.steve.org.uk/
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -32,14 +32,14 @@ logMessage Script $0 starting
#
# Install ssh
#
installGentooPackage ${prefix} ssh
installGentooPackage ${TARGET} ssh
#
# Make sure sshd isn't running, this will cause our unmounting of the
# disk image to fail..
#
chroot ${prefix} /etc/init.d/ssh stop
chroot ${TARGET} /etc/init.d/ssh stop
#

View File

@@ -9,14 +9,14 @@
# --
# http://nedos.net
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -27,20 +27,20 @@ fi
logMessage Script $0 starting
if [ ${pygrub} ]; then
if [ "${pygrub}" ]; then
#
# Attempt to install a xen kernel, if that fails, then install a normal one
#
KERNEL_PKG="linux-image-server"
KERNEL_PKG="linux-image-virtual"
logMessage Attempting to install the $KERNEL_PKG kernel image
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
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} $KERNEL_PKG
else
logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed
@@ -48,52 +48,31 @@ else
exit 1
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")
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
#
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then
if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation
else
logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV
chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi
#
# Generate a menu.lst for pygrub
#
mkdir -p ${prefix}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst
default 0
timeout 2
title $DOMU_ISSUE
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro elevator=noop
initrd /boot/$DOMU_RAMDISK
title $DOMU_ISSUE (Single-User)
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro single elevator=noop
initrd /boot/$DOMU_RAMDISK
E_O_MENU
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else
logMessage pygrub not set, skipping kernel install
fi
fi # if pygrub
#
# Log our finish

View File

@@ -0,0 +1 @@
../common/81-install-modules-init-tools

View File

@@ -0,0 +1 @@
../common/82-install-grub-legacy

View File

@@ -1 +0,0 @@
../common/91-install-fs-tools

View File

@@ -9,78 +9,62 @@
# --
# http://nedos.net
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
if [ "${pygrub}" ]; then
#
# Log our start
#
logMessage Script $0 starting
if [ "${pygrub}" ]; then
#
# The type of kernel that we will be installing
#
# linux_kernel_type="desktop"
#
linux_kernel_type="server"
linux_kernel_type="virtual"
linux_kernel_package="linux-image-${linux_kernel_type}"
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"
installDebianPackage ${prefix} initramfs-tools
installDebianPackage ${prefix} ${linux_kernel_package}
installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${TARGET} ${linux_kernel_package}
# 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
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
# Generate grub menu.lst
DOMU_KERNEL=$(basename $(ls -1 ${prefix}/boot/vmlinuz* | tail -n 1))
DOMU_RAMDISK=$(basename $(ls -1 ${prefix}/boot/initrd*|tail -n 1))
DOMU_ISSUE=$(head -n 1 ${prefix}/etc/issue | awk -F '\' '{ print $1 }' | sed 's/[ \t]*$//')
DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
DOMU_RAMDISK=$(basename $(ls -1 ${TARGET}/boot/initrd*|tail -n 1))
DOMU_ISSUE=$(head -n 1 ${TARGET}/etc/issue | awk -F '\' '{ print $1 }' | sed 's/[ \t]*$//')
mkdir -p ${prefix}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst
default 0
timeout 2
#
# Generate a menu.lst for pygrub
#
title $DOMU_ISSUE
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro elevator=noop
initrd /boot/$DOMU_RAMDISK
generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
title $DOMU_ISSUE (Single-User)
root (hd0,0)
kernel /boot/$DOMU_KERNEL root=/dev/xvda2 ro single elevator=noop
initrd /boot/$DOMU_RAMDISK
E_O_MENU
else
logMessage "Package '${linux_kernel_package}' is not available"
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
else
logMessage pygrub not set, skipping kernel install
fi # if pygrub

View File

@@ -0,0 +1 @@
../common/81-install-modules-init-tools

View File

@@ -0,0 +1 @@
../common/82-install-grub-legacy

View File

@@ -1 +0,0 @@
../common/91-install-fs-tools

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
=head1 SYNOPSIS
use Xen::Tools::Common;
@@ -218,9 +219,9 @@ sub findXenToolstack
=cut
sub runCommand ($$)
sub runCommand ($$;$)
{
my ($cmd, $CONFIG) = (@_);
my ($cmd, $CONFIG, $fail_ok) = (@_);
#
# Set a local if we don't have one.
@@ -245,10 +246,12 @@ sub runCommand ($$)
my $rcopen = open(CMD, '-|', $cmd);
if (!defined($rcopen)) {
logprint_with_config("Starting command '$cmd' failed: $!\n", $CONFIG);
logprint_with_config("Aborting\n", $CONFIG);
print "See /var/log/xen-tools/".$CONFIG->{'hostname'}.".log for details\n";
$CONFIG->{'FAIL'} = 1;
exit 127;
unless ($fail_ok) {
logprint_with_config("Aborting\n", $CONFIG);
print "See /var/log/xen-tools/".$CONFIG->{'hostname'}.".log for details\n";
$CONFIG->{'FAIL'} = 1;
exit 127;
}
}
while (my $line = <CMD>) {
@@ -270,8 +273,10 @@ sub runCommand ($$)
logprint_with_config("Running command '$cmd' failed with exit code $?.\n", $CONFIG);
logprint_with_config("Aborting\n", $CONFIG);
print "See /var/log/xen-tools/".$CONFIG->{'hostname'}.".log for details\n";
$CONFIG->{'FAIL'} = 1;
exit 127;
unless ($fail_ok) {
$CONFIG->{'FAIL'} = 1;
exit 127;
}
}
}

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

@@ -65,8 +65,8 @@ _xen_create_image()
# Available distributions, by which we mean distributions which
# we have hook scripts available.
#
for i in `/bin/ls -1 /usr/lib/xen-tools/ ` ; do
if [ -d /usr/lib/xen-tools/${i} ]; then
for i in `/bin/ls -1 /usr/share/xen-tools/ ` ; do
if [ -d /usr/share/xen-tools/${i} ]; then
dists="${dists} ${i/.d/}"
fi
done

View File

@@ -0,0 +1,7 @@
# This initramfs-tools configuration file is installed by xen-tools.
#
# To make the Dom0's initramfs working inside DomUs, too, most modules
# need to be included, not just those necvessary for the host system
# and its hardware.
MODULES=most

View File

@@ -40,7 +40,7 @@ rm -rf $RPM_BUILD_ROOT
/etc/bash_completion.d/*
/usr/bin/*
/usr/share/man/man8/*
/usr/lib/xen-tools
/usr/share/xen-tools
%changelog

View File

@@ -8,15 +8,15 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions - this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -28,16 +28,16 @@ fi
#
# Update APT lists.
#
chroot ${prefix} /usr/bin/apt-get update
chroot ${TARGET} /usr/bin/apt-get update
#
# Install the packages
#
installDebianPackage ${prefix} dpkg-dev
installDebianPackage ${prefix} devscripts
installDebianPackage ${prefix} fakeroot
installDebianPackage ${prefix} debhelper
installDebianPackage ${prefix} build-essential
installDebianPackage ${prefix} lintian
installDebianPackage ${prefix} linda
installDebianPackage ${TARGET} dpkg-dev
installDebianPackage ${TARGET} devscripts
installDebianPackage ${TARGET} fakeroot
installDebianPackage ${TARGET} debhelper
installDebianPackage ${TARGET} build-essential
installDebianPackage ${TARGET} lintian
installDebianPackage ${TARGET} linda

View File

@@ -6,13 +6,13 @@
# 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.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -28,20 +28,20 @@ logMessage Script $0 starting
#
# Install CFengine
#
installDebianPackage ${prefix} cfengine2
installDebianPackage ${TARGET} cfengine2
#
# Make sure the CFengine server isn't running, this will cause our
# 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
#
cp /etc/cfengine/update.conf ${prefix}/etc/cfengine/
cp /etc/default/cfengine2 ${prefix}/etc/default/
cp /etc/cfengine/update.conf ${TARGET}/etc/cfengine/
cp /etc/default/cfengine2 ${TARGET}/etc/default/
#
# Log our finish

View File

@@ -21,17 +21,17 @@
#
# 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 our common functions - this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -59,7 +59,7 @@ fi
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}
@@ -71,17 +71,17 @@ for i in `find ${source} -name '*.sed' -print`; do
#
# Does the file exist in the new install?
#
if [ -e "${prefix}/${file}" ]; then
if [ -e "${TARGET}/${file}" ]; then
#
# Log it.
#
logMessage "Running script $i - against ${prefix}/${file}"
logMessage "Running script $i - against ${TARGET}/${file}"
#
# Invoke it.
#
sed -i~ -f $i "${prefix}/${file}"
sed -i~ -f $i "${TARGET}/${file}"
fi
done

View File

@@ -8,15 +8,15 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions - this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -28,24 +28,24 @@ fi
#
# Update APT lists.
#
chroot ${prefix} /usr/bin/apt-get update
chroot ${TARGET} /usr/bin/apt-get update
#
# Install the packages
#
installDebianPackage ${prefix} xserver-xfree86
installDebianPackage ${prefix} vncserver
installDebianPackage ${prefix} xfonts-100dpi
installDebianPackage ${prefix} xfonts-75dpi
installDebianPackage ${prefix} xfonts-base
installDebianPackage ${prefix} rxvt
installDebianPackage ${prefix} gdm
installDebianPackage ${prefix} icewm-experimental
installDebianPackage ${TARGET} xserver-xfree86
installDebianPackage ${TARGET} vncserver
installDebianPackage ${TARGET} xfonts-100dpi
installDebianPackage ${TARGET} xfonts-75dpi
installDebianPackage ${TARGET} xfonts-base
installDebianPackage ${TARGET} rxvt
installDebianPackage ${TARGET} gdm
installDebianPackage ${TARGET} icewm-experimental
#
# 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]
name=VNC server
command=/usr/bin/Xvnc -geometry 800x600 -depth 24
@@ -56,4 +56,4 @@ EOF
#
# 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,15 +9,15 @@
#
prefix=$1
TARGET=$1
#
# Source our common functions - this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -28,12 +28,12 @@ fi
#
# Install some new packages - do this first to avoid dependency errors.
#
installDebianPackage ${prefix} syslog-ng
installDebianPackage ${prefix} deborphan
installDebianPackage ${prefix} less
installDebianPackage ${prefix} screen
installDebianPackage ${prefix} sudo
installDebianPackage ${prefix} vim
installDebianPackage ${TARGET} syslog-ng
installDebianPackage ${TARGET} deborphan
installDebianPackage ${TARGET} less
installDebianPackage ${TARGET} screen
installDebianPackage ${TARGET} sudo
installDebianPackage ${TARGET} vim
#
@@ -41,28 +41,28 @@ installDebianPackage ${prefix} vim
#
# PPP stuff.
removeDebianPackage ${prefix} pppconfig
removeDebianPackage ${prefix} pppoeconf
removeDebianPackage ${prefix} pppoe
removeDebianPackage ${prefix} ppp
removeDebianPackage ${prefix} libpcap0.7
removeDebianPackage ${TARGET} pppconfig
removeDebianPackage ${TARGET} pppoeconf
removeDebianPackage ${TARGET} pppoe
removeDebianPackage ${TARGET} ppp
removeDebianPackage ${TARGET} libpcap0.7
# Editors
removeDebianPackage ${prefix} nano
removeDebianPackage ${prefix} ed
removeDebianPackage ${prefix} nvi
removeDebianPackage ${TARGET} nano
removeDebianPackage ${TARGET} ed
removeDebianPackage ${TARGET} nvi
# Syslog
removeDebianPackage ${prefix} klogd
removeDebianPackage ${prefix} sysklogd
removeDebianPackage ${TARGET} klogd
removeDebianPackage ${TARGET} sysklogd
# manpages
removeDebianPackage ${prefix} manpages
removeDebianPackage ${prefix} man-db
removeDebianPackage ${prefix} info
removeDebianPackage ${TARGET} manpages
removeDebianPackage ${TARGET} man-db
removeDebianPackage ${TARGET} info
# misc
removeDebianPackage ${prefix} tasksel tasksel-data
removeDebianPackage ${prefix} pciutils
removeDebianPackage ${prefix} fdutils
removeDebianPackage ${prefix} cpio
removeDebianPackage ${TARGET} tasksel tasksel-data
removeDebianPackage ${TARGET} pciutils
removeDebianPackage ${TARGET} fdutils
removeDebianPackage ${TARGET} cpio

View File

@@ -6,13 +6,13 @@
# 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.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -26,14 +26,14 @@ logMessage Script $0 starting
#
# Install ssh
#
installDebianPackage ${prefix} puppet
installDebianPackage ${TARGET} puppet
#
# Make sure sshd isn't running, this will cause our unmounting of the
# disk image to fail..
#
chroot ${prefix} /etc/init.d/puppet stop
chroot ${TARGET} /etc/init.d/puppet stop
#
# Log our finish

View File

@@ -3,13 +3,13 @@
# 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.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -33,7 +33,7 @@ logMessage Script $0 starting
#
# 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
#search domain.tld
RESOLV_CONF_EOF

View File

@@ -3,13 +3,13 @@
# This role installs sudo with host sudoers file.
#
prefix=$1
TARGET=$1
#
# Source our common functions - this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
echo "Installation problem"
fi
@@ -24,7 +24,7 @@ logMessage Script $0 starting
#
# Install sudo package
#
installDebianPackage ${prefix} sudo
installDebianPackage ${TARGET} sudo
#
# WARNING :
@@ -36,9 +36,9 @@ installDebianPackage ${prefix} sudo
#
# Copy dom0's file to domU.
#
cp /etc/sudoers ${prefix}/etc/
chown root:root ${prefix}/etc/sudoers
chmod 440 ${prefix}/etc/sudoers
cp /etc/sudoers ${TARGET}/etc/
chown root:root ${TARGET}/etc/sudoers
chmod 440 ${TARGET}/etc/sudoers
#
# Log our finish

View File

@@ -7,13 +7,13 @@
# --
#
prefix=$1
TARGET=$1
#
# Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
@@ -28,7 +28,7 @@ logMessage Script $0 starting
#
# 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 /var/run tmpfs rw,nosuid,nodev,noexec,mode=1755 0 0
tmpfs /var/lock tmpfs rw,nosuid,nodev,noexec 0 0

Some files were not shown because too many files have changed in this diff Show More