1
0
mirror of synced 2026-02-20 13:55:16 +00:00

Compare commits

..

3 Commits

Author SHA1 Message Date
Axel Beckert
2ca9232fe9 Merge branch 'domaindir' of gitorious.org:xen-tools/xen-tools into domaindir 2010-05-28 00:12:04 +02:00
Axel Beckert
7d9ee76da3 Offer --domaindir as alternativ to --dir
See http://bugs.debian.org/477238 for the discussion.
2010-05-26 23:32:18 +02:00
Axel Beckert
aba94e4c73 xen-update-image: Reformat source code comment to fit into 80 columns 2010-05-26 23:26:09 +02:00
260 changed files with 11747 additions and 4670 deletions

39
.gitignore vendored
View File

@@ -1,30 +1,11 @@
# Note! Please run 'prove t/gitignore.t' after changing .hg
# this file, to check its coherency .hgtags
ChangeLog
# all dotfiles
.*
# but we _wan't_ those dot-files
!.gitignore
!.mailmap
# ChangeLog is generated during make
/ChangeLog
# those are generated during debian package build
/build-stamp
/configure-stamp
/man
/debian/files
/debian/xen-tools
/debian/xen-tools.debhelper.log
/debian/xen-tools.substvars
# git-generated patches
/*.patch
# some backups
*~ *~
*.orig build-stamp
configure-stamp
# backups created by "make update-version" man
*.bak debian/files
debian/xen-tools
debian/xen-tools.debhelper.log
debian/xen-tools.substvars

5
.hgignore Normal file
View File

@@ -0,0 +1,5 @@
(^|/)CVS($|/)
(^|/)\.hg($|/)
(^|/)\.hgtags($|/)
ChangeLog
~$

2
.hgtags Normal file
View File

@@ -0,0 +1,2 @@
d75c787add2a7ceb19b30b018d4d16b7317c772d release-4.
6a10240d7c66e2f7df56457708efb9287640bcf4 release-4.1

View File

@@ -1,6 +0,0 @@
Axel Beckert <abe@deuxchevaux.org>
Dmitry Nedospasov <dmitry@nedos.net>
Nathan O'Sullivan <nathan@mammoth.com.au>
Radu Spineanu <radu@debian.org> radu <none@none>
Steve Kemp <steve@steve.org.uk> steve <none@none>
Stéphane Jourdois <sjourdois@gmail.com> <stephane@jourdois.fr>

34
.release Normal file
View File

@@ -0,0 +1,34 @@
#
# Configuration file for 'release', a utility to make release more
# easily:
#
# http://release.repository.steve.org.uk/
#
# Steve
# --
#
#
# Command to run
#
preupload="make release"
#
#
# Pattern for our release tarball.
#
pattern=xen-tools-[0-9].[0-9].tar.gz*
#
# Pattern for our GPG-signature.
#
signature=xen-tools-[0-9].[0-9].tar.gz.asc
#
# Upload location.
#
upload=steve@www.xen-tools.org:/home/www/www.xen-tools.org/htdocs/software/xen-tools/

36
AUTHORS
View File

@@ -1,9 +1,10 @@
Primary Authors Primary Authors
--------------- ---------------
Axel Beckert <abe@deuxchevaux.org> Axel Beckert <abe@deuxchevaux.org>
Dmitry Nedospasov <dmitry@nedos.net> Dmitry Nedospasov <dmitry@nedos.net>
Stéphane Jourdois <sjourdois [at] com.gmail>
Steve Kemp <steve [at] uk.org.steve> Steve Kemp <steve [at] uk.org.steve>
@@ -24,16 +25,6 @@ Contributions
Justin Azoff <JAzoff [at] edu.albany.uamail> Justin Azoff <JAzoff [at] edu.albany.uamail>
- Added LVM support to xen-create-image. - Added LVM support to xen-create-image.
Pieter Barrezeele <macbar [at] be.fab4>
- Several small but useful enhancements
- Bugfixes
Brian Bennett <bahamat [at] net.digitalelf>
- Made multiple times given --ip options work
Vagrant Cascadian <vagrant [at] org.debian>
- Less redundant SSH key generation
Edd Dumbill <edd [at] com.usefulinc> Edd Dumbill <edd [at] com.usefulinc>
- Contributed APT sources.list file for Ubuntu's Dapper release. - Contributed APT sources.list file for Ubuntu's Dapper release.
@@ -43,18 +34,12 @@ Contributions
Stefan Fritsch <sf [at] de.sfritsch> Stefan Fritsch <sf [at] de.sfritsch>
- Contributed the policy-rc.d fixups for common.sh - Contributed the policy-rc.d fixups for common.sh
Raphaël Halimi <raphael.halimi [at] com.gmail>
- Contribute bashism fix
Sven Hertge <sven [at] de.svenhartge> Sven Hertge <sven [at] de.svenhartge>
- Bugfix for Debian/Gentoo package installation. - Bugfix for Debian/Gentoo package installation.
Joey Hess <joeyh [at] org.debian> Joey Hess <joeyh [at] org.debian>
- Provided sample code for module copying and several useful bug reports - Provided sample code for module copying and several useful bug reports
John Hughes <john [at] com.fallenbit>
- Physical devices reordering for pygrub
Kirk Ismay <captain [at] com.netidea> Kirk Ismay <captain [at] com.netidea>
- Added hook for automatic CFEngine installation. - Added hook for automatic CFEngine installation.
@@ -65,9 +50,6 @@ Contributions
- Improved binary detection and good suggestions. - Improved binary detection and good suggestions.
- Better portability for non-bash shells. - Better portability for non-bash shells.
Jorge Armando Medina <jmedina [at] com.e-compugraf>
- Fix for backward compatibility with xvc0 serial consoles
Gordon Messmer <gmessmer [at] edu.washington.u> Gordon Messmer <gmessmer [at] edu.washington.u>
- Supplied .spec file for building .rpm packages. - Supplied .spec file for building .rpm packages.
@@ -78,9 +60,6 @@ Contributions
Nathan O'Sullivan <nathan [at] au.com.mammoth> Nathan O'Sullivan <nathan [at] au.com.mammoth>
- New features wrt. options and helper functions - New features wrt. options and helper functions
Guillaume Pernot <gpernot [at] org.praksys>
- Fixed Sarge amd64 special case
Walter Reiner <walter [at] at.wreiner> Walter Reiner <walter [at] at.wreiner>
- Provided --image-dev + --swap-dev patch. - Provided --image-dev + --swap-dev patch.
@@ -93,13 +72,9 @@ Contributions
Felipe Scarel <fbscarel [at] com.gmail> Felipe Scarel <fbscarel [at] com.gmail>
- Bugfix for --no-swap + LVM - Bugfix for --no-swap + LVM
Johan Schurer <johannes.schurer [at] com.alcatel-lucent>
- CentOS 6 support
- CentOS 5 fixes
Radu Spineanu <radu [at] org.debian> Radu Spineanu <radu [at] org.debian>
- Supplied many small tweaks, bugfixes, and suggestions. - Supplied many small tweaks, bugfixes, and suggestions.
- Radu is also one of the former Debian package maintainers. - Radu is also the Debian package maintainer and has CVS commit access.
Henning Sprang <henning_sprang [at] de.gmx> Henning Sprang <henning_sprang [at] de.gmx>
- Many suggestions and useful Debian bug reports. - Many suggestions and useful Debian bug reports.
@@ -110,11 +85,6 @@ Contributions
Gergely Tamas <dice [at] hu.kfki.mfa> Gergely Tamas <dice [at] hu.kfki.mfa>
- Added patch to make initrd setup optional. - Added patch to make initrd setup optional.
Alex Tomlins <alex.tomlins [at] com.unboxedconsulting>
- apt_proxy support
Ward Vandewege <ward [at] be.pong> Ward Vandewege <ward [at] be.pong>
- Made several updates for Ubuntu support. - Made several updates for Ubuntu support.
xstasi on Launchpad
- Proper upstart handling in the chroot

View File

@@ -1,46 +0,0 @@
KNOWN BUGS in xen-tools
Bugs to fix before a 4.3 release
--------------------------------
* xen-delete-image doesn't remove all logical volumes if --partitions is used.
See the link below for details how to reproduce. Reproducable at
least with --lvm. Thanks to Antoine Benkemoun for reporting.
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 :
/boot
/
in that order, / was mounted _over_ /boot, and you would not _see_ /boot.
Xen-Tools would then install boot on your / partition, and your boot device
was just empty and unbootable.
Workaround for 4.2 is to write your partition file such as mounts overlap
correctly when mounted in specified order.
Current (unreleased) fix is to sort by mountpoint length.
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
-----------------
t/xen-tools.t can't really test Xen::Tools as the latter requires a
local Xen installation. For proper testing, a dummy set of Xen
configuration files and configurable paths to them in Xen::Tools would
be necessary.

View File

@@ -2,12 +2,7 @@
xen-tools xen-tools
--------- ---------
Copyright (c) 2005-2009: Steve Kemp. All rights reserved. Copyright (c) 2005-2007 by Steve Kemp. All rights reserved.
Copyright (c) 2010-2012: 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>
This project is free software. You may redistribute it under the This project is free software. You may redistribute it under the
terms of *either* the Perl Artistic License, or the GNU General terms of *either* the Perl Artistic License, or the GNU General

View File

@@ -14,10 +14,12 @@
# #
TMP ?= /tmp TMP ?= /tmp
DIST_PREFIX = ${TMP} DIST_PREFIX = ${TMP}
VERSION = 4.3.1 VERSION = 4.2rc1
DEBVERSION = $(shell echo $(VERSION)|sed 's/\(rc\|pre\|beta\|alpha\)/~\1/') DEBVERSION = $(shell echo $(VERSION)|sed 's/\(rc\|pre\|beta\|alpha\)/~\1/')
BASE = xen-tools BASE = xen-tools
VCS = git VCS = $(shell if git st > /dev/null; then echo git; \
elif hg st > /dev/null; then echo hg; \
else echo cannot-determine-used-vcs; fi)
# #
# Installation prefix, useful for the Debian package. # Installation prefix, useful for the Debian package.
@@ -51,24 +53,20 @@ changelog:
# Delete all temporary files, recursively. # Delete all temporary files, recursively.
# #
clean: clean:
@find . \ @find . -name '.*~' -exec rm \{\} \;
-path ./.git -prune -o \ @find . -name '.#*' -exec rm \{\} \;
\( \ @find . -name '*~' -exec rm \{\} \;
-name '*~' -o \ @find . -name '*.bak' -exec rm \{\} \;
-name '.#*' -o \ @find . -name '*.tmp' -exec rm \{\} \;
-name '*.bak' -o \ @find . -name 'tags' -exec rm \{\} \;
-name '*.tmp' -o \ @find . -name '*.8.gz' -exec rm \{\} \;
-name 'tags' -o \ @find . -name '*.tdy' -exec rm \{\} \;
-name '*.8.gz' -o \
-name '*.tdy' \
\) -exec rm "{}" +
@if [ -d man ]; then rm -rf man ; fi @if [ -d man ]; then rm -rf man ; fi
@if [ -e build-stamp ]; then rm -f build-stamp ; fi @if [ -e build-stamp ]; then rm -f build-stamp ; fi
@if [ -e configure-stamp ]; then rm -f configure-stamp ; fi @if [ -e configure-stamp ]; then rm -f configure-stamp ; fi
@if [ -d debian/xen-tools ]; then rm -rf ./debian/xen-tools; fi @if [ -d debian/xen-tools ]; then rm -rf ./debian/xen-tools; fi
@if [ -e $(BASE)-$(VERSION).tar.gz ]; then rm $(BASE)-$(VERSION).tar.gz ; fi @if [ -e $(BASE)-$(VERSION).tar.gz ]; then rm $(BASE)-$(VERSION).tar.gz ; fi
@if [ -e $(BASE)-$(VERSION).tar.gz.asc ]; then rm $(BASE)-$(VERSION).tar.gz.asc ; fi @if [ -e $(BASE)-$(VERSION).tar.gz.asc ]; then rm $(BASE)-$(VERSION).tar.gz.asc ; fi
cd t; $(MAKE) clean
# #
@@ -144,14 +142,11 @@ install-bin:
# #
install-hooks: install-hooks:
for i in roles/* ; do if [ -f $$i ]; then cp $$i ${prefix}/etc/xen-tools/role.d; fi ; done 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-4.d/
mkdir -p ${prefix}/usr/lib/xen-tools/centos-5.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/ 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-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-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 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-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-5.d
@@ -162,17 +157,12 @@ install-hooks:
-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-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-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-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/ mkdir -p ${prefix}/usr/lib/xen-tools/debian.d/
cp -R hooks/debian/*-* ${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 sarge.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d etch.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 lenny.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d squeeze.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 sid.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 testing.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d stable.d -cd ${prefix}/usr/lib/xen-tools/ && ln -s debian.d stable.d
@@ -192,12 +182,7 @@ install-hooks:
cp -R hooks/karmic/*-* ${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 lucid.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d maverick.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
cp hooks/common.sh ${prefix}/usr/lib/xen-tools cp hooks/common.sh ${prefix}/usr/lib/xen-tools
cp -r hooks/common ${prefix}/usr/lib/xen-tools
# #
@@ -239,25 +224,26 @@ release: tidy fixup-perms update-version update-modules clean changelog
rm -f $(DIST_PREFIX)/$(BASE)-$(VERSION).tar.gz rm -f $(DIST_PREFIX)/$(BASE)-$(VERSION).tar.gz
cp -R . $(DIST_PREFIX)/$(BASE)-$(VERSION) cp -R . $(DIST_PREFIX)/$(BASE)-$(VERSION)
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/debian rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/debian
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/.hg*
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/.git* rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/.git*
cd $(DIST_PREFIX) && tar -cvf $(DIST_PREFIX)/$(BASE)-$(VERSION).tar $(BASE)-$(VERSION)/ cd $(DIST_PREFIX) && tar -cvf $(DIST_PREFIX)/$(BASE)-$(VERSION).tar $(BASE)-$(VERSION)/
gzip $(DIST_PREFIX)/$(BASE)-$(VERSION).tar gzip $(DIST_PREFIX)/$(BASE)-$(VERSION).tar
mv $(DIST_PREFIX)/$(BASE)-$(VERSION).tar.gz .. mv $(DIST_PREFIX)/$(BASE)-$(VERSION).tar.gz .
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION) rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)
gpg --armour --detach-sign ../$(BASE)-$(VERSION).tar.gz gpg --armour --detach-sign $(BASE)-$(VERSION).tar.gz
# #
# Make a new orig.tar.gz for the Debian package # Make a new orig.tar.gz for the Debian package
# #
orig-tar-gz: release orig-tar-gz: release
cp -p ../$(BASE)-$(VERSION).tar.gz ../$(BASE)_$(DEBVERSION).orig.tar.gz mv $(BASE)-$(VERSION).tar.gz ../$(BASE)_$(DEBVERSION).orig.tar.gz
cp -p ../$(BASE)-$(VERSION).tar.gz.asc ../$(BASE)_$(DEBVERSION).orig.tar.gz.asc mv $(BASE)-$(VERSION).tar.gz.asc ../$(BASE)_$(DEBVERSION).orig.tar.gz.asc
# #
# Run the test suite. # Run the test suite.
# #
test: update-modules test:
prove --shuffle t/ prove --shuffle t/
@@ -319,7 +305,7 @@ update:
# cases to ensure that all required modules are available. # cases to ensure that all required modules are available.
# #
update-modules: update-modules:
@cd t && make modules cd t && make modules
# #
@@ -327,4 +313,4 @@ update-modules:
# at the top of this file. Steve-Specific? # at the top of this file. Steve-Specific?
# #
update-version: update-version:
perl -pi.bak -e "s/RELEASE = '[0-9]\.[0-9][^']*';/RELEASE = '${VERSION}';/g" bin/*-*[!~] perl -pi.bak -e "s/RELEASE = '[0-9]\.[0-9][^']*';/RELEASE = '${VERSION}';/g" bin/*-*[^~]

69
NEWS
View File

@@ -1,69 +0,0 @@
xen-tools 4.3rc2 (released TODO)
=======================================
Bug Fixes
---------
* Fix several testuite failures depending on the build host's
installation.
Other Changes
-------------
* Remove most Mercurial traces
xen-tools 4.3rc1 (released 08 Jun 2012)
=======================================
New Features and Major Changes
------------------------------
* Massive code deduplication in hooks directory
New Options
-----------
--dontformat (xen-create-image)
--finalrole (xen-create-image)
--apt_proxy (xen-create-image)
Newly Supported Distribution Releases
-------------------------------------
* Ubuntu 11.10 Oneiric
* Ubuntu 12.04 Precise
* Ubuntu 12.10 Quantal
* CentOS 6
xen-tools 4.2.1 (released 17 Mar 2011)
======================================
Bugfix Release only
xen-tools 4.2 (released 05 Oct 2010)
====================================
First final release of the new Xen-Tools Team.
Supports Ubuntu up to 11.04 (Natty) and Debian up to 7.0 (Wheezy).
New Options
-----------
--debootstrap-cmd (xen-create-image and xt-install-image)
New Features and Major Changes
------------------------------
* Uses hvc0 and xvda devices by default
* Also supports cdebootstrap
* Preliminary btrfs support.
* Uses GeoIP for Debian mirrors: Default Debian mirror is now
cdn.debian.net, see http://wiki.debian.org/DebianGeoMirror for
details.
* New helper program xt-guess-suite-and-mirror, used to find the
default mirror and suite.

89
README
View File

@@ -1,5 +1,3 @@
xen-tools
---------
Homepage: Homepage:
http://www.xen-tools.org/software/xen-tools http://www.xen-tools.org/software/xen-tools
@@ -8,32 +6,35 @@ Git Repository:
http://gitorious.org/xen-tools http://gitorious.org/xen-tools
Mailing Lists: Mailing Lists:
http://www.xen-tools.org/software/xen-tools/lists.html http://xen-tools.org/software/xen-tools/lists.html
About:
Xen-tools contains a collection of Perl scripts for working with Xen
guest images under Linux. xen-tools
---------
The xen-tools package contains a collection of Perl scripts for
working with Xen guest images under Debian GNU/Linux.
Using this software, you can easily create new Xen guests configured Using this software, you can easily create new Xen guests configured
to be accessible over the network via OpenSSH. to be accessible over your local network and complete with an installed
copy of OpenSSH.
xen-tools currently has scripts to install most releases of Debian xen-tools currently has scripts to install most releases of Debian
(starting with 3.1 "Sarge") and Ubuntu (starting with 6.06 LTS (starting with 3.1 "Sarge") and Ubuntu (starting with 6.06 LTS
"Dapper") and some RPM-based distributions. On the Dom0 side all "Dapper") and some RPM-based distributions.
current Xen supporting distributions should work.
However, currently only Debian and Ubuntu releases are tested and However currently only Debian and Ubuntu releases are tested and
known to work, i.e.: known to work, i.e.:
Debian: Debian:
* Sarge 3.1 (i386 and DomU only) * Sarge 3.1 (i386 only)
* Etch 4.0 (Dom0 no more tested) * Etch 4.0
* Lenny 5.0 * Lenny 5.0
* Squeeze 6.0 * Squeeze 6.0
* Wheezy 7.0
* Sid (works at least at the moment of writing :-) * Sid (works at least at the moment of writing :-)
Ubuntu (only DomUs tested): Ubuntu:
* Dapper Drake 6.06 * Dapper Drake 6.06
* Edgy Eft 6.10 * Edgy Eft 6.10
* Feisty Fawn 7.04 * Feisty Fawn 7.04
@@ -42,25 +43,22 @@ About:
* Interpid Ibex 8.10 * Interpid Ibex 8.10
* Jaunty Jackaplope 9.04 * Jaunty Jackaplope 9.04
* Karmic Koala 9.10 * Karmic Koala 9.10
* Lucid Lynx 10.04 * Lucid Lynx 10.04 (see [2])
* Maverick Meerkat 10.10 * Maverick Meerkat 10.10 (works at least at the moment of writing :-)
* Natty Narwhal 11.04
* Oneiric Ocelot 11.10
* Precise Pangolin 12.04
* Quantal Quetzal 12.10 (preliminary support as it's not yet available)
CentOS (only DomUs tested, pygrub support incomplete):
* CentOS 5
* CentOS 6
[1] There is an issue with debootstrap on hardy not installing ksyslogd [1] There is an issue with debootstrap on hardy not installing ksyslogd
This can be fixed by chrooting into the newly installed system This can be fixed by chrooting into the newly installed system
and removing the startup scripts. See: and removing the startup scripts. See:
http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest
Xen-Tools are available prepackaged in Debian and as source tar-ball [2] As of writing this 24.04.10, there is an issue with tar on
for local installation. Installing from source should work flawlessly Lucid with kernels < 2.6.22 this should however be patched right
on most Linux systems that meet the installation requirements. after release. See:
https://bugs.launchpad.net/ubuntu/+source/tar/+bug/539814
Older versions of ubuntu may work, however you will have to have to find
a mirror that still hosts them. Currently the oldest Ubuntu Distribution
on Canonical's archive.ubuntu.com is Hardy Heron.
Requirements Requirements
------------ ------------
@@ -76,31 +74,24 @@ Requirements
* Make, if you are not installing through a package manager * Make, if you are not installing through a package manager
You can try to install RPM-based distributions such as CentOS, or You can try to install RPM-based distributions such as CentOS, or
Fedora Core, but you will need a correctly installed and configured Fedora Core you will need a correctly installed and configured
"rinse" package. This is currently not supported. "rinse" package. This is currently not supported.
If you wish to create new Xen instances which may be controlled by If you wish to create new Xen instances which may be controlled by
users via a login shell you can have a look at the (currently users via a login shell you should also install the xen-shell package
unmaintained) xen-shell package which is available from: which is available from:
http://xen-tools.org/software/xen-shell/ http://xen-tools.org/software/xen-shell/
Installation
------------
As root or with sudo, execute "make install".
See debian/README.source how to build the Debian package from a
checked out copy of the git repository (i.e. without a source tar
ball).
The Scripts The Scripts
----------- -----------
Here is a brief description of each included script, for more There now follows a brief description of each included script,
thorough documentation please consult the appropriate man page. for more thorough documentation please consult the appropriate
manpage.
xen-create-image xen-create-image
@@ -109,6 +100,10 @@ xen-create-image
This script is designed to create new images which may be used This script is designed to create new images which may be used
with the Xen hypervisor. with the Xen hypervisor.
The virtual images will have their networking settings created and,
you may optionally cause the new instance to boot once it has
been created.
This script performs the initial setup, then delegates the real This script performs the initial setup, then delegates the real
work to a collection of helper scripts: work to a collection of helper scripts:
@@ -123,11 +118,6 @@ xen-create-image
Create a configuration file in /etc/xen such that Xen can Create a configuration file in /etc/xen such that Xen can
boot the newly created machine. boot the newly created machine.
* xt-guess-suite-and-mirror
In case of a Debian or Ubuntu Dom0, this script tries to guess
the most suitable suite and mirror for DomUs based on the Dom0's
/etc/apt/sources.list.
xen-create-nfs xen-create-nfs
-------------- --------------
@@ -169,5 +159,6 @@ xen-update-image
a Debian-derived distribution. a Debian-derived distribution.
-- Steve
The Xen-Tools Developer Team --

204
TODO
View File

@@ -1,51 +1,67 @@
TODO TODO
==== ====
See KNOWN_BUGS for real bugs. Bugs to fix and Features to add before a 4.2 release
----------------------------------------------------
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
---------------------------------------
* xen-create-image man page overhaul: * xen-create-image man page overhaul:
- ambiguous option list with regards to parameters - ambiguous option list with regards to parameters
- Set Fail in more situations where the script has clearly failed
i.e.: lvm exists * Interactive Password Handling (maybe also the passwd role)
Shouldn't give up after only one password missmatch. This is just
a mater of wrapping the passwd call in a loop.
* Fix 70-install-ssh
Currently 70-install-ssh fails to finish installing the ssh-server
because it does not have a random seed to generate the host keys.
Mounting /proc and /dev in chroot prior to calling the install
function should fix this. If ssh-server is successfully installed
in the domU, it's key fingerprint should be echo'd in a way that
can easily be grep'ed into other scripts.
* Test and support more file system types. * Test and support more file system types.
Actually this should be pretty simple now that the parameters are Actually this should be pretty simple now that the parameters are
stored in the configuration hash. stored in the configuration hash. The only issue is that trailing
whitespace is missing from the "make_fs_foo" option.
* xen-delete-image doesn't remove all logical volumes if --partitions is used.
See the link below for details how to reproduce. Reproducable at
least with --lvm. Thanks to Antoine Benkemoun for reporting.
http://xen-tools.org/pipermail/xen-tools-discuss/2010-May/000757.html
* xen-delete-image ignores extension setting
* xen-create-image should check all integer options on non-digits.
* Test suite should pass
Currently failing:
t/getopt.t
t/xen-delete-image.t
t/xen-tools.t
t/xt-create-xen-config.t
* Clean up setup-hostname - copying /etc/hosts isn't reliable
One could argue that that this gives "extra" information to the domU, since
the /etc/hosts file may contain more than just hosts on the same subnet.
This should atleast be disabled via a flag.
* Setup locales in the hooks? * Setup locales in the hooks?
Currently no locales are set and this causes several domU errors Currently no locales are set and this causes several domU errors which appear
which appear in the domU's logs. in the domU's logs.
* Documentation overhaul Maybe for a 4.3 or 5.0 release
------------------------------
Better explain what roles /should be/ used for, and that roles
are examples, and shouldn't cover every single scenario. They
are also easy to write.
* Think again about disk_device checks :
Newer Xen provides "xvda", older provided "sda". The current check for
valid values of disk_device (used for root device in domU /etc/fstab)
does only allow those values.
This forbids any deployment of LVM/RAID _inside_ domU, which cannot
be created by xen-tools anyway. So the current check is fine with the
current possibilities of xen-tools, but could become a limitation.
- Is it possible/wanted to "query" xend for default device names ?
- Is it possible to create /dev/mapper devices with xend conf ?
- Can we just avoid to ask for this value and not specify the device
in /etc/fstab (and use /dev/root, /dev/by-uuid, or anything ?)
* xen-create-image --dist=... / sources.list generation should be more fine-grained * xen-create-image --dist=... / sources.list generation should be more fine-grained
@@ -79,49 +95,44 @@ Bugs to fix and features to add for 5.0
* Clean up mounts on Ctrl-C, causes error while installing otherwise: * Clean up mounts on Ctrl-C, causes error while installing otherwise:
Removing /dev/vg0/acromantula-domu1-disk - since we're forcing the Removing /dev/vg0/acromantula-domu1-disk - since we're forcing the install
install Can't remove open logical volume "acromantula-domu1-disk" Can't remove open logical volume "acromantula-domu1-disk" this should be a
this should be a matter of unmounting the mounted volume from /tmp. matter of unmounting the mounted volume from /tmp.
* Non-Interactive Password Handling
Option to generate passwords (check pwgen, apg, makepasswd, and
gpw which of them are best suited for generating complete
/etc/passwd and /etc/shadow lines). The password should be echo'ed
after installation in a way that can be easily grep'ed into other
scripts.
* Generic grub support * Generic grub support
This will generate a much nicer menu.lst as a side effect, as its This will generate a much nicer menu.lst as a side effect, as its currently
currently generated once at install, and is never updated. Installing generated once at install, and is never updated. Installing a full grub into
a full grub into the domU should update the menu.lst every time a the domU should update the menu.lst every time a new kernel is installed and
new kernel is installed and will also use the domU distro's menu.lst will also use the domU distro's menu.lst conform.
conform.
* pv-grub support
This is a ways away and will probably start with a xen-pv-grub
package.
* Move the hooks directory to /etc/xen-tools/ to officially allow * Move the hooks directory to /etc/xen-tools/ to officially allow
added and modified hooks. added and modified hooks.
* Clean up the hooks directory * Clean up the hooks directory
We still have a link farm for hooks and a meta link farm for distro Currently we have one directory for Ubuntu and Fedora named after
releases created on "make install". It probably would be better if the first supported release which is then duplicated for each
we would just have one directory per distro (like with debian) but subsequent release.
without the need to created symlinks on "make install"
Currently CentOS's 25-setup-kernel creates an fstab and
90-make-fstab does again. It works, but that cries for debugging
hell.
centos-5/25-setup-kernel centos-6/25-setup-kernel still differ and
I'm not sure if that's necessary respectively what's the common
denominator.
80-install-kernel is not yet merged into one hook script.
Common oneliners for code deduplication in the hooks/ directory:
$ find -L . -not -xtype l -not -type d -not -path '*/common/*' | sort -t / -k3
$ fdupes -r1 . | sort -t / -k3
$ find . -type f | sim_text -ipTt 50 | tac | column -t
I'm sure this won't scale forever. So to minimise code duplication
I'd like to have one common directory per distribution (e.g. called
ubuntu-common, fedora-common, debian-common, maybe even deb-common,
rpm-common or yum-common for dpkg/apt-, rpm/yum-based
distributions, etc.) with generic hooks valid for all or most of
the releases of one distribution and then one hook directory per
release (e.g. called ubuntu-10.04 or ubuntu-lucid or so) which has
symbolic links to everything which can be used unchanged from the
common directory and new files for everything which has to be
different or only there.
* Create users, add ssh pubkeys to .ssh/authorized_keys * Create users, add ssh pubkeys to .ssh/authorized_keys
@@ -129,7 +140,7 @@ Bugs to fix and features to add for 5.0
To specify a directory of public keys, parsing the hostnames To specify a directory of public keys, parsing the hostnames
parsing the usernames from the ssh comment line parsing the usernames from the ssh comment line
* More generic roles * More generic hooks
Deploy a web server or setup ssmtp directly via flag when setting up Deploy a web server or setup ssmtp directly via flag when setting up
the machine. Open to suggestions, should just be some general use-cases the machine. Open to suggestions, should just be some general use-cases
@@ -142,68 +153,9 @@ Bugs to fix and features to add for 5.0
"type" of configuration you want, and a set of options specific to "type" of configuration you want, and a set of options specific to
that flag could be parsed from xen-tools.conf that flag could be parsed from xen-tools.conf
* Refactor the code for less variants of calling cp, rm, mv, etc.
E.g. always use either cp() from File::Copy or /bin/cp, but not
both. To allow verbose copying, I (Axel) would prefer /bin/cp over
cp();
* Parse numerical parameters transparently for the user
The user shouldn't have to know weather he should specify size
as <size>G or <size>Gb or <size>. This should be parsed without
user interaction and rely on a common format.
* xen-update-image should mount /dev/pts before running apt-get
* xen-update-image should have options for using ...
... aptitude instead of apt-get
... dist-upgrade instead of upgrade
* Support cpu_weight and other features from
http://wiki.xensource.com/xenwiki/CreditScheduler
* Code Deduplication / Refactor the code for less code duplication
bin/x* currently contain the same or similar code like e.g. in the
function readConfigurationFile. This needs to be cleaned up.
* Use Perl::Critic
Stuff from Steve's TODO list / Generic TODOs Stuff from Steve's TODO list / Generic TODOs
-------------------------------------------- --------------------------------------------
* Write more test cases. * Write more test cases.
* xen-delete-image should unallocate any used IP addresses. * xen-delete-image should unallocate any used IP addresses.
Axel's Break-Backwards-Compatibility Wishlist
---------------------------------------------
* Make empty extension the default
This would ease tab completion and CLI parameter reusage with "xm
create" and friends.
* Check if we can reduce MAKEDEV invocations in hooks/common/55-create-dev
MAKEDEV std is called in any case. First comment says "Early
termination if we have a couple of common devices present should
speed up installs which use --copy/--tar" and then "We still need
to make sure the basic devices are present" and calls MAKEDEV more
often than otherwise.
Additionally the 55-create-dev for CentOS/Fedora just created
console, zero and null. zero and null are part of "MAKEDEV std",
perhaps can we reduce it to that. console is part of "MAKEDEV
generic".
Additionally the devices hda, sda and tty1 may not necessary in any
case, but instead hvc0 should be created for sure in many
cases. Nothing cares about $serial_device there either.
Current MAKEDEV implementation support more than one device as
parameter. That could reduce the MAKEDEV calls from currently six
to two.

File diff suppressed because it is too large Load Diff

View File

@@ -19,9 +19,8 @@ xen-create-nfs - Create a Xen configuration file for an NFS-root guest.
--dhcp Configure the guest to use DHCP for IP allocation. --dhcp Configure the guest to use DHCP for IP allocation.
--gateway The gateway address to use when configured with a static IP. --gateway The gateway address to use when configured with a static IP.
--hostname The hostname to configure for the guest. --hostname The hostname to configure for the guest.
--ip The IP address to use when configured with a static IP.
--netmask The netmask to use when configured with a static IP. --netmask The netmask to use when configured with a static IP.
--nameserver The nameserver to use when configured with a static IP. --ip The IP address to use when configured with a static IP.
General options: General options:
--admins Specify which users should be setup as xen-shell admins. --admins Specify which users should be setup as xen-shell admins.
@@ -84,18 +83,18 @@ Show the version number and exit.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Stéphane Jourdois --
http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -131,7 +130,7 @@ $CONFIG{ 'template' } = '/etc/xen-tools/xm-nfs.tmpl';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
# store version number away. # store version number away.
@@ -289,15 +288,14 @@ sub parseCommandLineArguments
GetOptions( GetOptions(
# Networking options # Networking options
"dhcp", \$CONFIG{ 'dhcp' }, "dhcp", \$CONFIG{ 'dhcp' },
"gateway=s", \$CONFIG{ 'gateway' }, "gateway=s", \$CONFIG{ 'gateway' },
"broadcast=s", \$CONFIG{ 'broadcast' }, "broadcast=s", \$CONFIG{ 'broadcast' },
"ip=s", \$CONFIG{ 'ip' }, "ip=s", \$CONFIG{ 'ip' },
"netmask=s", \$CONFIG{ 'netmask' }, "netmask=s", \$CONFIG{ 'netmask' },
"nameserver=s", \$CONFIG{ 'nameserver' }, "hostname=s", \$CONFIG{ 'hostname' },
"hostname=s", \$CONFIG{ 'hostname' }, "memory=s", \$CONFIG{ 'memory' },
"memory=s", \$CONFIG{ 'memory' }, "mac=s", \$CONFIG{ 'mac' },
"mac=s", \$CONFIG{ 'mac' },
# NFS options. # NFS options.
"nfs_server=s", \$CONFIG{ 'nfs_server' }, "nfs_server=s", \$CONFIG{ 'nfs_server' },
@@ -380,30 +378,6 @@ sub testArguments
die "Missing NFS root." unless ( $CONFIG{ 'nfs_root' } ); die "Missing NFS root." unless ( $CONFIG{ 'nfs_root' } );
# Shorthack to fix http://bugs.debian.org/648814 -- xen-create-nfs
# should better use xt-create-xen-config instead. Guess from where
# this code is borrowed for now...
if ( exists($CONFIG{ 'memory' }) and
defined($CONFIG{ 'memory' }) ) {
#
# The memory size: Convert Gb -> Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Gb.*$/i )
{
$CONFIG{ 'memory' } = $1 * 1024;
}
#
# Remove any trailing Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Mb.*$/i )
{
$CONFIG{ 'memory' } = $1;
}
}
# All OK. # All OK.
} }

View File

@@ -15,9 +15,12 @@ xen-delete-image - Delete previously created Xen instances.
--verbose Show diagnostic output. --verbose Show diagnostic output.
General options: General options:
--dir Specify the output directory where images were previously saved. --dir Specify the output directory where images were previously
--evms Specify the EVMS container to use. saved. (old style)
--lvm Specify the LVM volume to use. --domaindir Specify the output directory where images were previously
saved. (new style)
--lvm Specify the LVM volume to use.
--evms Specify the EVMS container to use.
Specifying hosts: Specifying hosts:
--hostname Specify the image name to delete. --hostname Specify the image name to delete.
@@ -33,7 +36,14 @@ xen-delete-image - Delete previously created Xen instances.
=over 8 =over 8
=item B<--dir> =item B<--dir>
Specify the output directory where images were previously saved. Specify the output directory where images were previously saved. Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--domaindir>
Specify the output directory where images were previously saved. Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--evms> =item B<--evms>
Specify the EVMS container where images were previously saved. Specify the EVMS container where images were previously saved.
@@ -51,7 +61,7 @@ Specify the LVM volume group where images were previously saved.
Read the manual for this script. Read the manual for this script.
=item B<--test> =item B<--test>
Do not complain, or exit, if the script is not executed by the root user. Don not complain, or exit, if the script is not executed by the root user.
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
@@ -130,19 +140,18 @@ Show the version number and exit.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Axel Beckert, http://noone.org/abe/ --
Stéphane Jourdois http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -157,7 +166,6 @@ use strict;
use English; use English;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
use File::Path;
# #
@@ -171,7 +179,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
@@ -347,6 +355,7 @@ sub parseCommandLineArguments
# Parse options. # Parse options.
# #
GetOptions( "dir=s", \$CONFIG{ 'dir' }, GetOptions( "dir=s", \$CONFIG{ 'dir' },
"domaindir=s", \$CONFIG{ 'domaindir' },
"dry-run", \$CONFIG{ 'dry-run' }, "dry-run", \$CONFIG{ 'dry-run' },
"lvm=s", \$CONFIG{ 'lvm' }, "lvm=s", \$CONFIG{ 'lvm' },
"evms=s", \$CONFIG{ 'evms' }, "evms=s", \$CONFIG{ 'evms' },
@@ -361,7 +370,6 @@ sub parseCommandLineArguments
pod2usage(1) if $HELP; pod2usage(1) if $HELP;
pod2usage( -verbose => 2 ) if $MANUAL; pod2usage( -verbose => 2 ) if $MANUAL;
if ($VERSION) if ($VERSION)
{ {
my $REVISION = '$Revision: 1.41 $'; my $REVISION = '$Revision: 1.41 $';
@@ -375,6 +383,11 @@ sub parseCommandLineArguments
exit; exit;
} }
if ($CONFIG{ 'dir' }) {
$CONFIG{ 'domaindir' } = $CONFIG{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
}
} }
@@ -403,7 +416,7 @@ sub checkArguments
# Make sure we got one and only one installation method. # Make sure we got one and only one installation method.
# #
my $count = 0; my $count = 0;
foreach my $type (qw/dir lvm evms/) foreach my $type (qw/dir domaindir lvm evms/)
{ {
$count += 1 if defined( $CONFIG{ $type } ); $count += 1 if defined( $CONFIG{ $type } );
} }
@@ -414,8 +427,9 @@ sub checkArguments
# #
if ( $count != 1 ) if ( $count != 1 )
{ {
print "Please select one and only one of the installation methods to delete the DomU:\n"; print "Please select one and only one of the installation methods:\n";
print " --dir\n"; print " --dir\n";
print " --domaindir\n";
print " --evms\n"; print " --evms\n";
print " --lvm\n"; print " --lvm\n";
exit; exit;
@@ -506,9 +520,9 @@ sub deleteXenImage
} }
if ( defined( $CONFIG{ 'dir' } ) ) if ( defined( $CONFIG{ 'domaindir' } ) )
{ {
my $prefix = $CONFIG{ 'dir' } . "/domains/"; my $prefix = $CONFIG{ 'domaindir' } . '/';
# #
# Now remove the directory. # Now remove the directory.
@@ -519,7 +533,7 @@ sub deleteXenImage
print "Would delete: $prefix$hostname\n"; print "Would delete: $prefix$hostname\n";
} else { } else {
print "Removing: " . $prefix . $hostname . "\n"; print "Removing: " . $prefix . $hostname . "\n";
rmtree( $prefix . $hostname ); rmdir( $prefix . $hostname );
} }
} }
} }

View File

@@ -58,17 +58,18 @@ Show the version number and exit.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Stéphane Jourdois --
http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -101,7 +102,7 @@ $CONFIG{ 'prefix' } = "/etc/xen";
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
@@ -238,9 +239,7 @@ sub parseCommandLineArguments
# Parse options. # Parse options.
# #
GetOptions( "test=s", \$CONFIG{ 'prefix' }, GetOptions( "test=s", \$CONFIG{ 'prefix' },
"help", \$HELP, "help", \$HELP, "manual", \$MANUAL, "version", \$VERSION );
"manual", \$MANUAL,
"version", \$VERSION );
pod2usage(1) if $HELP; pod2usage(1) if $HELP;
pod2usage( -verbose => 2 ) if $MANUAL; pod2usage( -verbose => 2 ) if $MANUAL;

View File

@@ -15,10 +15,11 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
--verbose Show diagnostic output. --verbose Show diagnostic output.
General Options: General Options:
--add Specify the amount of space to add, e.g. --add=1gb --add Specify the amount of space to add, e.g. --add=1gb
--dir Specify the path to the loopback image root. --dir Specify the path to the loopback image root. (old style)
--force Force the resize to happen without a last-chance delay. --domaindir Specify the path to the loopback image root. (new style)
--hostname Specify the hostname of the guest to resize. --force Force the resize to happen without a last-chance delay.
--hostname Specify the hostname of the guest to resize.
=cut =cut
@@ -28,10 +29,14 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
=over 8 =over 8
=item B<--add> =item B<--add>
Specify the amount of storage to add to the primary disk. Specify the amount of storage to add to the primary disk. Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--dir> =item B<--domaindir>
Specify the directory where the loopback files are based. Specify the directory where the loopback files are based. Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--force> =item B<--force>
Don't pause for 10 seconds prior to commencing. Don't pause for 10 seconds prior to commencing.
@@ -76,18 +81,18 @@ Show the version number and exit.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Axel Beckert, http://noone.org/abe/ --
http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -116,7 +121,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
@@ -143,14 +148,14 @@ testArguments();
# #
my $path = undef; my $path = undef;
if ( $CONFIG{ 'dir' } ) if ( $CONFIG{ 'domaindir' } )
{ {
# #
# Make sure we can find the disk # Make sure we can find the disk
# #
$path = $path =
$CONFIG{ 'dir' } . "/domains/" . $CONFIG{ 'hostname' } . "/disk.img"; $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . "/disk.img";
if ( !-e $path ) if ( !-e $path )
{ {
print <<EOF; print <<EOF;
@@ -301,9 +306,6 @@ sub readConfigurationFile
{ {
my ($file) = (@_); my ($file) = (@_);
# Don't read the file if it doesn't exist.
return if ( !-e $file );
open( FILE, "<", $file ) or die "Cannot read file '$file' - $!"; open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
my $line = ""; my $line = "";
@@ -395,6 +397,7 @@ sub parseCommandLineArguments
# Misc. options # Misc. options
"add=s", \$CONFIG{ 'add' }, "add=s", \$CONFIG{ 'add' },
"dir=s", \$install{ 'dir' }, "dir=s", \$install{ 'dir' },
"domaindir=s",\$install{ 'domaindir' },
"lvm=s", \$install{ 'lvm' }, "lvm=s", \$install{ 'lvm' },
"hostname=s", \$CONFIG{ 'hostname' }, "hostname=s", \$CONFIG{ 'hostname' },
"force", \$CONFIG{ 'force' }, "force", \$CONFIG{ 'force' },
@@ -429,7 +432,15 @@ sub parseCommandLineArguments
} }
if ( $install{ 'dir' } ) if ( $install{ 'dir' } )
{ {
$CONFIG{ 'dir' } = $install{ 'dir' }; $CONFIG{ 'domaindir' } = $install{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'lvm' } = undef;
delete $CONFIG{ 'lvm' };
}
if ( $install{ 'domaindir' } )
{
$CONFIG{ 'domaindir' } = $install{ 'domaindir' };
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'lvm' } = undef; $CONFIG{ 'lvm' } = undef;
delete $CONFIG{ 'lvm' }; delete $CONFIG{ 'lvm' };
} }
@@ -496,18 +507,20 @@ EOF
if ( defined( $CONFIG{ 'lvm' } ) && length( $CONFIG{ 'lvm' } ) ); if ( defined( $CONFIG{ 'lvm' } ) && length( $CONFIG{ 'lvm' } ) );
$options += 1 $options += 1
if ( defined( $CONFIG{ 'dir' } ) && length( $CONFIG{ 'dir' } ) ); if ( defined( $CONFIG{ 'dir' } ) && length( $CONFIG{ 'dir' } ) );
$options += 1
if ( defined( $CONFIG{ 'domaindir' } ) && length( $CONFIG{ 'domaindir' } ) );
# #
# Report # Report
# #
if ( $options == 0 ) if ( $options == 0 )
{ {
print "Please specify one of --lvm or --dir\n"; print "Please specify one of --lvm, --domaindir or --dir\n";
exit 1; exit 1;
} }
if ( $options > 1 ) if ( $options > 1 )
{ {
print "Please specify only one of --lvm or --dir - not both!\n"; print "Please specify only one of --lvm, --domaindir or --dir - not several of them!\n";
exit 1; exit 1;
} }

View File

@@ -14,7 +14,8 @@ xen-update-image - Update the software installed upon offline Xen images.
--version Show the version number and exit. --version Show the version number and exit.
General Options: General Options:
--dir Specify the directory which contains the image(s). --dir Specify the directory which contains the image(s). (old style)
--domaindir Specify the directory which contains the image(s). (new style)
--lvm Specify the LVM volume group which contains the image(s). --lvm Specify the LVM volume group which contains the image(s).
--evms Specify the EVMS container which contains the image(s). --evms Specify the EVMS container which contains the image(s).
@@ -27,7 +28,14 @@ xen-update-image - Update the software installed upon offline Xen images.
=over 8 =over 8
=item B<--dir> =item B<--dir>
Specify the directory which contains the image(s). Specify the directory which contains the image(s). Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--domaindir>
Specify the directory which contains the image(s). Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--evms> =item B<--evms>
Specify the EVMS container which contains the image(s). Specify the EVMS container which contains the image(s).
@@ -80,18 +88,19 @@ Show the version number and exit.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/ Steve
Stéphane Jourdois --
http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -104,7 +113,6 @@ The LICENSE file contains the full text of the license.
use strict; use strict;
use English; use English;
use File::Temp qw/ tempdir /; use File::Temp qw/ tempdir /;
use File::Copy qw/ mv cp /;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
@@ -120,7 +128,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
# #
@@ -214,7 +222,7 @@ sub updateXenImage
{ {
# The loopback image. # The loopback image.
$img = $CONFIG{ 'dir' } . "/domains/" . $name . "/disk.img"; $img = $CONFIG{ 'domaindir' } . '/' . $name . "/disk.img";
if ( !-e $img ) if ( !-e $img )
{ {
@@ -287,11 +295,6 @@ sub updateXenImage
if ( ( -e $tmp . "/usr/bin/apt-get" ) && if ( ( -e $tmp . "/usr/bin/apt-get" ) &&
( -x $tmp . "/usr/bin/apt-get" ) ) ( -x $tmp . "/usr/bin/apt-get" ) )
{ {
#
# Copy dom0's resolv.conf to domU
#
mv("$tmp/etc/resolv.conf", "$tmp/etc/resolv.conf.old") if -f "$tmp/etc/resolv.conf";
cp("/etc/resolv.conf", "$tmp/etc/resolv.conf");
# #
# Now run the update command. # Now run the update command.
@@ -305,15 +308,6 @@ sub updateXenImage
system( system(
"DEBIAN_FRONTEND=noninteractive chroot $tmp /usr/bin/apt-get upgrade --yes --force-yes" "DEBIAN_FRONTEND=noninteractive chroot $tmp /usr/bin/apt-get upgrade --yes --force-yes"
); );
#
# Restore domU's resolv.conf if needed
#
if (-f "$tmp/etc/resolv.conf") {
mv("$tmp/etc/resolv.conf.old", "$tmp/etc/resolv.conf");
} else {
unlink "$tmp/etc/resolv.conf";
}
} }
else else
{ {
@@ -451,12 +445,11 @@ sub parseCommandLineArguments
# Parse options. # Parse options.
# #
GetOptions( "dir=s", \$CONFIG{ 'dir' }, GetOptions( "dir=s", \$CONFIG{ 'dir' }, "lvm=s", \$CONFIG{ 'lvm' },
"lvm=s", \$CONFIG{ 'lvm' }, "domaindir=s", \$CONFIG{ 'dir' },
"evms=s", \$CONFIG{ 'evms' }, "evms=s", \$CONFIG{ 'evms' }, "help", \$HELP,
"help", \$HELP, "manual", \$MANUAL, "version", \$VERSION
"manual", \$MANUAL, );
"version", \$VERSION );
pod2usage(1) if $HELP; pod2usage(1) if $HELP;
pod2usage( -verbose => 2 ) if $MANUAL; pod2usage( -verbose => 2 ) if $MANUAL;
@@ -473,6 +466,11 @@ sub parseCommandLineArguments
exit; exit;
} }
if ($CONFIG{ 'dir' }) {
$CONFIG{ 'domaindir' } = $CONFIG{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
}
} }
@@ -493,7 +491,7 @@ sub checkArguments
# Make sure we got one and only one installation method. # Make sure we got one and only one installation method.
# #
my $count = 0; my $count = 0;
foreach my $type (qw/dir lvm evms/) foreach my $type (qw/dir domaindir lvm evms/)
{ {
$count += 1 if defined( $CONFIG{ $type } ); $count += 1 if defined( $CONFIG{ $type } );
} }
@@ -506,6 +504,7 @@ sub checkArguments
{ {
print "Please select one and only one of the installation methods:\n"; print "Please select one and only one of the installation methods:\n";
print " --dir\n"; print " --dir\n";
print " --domaindir\n";
print " --evms\n"; print " --evms\n";
print " --lvm\n"; print " --lvm\n";
exit; exit;

View File

@@ -104,18 +104,19 @@ xt-create-config - Create a Xen configuration file for a new guest
=cut =cut
=head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ =head1 AUTHOR
Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Steve
--
http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2012 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -150,13 +151,12 @@ my @PARTITIONS = undef;
# Default options # Default options
# #
$CONFIG{ 'template' } = '/etc/xen-tools/xm.tmpl'; $CONFIG{ 'template' } = '/etc/xen-tools/xm.tmpl';
$CONFIG{ 'extension' } = '.cfg';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
@@ -305,7 +305,6 @@ sub importPartitionsFromEnvironment
{ {
@PARTITIONS = (); @PARTITIONS = ();
return unless exists $ENV{ 'NUMPARTITIONS' };
for ( my $i = 1 ; $i <= $ENV{ 'NUMPARTITIONS' } ; $i++ ) for ( my $i = 1 ; $i <= $ENV{ 'NUMPARTITIONS' } ; $i++ )
{ {
my @parts = split( /:/, $ENV{ 'PARTITION' . $i }, 7 ); my @parts = split( /:/, $ENV{ 'PARTITION' . $i }, 7 );
@@ -334,11 +333,12 @@ sub importPartitionsFromEnvironment
sub createXenConfig sub createXenConfig
{ {
# #
# The output file we're going to process. # The output file we're going to process.
# #
my $file = my $file =
$CONFIG{ 'output' } . '/' . $ENV{ 'hostname' } . $CONFIG{ 'extension' }; $CONFIG{ 'output' } . '/' . $ENV{ 'hostname' } . $ENV{ 'extension' };
# #
# The template we're going to read from. # The template we're going to read from.
@@ -375,7 +375,7 @@ sub createXenConfig
# #
# The memory size: Convert Gb -> Mb. # The memory size: Convert Gb -> Mb.
# #
if ( $ENV{ 'memory' } =~ /^(\d+)Gb.*$/i ) if ( $ENV{ 'memory' } =~ /^(\d+)Gb*$/i )
{ {
$ENV{ 'memory' } = $1 * 1024; $ENV{ 'memory' } = $1 * 1024;
} }
@@ -383,7 +383,7 @@ sub createXenConfig
# #
# Remove any trailing Mb. # Remove any trailing Mb.
# #
if ( $ENV{ 'memory' } =~ /^(\d+)Mb.*$/i ) if ( $ENV{ 'memory' } =~ /^(\d+)Mb*$/i )
{ {
$ENV{ 'memory' } = $1; $ENV{ 'memory' } = $1;
} }
@@ -419,7 +419,7 @@ sub createXenConfig
} }
else else
{ {
$ENV{ 'image_prefix' } = "file:$ENV{'dir'}/domains/$ENV{'hostname'}/"; $ENV{ 'image_prefix' } = "file:$ENV{'domaindir'}/$ENV{'hostname'}/";
$ENV{ 'image_suffix' } = '.img'; $ENV{ 'image_suffix' } = '.img';
importPartitionsFromEnvironment(); importPartitionsFromEnvironment();
} }

View File

@@ -60,19 +60,18 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Axel Beckert, http://noone.org/abe/ --
Stéphane Jourdois http://www.steve.org.uk/
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -98,7 +97,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
@@ -227,12 +226,12 @@ sub checkArguments
{ {
print <<E_OR; print <<E_OR;
We\'re trying to configure an installation of $CONFIG{'dist'} in We're trying to configure an installation of $CONFIG{'dist'} in
$CONFIG{'location'} - but there is no hook directory for us to use. $CONFIG{'location'} - but there is no hook directory for us to use.
This means we don\'t know how to configure this installation. This means we don't know how to configure this installation.
We\'d expect the hook directory to be : $dir We'd expect the hook directory to be : $dir
Aborting. Aborting.
E_OR E_OR
@@ -323,9 +322,9 @@ sub runDistributionHooks
print "--\n"; print "--\n";
my $rc = system($cmd); my $rc = system($cmd);
if ($rc != 0) { if ($rc != 0) {
print "hook $name failed: $?\n"; print "hook $name failed: $?\n";
exit 1; exit 1;
} }
print "--\n"; print "--\n";
print "Done\n\n"; print "Done\n\n";
} }
@@ -334,9 +333,9 @@ sub runDistributionHooks
print "Running hook $name\n"; print "Running hook $name\n";
my $rc = system($cmd); my $rc = system($cmd);
if ($rc != 0) { if ($rc != 0) {
print "hook $name failed: $?\n"; print "hook $name failed: $?\n";
exit 1; exit 1;
} }
print "hook $name: done.\n"; print "hook $name: done.\n";
} }
} }

View File

@@ -2,45 +2,39 @@
=head1 NAME =head1 NAME
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and xen-guess-debian-mirror - Tries to guess the most suitable mirror and
mirror for DomUs on Debian and Ubuntu Dom0s. suite for DomUs on Debian and Ubuntu Dom0s.
=cut =cut
=head1 SYNOPSIS =head1 SYNOPSIS
--suite Show suite xen-guess-debian-mirror [-s] [-m]
--mirror Show mirror
-s show suite
-m show mirror
Shows both if no parameter is given. Shows both if no parameter is given.
Help Options:
--help Show the help information for this script.
--manual Show the manual for this script.
--version Show the version number and exit.
=cut =cut
=head1 DESCRIPTION =head1 DESCRIPTION
xt-guess-suite-and-mirror tries to find the mirror and suite the Xen xen-guess-debian-mirror tries to find the mirror and suite the Xen
Dom0 is currently using and returns them in a way suitable for Dom0 is currently using and returns them in a way suitable for
xen-create-image(1) or the backticks feature in xen-tools.conf. xen-create-image(1) or the backticks feature in xen-tools.conf.
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Axel Beckert, http://noone.org/abe/ Axel Beckert <abe@deuxchevaux.org>, http://noone.org/abe/
Stéphane Jourdois
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (C) 2010-2012 by The Xen-Tools Development Team. All rights Copyright (C) 2010 by Steve Kemp. All rights reserved.
reserved.
This module is free software; you can redistribute it and/or modify it This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. The LICENSE file contains the under the same terms as Perl itself. The LICENSE file contains the
@@ -55,9 +49,8 @@ full text of the license.
# Fallback to Debian or Ubuntu in case we can't find anything # Fallback to Debian or Ubuntu in case we can't find anything
my $fallback = 'Debian'; my $fallback = 'Debian';
# Which mirrors to use if everything else fails (cdn.debian.net uses # Which mirrors to use if everything else fails
# GeoIP, see http://wiki.debian.org/DebianGeoMirror) my %fallback_mirror = ( Debian => 'http://ftp.debian.org/debian/',
my %fallback_mirror = ( Debian => 'http://cdn.debian.net/debian/',
Ubuntu => 'http://archive.ubuntu.com/ubuntu/' ); Ubuntu => 'http://archive.ubuntu.com/ubuntu/' );
# Which suite to use if everything else fails. For Debian "stable" # Which suite to use if everything else fails. For Debian "stable"
@@ -68,8 +61,7 @@ my %fallback_suite = ( Debian => 'stable',
Ubuntu => 'lucid' ); Ubuntu => 'lucid' );
# Where to look for the sources.list to parse # Where to look for the sources.list to parse
my @sources_list_files = ( '/etc/apt/sources.list', my $sources_list_file = '/etc/apt/sources.list';
glob('/etc/apt/sources.list.d/*.list'));
use File::Slurp; use File::Slurp;
use Getopt::Long; use Getopt::Long;
@@ -81,7 +73,7 @@ use strict;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
# Init # Init
my $mirror = ''; my $mirror = '';
@@ -93,65 +85,64 @@ my $want_mirror = 0;
my $want_suite = 0; my $want_suite = 0;
my $want_version = 0; my $want_version = 0;
my $want_help = 0; my $want_help = 0;
my $want_manual = 0; my $want_usage = 0;
my $result = GetOptions( 'mirror|m' => \$want_mirror, my $result = GetOptions ('mirror' => \$want_mirror,
'suite|s' => \$want_suite, 'suite' => \$want_suite,
'version' => \$want_version, 'version' => \$want_version,
'manual' => \$want_manual, 'usage' => \$want_usage,
'help' => \$want_help ); 'help' => \$want_help);
if ($want_help) { if ($want_help) {
print "Usage: $0 [-m] [-s]\n";
exit 0;
}
if ($want_usage) {
pod2usage(0); pod2usage(0);
} }
if ($want_manual) { if (-r $sources_list_file) {
pod2usage( -verbose => 2 ); # sources.list exists, so it's something debianoid.
}
all_sources_list_files: foreach my $sources_list_file (@sources_list_files) { # read sources.list and split it into lines
if (-r $sources_list_file) { my @sources_list = read_file($sources_list_file);
# sources.list file exists, so it's something debianoid.
# read sources.list and split it into lines # Find the first line which is a Debian or Ubuntu mirror but not
my @sources_list = read_file($sources_list_file); # an updates, backports, volatile or security mirror.
foreach my $sources_list_entry (@sources_list) {
# Normalize line
chomp($sources_list_entry);
$sources_list_entry =~ s/^\s*(.*?)\s*$/$1/;
# Find the first line which is a Debian or Ubuntu mirror but not # Skip definite non-entries
# an updates, backports, volatile or security mirror. next if $sources_list_entry =~ /^\s*($|#)/;
foreach my $sources_list_entry (@sources_list) {
# Normalize line
chomp($sources_list_entry);
$sources_list_entry =~ s/^\s*(.*?)\s*$/$1/;
# Skip definite non-entries # Split up into fields
next if $sources_list_entry =~ /^\s*($|#)/; my @source_components = split(/\s+/, $sources_list_entry);
# Split up into fields # Minimum number of components is 4
my @source_components = split(/\s+/, $sources_list_entry); next if $#source_components < 3;
# Minimum number of components is 4 # Don't use deb-src entries.
next if $#source_components < 3; next if $source_components[0] eq 'deb-src';
# Don't use deb-src entries. # Skip updates, backports, volatile or security mirror.
next if $source_components[0] eq 'deb-src'; next if $source_components[2] !~ /^[a-z]+$/;
# Skip updates, backports, volatile or security mirror. if ($source_components[1] =~ m(/debian/?$|/ubuntu/?$)) {
next if $source_components[2] !~ /^[a-z]+$/; # Seems a typical mirror. Let's use that one
if ($source_components[1] =~ m(/debian/?$|/ubuntu/?$)) { $mirror = $source_components[1];
# Seems a typical mirror. Let's use that one $suite = $source_components[2];
$mirror = $source_components[1]; $found = 1;
$suite = $source_components[2]; last;
$found = 1;
last all_sources_list_files;
}
} }
} }
warn "Couldn't parse $sources_list_file of the Dom0.\n" unless $found;
} }
die "Couldn't find a useful entry in the sources.list files of the Dom0. Tried:\n ".
join("\n ", @sources_list_files)."\n" unless $found;
my $lsb_release = `which lsb_release`; my $lsb_release = `which lsb_release`;
chomp($lsb_release); chomp($lsb_release);

View File

@@ -27,7 +27,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
--config Read the specified config file in addition to the global --config Read the specified config file in addition to the global
configuration file. configuration file.
--mirror The mirror to use when installing with 'debootstrap'. --mirror The mirror to use when installing with 'debootstrap'.
--apt_proxy The proxy to use when installing with 'debootstrap'.
Installation Options: Installation Options:
--install-method Specify the installation method to use. --install-method Specify the installation method to use.
@@ -81,19 +80,18 @@ Untar a .tar file into the new installation location. This tarfile is assumed t
=cut =cut
=head1 AUTHORS =head1 AUTHOR
Steve Kemp, http://www.steve.org.uk/ Steve
Axel Beckert, http://noone.org/abe/ --
Dmitry Nedospasov, http://nedos.net/ http://www.steve.org.uk/
Stéphane Jourdois
=cut =cut
=head1 LICENSE =head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools Copyright (c) 2005-2009 by Steve Kemp. All rights reserved.
Development Team. All rights reserved.
This module is free software; This module is free software;
you can redistribute it and/or modify it under you can redistribute it and/or modify it under
@@ -118,7 +116,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.3.1'; my $RELEASE = '4.2rc1';
# #
@@ -247,6 +245,17 @@ if ( defined( $CONFIG{ 'install-method' } ) &&
exit 1; exit 1;
} }
# Do we need an URL specified as the installation source?
if ( ( $installer->{ 'needURL' } ) &&
( !$CONFIG{ 'install-source' } ||
( $CONFIG{ 'install-source' } !~ /^http/i ) ) )
{
print "Please specify the image server URL with --install-source\n";
exit 1;
}
# #
# Now we can call the appropriate handler. # Now we can call the appropriate handler.
# #
@@ -257,9 +266,16 @@ if ( defined( $CONFIG{ 'install-method' } ) &&
# #
# Test that we have some "standard" files present. # Test that we have some "standard" files present.
# #
foreach my $file (qw( /bin/ls /bin/cp ))
checkForCommonFilesInChroot($CONFIG{ 'location' }, {
"installed system"); if ( !-x $CONFIG{ 'location' } . $file )
{
print "The installation of the new system has failed.\n";
print "\n";
print "The system is missing the common file: $file\n";
exit 1;
}
}
# #
# All done. # All done.
@@ -393,10 +409,8 @@ sub parseCommandLineArguments
# Misc # Misc
"arch=s", \$CONFIG{ 'arch' }, "arch=s", \$CONFIG{ 'arch' },
"cache=s", \$CONFIG{ 'cache' }, "cache=s", \$CONFIG{ 'cache' },
"cachedir=s", \$CONFIG{ 'cachedir' },
"config=s", \$CONFIG{ 'config' }, "config=s", \$CONFIG{ 'config' },
"mirror=s", \$CONFIG{ 'mirror' }, "mirror=s", \$CONFIG{ 'mirror' },
"apt_proxy=s", \$CONFIG{ 'apt_proxy' },
# Help. # Help.
"verbose", \$CONFIG{ 'verbose' }, "verbose", \$CONFIG{ 'verbose' },
@@ -529,30 +543,6 @@ EOF
=begin doc
Check if there are some common files in some chroot
=end doc
=cut
sub checkForCommonFilesInChroot {
my ($chroot, $what) = @_;
foreach my $file (qw( /bin/ls /bin/cp ))
{
if ( !-x $chroot.$file )
{
print STDERR <<EOT;
WARNING ($0): The $what at $chroot doesn\'t seem to be a full system.
WARNING ($0): The $what is missing the common file: $file.
EOT
}
}
}
=begin doc =begin doc
A utility method to run a system command. We will capture the return A utility method to run a system command. We will capture the return
@@ -660,12 +650,6 @@ sub copyDebFiles
sub do_copy sub do_copy
{ {
#
# Check if the copy source has at least some "standard" files present.
#
checkForCommonFilesInChroot($CONFIG{ 'install-source' },
"installation source");
# #
# Find the copy command to run from the configuration file. # Find the copy command to run from the configuration file.
# #
@@ -706,18 +690,17 @@ sub do_debootstrap
# to use cdebootstrap. # to use cdebootstrap.
# #
my $cmd = $CONFIG{ 'debootstrap-cmd' }; my $cmd = $CONFIG{ 'debootstrap-cmd' };
my $cachedir = $CONFIG{ 'cachedir' };
if ( !$cmd ) if ( !$cmd )
{ {
if (-x '/usr/sbin/debootstrap') { if (-x '/usr/sbin/debootstrap') {
$cmd = '/usr/sbin/debootstrap'; $cmd = '/usr/sbin/debootstrap';
} elsif (-x '/usr/sbin/cdebootstrap') { } elsif (-x '/usr/sbin/cdebootstrap') {
$cmd = '/usr/sbin/cdebootstrap'; $cmd = '/usr/sbin/cdebootstrap';
} else { } else {
print STDERR "Found neither debootstrap nor cdebootstrap and no --debootstrap-cmd given\n"; print STDERR "Found neither debootstrap nor cdebootstrap and no --debootstrap-cmd given\n";
exit 1; exit 1;
} }
print "Using $cmd as debootstrap command\n"; print "Using $cmd as debootstrap command\n";
} }
@@ -728,16 +711,8 @@ sub do_debootstrap
if ( $CONFIG{ 'cache' } eq "yes" ) if ( $CONFIG{ 'cache' } eq "yes" )
{ {
print "\nCopying files from host to image.\n"; print "\nCopying files from host to image.\n";
unless( -d $cachedir ) {
my $xtcache = '/var/cache/xen-tools/archives/';
print("$cachedir not found, defaulting to $xtcache\n");
unless ( -d $xtcache ) {
system "mkdir -p $xtcache";
}
$cachedir = $xtcache;
}
runCommand("mkdir -p $CONFIG{'location'}/var/cache/apt/archives"); runCommand("mkdir -p $CONFIG{'location'}/var/cache/apt/archives");
copyDebFiles( "$cachedir", copyDebFiles( "/var/cache/apt/archives",
"$CONFIG{'location'}/var/cache/apt/archives" ); "$CONFIG{'location'}/var/cache/apt/archives" );
print("Done\n"); print("Done\n");
} }
@@ -759,14 +734,6 @@ sub do_debootstrap
$EXTRA .= " --arch $CONFIG{'arch'}"; $EXTRA .= " --arch $CONFIG{'arch'}";
} }
#
# Setup http_proxy so that debootstrap pulls files through the apt-proxy
#
if ( $CONFIG{ 'apt_proxy' } )
{
print("Using apt_proxy: $CONFIG{'apt_proxy'}\n");
$ENV{'http_proxy'} = $CONFIG{'apt_proxy'};
}
# #
# This is the command we'll run # This is the command we'll run
@@ -788,7 +755,7 @@ sub do_debootstrap
{ {
print "\nCopying files from new installation to host.\n"; print "\nCopying files from new installation to host.\n";
copyDebFiles( "$CONFIG{'location'}/var/cache/apt/archives", copyDebFiles( "$CONFIG{'location'}/var/cache/apt/archives",
"$cachedir" ); "/var/cache/apt/archives" );
print("Done\n"); print("Done\n");
} }
@@ -821,24 +788,7 @@ sub do_rinse
{ {
$command .= " --arch $CONFIG{'arch'}"; $command .= " --arch $CONFIG{'arch'}";
} }
else
{
my $uname_machine = `uname -m`;
chomp($uname_machine);
if ($uname_machine eq 'x86_64')
{
$command .= " --arch amd64";
}
elsif ($uname_machine =~ /^i[3-6]86$/) {
$command .= " --arch i386";
}
else
{
die "Local architecture ($uname_machine) not supported by rinse.\n".
"Please choose a supported installation architecture (i386 or amd64) explicitly."
}
}
# #
# Propogate the verbosity setting. # Propogate the verbosity setting.

11
debian/NEWS vendored
View File

@@ -1,14 +1,5 @@
xen-tools (4.2~rc1-1) unstable; urgency=low xen-tools (4.2~rc1-1) unstable; urgency=low
By default, xen-create-image now generates a random root password and
displays it as plain text at the end of the DomU generation process.
Use --genpass=0 and --passwd=1 to interactively set a root password
without the password being displayed.
-- Axel Beckert <abe@debian.org> Tue, 03 Aug 2010 16:14:42 +0200
xen-tools (4.2~beta1-1) unstable; urgency=low
If the DomU hangs with "Waiting for root file system" despite If the DomU hangs with "Waiting for root file system" despite
/dev/xvd* is used as disk device, adding "xen-blkfront" to /dev/xvd* is used as disk device, adding "xen-blkfront" to
/etc/initramfs-tools/modules and runing "update-initramfs -u" /etc/initramfs-tools/modules and runing "update-initramfs -u"
@@ -23,5 +14,5 @@ xen-tools (4.2~beta1-1) unstable; urgency=low
/etc/apt/sources.list (if it exists) and taking the first entry with /etc/apt/sources.list (if it exists) and taking the first entry with
path ending in /debian/ there. path ending in /debian/ there.
-- Axel Beckert <abe@debian.org> Sun, 30 May 2010 22:36:16 +0200 -- Axel Beckert <abe@debian.org> Sat, 15 May 2010 18:04:14 +0200

View File

@@ -9,7 +9,6 @@ $ cd xen-tools
If you just want to build the binary package, run If you just want to build the binary package, run
$ make changelog
$ dpkg-buildpackage -uc -us -b $ dpkg-buildpackage -uc -us -b
If you want to build source and binary packages, e.g. for an upload to If you want to build source and binary packages, e.g. for an upload to
@@ -19,4 +18,4 @@ $ make orig-tar-gz
$ dpkg-buildpackage $ dpkg-buildpackage
-- Axel Beckert <abe@debian.org>, Mon, 13 Sep 2010 14:30:05 +0200 -- Axel Beckert <abe@debian.org>, Mon, 17 May 2010 13:31:31 +0200

152
debian/changelog vendored
View File

@@ -1,151 +1,8 @@
xen-tools (4.3.1-1) unstable; urgency=low xen-tools (4.2~rc1-1) UNRELEASED; urgency=low
* Remove t/modules.t in upstream's t/Makefile instead of debian/rules'
clean target.
* Run t/hook-tls.t only if distribution actually has
10-disable-tls. Fixes test suite failure on 32 bit architectures.
-- Axel Beckert <abe@debian.org> Sat, 30 Jun 2012 16:44:50 +0200
xen-tools (4.3-1) unstable; urgency=low
* New upstream release
- Remove most Mercurial traces
* Fixes FTBFS due to testsuite failures (Closes: #676681)
- Disable tests of not yet used Xen::Tools. Fixes FTBFS in test suite
due to not satisifed Moose dependency in Xen::Tools::Log.
- Added build-dependencies on libmoose-perl, git, and
libtest-pod-coverage-perl for t/perl-syntax.t, t/gitignore.t, and
t/pod-coverage.t.
- Skip t/hook-inittab.t if /etc/inittab is not present on the build
host. Fixes FTBFS on Ubuntu.
* Switch to source format to "3.0 (quilt)"
* Don't remove stamp files manually, dh_clean does that already
* Remove generated file t/modules.t in clean target to be able to build
twice in a row.
-- Axel Beckert <abe@debian.org> Tue, 26 Jun 2012 22:23:59 +0200
xen-tools (4.3~rc1-1) unstable; urgency=low
* New upstream release candidate
- Correctly checks and documents valid values for
disk_device. (Closes: #621499)
- Supports creating Ubuntu 11.10 Oneiric DomUs (LP: #848654)
- Supports creating Ubuntu 12.04 Precise and 12.10 Quantal DomUs
- Supports creating CentOS 6 DomUs (Closes: #578399; Thanks Johan
Schurer)
+ Recommend rinse >= 1.9.1-1
- Supports rinse 2.0
- Updated mirror list for discontinued releases of Debian and Ubuntu
- Workaround for missing unit parsing in xen-create-nfs (Closes:
#648814)
- Fix wildcard vs regexp in memory configuration parsing.
- Fix misbehaviour if --ip option is passed multiple times (Closes:
#652110; Thanks Brian Bennett and Alexander Mette!)
- Supports /etc/apt/sources.list.d/ (Closes: #650300)
- xt-guess-suite-and-mirror exits with non-zero if no proper mirror
could be extracted from /etc/apt/sources.list or
/etc/apt/sources.list.d/*.list (Thanks Phil Frost!)
- Only attempts to generate the ssh host keys if not already present
(Closes: #607236; Thanks Vagrant Cascadian!)
- New option --apt_proxy (Closes: #610457; Thanks Alex Tomlins!)
- Always write down root partition as first physical device, otherwise
pygrub fails (Closes: #609673)
- No more expect at least one option to mkfs.* calls. Fixes btrfs
creation. (Closes: #609982)
- Fixes call to non-existent function logPrint (Closes: #673335)
- Also disable initctl in the chroot, not only start-stop-daemon
(LP: #997063; Thanks xstasi!)
- Massive code deduplication in hooks directory
- Use release blacklist for libc6-xen instead of whitelist in
hooks/debian.d/20-setup-apt
- Enforces umask 022 in 50-setup-hostname* (Hopefully closes: #619630)
* Add dependency on openssh-client for ssh-keygen (Closes: #649108)
* Use dh_auto_test for build time tests and add according
build-dependencies on devscripts and libfile-slurp-perl.
* No more suggest evms-cli -- it's no more available on any supported
Dom0 distribution. Thanks to Markus Waldeck for the hint.
* Add NEWS to debian/docs.
* Bump Standards-Version to 3.9.3 (no changes)
* Fix the following Lintian warnings:
- copyright-refers-to-symlink-license
- debian-rules-missing-recommended-target
* debian/copyright: Update copyright years
* Move xen-utils (for pygrub) from Suggests to Recommends as pygrub
becomes the necessary way to boot more and more often.
* Remove xen-shell from Recommends, nobody picked it up. (Closes:
#603708)
-- Axel Beckert <abe@debian.org> Fri, 08 Jun 2012 14:18:38 +0200
xen-tools (4.2.1-1) unstable; urgency=low
* New upstream release
- Fixes bashism in "editor" roles script. Thanks Raphaël Halimi for
the patch! (Closes: #605203)
- Fixes missing architecture check in Sarge amd64 special case. Thanks
to Guillaume Pernot! (Closes: #611397) Also changes default Sarge
amd64 mirror to http://archive.debian.org/debian-amd64/.
- Allows --ip=auto again (Closes: #611407)
- Unmounts /proc and /dev/pts of the freshly installed DomU just
before unmounting the disk image. (Closes: #588783)
-- Axel Beckert <abe@debian.org> Thu, 17 Mar 2011 01:00:47 +0100
xen-tools (4.2-1) unstable; urgency=low
* New upstream release
- Fixes several cases of broken or incomplete config files with
unexpected or seldom parameter combinations. (Closes: #484652)
- Updates examples in /etc/xen-tools.conf to better reflect current
state
- Allows usage of xvc* as serial console as used as default by older
Xen versions.
- Preliminary support for Ubuntu 11.04 (Natty) and Debian 7.0 (Wheezy)
(Closes: #597521)
- Switches default mirror for EoL'ed Ubuntu 8.10 (Intrepid) and Debian
4.0 (Etch) to the distributions' archives for old releases.
* Does no more try extract the upstream changelog during debian package
build. The commit which introduced this problem has been reverted.
Document more clearly in debian/README.source how to build the package
from a checked out copy of the git repository, especially that the
upstream changelog has to be generated first out of the VCS log.
(Closes: #595883)
* Update debian/copyright: Add Stéphane Jourdois to list of authors.
-- Axel Beckert <abe@debian.org> Tue, 05 Oct 2010 19:01:49 +0200
xen-tools (4.2~rc1-1) unstable; urgency=low
[Axel Beckert]
* New upstream release candidate
- Uses GeoIP for Debian mirrors: Default Debian mirror is now
cdn.debian.net, see http://wiki.debian.org/DebianGeoMirror for
details.
- Uses the same 15-disable-hwclock hook for Debian as for Ubuntu DomUs
(Closes: #588880)
- Mounts not only /proc but also /dev/pts automatically before running
any customisation hooks (Closes: #588783)
- Uses apt-config to parse Dom0's apt.conf. (Closes: #560011)
- Fixes wrong loop module parameter syntax in warning. Thanks to
Daniel Baumann for spotting this. (Closes: #516902)
- With --verbose, the output of commands called by xen-tools
(e.g. debootstrap) is not only logged, but also printed to
STDOUT. (Closes: #513126)
- Adds btrfs support.
* Bump Standards-Version to 3.9.1 (no changes)
[Stéphane Jourdois]
* [debian/control] Suggest btrfs-tools
-- Axel Beckert <abe@debian.org> Sun, 15 Aug 2010 19:34:38 +0200
xen-tools (4.2~beta1-1) unstable; urgency=low
* New maintainer and upstream authors * New maintainer and upstream authors
* Reintroduction into Debian Unstable (Closes: #566714) * Reintroduction into Debian Unstable (Closes: #566714)
* New upstream beta version * New upstream release candidate
- Needs dependency on libfile-slurp-perl - Needs dependency on libfile-slurp-perl
- Supports for more recent versions of Fedora, Ubuntu and Debian - Supports for more recent versions of Fedora, Ubuntu and Debian
(Closes: #499477) (Closes: #499477)
@@ -184,7 +41,8 @@ xen-tools (4.2~beta1-1) unstable; urgency=low
- Checks for debootstrap and cdebootstrap, uses debootstrap if both - Checks for debootstrap and cdebootstrap, uses debootstrap if both
are installed (Changed "Depends: debootstrap" to "Depends: are installed (Changed "Depends: debootstrap" to "Depends:
debootstrap | cdebootstrap" in debian/control) debootstrap | cdebootstrap" in debian/control)
- Added new files TODO and KNOWN_BUGS to debian/docs. - Introduces the --domaindir option as alternative to --dir which
always appends "/domains/" to the path. (Closes: #477238)
* Removal of /etc/bash_completion.d/xm from the package since * Removal of /etc/bash_completion.d/xm from the package since
bash-completion ships a more elaborate version of that file. (Closes: bash-completion ships a more elaborate version of that file. (Closes:
#566683, #550590, LP: #538917, #484098) #566683, #550590, LP: #538917, #484098)
@@ -209,7 +67,7 @@ xen-tools (4.2~beta1-1) unstable; urgency=low
the Git repository. the Git repository.
* Overhauled package description * Overhauled package description
-- Axel Beckert <abe@debian.org> Sun, 30 May 2010 22:32:30 +0200 -- Axel Beckert <abe@debian.org> Mon, 17 May 2010 13:32:04 +0200
xen-tools (4.1-1) unstable; urgency=low xen-tools (4.1-1) unstable; urgency=low

16
debian/control vendored
View File

@@ -2,17 +2,17 @@ Source: xen-tools
Section: utils Section: utils
Priority: extra Priority: extra
Maintainer: Axel Beckert <abe@debian.org> 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), libtest-pod-perl, libtext-template-perl
Standards-Version: 3.9.3 Standards-Version: 3.8.4
Homepage: http://xen-tools.org/software/xen-tools Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: http://gitorious.org/xen-tools/xen-tools Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
Package: xen-tools Package: xen-tools
Architecture: all Architecture: all
Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends}, openssh-client Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends}
Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse (>= 1.9.1-1), libexpect-perl, xen-utils Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse, xen-shell, libexpect-perl
Suggests: reiserfsprogs, xfsprogs, cfengine2, btrfs-tools Suggests: reiserfsprogs, xfsprogs, xen-utils, cfengine2, evms-cli
Description: Tools to manage Xen virtual servers Description: Tools to manage Xen virtual servers
This package contains tools to manage Debian based Xen virtual servers. This package contains tools to manage Debian based Xen virtual servers.
. .
@@ -25,7 +25,6 @@ Description: Tools to manage Xen virtual servers
* Debian 4.0 Etch * Debian 4.0 Etch
* Debian 5.0 Lenny * Debian 5.0 Lenny
* Debian 6.0 Squeeze * Debian 6.0 Squeeze
* Debian 7.0 Wheezy
* Debian Sid (Unstable) * Debian Sid (Unstable)
* Ubuntu 6.06 Dapper Drake (LTS) * Ubuntu 6.06 Dapper Drake (LTS)
* Ubuntu 6.10 Edgy Eft * Ubuntu 6.10 Edgy Eft
@@ -37,8 +36,3 @@ Description: Tools to manage Xen virtual servers
* Ubuntu 9.10 Karmic Koala * Ubuntu 9.10 Karmic Koala
* Ubuntu 10.04 Lucid Lynx (LTS) * Ubuntu 10.04 Lucid Lynx (LTS)
* Ubuntu 10.10 Maverick Meerkat * Ubuntu 10.10 Maverick Meerkat
* Ubuntu 11.04 Natty Narwhal
* Ubuntu 11.10 Oneiric Ocelot
* Ubuntu 12.04 Precise Pangolin (LTS)
* CentOS 5
* CentOS 6

7
debian/copyright vendored
View File

@@ -4,10 +4,7 @@ Tue, 20 Dec 2005 02:21:05 +0200.
It was downloaded from http://xen-tools.org/software/xen-tools/ It was downloaded from http://xen-tools.org/software/xen-tools/
Copyright 2005-2009: Steve Kemp <steve@steve.org.uk> Copyright 2005-2009: Steve Kemp <steve@steve.org.uk>
Copyright 2010-2012: The Xen-Tools Development Team, currently consisting of: Copyright 2010: Axel Beckert <abe@deuxchevaux.org>
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>
License: License:
@@ -23,5 +20,5 @@ Perl is distributed under licenses:
b) the "Artistic License" which comes with Perl. b) the "Artistic License" which comes with Perl.
On Debian GNU/Linux systems, the complete text of the GNU General On Debian GNU/Linux systems, the complete text of the GNU General
Public License can be found in /usr/share/common-licenses/GPL-1' and Public License can be found in /usr/share/common-licenses/GPL' and
the Artistic Licence in /usr/share/common-licenses/Artistic'. the Artistic Licence in /usr/share/common-licenses/Artistic'.

4
debian/docs vendored
View File

@@ -2,6 +2,4 @@ AUTHORS
README README
SUPPORT SUPPORT
BUGS BUGS
TODO TODO
KNOWN_BUGS
NEWS

7
debian/rules vendored
View File

@@ -9,9 +9,8 @@ configure-stamp:
touch configure-stamp touch configure-stamp
build: build-arch build-indep build: build-stamp
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp build-stamp: configure-stamp
dh_testdir dh_testdir
touch build-stamp touch build-stamp
@@ -20,6 +19,7 @@ clean:
dh_testdir dh_testdir
dh_testroot dh_testroot
make clean make clean
rm -f build-stamp configure-stamp
dh_clean dh_clean
install: build install: build
@@ -27,7 +27,6 @@ install: build
dh_testroot dh_testroot
dh_prep dh_prep
dh_auto_test
make manpages make manpages
make install prefix=`pwd`/debian/xen-tools make install prefix=`pwd`/debian/xen-tools

View File

@@ -1 +1 @@
3.0 (quilt) 1.0

View File

@@ -107,13 +107,13 @@ install-method = debootstrap
# (This allows you to install from a .tar.bz file, rather than a plain # (This allows you to install from a .tar.bz file, rather than a plain
# tar file, use cdebootstrap, etc.) # tar file, use cdebootstrap, etc.)
# #
# install-method = copy: # install-method=copy:
# copy-cmd = /bin/cp -a $src/* $dest # copy-cmd = /bin/cp -a $src/* $dest
# #
# install-method = debootstrap: # install-method=debootstrap:
# debootstrap-cmd = /usr/sbin/debootstrap # debootstrap-cmd=/usr/sbin/debootstrap
# #
# install-method = tar: # install-method=tar:
# tar-cmd = /bin/tar --numeric-owner -xvf $src # tar-cmd = /bin/tar --numeric-owner -xvf $src
# #
# #
@@ -130,13 +130,24 @@ memory = 128Mb # Memory size
swap = 128Mb # Swap size swap = 128Mb # Swap size
# noswap = 1 # Don't use swap at all for the new system. # noswap = 1 # Don't use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image. fs = ext3 # use the EXT3 filesystem for the disk image.
dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install. dist = `xt-guess-suite-and-mirror -s` # Default distribution to install.
image = sparse # Specify sparse vs. full disk images. image = sparse # Specify sparse vs. full disk images.
# #
# See the README for currently supported and tested distributions. You can # Currently supported and tested distributions include:
# either find it in the root directory of the unpacked source or, on Debian #
# and Ubuntu based systems, in /usr/share/doc/xen-tools/README.gz # via Debootstrap:
#
# Debian:
# sid, sarge, etch, lenny.
#
# Ubuntu:
# edgy, feisty, dapper.
#
# via Rinse:
# centos-4, centos-5.
# fedora-core-4, fedora-core-5, fedora-core-6, fedora-core-7
#
# #
@@ -149,30 +160,14 @@ image = sparse # Specify sparse vs. full disk images.
# Uncomment and adjust these network settings if you wish to give your # Uncomment and adjust these network settings if you wish to give your
# new instances static IP addresses. # new instances static IP addresses.
# #
# gateway = 192.168.1.1 # gateway = 192.168.1.1
# netmask = 255.255.255.0 # netmask = 255.255.255.0
# broadcast = 192.168.1.255 # broadcast = 192.168.1.255
# #
# Uncomment this if you wish the images to use DHCP # Uncomment this if you wish the images to use DHCP
# #
# dhcp = 1 # dhcp = 1
#
# Uncomment and adjust this setting if you wish to give your new
# instances a specific nameserver.
#
# By default, nameserver is not set, and Dom0's /etc/resolv.conf will
# be copied to guest.
#
# nameserver = 192.168.1.1
#
#
# Setup bridge name for host vif. Usefull if you use bridged networking
# for guests.
#
# bridge = xendmz
#
## ##
# Misc options # Misc options
@@ -186,41 +181,10 @@ image = sparse # Specify sparse vs. full disk images.
# #
# #
# The default cachedir is, /var/cache/apt/archives/, however if it # Uncomment the following line if you wish to interactively setup
# does not exist it will default to /var/cache/xen-tools/archives/ # a new root password for images.
# Uncomment the line below to set it to something else.
#
# cachedir = /var/cache/xen-tools/archives/
#
#
# Uncomment the following line if you wish not to generate a new root
# password for the new guest.
#
# genpass = 0
#
#
# You can also change the password length by uncommenting and
# changing the line below
#
# genpass_len = 8
#
#
# You can yet change the hashing method to encrypt the generated
# password by changing the line below.
# Valid values : md5, sha256 and sha512.
#
# hash_method = sha256
#
#
# Uncomment the following line if you wish to interactively setup a
# new root password for images.
# #
# passwd = 1 # passwd = 1
#
# #
# If you'd like all accounts on your host system which are not present # If you'd like all accounts on your host system which are not present
@@ -232,8 +196,8 @@ image = sparse # Specify sparse vs. full disk images.
# #
# Default kernel and ramdisk to use for the virtual servers # Default kernel and ramdisk to use for the virtual servers
# #
kernel = /boot/vmlinuz-`uname -r` kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r` initrd = /boot/initrd.img-`uname -r`
# #
# The architecture to use when using debootstrap, rinse, or rpmstrap. # The architecture to use when using debootstrap, rinse, or rpmstrap.
@@ -241,13 +205,13 @@ initrd = /boot/initrd.img-`uname -r`
# This is most useful on 64 bit host machines, for other systems it # This is most useful on 64 bit host machines, for other systems it
# doesn't need to be used. # doesn't need to be used.
# #
# arch = [i386|amd64] # arch=[i386|amd64]
# #
# #
# The default mirror for debootstrap to install Debian-derived distributions # The default mirror for debootstrap to install Debian-derived distributions
# #
mirror = `xt-guess-suite-and-mirror --mirror` mirror = `xt-guess-suite-and-mirror -m`
# #
# A mirror suitable for use when installing the Dapper release of Ubuntu. # A mirror suitable for use when installing the Dapper release of Ubuntu.
@@ -257,44 +221,24 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# #
# If you like you could use per-distribution mirrors, which will # If you like you could use per-distribution mirrors, which will
# be more useful if you're working in an environment where you want # be more useful if you're working in an environment where you want
# to regularly use multiple distributions. The following are the # to regularly use multiple distributions:
# default values used (for Debian the GeoIP feature is used, see
# http://wiki.debian.org/DebianGeoMirror):
# #
# mirror_sarge = http://archive.debian.org/debian # mirror_sid=http://ftp.us.debian.org/debian
# mirror_etch = http://archive.debian.org/debian # mirror_sarge=http://ftp.us.debian.org/debian
# mirror_lenny = http://archive.debian.org/debian # mirror_etch=http://ftp.us.debian.org/debian
# mirror_squeeze = http://cdn.debian.net/debian # mirror_dapper=http://archive.ubuntu.com/ubuntu
# mirror_wheezy = http://cdn.debian.net/debian # mirror_edgy=http://archive.ubuntu.com/ubuntu
# mirror_sid = http://cdn.debian.net/debian # mirror_feisty=http://archive.ubuntu.com/ubuntu
# mirror_dapper = http://old-releases.ubuntu.com/ubuntu # mirror_gutsy=http://archive.ubuntu.com/ubuntu
# mirror_edgy = http://old-releases.ubuntu.com/ubuntu
# mirror_feisty = http://old-releases.ubuntu.com/ubuntu
# mirror_gutsy = http://old-releases.ubuntu.com/ubuntu
# mirror_hardy = http://archive.ubuntu.com/ubuntu
# mirror_intrepid = http://old-releases.ubuntu.com/ubuntu
# mirror_jaunty = http://old-releases.ubuntu.com/ubuntu
# mirror_karmic = http://old-releases.ubuntu.com/ubuntu
# mirror_lucid = http://archive.ubuntu.com/ubuntu
# mirror_maverick = http://old-releases.ubuntu.com/ubuntu
# mirror_natty = http://archive.ubuntu.com/ubuntu
# mirror_oneiric = http://archive.ubuntu.com/ubuntu
# mirror_precise = http://archive.ubuntu.com/ubuntu
# mirror_quantal = http://archive.ubuntu.com/ubuntu
# If this is defined it will be used by debootstrap, and configured as the
# proxy for the guest
#
# apt_proxy =
# #
# Filesystem options for the different filesystems we support. # Filesystem options for the different filesystems we support.
# #
ext3_options = noatime,nodiratime,errors=remount-ro ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults xfs_options = defaults
reiserfs_options = defaults reiser_options = defaults
btrfs_options = defaults
# #
# Uncomment if you wish newly created images to boot once they've been # Uncomment if you wish newly created images to boot once they've been
@@ -306,7 +250,7 @@ btrfs_options = defaults
# #
# If you're using the lenny or later version of the Xen guest kernel you will # If you're using the lenny or later version of the Xen guest kernel you will
# need to make sure that you use 'hvc0' for the guest serial device, # need to make sure that you use 'hvc0' for the guest serial device,
# and 'xvdX' instead of 'sdX' for disk devices. # and 'xvdX' instead of 'sdX' for serial devices.
# #
# You may specify the things to use here: # You may specify the things to use here:
# #
@@ -330,20 +274,3 @@ btrfs_options = defaults
# output = /etc/xen # output = /etc/xen
# extension = .cfg # extension = .cfg
# #
#
# Here you can control weather your dom0's /etc/hosts file should be
# appended with the new guest, and also if your dom0's /etc/hosts file
# should be copied to the new guest.
#
# Change the following options to 1 to set them
# nohosts - don't touch the dom0's /etc/hosts file
# copyhosts - copy the dom0's /etc/hosts to the guest
#
# by default new guests ARE added to the dom0's /etc/hosts file
# nohosts = 0 # default
#
# by default the dom0's /etc/hosts IS NOT copied
# copyhosts = 0 # default
#

View File

@@ -53,17 +53,7 @@ memory = '{$memory}'
$OUT .= "disk = [\n"; $OUT .= "disk = [\n";
for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- ) for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
{ {
if ( $PARTITIONS[$i]{'mountpoint'} eq '/' ) $OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
{
$OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
}
}
for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
{
if ( $PARTITIONS[$i]{'mountpoint'} ne '/' )
{
$OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
}
} }
$OUT .= " ]\n"; $OUT .= " ]\n";
} }
@@ -73,20 +63,32 @@ memory = '{$memory}'
# Physical volumes # Physical volumes
# #
{ {
if ( ( $swap_vbd ) && ( $image_vbd ) )
{
$OUT .= "root = '/dev/$device" . "2 ro'\n";
$OUT .= "disk = [ ";
if ( $image_vbd ) if ( $image_vbd )
{ {
$OUT .= "root = '/dev/$device" . "2 ro'\n"; $OUT .= "'$image_vbd," . $device . "2,w'";
$OUT .= "disk = [\n";
$OUT .= " '$image_vbd," . $device . "2,w',\n";
if ( $swap_vbd ) }
{
$OUT .= " '$swap_vbd," . $device . "1,w',\n"; if ( $swap_vbd )
} {
$OUT .= " ]\n"; if ( $image_vbd )
{
$OUT .= ",";
}
$OUT .= "'$swap_vbd," . $device . "1,w'";
}
$OUT .= " ]\n";
} }
} }
# #
# Hostname # Hostname
# #
@@ -145,7 +147,7 @@ name = '{$hostname}'
$br = ",bridge=$bridge" $br = ",bridge=$bridge"
} }
$OUT .= "vif = [ 'ip=$ips"; $OUT .= "vif = [ 'ip=$ip1";
$OUT .= "$m"; $OUT .= "$m";
$OUT .= "$vn"; $OUT .= "$vn";
$OUT .= "$br"; $OUT .= "$br";

View File

@@ -1 +0,0 @@
../common/10-disable-tls

49
hooks/centos-4/10-disable-tls Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# This script disables TLS on the new image.
#
# 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
#
# Don't touch TLS on 64 bit platforms.
#
if [ "`uname -m`" = "x86_64" ]; then
logMessage "Ignoring TLS since we're a 64 bit host."
exit
fi
#
# Disable TLS and create an empty directory in its place
#
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled
mkdir ${prefix}/lib/tls
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/15-disable-hwclock

44
hooks/centos-4/15-setup-arch Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/sh
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
#
# Record arch, if present.
#
if [ -d $prefix/etc/rpm ]; then
logMessage Found /etc/rpm
#
# If i386 then record this
#
if [ "$arch" = "i386" ]; then
echo "i386-fedora-linux-gnu" >> $prefix/etc/rpm/platform
fi
else
logMessage Failed to find /etc/rpm
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/20-setup-yum

51
hooks/centos-4/20-setup-yum Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/sh
#
# This script sets up the Yum for CentOS4.
#
# 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
#
# DNS is probably required to run "yum update".
#
cp /etc/resolv.conf ${prefix}/etc
#
# Update yum
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum update
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/30-disable-gettys

View File

@@ -0,0 +1,58 @@
#!/bin/sh
#
# This script comments out all virtual terminals which aren't on the
# first console - that must remain so that 'xm console ...' works
# correctly.
#
# 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
#
# Do the transformation.
#
sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e 's/tty1$/hvc0/' ${prefix}/etc/inittab
#
# Are we using an alternative serial device?
#
if [ ! -z "${serial_device}" ]; then
serial_device=`basename ${serial_device}`
# Let the user know.
logMessage "Replacing default serial device (tty1) with ${serial_device}"
# replace existing device.
sed -i -e s/tty1/${serial_device}/ ${prefix}/etc/inittab
# make sure that it is allowed to login.
echo $serial_device >> ${prefix}/etc/securetty
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/35-setup-users

181
hooks/centos-4/35-setup-users Executable file
View File

@@ -0,0 +1,181 @@
#!/usr/bin/perl -w
#
# This script attempts to copy all user accounts from the host to
# the guest. It does this by copying all user accounts which are not
# already present.
#
# NOTE: Unless '--accounts' was specified upon the 'xen-create-image'
# command line we don't do this.
#
# Steve
# --
# http://www.steve.org.uk/
use strict;
use Env;
my $prefix = shift;
die "Prefix must be given" unless defined( $prefix );
die "Prefix must be a directory" unless ( -d $prefix );
#
# Exit unless the 'accounts' variable is set.
#
exit unless ( $ENV{'accounts'} );
#
# Make sure we have $prefix/etc
#
die "Prefix is missing /etc : $prefix" unless ( -d $prefix . "/etc" );
#
# Read all accounts from the installed /etc/passwd on the guest.
#
my %present;
if ( -e $prefix . "/etc/passwd" )
{
%present = readAccounts( $prefix . "/etc/passwd" );
}
#
# Now read the accounts on the host.
#
my %host = readAccounts( "/etc/passwd" );
#
# For each account not present on new installation then add it
#
foreach my $account ( sort keys( %host ) )
{
if ( ! $present{ $account } )
{
print "Adding: $account\n";
addAccount( $account );
#
# Find any groups the user is member of on the host
# and add them on the guest system
#
addGroups( $account );
}
}
#
# Read the accounts which are already present on the guest image.
#
sub readAccounts
{
my ( $file ) = ( @_ );
my %found;
open( EXISTING, "<", $file );
foreach my $line ( <EXISTING> )
{
#
# Record the userid + username
#
if ( $line =~ /^([^:]+):([^:]+):([^:]+)/ )
{
my $user = $1;
my $pass = $2;
my $uid = $3;
$found{$user} = 1;
}
}
close( EXISTING );
return( %found );
}
#
# Add the passwd + shadow accounts for the given user.
#
sub addAccount
{
my ( $user ) = ( @_ );
#
# passwd file.
#
open( PASSWD, "<", "/etc/passwd" );
foreach my $line ( <PASSWD> )
{
chomp( $line );
if ( $line =~ /^\Q$user\E:/ )
{
#
# Add the line
#
open( OUTY, ">>", $prefix . "/etc/passwd" );
print OUTY $line . "\n";
close( OUTY );
}
}
close( PASSWD );
#
# shadow file.
#
open( SHADOW, "<", "/etc/shadow" ) or die "Failed to open : $!";
foreach my $line ( <SHADOW> )
{
chomp( $line );
if ( $line =~ /^\Q$user\E:/ )
{
#
# Add the line
#
open( OUTY, ">>", $prefix . "/etc/shadow" );
print OUTY $line . "\n";
close( OUTY );
}
}
close( SHADOW );
}
#
# Find the groups a user is member of on the host, and add them to
# those groups on the new guest.
#
sub addGroups
{
my( $username ) = ( @_ );
#
# Get the groups.
#
my $groups = `groups $username`;
# split off the usernmame.
if ( $groups =~ /^([^:]+):(.*)/ )
{
$groups = $2;
print "User: $username is member of the groups: $groups\n";
}
foreach my $g ( split( / /, $groups ) )
{
# Make sure the group exists.
system( "chroot $prefix /usr/sbin/addgroup $g" );
# add the user to it.
system( "chroot $prefix /usr/sbin/adduser $username $g" );
}
}

View File

@@ -1 +0,0 @@
../common/40-setup-networking-rpm

View File

@@ -0,0 +1,99 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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
#
# Make sure we have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/50-setup-hostname-rpm

122
hooks/centos-4/50-setup-hostname Executable file
View File

@@ -0,0 +1,122 @@
#!/bin/sh
#
# This script places the new systems hostname into a couple of files within
# the new image.
#
# 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
#
# Setup the mailname + hostname files.
#
echo ${hostname} | sed 's/^\([^\.]*\)\..*/\1/' > ${prefix}/etc/hostname
echo ${hostname} > ${prefix}/etc/mailname
#
# Fixup the /etc/hosts file upon the new image for
# machines with static IPs
#
if [ -z "${dhcp}" ]; then
# Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts
# New entry.
echo "${ip1} ${hostname}" >> ${prefix}/etc/hosts
echo " " >> ${prefix}/etc/hosts
# IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts
else
#
# Stub /etc/hosts for DHCP clients.
#
cat >> ${prefix}/etc/hosts <<EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
EOF
fi
#
# Allow the host system to know the IP address of our new guest.
#
if [ -z "${dhcp}" ]; then
if ( grep ${hostname} /etc/hosts > /dev/null ) ; then
logMessage Host already has IP address for the host ${hostname}.
else
#
# Short host name.
#
name=`echo ${hostname} | awk -F. '{print $1}'`
if [ -z "${nohosts}" ]; then
logMessage Adding ${hostname} and ${name} to /etc/hosts on the host
echo "${ip1} ${hostname} ${name}" >> /etc/hosts
#
# If we've updated the /etc/hosts file on the host machine
# and there is an installation of dnsmasq installed then
# reload it.
#
# This will let the local LAN clients lookup the new address.
#
if [ -x /usr/sbin/dnsmasq ] ; then
if [ -e /var/run/dnsmasq.pid ]; then
logMessage Allowing DNSMasq to restart.
kill -s HUP `cat /var/run/dnsmasq.pid`
fi
fi
fi
fi
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/55-create-dev

53
hooks/centos-4/55-create-dev Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/sh
#
# This script ensures that the new guest images have a nicely
# populated /dev directory.
#
# 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
#
# 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
logMessage "Terminating because there appear to be files in /dev already"
exit
fi
#
# Make the device nodes.
#
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV console'
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV null'
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV zero'
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -27,8 +27,29 @@ logMessage Script $0 starting
# #
# Copy "required" files from our host. # Copy "required" files from our host.
# #
cp /etc/timezone ${prefix}/etc # NONE DONE
cp /etc/localtime ${prefix}/etc
#
# If the host has sudo then copy the configuration file, and install
# the package
#
if [ -e /etc/sudoers ]; then
logMessage Installing SUDO too.
#
# Copy file and fixup permissions.
#
cp /etc/sudoers ${prefix}/etc
chown root:root ${prefix}/etc/sudoers
chmod 440 ${prefix}/etc/sudoers
#
# Install sudo
#
installCentOS4Package ${prefix} sudo
fi
# #

View File

@@ -1 +0,0 @@
../common/65-copy-user-files

View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# Copy files from a 'skel' directory, if present, into the
# new images
#
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
#
# Copy everything from the skel directory into the new instance
# if that directory exists.
#
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 -)
logMessage Finished
else
logMessage skel directory, /etc/xen-tools/skell, not present ignoring.
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/70-install-ssh-rpm

42
hooks/centos-4/70-install-ssh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# This script installs OpenSSH upon the new system.
#
# 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 the OpenSSH server.
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/75-fixup-securetty

View File

@@ -0,0 +1,62 @@
#!/bin/sh
#
# This script ensures /etc/securetty upon the new guests has the new
# Xen console devices in it
#
# 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
#
# If the file doesn't exist exit early.
#
if [ ! -e ${prefix}/etc/securetty ]; then
logMessage /etc/securetty not found.
exit
fi
#
# Do both the devices.
#
for i in xvc0 hvc0 ; do
#
# Only append if not presnt.
#
if ( grep $i ${prefix}/etc/securetty > /dev/null ) ; then
logMessage Host already has $i entry
else
echo $i >> ${prefix}/etc/securetty
fi
done
#
# Log our finish
#
logMessage Script $0 finished.

View File

@@ -1 +0,0 @@
../common/80-install-modules-rpm

View File

@@ -0,0 +1,41 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# 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
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/90-make-fstab

116
hooks/centos-4/90-make-fstab Executable file
View File

@@ -0,0 +1,116 @@
#!/bin/sh
#
# This script is responsible for setting up /etc/fstab upon the
# new instance.
#
# This should be a simple job, but it is complicated by some of the
# differences between filesystems - some root filesystems will require
# the installation of new packages, and we have to handle that here.
#
# 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
logMessage Filesystem options are ${options}
#
# Find the root device.
#
# 1. default to xvda.
#
# 2. If --ide is specified use hda.
#
# 3. If --scsi is specified use sda.
#
# 4. Otherwise use a named $disk_device
#
device=xvda
if [ "${ide}" ]; then
device=hda
elif [ "${scsi}" ]; then
device=sda
else
if [ ! -z "${disk_device}" ]; then
device=`basename $disk_device`
fi
fi
logMessage "Root device is /dev/$device"
#
# Now we have the options we can create the fstab.
#
has_xfs=0
has_reiserfs=0
cat <<E_O_FSTAB > ${prefix}/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
E_O_FSTAB
for part in `seq 1 ${NUMPARTITIONS}`; do
eval "PARTITION=\"\${PARTITION${part}}\""
OLDIFS="${IFS}"
IFS=:
x=0
for partdata in ${PARTITION}; do
eval "partdata${x}=\"${partdata}\""
x=$(( $x+1 ))
done
IFS="${OLDIFS}"
case "${partdata2}" in
xfs)
has_xfs=1
;;
reiserfs)
has_reiserfs=1
;;
esac
if [ "${partdata2}" = "swap" ]; then
echo "/dev/${device}${part} none swap sw 0 0" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${prefix}/etc/fstab
fi
done
#
# Finally we can 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
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/99-clean-image-rpm

49
hooks/centos-4/99-clean-image Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# This script cleans the yum database on the new system.
#
# 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
#
# Clean up RPM files.
#
logMessage Cleaning .rpm* files.
find ${prefix}/ -name '*.rpmorig' -exec rm -f \{\} \;
find ${prefix}/ -name '*.rpmnew' -exec rm -f \{\} \;
#
# Clean yum
#
logMessage Cleaning Yum Repository
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum clean all
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/10-disable-tls

49
hooks/centos-5/10-disable-tls Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# This script disables TLS on the new image.
#
# 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
#
# Don't touch TLS on 64 bit platforms.
#
if [ "`uname -m`" = "x86_64" ]; then
logMessage "Ignoring TLS since we're a 64 bit host."
exit
fi
#
# Disable TLS and create an empty directory in its place
#
mv ${prefix}/lib/tls ${prefix}/lib/tls.disabled
mkdir ${prefix}/lib/tls
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/15-disable-hwclock

44
hooks/centos-5/15-setup-arch Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/sh
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
#
# Record arch, if present.
#
if [ -d $prefix/etc/rpm ]; then
logMessage Found /etc/rpm
#
# If i386 then record this
#
if [ "$arch" = "i386" ]; then
echo "i386-fedora-linux-gnu" >> $prefix/etc/rpm/platform
fi
else
logMessage Failed to find /etc/rpm
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/20-setup-yum

53
hooks/centos-5/20-setup-yum Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/sh
#
# This script sets up the Yum for CentOS4.
#
# 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
#
# DNS is probably required to run "yum update".
#
cp /etc/resolv.conf ${prefix}/etc
#
# Update yum
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum update
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1,76 +0,0 @@
#!/bin/sh
#
# This script sets up the kernel and fstab for CentOS 5.
#
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
# 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
# MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab
logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
none /dev/pts devpts mode=0620 0 0
EOF
for i in `seq 1 $NUMPARTITIONS`; do
echo -n "/dev/xvde$i " >> ${prefix}/etc/fstab
eval part=\$PARTITION$i
if [ ! -z "`echo $part | grep swap`" ]; then
echo "none swap ws 0 0" >> ${prefix}/etc/fstab
else
echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${prefix}/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
KERNELVERSION=`ls ${prefix}/boot/vmlinuz-* | sed "s#$prefix/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
# 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
default=0
timeout=5
title CentOS ($KERNELVERSION)
kernel /boot/vmlinuz-$KERNELVERSION xen_pv_hvm=enable
initrd /boot/initrd-$KERNELVERSION.img
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/30-disable-gettys

View File

@@ -0,0 +1,58 @@
#!/bin/sh
#
# This script comments out all virtual terminals which aren't on the
# first console - that must remain so that 'xm console ...' works
# correctly.
#
# 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
#
# Do the transformation.
#
sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e 's/tty1$/hvc0/' ${prefix}/etc/inittab
#
# Are we using an alternative serial device?
#
if [ ! -z "${serial_device}" ]; then
serial_device=`basename ${serial_device}`
# Let the user know.
logMessage "Replacing default serial device (tty1) with ${serial_device}"
# replace existing device.
sed -i -e s/tty1/${serial_device}/ ${prefix}/etc/inittab
# make sure that it is allowed to login.
echo $serial_device >> ${prefix}/etc/securetty
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/35-setup-users

181
hooks/centos-5/35-setup-users Executable file
View File

@@ -0,0 +1,181 @@
#!/usr/bin/perl -w
#
# This script attempts to copy all user accounts from the host to
# the guest. It does this by copying all user accounts which are not
# already present.
#
# NOTE: Unless '--accounts' was specified upon the 'xen-create-image'
# command line we don't do this.
#
# Steve
# --
# http://www.steve.org.uk/
use strict;
use Env;
my $prefix = shift;
die "Prefix must be given" unless defined( $prefix );
die "Prefix must be a directory" unless ( -d $prefix );
#
# Exit unless the 'accounts' variable is set.
#
exit unless ( $ENV{'accounts'} );
#
# Make sure we have $prefix/etc
#
die "Prefix is missing /etc : $prefix" unless ( -d $prefix . "/etc" );
#
# Read all accounts from the installed /etc/passwd on the guest.
#
my %present;
if ( -e $prefix . "/etc/passwd" )
{
%present = readAccounts( $prefix . "/etc/passwd" );
}
#
# Now read the accounts on the host.
#
my %host = readAccounts( "/etc/passwd" );
#
# For each account not present on new installation then add it
#
foreach my $account ( sort keys( %host ) )
{
if ( ! $present{ $account } )
{
print "Adding: $account\n";
addAccount( $account );
#
# Find any groups the user is member of on the host
# and add them on the guest system
#
addGroups( $account );
}
}
#
# Read the accounts which are already present on the guest image.
#
sub readAccounts
{
my ( $file ) = ( @_ );
my %found;
open( EXISTING, "<", $file );
foreach my $line ( <EXISTING> )
{
#
# Record the userid + username
#
if ( $line =~ /^([^:]+):([^:]+):([^:]+)/ )
{
my $user = $1;
my $pass = $2;
my $uid = $3;
$found{$user} = 1;
}
}
close( EXISTING );
return( %found );
}
#
# Add the passwd + shadow accounts for the given user.
#
sub addAccount
{
my ( $user ) = ( @_ );
#
# passwd file.
#
open( PASSWD, "<", "/etc/passwd" );
foreach my $line ( <PASSWD> )
{
chomp( $line );
if ( $line =~ /^\Q$user\E:/ )
{
#
# Add the line
#
open( OUTY, ">>", $prefix . "/etc/passwd" );
print OUTY $line . "\n";
close( OUTY );
}
}
close( PASSWD );
#
# shadow file.
#
open( SHADOW, "<", "/etc/shadow" ) or die "Failed to open : $!";
foreach my $line ( <SHADOW> )
{
chomp( $line );
if ( $line =~ /^\Q$user\E:/ )
{
#
# Add the line
#
open( OUTY, ">>", $prefix . "/etc/shadow" );
print OUTY $line . "\n";
close( OUTY );
}
}
close( SHADOW );
}
#
# Find the groups a user is member of on the host, and add them to
# those groups on the new guest.
#
sub addGroups
{
my( $username ) = ( @_ );
#
# Get the groups.
#
my $groups = `groups $username`;
# split off the usernmame.
if ( $groups =~ /^([^:]+):(.*)/ )
{
$groups = $2;
print "User: $username is member of the groups: $groups\n";
}
foreach my $g ( split( / /, $groups ) )
{
# Make sure the group exists.
system( "chroot $prefix /usr/sbin/addgroup $g" );
# add the user to it.
system( "chroot $prefix /usr/sbin/adduser $username $g" );
}
}

View File

@@ -1 +0,0 @@
../common/40-setup-networking-rpm

View File

@@ -0,0 +1,99 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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
#
# Make sure we have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/50-setup-hostname-rpm

119
hooks/centos-5/50-setup-hostname Executable file
View File

@@ -0,0 +1,119 @@
#!/bin/sh
#
# This script places the new systems hostname into a couple of files within
# the new image.
#
# 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
#
# Setup the mailname + hostname files.
#
echo ${hostname} | sed 's/^\([^\.]*\)\..*/\1/' > ${prefix}/etc/hostname
echo ${hostname} > ${prefix}/etc/mailname
#
# Fixup the /etc/hosts file upon the new image for
# machines with static IPs
#
if [ -z "${dhcp}" ]; then
# Non-IPv6 stuff.
grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts
# New entry.
echo "${ip1} ${hostname}" >> ${prefix}/etc/hosts
echo " " >> ${prefix}/etc/hosts
# IPv6 stuff.
grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts
else
#
# Stub /etc/hosts for DHCP clients.
#
cat >> ${prefix}/etc/hosts <<EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
EOF
fi
#
# Allow the host system to know the IP address of our new guest.
#
if [ -z "${dhcp}" ]; then
if ( grep ${hostname} /etc/hosts > /dev/null ) ; then
logMessage Host already has IP address for the host ${hostname}.
else
#
# Short host name.
#
name=`echo ${hostname} | awk -F. '{print $1}'`
if [ -z "${nohosts}" ]; then
logMessage Adding ${hostname} and ${name} to /etc/hosts on the host
echo "${ip1} ${hostname} ${name}" >> /etc/hosts
#
# If we've updated the /etc/hosts file on the host machine
# and there is an installation of dnsmasq installed then
# reload it.
#
# This will let the local LAN clients lookup the new address.
#
if [ -x /usr/sbin/dnsmasq ] ; then
if [ -e /var/run/dnsmasq.pid ]; then
logMessage Allowing DNSMasq to restart.
kill -s HUP `cat /var/run/dnsmasq.pid`
fi
fi
fi
fi
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/55-create-dev

53
hooks/centos-5/55-create-dev Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/sh
#
# This script ensures that the new guest images have a nicely
# populated /dev directory.
#
# 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
#
# 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
logMessage "Terminating because there appear to be files in /dev already"
exit
fi
#
# Make the device nodes.
#
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV console'
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV null'
chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV zero'
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1,58 @@
#!/bin/sh
#
# Copy files from a 'skel' directory, if present, into the
# new images
#
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
#
# Copy "required" files from our host.
#
# NONE DONE
#
# If the host has sudo then copy the configuration file, and install
# the package
#
if [ -e /etc/sudoers ]; then
logMessage Installing SUDO too.
#
# Copy file and fixup permissions.
#
cp /etc/sudoers ${prefix}/etc
chown root:root ${prefix}/etc/sudoers
chmod 440 ${prefix}/etc/sudoers
#
# Install sudo
#
installCentOS4Package ${prefix} sudo
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/65-copy-user-files

View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# Copy files from a 'skel' directory, if present, into the
# new images
#
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
#
# Copy everything from the skel directory into the new instance
# if that directory exists.
#
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 -)
logMessage Finished
else
logMessage skel directory, /etc/xen-tools/skell, not present ignoring.
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/70-install-ssh-rpm

42
hooks/centos-5/70-install-ssh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# This script installs OpenSSH upon the new system.
#
# 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 the OpenSSH server.
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/75-fixup-securetty

View File

@@ -0,0 +1,62 @@
#!/bin/sh
#
# This script ensures /etc/securetty upon the new guests has the new
# Xen console devices in it
#
# 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
#
# If the file doesn't exist exit early.
#
if [ ! -e ${prefix}/etc/securetty ]; then
logMessage /etc/securetty not found.
exit
fi
#
# Do both the devices.
#
for i in xvc0 hvc0 ; do
#
# Only append if not presnt.
#
if ( grep $i ${prefix}/etc/securetty > /dev/null ) ; then
logMessage Host already has $i entry
else
echo $i >> ${prefix}/etc/securetty
fi
done
#
# Log our finish
#
logMessage Script $0 finished.

View File

@@ -1 +0,0 @@
../common/80-install-modules-rpm

View File

@@ -0,0 +1,41 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# 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
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/90-make-fstab

117
hooks/centos-5/90-make-fstab Executable file
View File

@@ -0,0 +1,117 @@
#!/bin/sh
#
# This script is responsible for setting up /etc/fstab upon the
# new instance.
#
# This should be a simple job, but it is complicated by some of the
# differences between filesystems - some root filesystems will require
# the installation of new packages, and we have to handle that here.
#
# 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
logMessage Filesystem options are ${options}
#
# Find the root device.
#
# 1. default to xvda.
#
# 2. If --ide is specified use hda.
#
# 3. If --scsi is specified use sda.
#
# 4. Otherwise use a named $disk_device
#
device=xvda
if [ "${ide}" ]; then
device=hda
elif [ "${scsi}" ]; then
device=sda
else
if [ ! -z "${disk_device}" ]; then
device=`basename $disk_device`
fi
fi
logMessage "Root device is /dev/$device"
#
# Now we have the options we can create the fstab.
#
has_xfs=0
has_reiserfs=0
cat <<E_O_FSTAB > ${prefix}/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
none /dev/pts devpts mode=0620 0 0
E_O_FSTAB
for part in `seq 1 ${NUMPARTITIONS}`; do
eval "PARTITION=\"\${PARTITION${part}}\""
OLDIFS="${IFS}"
IFS=:
x=0
for partdata in ${PARTITION}; do
eval "partdata${x}=\"${partdata}\""
x=$(( $x+1 ))
done
IFS="${OLDIFS}"
case "${partdata2}" in
xfs)
has_xfs=1
;;
reiserfs)
has_reiserfs=1
;;
esac
if [ "${partdata2}" = "swap" ]; then
echo "/dev/${device}${part} none swap sw 0 0" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${prefix}/etc/fstab
fi
done
#
# Finally we can 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
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/99-clean-image-rpm

51
hooks/centos-5/99-clean-image Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/sh
#
# This script cleans the yum database on the new system.
#
# 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
#
# Clean up RPM files.
#
logMessage Cleaning .rpm* files.
find ${prefix}/ -name '*.rpmorig' -exec rm -f \{\} \;
find ${prefix}/ -name '*.rpmnew' -exec rm -f \{\} \;
#
# Clean yum
#
logMessage Cleaning Yum Repository
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum clean all
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/10-disable-tls

View File

@@ -1 +0,0 @@
../common/15-disable-hwclock

View File

@@ -1 +0,0 @@
../common/20-setup-yum

View File

@@ -1,83 +0,0 @@
#!/bin/sh
#
# This script sets up the kernel and fstab for CentOS 5.
#
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
# 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
# MAKEDEV is needed at this point
chroot ${prefix} ln -s /sbin/MAKEDEV /dev/MAKEDEV
chroot ${prefix} /sbin/MAKEDEV sda sdb sdc sdd
# Create fstab
logMessage Create /etc/fstab
cat > ${prefix}/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
none /dev/pts devpts mode=0620 0 0
EOF
for i in `seq 1 $NUMPARTITIONS`; do
echo -n "/dev/sda$i " >> ${prefix}/etc/fstab
eval part=\$PARTITION$i
if [ ! -z "`echo $part | grep swap`" ]; then
echo "none swap ws 0 0" >> ${prefix}/etc/fstab
else
echo $part | awk -F: '{print $4,$3,$5,0,1}' >> ${prefix}/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
KERNELVERSION=`ls ${prefix}/boot/vmlinuz-* | sed "s#$prefix/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
# 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
default=0
timeout=5
title CentOS ($KERNELVERSION)
kernel /boot/vmlinuz-$KERNELVERSION
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/*
# Generate a correct initrd.
chroot ${prefix} mkinitrd --with=xenblk --with=xennet --preload=xenblk --preload=xennet\
-f /boot/initramfs-$KERNELVERSION.img $KERNELVERSION
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1 +0,0 @@
../common/30-disable-gettys

View File

@@ -1 +0,0 @@
../common/35-setup-users

View File

@@ -1 +0,0 @@
../common/40-setup-networking-rpm

View File

@@ -1 +0,0 @@
../common/50-setup-hostname-rpm

View File

@@ -1 +0,0 @@
../common/55-create-dev

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