1
0
mirror of synced 2026-02-20 05:45:15 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Axel Beckert
cc2a6d4e41 Change all occurrences of $prefix in hooks and roles with $TARGET
"target" is also the name used in the debian installer for the
installation target while "prefix" is too ambiguous.
2013-04-18 21:01:19 +02:00
112 changed files with 910 additions and 1763 deletions

1
.gitignore vendored
View File

@@ -6,7 +6,6 @@
# but we _wan't_ those dot-files # but we _wan't_ those dot-files
!.gitignore !.gitignore
!.mailmap !.mailmap
!.travis.yml
# ChangeLog is generated during make # ChangeLog is generated during make
/ChangeLog /ChangeLog

View File

@@ -1,26 +0,0 @@
language: perl
perl:
- "5.20"
- "5.18"
- "5.16"
- "5.14"
- "5.12"
- "5.10"
before_install:
- sudo apt-get update
- sudo apt-get install devscripts dpkg-dev lsb-release
install:
- yes '' | cpanm --verbose --notest --skip-satisfied Data::Validate::Domain Data::Validate::IP Data::Validate::URI File::Slurp File::Which Log::Message Term::UI Test::NoTabs Test::Pod::Coverage Test::Pod Text::Template Devel::Cover::Report::Coveralls Sort::Versions
- export RELEASE_TESTING=1 AUTOMATED_TESTING=1 AUTHOR_TESTING=1 HARNESS_OPTIONS=j10:c HARNESS_TIMER=1 PATH=bin:${PERLBREW_PATH}:${PATH}
script:
- make test
after_success:
- prove --exec 'env PERL5OPT=-MDevel::Cover=-ignore_re,^(t/|/usr) perl' t/*.t
- cover -ignore_re '^(t/|/usr)' -report coveralls
notifications:
irc: "irc.lugs.ch#kivamon"

19
AUTHORS
View File

@@ -34,15 +34,9 @@ Contributions
Vagrant Cascadian <vagrant [at] org.debian> Vagrant Cascadian <vagrant [at] org.debian>
- Less redundant SSH key generation - Less redundant SSH key generation
Adrian C. (anrxc) <anrxc [at] org.sysphere>
- Hook overrides
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.
Lionel FÉLICITÉ <lfelicite [at] com clever-age>
- Bugfix for Centos 6 installation
Kevin Fullerton <kevin.fullerton [at] uk.co.shotgun-suicide> Kevin Fullerton <kevin.fullerton [at] uk.co.shotgun-suicide>
- Fixup for gentoos revised networking scripts. (dhcp) - Fixup for gentoos revised networking scripts. (dhcp)
@@ -71,9 +65,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.
Daniel Lintott <daniel [at] uk.co.serverb>
- Bugfix for Jessie and newer installations
Jorge Armando Medina <jmedina [at] com.e-compugraf> Jorge Armando Medina <jmedina [at] com.e-compugraf>
- Fix for backward compatibility with xvc0 serial consoles - Fix for backward compatibility with xvc0 serial consoles
@@ -106,9 +97,6 @@ Contributions
- CentOS 6 support - CentOS 6 support
- CentOS 5 fixes - CentOS 5 fixes
Patryk Ściborek <patryk [at] com.sciborek>
- Ubuntu-related bugfix
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 one of the former Debian package maintainers.
@@ -128,12 +116,5 @@ Contributions
Ward Vandewege <ward [at] be.pong> Ward Vandewege <ward [at] be.pong>
- Made several updates for Ubuntu support. - Made several updates for Ubuntu support.
Santiago Vila <sanvila [at] es.unex>
- Found and fixed a bunch of typos and formatting issues.
Joan <aseques [at] com.gmail>
- Bugfix for password interaction
- maxmem option
xstasi on Launchpad xstasi on Launchpad
- Proper upstart handling in the chroot - Proper upstart handling in the chroot

View File

@@ -1,6 +1,11 @@
KNOWN BUGS in xen-tools KNOWN BUGS in xen-tools
======================= =======================
Bugs to fix before next release
-------------------------------
[None so far]
Bugs to fix rather soon Bugs to fix rather soon
----------------------- -----------------------
@@ -27,3 +32,12 @@ Bugs to fix rather soon
Current (unreleased) fix is to sort by mountpoint length. Current (unreleased) fix is to sort by mountpoint length.
Fix would be to reproduce what mount does with mount `-a`. Fix would be to reproduce what mount does with mount `-a`.
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

@@ -12,9 +12,9 @@
# #
# Only used to build distribution tarballs. # Only used to build distribution tarballs.
# #
TMPDIR ?= /tmp TMP ?= /tmp
DIST_PREFIX = ${TMPDIR} DIST_PREFIX = ${TMP}
VERSION = 4.6 VERSION = 4.4~dev
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 = git
@@ -34,9 +34,7 @@ nop:
@echo " diff = See local changes." @echo " diff = See local changes."
@echo " install = Install the software" @echo " install = Install the software"
@echo " manpages = Make manpages beneath man/" @echo " manpages = Make manpages beneath man/"
@echo " tarball = Make a release tarball" @echo " release = Make a release tarball"
@echo " orig-tar-gz = Make a tarball suitably named for Debian"
@echo " release = Make a release tarball and sign it"
@echo " uninstall = Remove the software" @echo " uninstall = Remove the software"
@echo " update = Update from the source repository." @echo " update = Update from the source repository."
@echo " " @echo " "
@@ -69,7 +67,6 @@ clean:
@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 [ -d cover_db ]; then rm -rf ./cover_db; 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 cd t; $(MAKE) clean
@@ -95,7 +92,7 @@ diff:
fixup-perms: fixup-perms:
for i in hooks/*/*-*; do chmod 755 $$i; done for i in hooks/*/*-*; do chmod 755 $$i; done
chmod 755 hooks/common.sh chmod 755 hooks/common.sh
chmod 644 etc/*.conf chmod 644 etc/xen-tools.conf
chmod 644 etc/xm.tmpl chmod 644 etc/xm.tmpl
chmod 644 etc/xm-nfs.tmpl chmod 644 etc/xm-nfs.tmpl
chmod 644 misc/* chmod 644 misc/*
@@ -109,12 +106,12 @@ install-etc:
-mkdir -p ${prefix}/etc/xen-tools/skel/ -mkdir -p ${prefix}/etc/xen-tools/skel/
-mkdir -p ${prefix}/etc/xen-tools/role.d/ -mkdir -p ${prefix}/etc/xen-tools/role.d/
-mkdir -p ${prefix}/etc/xen-tools/partitions.d/ -mkdir -p ${prefix}/etc/xen-tools/partitions.d/
cp etc/*.conf ${prefix}/etc/xen-tools/ cp etc/xen-tools.conf ${prefix}/etc/xen-tools/
cp etc/xm.tmpl ${prefix}/etc/xen-tools/ cp etc/xm.tmpl ${prefix}/etc/xen-tools/
cp etc/xm-nfs.tmpl ${prefix}/etc/xen-tools/ cp etc/xm-nfs.tmpl ${prefix}/etc/xen-tools/
cp partitions/*-* ${prefix}/etc/xen-tools/partitions.d/ cp partitions/*-* ${prefix}/etc/xen-tools/partitions.d/
-mkdir -p ${prefix}/usr/share/bash-completion/completions/ -mkdir -p ${prefix}/etc/bash_completion.d/
cp misc/xen-tools.bash-completion ${prefix}/usr/share/bash-completion/completions/xen-tools cp misc/xen-tools.bash-completion ${prefix}/etc/bash_completion.d/xen-tools
-mkdir -p ${prefix}/etc/initramfs-tools/conf.d/ -mkdir -p ${prefix}/etc/initramfs-tools/conf.d/
cp misc/xen-tools.initramfs-tools ${prefix}/etc/initramfs-tools/conf.d/xen-tools cp misc/xen-tools.initramfs-tools ${prefix}/etc/initramfs-tools/conf.d/xen-tools
@@ -180,13 +177,9 @@ install-hooks:
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d squeeze.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d squeeze.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d wheezy.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d wheezy.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d jessie.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d jessie.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d stretch.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d sid.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d sid.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d unstable.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d testing.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d testing.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d stable.d -cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d stable.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d oldstable.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s debian.d oldoldstable.d
mkdir -p ${prefix}/usr/share/xen-tools/gentoo.d/ mkdir -p ${prefix}/usr/share/xen-tools/gentoo.d/
cp -R hooks/gentoo/*-* ${prefix}/usr/share/xen-tools/gentoo.d cp -R hooks/gentoo/*-* ${prefix}/usr/share/xen-tools/gentoo.d
mkdir -p ${prefix}/usr/share/xen-tools/dapper.d/ mkdir -p ${prefix}/usr/share/xen-tools/dapper.d/
@@ -208,11 +201,6 @@ install-hooks:
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d saucy.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d trusty.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d utopic.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d vivid.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d wily.d
cp hooks/common.sh ${prefix}/usr/share/xen-tools cp hooks/common.sh ${prefix}/usr/share/xen-tools
cp -r hooks/common ${prefix}/usr/share/xen-tools cp -r hooks/common ${prefix}/usr/share/xen-tools
@@ -250,39 +238,39 @@ manpages:
# #
# Make a new release tarball, and make a GPG signature. # Make a new release tarball, and make a GPG signature.
# #
release: orig-tar-gz release: tidy fixup-perms update-version update-modules clean changelog
gpg --armour --detach-sign ../$(BASE)-$(VERSION).tar.gz
git tag -s -m "Release as $(VERSION)" "release-$(VERSION)"
tarball: test tidy fixup-perms update-version update-modules clean changelog
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION) rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)
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)/cover_db
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 -9nv $(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
# #
# Make a new orig.tar.gz for the Debian package # Make a new orig.tar.gz for the Debian package
# #
orig-tar-gz: tarball orig-tar-gz: release
cp -p ../$(BASE)-$(VERSION).tar.gz ../$(BASE)_$(DEBVERSION).orig.tar.gz cp -p ../$(BASE)-$(VERSION).tar.gz ../$(BASE)_$(DEBVERSION).orig.tar.gz
cp -p ../$(BASE)-$(VERSION).tar.gz.asc ../$(BASE)_$(DEBVERSION).orig.tar.gz.asc
# #
# Run the test suite. # Run the test suite.
# #
test: non-author-test author-test test: update-modules
non-author-test: update-modules
prove --shuffle t/ prove --shuffle t/
author-test:
prove xt/ #
# Run the test suite verbosely.
#
test-verbose:
prove --shuffle --verbose t/
# #
@@ -310,8 +298,6 @@ uninstall:
rm -f ${prefix}/usr/bin/xen-create-nfs rm -f ${prefix}/usr/bin/xen-create-nfs
rm -f ${prefix}/usr/bin/xt-guess-suite-and-mirror rm -f ${prefix}/usr/bin/xt-guess-suite-and-mirror
rm -f ${prefix}/etc/xen-tools/xen-tools.conf rm -f ${prefix}/etc/xen-tools/xen-tools.conf
rm -f ${prefix}/etc/xen-tools/distributions.conf
rm -f ${prefix}/etc/xen-tools/mirrors.conf
rm -f ${prefix}/etc/xen-tools/xm.tmpl rm -f ${prefix}/etc/xen-tools/xm.tmpl
-rm -rf ${prefix}/etc/xen-tools/skel -rm -rf ${prefix}/etc/xen-tools/skel
-rmdir ${prefix}/etc/xen-tools/ -rmdir ${prefix}/etc/xen-tools/

View File

@@ -1,228 +1,3 @@
xen-tools 4.6 (released 20 Jul 2015)
====================================
New Features and Major Changes
------------------------------
* Drop all occurrences of apt's `--force-yes` parameter. It only
forces the installation of untrusted packages and that's
unwanted. (Closes Debian bug report #776487)
* Support passing commandline options with `--debootstrap-cmd`.
* Use MD5 as default hash method again, to be able to properly set
passwords in older releases. Does not affect passwords changed later
inside the DomU.
* Split off hardcoded release code names list and default mirrors in
`xen-create-image` into separate configuration file which are parsed
before the default settings or command-line options are set.
* Report all SSH fingerprints of the created DomU, not only RSA ones.
* Support VLANs with Open vSwitch (GH-2). Thanks to Félix Barbeira for
the patch.
New Options
-----------
* `--keyring` (xen-create-image, xt-install-image)
* `--vlan` (xen-create-image)
Distribution Releases Changes
-----------------------------
* Debian 9 Stretch (preliminary support)
* Ubuntu 15.10 Wily Werewolf (preliminary support; not yet suported by
debootstrap, see Debian bug report #787117)
* Ubuntu 12.04 Lucid Lynx is now EoL.
* Ubuntu 14.10 Utopic Unicorn is now EoL.
Improvements
------------
* Make test suite support as-installed-testing.
* Multiple release workflow improvements (target `release` in
`Makefile`).
* Supports `unstable`, `oldstable` and `oldoldstable` as distribution
names, too. (`oldoldstable` is not yet supported by debootstrap, see
Debian feature request #792734 in debootstrap.)
Bug Fixes
---------
* Fix usage of nonexistent variable in `removeDebianPackage` (Closes
Debian bug report #774936) Thanks Lukas Schwaighofer!
* Allows `#` within configuration file comments. (Closes Debian bug
report #783060; thanks Jean-Michel Nirgal Vourgère for the bug
report and patch!)
* Use `-o APT::Install-Recommends=false` instead of
`--no-install-recommends` for backwards compatibility with older APT
versions which don't know either (but accept any `Foo=Bar` parameter
to `-o`). Allows one to install earlier Debian releases (e.g. Etch)
with the default configuration again.
* Pass `--yes` to `lvcreate` only if LVM version is 2.02.99 or
higher. Fixes regression introduced with 4.5 by the fix for Debian
bug report #754517.
Other Changes
-------------
* Change all occurrences of `http.debian.net` to
`httpredir.debian.org`.
* Installs bash completion into `/usr/share/bash-completion/` (fixes
lintian warning `package-install-into-obsolete-dir`)
* Testsuite: Optimize and clean up modules.sh.
* Split up test suite in functionality/compatibility tests (`t`) and
author/release tests (`xt`).
* New example script helpful for release testing.
xen-tools 4.5 (released 25 Oct 2014)
====================================
New Features and Major Changes
------------------------------
* Apply patch by Adrian C. (anrxc) to allow to override hooks in
`/usr/share/xen-tools/*.d/` with hooks in `/etc/xen-tools/hooks.d/`.
Distribution Releases Changes
-----------------------------
* Ubuntu 14.10 Utopic Unicorn.
* Ubuntu 15.04 Vivid Vervet (preliminary support)
* Mark Ubuntu 13.10 Saucy Salamander as EoL
Improvements
------------
* Use `686-pae` kernels instead of `686` kernels on Debian Wheezy and
later. Thanks to Daniel Lintott! (Closes Debian bug report #742778)
* Pass `-y` option ("assume yes") to `yum` (Closes Debian bug report
#735675) Thanks Lionel FÉLICITÉ!
Bug Fixes
---------
* Fix always empty gateway on Debian DomUs (Thanks Joan! LP: #1328794)
* Fix `lvcreate` awaiting user input when creating swap LV (Closes
Debian bug report #754517) Thanks Eric Engstrom!
* Fix missing quoting in shell function `assert` in `hooks/common.sh`.
* Fix initial configuration summary in cases where `pygrub` is used.
* Fix corner cases where not the latest kernel would have been
checked.
* `--password` overrides `--genpass`. (Closes Debian bug report
#764143) Based on patch by Santiago Vila.
* Fix unaligned maxmem output of xen-create-image. (Closes Debian bug
report #764126; Patch by Santiago Vila)
* Fix copy & paste errors in comments in typos in `roles/puppet`
(Closes Debian bug report #764134; Patch by Santiago Vila)
* Fix typos in POD of `xen-create-image` (Closes Debian bug report
#764153; Patch by Santiago Vila)
Other Changes
-------------
* Drop all xend related sanity checks, they cause more havoc nowadays
than they help. Thanks Ian Campbell! (Closes Debian bug report
#732456)
* pygrub detection: Prefer `/usr/lib/xen-default` over `/usr/lib/xen-x.y`.
* Add password length sanity check with fallback to default length.
* Raise default password length from 8 to 23.
* Flush output after each line in `runCommand()`.
* `Makefile`: Clean up coverage data in multiple targets.
xen-tools 4.4 (released 11 Dec 2013)
====================================
Listing includes changes of according beta releases.
New Features and Major Changes
------------------------------
* Preliminary support for `xl` toolstack
* Ships `/etc/initramfs-tools/conf.d/xen-tools` for generating Dom0
initrds also suitable for DomU usage. Trigger `update-initramfs`.
* Installs a legacy `grub` in all `pygrub` based Debian/Ubuntu DomUs
to be able to update the `menu.list` automatically.
* `hooks/common.sh`: `installDebianPackage` no more installs
recommends, use `installDebianPackageAndRecommends` for that from
now on.
* `hooks/common.sh`: Rename `installCentOS4Package` to
`installRPMPackage`. Add `installCentOS4Package` wrapper for
backward compatibility.
* Better documents and checks requirements for the `--apt_proxy`
value. (See #623443 for the corresponding apt issue.) Requires now
`Data::Validate::URI`.
* Uses now `Data::Validate::Domain` and `Data::Validate::IP` for IP
addresses and hostname checks.
Newly Supported Distribution Releases
-------------------------------------
* Debian 8 Jessie
* Ubuntu 13.04 Raring
* Ubuntu 13.10 Saucy (preliminary support; debootstrap doesn't have
support for Saucy at the time of writing)
Improvements
------------
* Also recognize "M" and "G" instead of "MB" and "GB" as size unit for
`--memory`. Also document the recognized units. (Closes Debian bug
report #691320)
* `xen-list-images` now also outputs the file name of the config file.
* `xen-list-images` and `xen-delete-image` now understand `--extension`.
* Makefile accepts `DESTDIR=…`
* Move examples from debian/examples to examples.
* Adds default mount options for ext4, identical to ext2/ext3.
* By default install `linux-image-virtual` instead of
`linux-image-server` on Ubuntu Intrepid and newer (Hopefully closes:
#640099, LP #839492)
* Makes some options (like `--pygrub`) negatable.
* Rework "minimal" role to be less based on personal preferences:
* No more installs sudo, vim, syslog-ng, etc.
* Fixes usage together with pygrub.
Bug Fixes
---------
* Fix symbolic link hooks/centos-6/15-setup-arch (Closes Debian bug
report #690299)
* Execute END block not on --version/--help/--manual (Closes Debian
bug #684346)
* Move code for `--boot` feature to `END` block. Fixes missing SSH
fingerprint display if `--boot` was used. (Closes Debian bug report
#679183)
* Correctly handle aborts in `END` block. (Closes Debian bug report
#704882)
* Fixes `--extension=` with empty parameter.
* Sarge amd64 case handle properly
* `xt-install-image`: Don't bail out if only `cdebootstrap` is
installed but not `debootstrap` (Thanks Elmar Heeb!)
* Fix filesystem tools installation in `91-install-fs-tools` (which
was broken since 4.3~rc1-1) by merging `91-install-fs-tools back`
into `90-make-fstab`. (Closes Debian bug report #715340) Also
supports RPM-based distributions now.
* Fixes creation of `ARRAY(0x#).log` named log files.
Other Changes
-------------
* Code deduplication to unify the `xen-*-image` scripts
* Moves `/usr/lib/xen-tools/` to `/usr/share/xen-tools/`
* Use `http.debian.net` as default Debian mirror if no mirror is given
and `xt-guess-suite-and-mirror` is not used.
* Default DomUs to use the noop scheduler (Closes Debian bug report
#693131)
* Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from
within Bash.
* Uses `Test::NoTabs` instead of its own test for that.
* Removes unused Perl modules `Xen::Tools` and `Xen::Tools::Log` from
source code. Also removes the according tests from the test
suite. No more needs `Moose`.
xen-tools 4.3.1 (released 30-Jun-2012) xen-tools 4.3.1 (released 30-Jun-2012)
====================================== ======================================
@@ -232,28 +7,6 @@ Bugfix Release only
xen-tools 4.3 (released 26-Jun-2012) xen-tools 4.3 (released 26-Jun-2012)
==================================== ====================================
Listing includes changes of according beta releases.
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
Bug Fixes Bug Fixes
--------- ---------
@@ -266,6 +19,30 @@ Other Changes
* Remove most Mercurial traces * 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) xen-tools 4.2.1 (released 17 Mar 2011)
====================================== ======================================
@@ -288,11 +65,11 @@ New Options
New Features and Major Changes New Features and Major Changes
------------------------------ ------------------------------
* Uses `hvc0` and `xvda` devices by default * Uses hvc0 and xvda devices by default
* Also supports `cdebootstrap` * Also supports cdebootstrap
* Preliminary btrfs support. * Preliminary btrfs support.
* Uses GeoIP for Debian mirrors: Default Debian mirror is now * Uses GeoIP for Debian mirrors: Default Debian mirror is now
`cdn.debian.net`, see http://wiki.debian.org/DebianGeoMirror for cdn.debian.net, see http://wiki.debian.org/DebianGeoMirror for
details. details.
* New helper program `xt-guess-suite-and-mirror`, used to find the * New helper program xt-guess-suite-and-mirror, used to find the
default mirror and suite. default mirror and suite.

View File

@@ -1,13 +1,10 @@
xen-tools xen-tools
========= =========
[![Travis CI Build Status](https://api.travis-ci.org/xen-tools/xen-tools.svg)](https://travis-ci.org/xen-tools/xen-tools)
* [Homepage](http://www.xen-tools.org/software/xen-tools) * [Homepage](http://www.xen-tools.org/software/xen-tools)
* Git Repositories: * Git Repository:
* [at GitLab](http://gitlab.com/xen-tools/xen-tools) * [at Gitorious](http://gitorious.org/xen-tools)
* [at GitHub](http://github.com/xen-tools/xen-tools) * [at GitHub](http://github.com/xtaran/xen-tools)
* [at Gitorious](http://gitorious.org/xen-tools) (_outdated_, no more updated, for historical reference only)
* [Mailing Lists](http://www.xen-tools.org/software/xen-tools/lists.html) * [Mailing Lists](http://www.xen-tools.org/software/xen-tools/lists.html)
About About
@@ -17,7 +14,7 @@ xen-tools contains a collection of Perl scripts for working with Xen
guest images under Linux. guest images under Linux.
Using this software, you can easily create new Using this software, you can easily create new
[Xen](http://www.xen.org/) guests configured to be accessible over the [Xen](http://www.xen.org) guests configured to be accessible over the
network via [OpenSSH](http://www.openssh.org/). network via [OpenSSH](http://www.openssh.org/).
xen-tools currently has scripts to install most releases of xen-tools currently has scripts to install most releases of
@@ -33,12 +30,11 @@ known to work reliably, i.e.:
* Sarge 3.1 (i386 and DomU only) * Sarge 3.1 (i386 and DomU only)
* Etch 4.0 (Dom0 no more tested) * Etch 4.0 (Dom0 no more tested)
* Lenny 5.0 (Dom0 no more tested) * Lenny 5.0
* Squeeze 6.0 (Dom0 no more tested) * Squeeze 6.0
* Wheezy 7 * Wheezy 7.0
* Jessie 8 * Jessie 8.0 (preliminary support as it's not yet available)
* Stretch 9 (under development) * Sid (works at least at the moment of writing :-)
* Sid (always under development; works at least at the moment of writing :-)
### Ubuntu ### Ubuntu
@@ -58,14 +54,7 @@ known to work reliably, i.e.:
* Oneiric Ocelot 11.10 * Oneiric Ocelot 11.10
* Precise Pangolin 12.04 * Precise Pangolin 12.04
* Quantal Quetzal 12.10 * Quantal Quetzal 12.10
* Raring Ringtail 13.04 * Raring Ringtail 13.04 (preliminary support as it's not yet available)
* Saucy Salamander 13.10
* Trusty Tahr 14.04 (LTS)
* Utopic Unicorn 14.10
* Vivid Vervet 15.04
* Wily Werewolf 15.10 (under development, not yet suported by
debootstrap, see [#787117][3], but adding a symbolic link from
`/usr/share/debootstrap/scripts/wily` to `gutsy` suffices.)
[1]: http://bugs.debian.org/659360 [1]: http://bugs.debian.org/659360
"debootstrap in Wheezy can no more build Ubuntu Edgy or earlier" "debootstrap in Wheezy can no more build Ubuntu Edgy or earlier"
@@ -73,9 +62,6 @@ known to work reliably, i.e.:
[2]: http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest [2]: http://www.linux-vserver.org/Installing_Ubuntu_8.04_Hardy_as_guest
"There is an issue with debootstrap on hardy not installing ksyslogd." "There is an issue with debootstrap on hardy not installing ksyslogd."
[3]: https://bugs.debian.org/787117
"debootstrap: missing wily"
### CentOS ### CentOS
(only DomUs tested, pygrub support incomplete) (only DomUs tested, pygrub support incomplete)
@@ -97,22 +83,11 @@ Requirements
To use these tools you'll need the following software: To use these tools you'll need the following software:
* [debootstrap](http://packages.debian.org/debootstrap) * [debootstrap](http://packages.debian.org/debootstrap)
* Perl and the following Perl modules * Perl
* [Config::IniFiles](http://metacpan.org/release/Config-IniFiles) * The Perl module [Text::Template](http://search.cpan.org/dist/Text-Template/)
([Debian Package libconfig-inifiles-perl](http://packages.debian.org/libconfig-inifiles-perl))
* [Text::Template](http://metacpan.org/release/Text-Template)
([Debian Package libtext-template-perl](http://packages.debian.org/libtext-template-perl)) ([Debian Package libtext-template-perl](http://packages.debian.org/libtext-template-perl))
* [Data::Validate::Domain](http://metacpan.org/release/Data-Validate-Domain) * The Perl module [Config::IniFiles](http://search.cpan.org/dist/Config-IniFiles/)
([Debian Package libdata-validate-domain-perl](http://packages.debian.org/libdata-validate-domain-perl)) ([Debian Package libconfig-inifiles-perl](http://packages.debian.org/libconfig-inifiles-perl))
* [Data::Validate::IP](http://metacpan.org/release/Data-Validate-IP)
([Debian Package libdata-validate-ip-perl](http://packages.debian.org/libdata-validate-ip-perl))
* [Data::Validate::URI](http://metacpan.org/release/Data-Validate-URI)
([Debian Package libdata-validate-uri-perl](http://packages.debian.org/libdata-validate-uri-perl))
* [File::Slurp](http://metacpan.org/release/File-Slurp)
([Debian Package libfile-slurp-perl](http://packages.debian.org/libfile-slurp-perl))
* [File::Which](http://metacpan.org/release/File-Which)
([Debian Package libfile-which-perl](http://packages.debian.org/libfile-which-perl))
* and some more modules which are part of the Perl core and hence do not need to be installed separately.
* 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
@@ -129,7 +104,7 @@ project.
Installation Installation
------------ ------------
As root or with sudo, execute `make install`. As root or with sudo, execute `make instal`.
See `debian/README.source` how to build the Debian package from a 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 checked out copy of the git repository (i.e. without a source tar
@@ -199,26 +174,6 @@ image.
* The script should only be used for Xen instances of Debian or a * The script should only be used for Xen instances of Debian or a
Debian-derived distribution. Debian-derived distribution.
Version Numbering Scheme
------------------------
Since release 4.4, the version numbering scheme of xen-tools tries to
comply with the [Semantic Versioning](http://semver.org/)
specification, with the only exception that trailing zeroes are
omitted.
Between the releases 3.9 and 4.4, the version numbering scheme
followed roughly the same ideas, but less strict.
Test Suite Coverage
-------------------
[![Coverage Status](https://coveralls.io/repos/xen-tools/xen-tools/badge.svg?branch=master)](https://coveralls.io/r/xen-tools/xen-tools?branch=master)
Despite parts of the test suite are quite old, it only tests a small
fraction of what xen-tools can do. Some of the scripts currently could
only be tested on an actual Xen Dom0. Hence the
[code coverage of xen-tools' test suite is quite bad](https://coveralls.io/r/xen-tools/xen-tools).
-- --
The Xen-Tools Developer Team The Xen-Tools Developer Team

View File

@@ -3,38 +3,15 @@ TODO
See KNOWN_BUGS.markdown for real bugs. See KNOWN_BUGS.markdown for real bugs.
General Ideas
-------------
* Support per-distribution-release defaults for at least the file
system.
* Add an option named `--apt-options` or similar to pass arbitrary APT
options via installDebianPackage() and friends. The reasoning behind
this idea is in
[this mail](http://xen-tools.org/pipermail/xen-tools-discuss/2015-June/001103.html)
and the following mails on the xen-tools-discuss mailing list.
* Add keys in keyring given by `--keyring` to APT's keyring inside the
DomU by adding it with `apt-key add`.
Bugs to fix and features to add for 5.0 Bugs to fix and features to add for 5.0
--------------------------------------- ---------------------------------------
* Switch build-system to autotools or something CPANish.
* `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 * Set Fail in more situations where the script has clearly failed
i.e.: lvm exists i.e.: lvm exists
* Roles overhaul
* Remove udev role. No more makes sense. udev gets pulled in by
kernels where necessary.
* 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
@@ -68,7 +45,7 @@ Bugs to fix and features to add for 5.0
* `xen-create-image --dist=…` / sources.list generation should be more fine-grained * `xen-create-image --dist=…` / sources.list generation should be more fine-grained
xen-tools should offer the possibility to enable/disable xen-tools should offer the possibility to enable/disable
security/volatile/backports/lts as well as security/volatile/backports as well as
contrib/non-free/universe/restricted/multiverse for each of them not contrib/non-free/universe/restricted/multiverse for each of them not
only based on defaults plus the Dom0's sources.list only based on defaults plus the Dom0's sources.list
@@ -96,6 +73,12 @@ Bugs to fix and features to add for 5.0
* LVM snapshot support as an install source. * LVM snapshot support as an install source.
* Clean up mounts on `Ctrl-C`, causes error while installing otherwise:
Removing /dev/vg0/acromantula-domu1-disk - since we're forcing the
install Can't remove open logical volume "acromantula-domu1-disk"
this should be a matter of unmounting the mounted volume from /tmp.
* 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
@@ -182,6 +165,11 @@ Bugs to fix and features to add for 5.0
* Make used Xen toolstack configurable, i.e. via --xen-toolstack=xl * Make used Xen toolstack configurable, i.e. via --xen-toolstack=xl
* 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.
* Unify --debug and --dumpconfig. Likely make --debug exit * Unify --debug and --dumpconfig. Likely make --debug exit
gracefully. Document --debug if --dumpconfig is removed. gracefully. Document --debug if --dumpconfig is removed.
@@ -194,6 +182,8 @@ Bugs to fix and features to add for 5.0
distributions the same. Currently Debian is a special case and distributions the same. Currently Debian is a special case and
Ubuntu half a special case. Ubuntu half a special case.
* Replace findBinary() with File::Which
* Remove from the (unused) Xen::Tools what's already in the used * Remove from the (unused) Xen::Tools what's already in the used
Xen::Tools::Common. Xen::Tools::Common.
@@ -204,18 +194,6 @@ Bugs to fix and features to add for 5.0
`xen-create-image` first. Which probably both would be a good `xen-create-image` first. Which probably both would be a good
idea. idea.
* Replace several occurences of backticks with runCommand. (Mostly
mount commands in `xen-update-image`. The calls to uname or
lsb_release should be fine.)
* Make default source installation work on non-debianesk systems, e.g.
either don't use xt-guess-suite-and-mirror in xen-tools.conf or make
it work with e.g. Fedora.
* Error messages triggered by xenRunning should rather say something
about "known to the Xen system" instead of "running". See
https://bugs.debian.org/703606
Stuff from Steve's TODO list / Generic TODOs Stuff from Steve's TODO list / Generic TODOs
-------------------------------------------- --------------------------------------------
@@ -260,14 +238,10 @@ Axel's Break-Backwards-Compatibility Wishlist
Maybe add some `--autostart` or such. Maybe add some `--autostart` or such.
* Maybe replace findBinary with File::Which
* MAC addresses should no more depend on the distribution. * MAC addresses should no more depend on the distribution.
* Let the admin switch between MAC addresses based on XenSource's OUI, * Let the admin switch between MAC addresses based on XenSource's OUI,
its organisation's own OUI or locally administrated MAC addresses. its organisation's own OUI or locally administrated MAC addresses.
See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses
* More radical Code Deduplication
`bin/x*` currently still contain similar code like e.g. in the
function parseCommandLineArguments. This should be cleaned up, too,
but may need a bigger redesign.

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-create-image - Easily create new Xen instances with networking and OpenSSH. xen-create-image - Easily create new Xen instances with networking and OpenSSH.
@@ -124,9 +122,6 @@ and EVMS EXAMPLE.
--(no)keep (Don't) keep our images if installation fails. It --(no)keep (Don't) keep our images if installation fails. It
maybe unmounted, though. maybe unmounted, though.
--keyring=/path/to/keyring
Set the path to the keyring debootstrap should use.
--kernel=/path/to/kernel --kernel=/path/to/kernel
Set the path to the kernel to use for domU. If a Set the path to the kernel to use for domU. If a
kernel is specified it must exist. kernel is specified it must exist.
@@ -137,13 +132,6 @@ and EVMS EXAMPLE.
"MB", "G" and "GB" (case does not matter). If there's "MB", "G" and "GB" (case does not matter). If there's
no unit given, megabytes are assumed. no unit given, megabytes are assumed.
--maxmem=size
Setup the maximum amount of memory that can be allocated
to the new instance. As suffix recognized size units are "M",
"MB", "G" and "GB" (case does not matter). If there's
no unit given, megabytes are assumed.
Required for dynamic memory ballooning.
--modules=/path/to/modules --modules=/path/to/modules
Set the path to the kernel modules to use for domU. Set the path to the kernel modules to use for domU.
If modules are specified they must exist. If modules are specified they must exist.
@@ -154,6 +142,9 @@ and EVMS EXAMPLE.
used the system will not have a swap entry added to used the system will not have a swap entry added to
its /etc/fstab file either. its /etc/fstab file either.
--no-xen-ok Don't complain if xen seems not installed or xend is
not running. (Needed for the testsuite.)
--output=dir Specify the output directory to create the xen --output=dir Specify the output directory to create the xen
configuration file within. configuration file within.
@@ -167,7 +158,6 @@ and EVMS EXAMPLE.
--password=passphrase --password=passphrase
Set the root password for the new guest. Set the root password for the new guest.
Note: This overrides --genpass
--(no)passwd (Don't) ask for a root password interactively during --(no)passwd (Don't) ask for a root password interactively during
setup. NOTE: This overrides --genpass --password. setup. NOTE: This overrides --genpass --password.
@@ -245,18 +235,17 @@ and EVMS EXAMPLE.
--mirror=url Setup the mirror to use when installing via --mirror=url Setup the mirror to use when installing via
debootstrap. (Default value: mirror used in debootstrap. (Default value: mirror used in
/etc/apt/sources.list or for Debian /etc/apt/sources.list or for Debian
"http://httpredir.debian.org/debian/" and for Ubuntu "http://http.debian.net/debian/" and for Ubuntu
"http://archive.ubuntu.com/ubuntu/") "http://archive.ubuntu.com/ubuntu/")
The above mentioned Debian mirror hostname The above mentioned Debian mirror hostname
automatically tries to choose a more or less close automatically tries to choose a more or less close
Debian mirror. See http://httpredir.debian.org/ for Debian mirror. See http://http.debian.net/ for
details. details.
--apt_proxy=protocol://hostname:port/ --apt_proxy=url
Specify a proxy to be used by debootstrap, and within Specify a proxy to be used by debootstrap, and within
the guest. Needs the same syntax as APT's the guest.
Acquire::http::Proxy. See apt.conf(5).
--template=tmpl --template=tmpl
Specify which template file to use when creating the Specify which template file to use when creating the
@@ -308,9 +297,6 @@ and EVMS EXAMPLE.
Optionally, set a specific vif name for the new Optionally, set a specific vif name for the new
instance. instance.
--vlan=1 OpenvSwitch related, optionally you can specify a vlan
where the virtual machine has connectivity.
Mandatory options: Mandatory options:
@@ -429,7 +415,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
size = 2Gb # Disk image size. size = 2Gb # Disk image size.
image = full # Allocate the full disk size immediately. image = full # Allocate the full disk size immediately.
memory = 128Mb # Memory size memory = 128Mb # Memory size
maxmem = 512Mb # Memory size
swap = 128Mb # Swap size swap = 128Mb # Swap size
fs = ext3 # use EXT3 filesystems fs = ext3 # use EXT3 filesystems
dist = stable # Default distribution to install. dist = stable # Default distribution to install.
@@ -682,7 +667,7 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
=head1 ROLES =head1 ROLES
Currently there are some roles scripts included which work for Currently there are some roles scripts included which work for
the Debian and Ubuntu distributions only. They are included the Debian and Ubuntu distrubtions only. They are included
primarily as examples of the kind of things you could accomplish. primarily as examples of the kind of things you could accomplish.
The supplied scripts are: The supplied scripts are:
@@ -746,7 +731,7 @@ Install an X11 server, using VNC and XDM
Role scripts are invoked with the directory containing the Role scripts are invoked with the directory containing the
installed system as their first argument, and anything passed installed system as their first argument, and anything passed
as a role-arg will be passed along as additional arguments. as a role-arg will be passed allong as additional arguments.
NOTE: Role scripts are invoked before the config file generation. NOTE: Role scripts are invoked before the config file generation.
If you need access to the config file from within your role, If you need access to the config file from within your role,
@@ -803,17 +788,10 @@ use Env;
use File::Path qw/ mkpath /; use File::Path qw/ mkpath /;
use File::Temp qw/ tempdir /; use File::Temp qw/ tempdir /;
use File::Copy qw/ mv cp /; use File::Copy qw/ mv cp /;
use File::Slurp;
use File::Which; use File::Which;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
use Data::Dumper; use Data::Dumper;
use Data::Validate::URI qw/ is_uri /;
use Data::Validate::IP qw/ is_ipv4 /;
use Data::Validate::Domain qw/ is_hostname /;
use Term::UI;
use Term::ReadLine;
use Sort::Versions;
use Xen::Tools::Common; use Xen::Tools::Common;
@@ -824,18 +802,6 @@ use Xen::Tools::Common;
my %CONFIG; my %CONFIG;
#
# Distribution meta data
#
my %DIST;
#
# Mirror meta data
#
my %MIRROR;
# #
# Partition layout information values read from the partitions file, # Partition layout information values read from the partitions file,
# or constructed automatically if no partitions file is specified. # or constructed automatically if no partitions file is specified.
@@ -859,7 +825,7 @@ my $MOUNT_POINT = undef;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# #
@@ -874,28 +840,11 @@ my $IP_ADDRESSES = '';
my $PASSWORD = ''; my $PASSWORD = '';
#
# Define some fallback password length
#
my $default_genpass_len = 23;
# Minor helpers for reducing code duplication # Minor helpers for reducing code duplication
sub fail ($) { fail_with_config($_[0], \%CONFIG); } sub fail ($) { fail_with_config($_[0], \%CONFIG); }
sub logprint ($) { logprint_with_config($_[0], \%CONFIG); } sub logprint ($) { logprint_with_config($_[0], \%CONFIG); }
#
# Read the global distributions meta data file.
#
readConfigurationFile("/etc/xen-tools/distributions.conf", \%DIST);
#
# Read the global default mirrors file.
#
readConfigurationFile("/etc/xen-tools/mirrors.conf", \%MIRROR);
# #
# Setup default options. # Setup default options.
# #
@@ -1194,11 +1143,11 @@ E_O_ERROR
# Check that all the binaries have been installed properly # Check that all the binaries have been installed properly
# #
my @required = my @required =
qw(xt-customize-image xt-install-image xt-create-xen-config); qw ( / xt-customize-image xt-install-image xt-create-xen-config / );
foreach my $bin (@required) foreach my $bin (@required)
{ {
if ( !defined( which($bin) ) ) if ( !defined( findBinary($bin) ) )
{ {
logprint( "The script '$bin' was not found.\nAborting\n\n" ); logprint( "The script '$bin' was not found.\nAborting\n\n" );
$CONFIG{'FAIL'} = 1; $CONFIG{'FAIL'} = 1;
@@ -1231,6 +1180,95 @@ EOF
exit 127; exit 127;
} }
} }
#
# Test the system has a valid (network-script) + (vif-script) setup.
#
testXenConfig();
}
=begin doc
Test that the current Xen host has a valid network configuration,
this is designed to help newcomers to Xen.
=end doc
=cut
sub testXenConfig
{
# wierdness.
return if ( !-d "/etc/xen" );
#
# Temporary hash.
#
my %cfg;
#
# Read the configuration file.
#
open( CONFIG, "<", "/etc/xen/xend-config.sxp" ) or
fail("Failed to read /etc/xen/xend-config.sxp: $!");
while (<CONFIG>)
{
next if ( !$_ || !length($_) );
# vif
if ( $_ =~ /^\(vif-script ([^)]+)/ )
{
$cfg{ 'vif-script' } = $1;
}
# network
if ( $_ =~ /^\(network-script ([^)]+)/ )
{
$cfg{ 'network-script' } = $1;
}
}
close(CONFIG);
if ( !defined( $cfg{ 'network-script' } ) ||
!defined( $cfg{ 'vif-script' } ) )
{
print <<EOF;
WARNING
-------
You appear to have a missing vif-script, or network-script, in the
Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able
to use any networking!
EOF
}
else
{
if ( ( $cfg{ 'network-script' } =~ /dummy/i ) ||
( $cfg{ 'vif-script' } =~ /dummy/i ) )
{
print <<EOF;
WARNING
-------
You appear to have a "dummy" vif-script, or network-script, setting
in the Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able to
use any networking!
EOF
}
}
} }
@@ -1281,32 +1319,28 @@ sub setupDefaultOptions
# Default distribution is Debian Stable # Default distribution is Debian Stable
$CONFIG{ 'dist' } = 'stable'; $CONFIG{ 'dist' } = 'stable';
$CONFIG{ 'mirror' } = ''; $CONFIG{ 'mirror' } = '';
$CONFIG{ 'keyring' } = '';
# Initialize per distribution mirror defaults # Initialize per distribution mirror defaults: Debian
foreach my $debdist (keys %DIST) { foreach my $debdist (qw(squeeze wheezy jessie sid testing oldstable stable unstable)) {
my $debdistinfo = $DIST{$debdist}; $CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian';
foreach my $dist (qw(debian ubuntu)) { }
if ($debdistinfo =~ /$dist/) { foreach my $debdist (qw(sarge etch lenny)) {
if ($debdistinfo =~ /eol/) { $CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian-archive/debian';
$CONFIG{ 'mirror_'.$debdist } = $MIRROR{$dist.'_archive'} or }
die $dist.'_archive not defined in /etc/xen-tools/mirrors.conf'; # Initialize per distribution mirror defaults: Ubuntu
my $removed_keys = "/usr/share/keyrings/$dist-archive-removed-keys.gpg"; foreach my $ubuntudist (qw(hardy lucid oneiric precise quantal raring)) {
$CONFIG{ 'keyring_'.$debdist } = $removed_keys if -s $removed_keys; $CONFIG{ 'mirror_'.$ubuntudist } = 'http://archive.ubuntu.com/ubuntu';
} else { }
$CONFIG{ 'mirror_'.$debdist } = $MIRROR{$dist} or foreach my $ubuntudist (qw(dapper edgy feisty gutsy intrepid jaunty karmic maverick natty)) {
die $dist.' not defined in /etc/xen-tools/mirrors.conf'; $CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu';
}
}
}
} }
$CONFIG{ 'apt_proxy' } = ''; $CONFIG{ 'apt_proxy' } = '';
$CONFIG{ 'arch' } = $CONFIG{ 'arch' } =
which('dpkg') ? `dpkg --print-architecture` : ''; which('dpkg') ? `dpkg --print-architecture` : '';
chomp($CONFIG{ 'arch' }); chomp($CONFIG{ 'arch' });
$CONFIG{ 'fs' } = 'ext3'; $CONFIG{ 'fs' } = 'ext3';
$CONFIG{ 'force' } = 0; $CONFIG{ 'force' } = 0;
$CONFIG{ 'no_xen_ok' } = 0;
$CONFIG{ 'install' } = 1; $CONFIG{ 'install' } = 1;
$CONFIG{ 'hooks' } = 1; $CONFIG{ 'hooks' } = 1;
$CONFIG{ 'partitions' } = ''; $CONFIG{ 'partitions' } = '';
@@ -1329,9 +1363,9 @@ sub setupDefaultOptions
# Default values for passwords # Default values for passwords
# #
$CONFIG{ 'genpass' } = 1; $CONFIG{ 'genpass' } = 1;
$CONFIG{ 'genpass_len' } = $default_genpass_len; $CONFIG{ 'genpass_len' } = 8;
$CONFIG{ 'password' } = undef; $CONFIG{ 'password' } = '';
$CONFIG{ 'hash_method' } = 'md5'; $CONFIG{ 'hash_method' } = 'sha256';
# #
# The program to run to create a filesystem. # The program to run to create a filesystem.
@@ -1387,8 +1421,8 @@ sub checkOption
# Define argument types # Define argument types
my %types = ( my %types = (
integerWithSuffix => { integerWithSuffix => {
check => qr/^[0-9.]+[GM]B?$/i, check => qr/^[0-9.]+[GMk]B?$/i,
message => "takes a suffixed (mb, MB, G, etc.) integer.\n", message => "takes a suffixed (mb, MB, G, k, etc.) integer.\n",
}, },
distribution => { distribution => {
check => sub { -d "/usr/share/xen-tools/$_[0].d" }, check => sub { -d "/usr/share/xen-tools/$_[0].d" },
@@ -1416,15 +1450,15 @@ sub checkOption
message => "must be a disk device (xvd[a-z]+, sd[a-z]+).\n", message => "must be a disk device (xvd[a-z]+, sd[a-z]+).\n",
}, },
ipv4 => { ipv4 => {
check => sub { is_ipv4($_[0]) }, check => qr/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
message => "must be valid IPv4.\n", message => "must be valid IPv4.\n",
}, },
ipv4_or_auto => { ipv4_or_auto => {
check => sub { is_ipv4($_[0]) or $_[0] eq 'auto' }, check => qr/^(?:auto|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$/,
message => "must be valid IPv4 or the keyword 'auto'.\n", message => "must be valid IPv4 or the keyword 'auto'.\n",
}, },
hostname => { hostname => {
check => sub { is_hostname($_[0]) }, check => qr/^[a-z0-9][a-z0-9.-]{0,254}$/i,
message => "must be a valid hostname.\n", message => "must be a valid hostname.\n",
}, },
supportedFs => { supportedFs => {
@@ -1455,14 +1489,6 @@ sub checkOption
check => qr/^md5|sha256|sha512$/i, check => qr/^md5|sha256|sha512$/i,
message => "must be md5, sha256 or sha512.\n", message => "must be md5, sha256 or sha512.\n",
}, },
uri => {
check => sub { is_uri($_[0]) },
message => "must be an URI including the protocol\n",
},
vlan => {
check => qr/^([1-9][0-9]{0,2}|10[01][0-9]|102[0-4])$/i,
message => "must be a number between 1 and 1024.\n",
},
); );
# Define what argument each option accepts. # Define what argument each option accepts.
@@ -1473,9 +1499,7 @@ sub checkOption
swap => 'integerWithSuffix', swap => 'integerWithSuffix',
image => 'imageType', image => 'imageType',
memory => 'integerWithSuffix', memory => 'integerWithSuffix',
maxmem => 'integerWithSuffix',
kernel => 'existingFile', kernel => 'existingFile',
keyring => 'existingFile',
initrd => 'existingFile', initrd => 'existingFile',
modules => 'existingDir', modules => 'existingDir',
serial_device => 'serialDev', serial_device => 'serialDev',
@@ -1499,8 +1523,6 @@ sub checkOption
mac => 'mac', mac => 'mac',
ip => 'ipv4_or_auto', ip => 'ipv4_or_auto',
hash_method => 'hashMethod', hash_method => 'hashMethod',
apt_proxy => 'uri',
vlan => 'vlan',
); );
# If given option does not exists in optionsTypes, # If given option does not exists in optionsTypes,
@@ -1574,7 +1596,6 @@ sub parseCommandLineArguments
"noswap", \&checkOption, "noswap", \&checkOption,
"image=s", \&checkOption, "image=s", \&checkOption,
"memory=s", \&checkOption, "memory=s", \&checkOption,
"maxmem=s", \&checkOption,
"vcpus=i", \&checkOption, "vcpus=i", \&checkOption,
# Locations # Locations
@@ -1583,7 +1604,6 @@ sub parseCommandLineArguments
"kernel=s", \&checkOption, "kernel=s", \&checkOption,
"initrd=s", \&checkOption, "initrd=s", \&checkOption,
"mirror=s", \&checkOption, "mirror=s", \&checkOption,
"keyring=s", \&checkOption,
"apt_proxy=s", \&checkOption, "apt_proxy=s", \&checkOption,
"modules=s", \&checkOption, "modules=s", \&checkOption,
"lvm=s", \$install{ 'lvm' }, "lvm=s", \$install{ 'lvm' },
@@ -1611,7 +1631,6 @@ sub parseCommandLineArguments
"nameserver=s", \&checkOption, "nameserver=s", \&checkOption,
"vifname=s", \&checkOption, "vifname=s", \&checkOption,
"p2p=s", \&checkOption, "p2p=s", \&checkOption,
"vlan=s", \&checkOption,
# Exclusive # Exclusive
# #
@@ -1637,17 +1656,17 @@ sub parseCommandLineArguments
"pygrub!", \$CONFIG{ 'pygrub' }, "pygrub!", \$CONFIG{ 'pygrub' },
"passwd!", \$CONFIG{ 'passwd' }, "passwd!", \$CONFIG{ 'passwd' },
"genpass=i", \&checkOption, "genpass=i", \&checkOption,
"genpass-len=i",\&checkOption, "genpass-len=i", \&checkOption,
"genpass_len=i",\&checkOption, "genpass_len=i", \&checkOption,
"password=s", \&checkOption, "password=s", \&checkOption,
"hash_method=s",\&checkOption, "hash_method=s",\&checkOption,
"partitions=s", \&checkOption, "partitions=s", \&checkOption,
"role=s", \&checkOption, "role=s", \&checkOption,
"role-args=s", \&checkOption, "role-args=s", \&checkOption,
"finalrole=s", \&checkOption, "finalrole=s", \&checkOption,
"roledir=s", \&checkOption, "roledir=s", \&checkOption,
"force!", \$CONFIG{ 'force' }, "force!", \$CONFIG{ 'force' },
"no-xen-ok", sub { warn "Option --no-xen-ok is deprecated and ignored."; }, "no-xen-ok", \$CONFIG{ 'no_xen_ok' },
"keep!", \$CONFIG{ 'keep' }, "keep!", \$CONFIG{ 'keep' },
"template=s", \&checkOption, "template=s", \&checkOption,
"output=s", \&checkOption, "output=s", \&checkOption,
@@ -1798,7 +1817,7 @@ sub checkArguments
# #
# Lucid and probably all later Ubuntus, too, don't work without pygrub # Lucid and probably all later Ubuntus, too, don't work without pygrub
# #
if ( $DIST{ $CONFIG{ 'dist' } } =~ /pygrub/ ) if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal|raring/ )
{ {
$CONFIG{ 'pygrub' } = 1; $CONFIG{ 'pygrub' } = 1;
} }
@@ -1825,17 +1844,6 @@ sub checkArguments
$CONFIG{ 'mirror' } = $CONFIG{ $distMirror }; $CONFIG{ 'mirror' } = $CONFIG{ $distMirror };
} }
#
# If no keyring is set, use the default per-distro keyring if present
#
my $distKeyring = "keyring_" . $CONFIG{ 'dist' };
if ( !$CONFIG{ 'keyring' } and
$CONFIG{ $distKeyring } and
length( $CONFIG{ $distKeyring } ) )
{
$CONFIG{ 'keyring' } = $CONFIG{ $distKeyring };
}
# #
# NOTE: FAKE! # NOTE: FAKE!
# #
@@ -2257,7 +2265,7 @@ sub checkBinariesPresent
foreach my $file (@required) foreach my $file (@required)
{ {
if ( !defined( which($file) ) ) if ( !defined( findBinary($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -2273,7 +2281,7 @@ sub checkBinariesPresent
{ {
# loopback image # loopback image
if ( !defined( which("dd") ) ) if ( !defined( findBinary("dd") ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\tdd\n"); logprint("\tdd\n");
@@ -2294,7 +2302,7 @@ sub checkBinariesPresent
foreach my $file (@evms) foreach my $file (@evms)
{ {
if ( !defined( which($file) ) ) if ( !defined( findBinary($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -2314,7 +2322,7 @@ sub checkBinariesPresent
foreach my $file (@lvm) foreach my $file (@lvm)
{ {
if ( !defined( which($file) ) ) if ( !defined( findBinary($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -2620,29 +2628,19 @@ sub showSummary
logprint("Image type : $CONFIG{'image'}\n"); logprint("Image type : $CONFIG{'image'}\n");
logprint("Memory size : $CONFIG{'memory'}\n"); logprint("Memory size : $CONFIG{'memory'}\n");
if ( defined( $CONFIG{ 'maxmem' } ) ) if ( defined( $CONFIG{ 'kernel' } ) && length( $CONFIG{ 'kernel' } ) )
{ {
logprint("Max mem size : $CONFIG{'maxmem'}\n"); logprint("Kernel path : $CONFIG{'kernel'}\n");
} }
if ( exists( $CONFIG{ 'pygrub' } ) && if ( defined( $CONFIG{ 'modules' } ) && length( $CONFIG{ 'modules' } ) )
$CONFIG{ 'pygrub' } ) { {
logprint("Bootloader : pygrub\n"); logprint("Module path : $CONFIG{'modules'}\n");
} else { }
if ( defined( $CONFIG{ 'kernel' } ) && length( $CONFIG{ 'kernel' } ) )
{
logprint("Kernel path : $CONFIG{'kernel'}\n");
}
if ( defined( $CONFIG{ 'modules' } ) && length( $CONFIG{ 'modules' } ) ) if ( defined( $CONFIG{ 'initrd' } ) && length( $CONFIG{ 'initrd' } ) )
{ {
logprint("Module path : $CONFIG{'modules'}\n"); logprint("Initrd path : $CONFIG{'initrd'}\n");
}
if ( defined( $CONFIG{ 'initrd' } ) && length( $CONFIG{ 'initrd' } ) )
{
logprint("Initrd path : $CONFIG{'initrd'}\n");
}
} }
logprint("\nNetworking Information\n"); logprint("\nNetworking Information\n");
@@ -2777,7 +2775,6 @@ EOF
$CONFIG{ 'gateway' } && logprint("Gateway : $CONFIG{'gateway'}\n"); $CONFIG{ 'gateway' } && logprint("Gateway : $CONFIG{'gateway'}\n");
$CONFIG{ 'nameserver' } && logprint("Nameserver : $CONFIG{'nameserver'}\n"); $CONFIG{ 'nameserver' } && logprint("Nameserver : $CONFIG{'nameserver'}\n");
$CONFIG{ 'p2p' } && logprint("Point to Point : $CONFIG{'p2p'}\n"); $CONFIG{ 'p2p' } && logprint("Point to Point : $CONFIG{'p2p'}\n");
$CONFIG{ 'vlan' } && logprint("VLAN : $CONFIG{'vlan'}\n");
print "\n"; print "\n";
} }
@@ -3060,7 +3057,8 @@ sub createLVMBits
# Delete if forcing # Delete if forcing
if ( $CONFIG{ 'force' } ) if ( $CONFIG{ 'force' } )
{ {
unless ( xenRunning($CONFIG{ 'hostname' }, \%CONFIG)) { if ( $CONFIG{ 'no_xen_ok' } or
!xenRunning($CONFIG{ 'hostname' }, \%CONFIG)) {
logprint( logprint(
"Removing $lvm_disk - since we're forcing the install\n"); "Removing $lvm_disk - since we're forcing the install\n");
runCommand("lvremove --force $lvm_disk", \%CONFIG); runCommand("lvremove --force $lvm_disk", \%CONFIG);
@@ -3078,31 +3076,6 @@ sub createLVMBits
} }
} }
#
# For the calls to lvcreate below, we first need to check for the
# version of LVM running as their have been incompatible API
# changes somewhere between "2.02.95(2) (2012-03-06)" in Debian 7
# Wheezy and "2.02.111(2) (2014-09-01)" in Debian 8 Jessie. *sigh*
#
# See https://bugs.debian.org/754517
#
# I currently assume that all LVM version starting with 2.02.99
# should be fine with passing --yes as that version has an
# upstream changelog entry "Accept --yes in all commands so test
# scripts can be simpler".
#
# Assumes --yes is necessary if the LVM version can't be parsed.
my $lvm_needs_yes = 1;
my $lvm_version_output = `lvm version`;
if ($lvm_version_output =~ /^\s*LVM\s*version:\s*(\d[.\d]*)[\s(]/) {
my $lvm_version = $1;
my $no_yes_below_version = '2.02.99';
$lvm_needs_yes =
versioncmp($lvm_version, $no_yes_below_version) >= 0;
}
foreach my $partition (@PARTITIONS) foreach my $partition (@PARTITIONS)
{ {
my $disk = $CONFIG{ 'hostname' } . '-' . $partition->{ 'name' }; my $disk = $CONFIG{ 'hostname' } . '-' . $partition->{ 'name' };
@@ -3118,9 +3091,7 @@ sub createLVMBits
# The commands to create the volume. # The commands to create the volume.
# #
my $disk_cmd = my $disk_cmd =
"lvcreate $CONFIG{'lvm'} ". "lvcreate $CONFIG{'lvm'} -L $partition->{'size'} -n $disk";
($lvm_needs_yes ? '--yes' : '').
" -L $partition->{'size'} -n $disk";
# #
# Create the volume # Create the volume
@@ -3325,7 +3296,7 @@ sub createFilesystem
# #
my ($binary, $args) = split(/ /, $command, 2); my ($binary, $args) = split(/ /, $command, 2);
if ( !defined( which($binary) ) ) if ( !defined( findBinary($binary) ) )
{ {
logprint( logprint(
"The binary '$binary' required to create the filesystem $fs is missing\n" "The binary '$binary' required to create the filesystem $fs is missing\n"
@@ -3490,14 +3461,6 @@ sub installSystem
$cmd .= " --arch=$CONFIG{'arch'}"; $cmd .= " --arch=$CONFIG{'arch'}";
} }
#
# Propagate --keyring
#
if ( $CONFIG{ 'keyring' } )
{
$cmd .= " --keyring=$CONFIG{'keyring'}";
}
# #
# Propagate --debootstrap-cmd if install-method is debootstrap # Propagate --debootstrap-cmd if install-method is debootstrap
@@ -3505,7 +3468,7 @@ sub installSystem
if ( $CONFIG{ 'install-method' } eq 'debootstrap' and if ( $CONFIG{ 'install-method' } eq 'debootstrap' and
$CONFIG{ 'debootstrap-cmd' } ) $CONFIG{ 'debootstrap-cmd' } )
{ {
$cmd .= " --debootstrap-cmd='$CONFIG{'debootstrap-cmd'}'"; $cmd .= " --debootstrap-cmd=$CONFIG{'debootstrap-cmd'}";
} }
@@ -3953,19 +3916,7 @@ sub setupRootPassword
{ {
if ( -x $MOUNT_POINT . "/usr/bin/passwd" ) if ( -x $MOUNT_POINT . "/usr/bin/passwd" )
{ {
my $tryagain = 1; runCommand("chroot $MOUNT_POINT /usr/bin/passwd", \%CONFIG);
my $term = Term::ReadLine->new('Password change failed');
while ($tryagain) {
my $rc = system("chroot $MOUNT_POINT /usr/bin/passwd");
if ($rc >> 8) {
$tryagain = $term->ask_yn(
prompt => 'Do you want to try to change the password again??',
default => 'y',
);
} else {
$tryagain=0;
}
}
} }
else else
{ {
@@ -3984,17 +3935,13 @@ sub setupRootPassword
# #
# Generate a password, salt and use that to generating a hash # Generate a password, salt and use that to generating a hash
# #
if ( defined( $CONFIG{ 'password' } ) ) if ( $CONFIG{ 'genpass' } )
{
$PASSWORD = $CONFIG { 'password' };
}
elsif ( $CONFIG{ 'genpass' } )
{ {
$PASSWORD = generatePassword( $CONFIG{ 'genpass_len' } ); $PASSWORD = generatePassword( $CONFIG{ 'genpass_len' } );
} }
else else
{ {
fail("oops... neither passwd nor password nor genpass are set, should not happen!"); $PASSWORD = $CONFIG { 'password' };
} }
my $salt = generatePassword(8); my $salt = generatePassword(8);
@@ -4058,10 +4005,6 @@ sub setupRootPassword
sub generatePassword { sub generatePassword {
my $length = $_[0]; my $length = $_[0];
unless ($length and $length > 0) {
warn "generatePassword: No (sane) password length given. Using $default_genpass_len instead.";
$length = $default_genpass_len;
}
my $possible = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; my $possible = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
my $password = ''; my $password = '';
while (length($password) < $length) { while (length($password) < $length) {
@@ -4157,35 +4100,21 @@ END
exit $exitcode if $VERSION || $HELP || $MANUAL || $DUMPCONFIG; exit $exitcode if $VERSION || $HELP || $MANUAL || $DUMPCONFIG;
my %host_key = (); my $host_rsa_key = '';
# #
# Unmount the image if it is still mounted. # Unmount the image if it is still mounted.
# #
if ( defined($MOUNT_POINT) ) if ( defined($MOUNT_POINT) )
{ {
# #
# Before we unmount get the host's SSH keys' fingerprints # Before we unmount get the host's RSA key
# #
my $key_dir = $MOUNT_POINT.'/etc/ssh'; my $key_path .= $MOUNT_POINT;
my @pubkey_files = $key_path .= '/etc/ssh/ssh_host_rsa_key.pub';
grep { /^ssh_host_.*\.pub$/; } read_dir($key_dir); if ( `ssh-keygen -lf $key_path` =~ /^(\S+)\s+(\S+)/ ) {
foreach my $pubkey_file (@pubkey_files) { $host_rsa_key = $2;
my $pubkey_path = "$key_dir/$pubkey_file"; } else {
my $fingerprint_line = `ssh-keygen -lf "$pubkey_path"`; $host_rsa_key = "N/A";
if ($fingerprint_line =~ /^(\S+)\s+(\S+)/ ) {
my $fingerprint = $2;
my $algo = '[unspecified hashing algorithm]';
if ($fingerprint_line =~ /^\S+\s+\S+\s+\S+\s+\((\S+)\)/ ) {
$algo = $1;
} elsif ($pubkey_file =~ /^ssh_host_(\S+)_key\.pub$/) {
$algo = uc($1);
} elsif ($pubkey_file eq 'ssh_host_key.pub') {
$algo = 'SSH1';
}
$host_key{$algo} = $fingerprint;
} else {
warn "Can't parse ssh-keygen output: $fingerprint_line";
}
} }
unMountImage($MOUNT_POINT, $CONFIG{'FAIL'}); unMountImage($MOUNT_POINT, $CONFIG{'FAIL'});
} }
@@ -4293,17 +4222,14 @@ END
logprint("---------------------\n"); logprint("---------------------\n");
logprint("Hostname : $CONFIG{'hostname'}\n"); logprint("Hostname : $CONFIG{'hostname'}\n");
logprint("Distribution : $CONFIG{'dist'}\n"); logprint("Distribution : $CONFIG{'dist'}\n");
logprint("MAC Address : $CONFIG{'mac'}\n"); logprint("IP-Address(es) : ");
logprint("IP Address(es) : ");
if ( $CONFIG{ 'dhcp' } ) { if ( $CONFIG{ 'dhcp' } ) {
logprint("dynamic"); logprint("dynamic");
} elsif( $CONFIG{ 'ip' } ) { } elsif( $CONFIG{ 'ip' } ) {
logprint( $IP_ADDRESSES ); logprint( $IP_ADDRESSES );
} }
logprint("\n"); logprint("\n");
foreach my $algo (sort keys %host_key) { logprint("RSA Fingerprint : $host_rsa_key\n");
logprint("SSH Fingerprint : $host_key{$algo} ($algo)\n");
}
logprint("Root Password : "); logprint("Root Password : ");
if ( $PASSWORD ) { if ( $PASSWORD ) {
logprint("$PASSWORD\n"); logprint("$PASSWORD\n");

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-create-nfs - Create a Xen configuration file for an NFS-root guest. xen-create-nfs - Create a Xen configuration file for an NFS-root guest.
@@ -121,7 +119,7 @@ $CONFIG{ 'template' } = '/etc/xen-tools/xm-nfs.tmpl';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# store version number away. # store version number away.

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-delete-image - Delete previously created Xen instances. xen-delete-image - Delete previously created Xen instances.
@@ -30,6 +28,7 @@ xen-delete-image - Delete previously created Xen instances.
Testing options: Testing options:
--test Don't complain if we're not invoked by root. --test Don't complain if we're not invoked by root.
--no-xen-ok Don't complain if xen seems not installed or xend is not running
=head1 OPTIONS =head1 OPTIONS
@@ -55,8 +54,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 Do not complain, or exit, if the script is not executed by the root user.
user. (Only works in conjunction with --dir.)
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
@@ -163,7 +161,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# #
@@ -232,7 +230,7 @@ foreach my $name (@ARGV, @hosts)
{ {
my %PER_HOST_CONFIG = %CONFIG; my %PER_HOST_CONFIG = %CONFIG;
$PER_HOST_CONFIG{ 'hostname' } = $name; $PER_HOST_CONFIG{ 'hostname' } = $name;
unless ( xenRunning($name, \%PER_HOST_CONFIG) ) if ( $CONFIG{ 'no_xen_ok' } or !xenRunning($name, \%PER_HOST_CONFIG) )
{ {
deleteXenImage($name); deleteXenImage($name);
} }
@@ -275,7 +273,7 @@ sub parseCommandLineArguments
"hostname=s@", \$CONFIG{ 'hostname' }, "hostname=s@", \$CONFIG{ 'hostname' },
"test", \$CONFIG{ 'test' }, "test", \$CONFIG{ 'test' },
"verbose", \$CONFIG{ 'verbose' }, "verbose", \$CONFIG{ 'verbose' },
"no-xen-ok", sub { warn "Option --no-xen-ok is deprecated and ignored."; }, "no-xen-ok", \$CONFIG{ 'no_xen_ok' },
"help", \$HELP, "help", \$HELP,
"manual", \$MANUAL, "manual", \$MANUAL,
"version", \$VERSION "version", \$VERSION
@@ -309,10 +307,10 @@ sub checkArguments
# #
# When testing we only care about loopback images, not disk images. # When testing we only care about loopback images, not disk images.
# #
if ( $CONFIG{ 'test' } and ( $CONFIG{ 'lvm' } or $CONFIG{ 'evms' } )) if ( $CONFIG{ 'test' } )
{ {
print "Error: --test only works with --dir.\n"; $CONFIG{ 'lvm' } = undef;
exit 1; $CONFIG{ 'evms' } = undef;
} }
# #
@@ -334,7 +332,7 @@ sub checkArguments
print " --dir\n"; print " --dir\n";
print " --evms\n"; print " --evms\n";
print " --lvm\n"; print " --lvm\n";
exit 2; exit;
} }
} }

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-list-images - List all the created and configured Xen images. xen-list-images - List all the created and configured Xen images.
@@ -106,7 +104,7 @@ $CONFIG{ 'extension' } = '.cfg';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
@@ -249,7 +247,7 @@ sub displayInstance
{ {
$name = $1; $name = $1;
} }
if ( $line =~ /^\s*memory[^0-9]*([0-9]+)/i ) if ( $line =~ /.*memory[^0-9]*([0-9]+)/i )
{ {
$mem = $1; $mem = $1;
} }
@@ -264,7 +262,7 @@ sub displayInstance
} }
print "Name: $name\n"; print "Name: $name\n";
print "Memory: $mem MB\n"; print "Memory: $mem\n";
print "IP: " . $ip . $mac . "\n" if length($ip); print "IP: " . $ip . $mac . "\n" if length($ip);
print "DHCP" . $mac . "\n" if $dhcp; print "DHCP" . $mac . "\n" if $dhcp;
print "Config: $file\n"; print "Config: $file\n";

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-resize-guest - Resize a loopback or LVM based xen guest. xen-resize-guest - Resize a loopback or LVM based xen guest.
@@ -111,7 +109,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# #

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-update-image - Update the software installed upon offline Xen images. xen-update-image - Update the software installed upon offline Xen images.
@@ -113,7 +111,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# #
@@ -302,7 +300,7 @@ sub updateXenImage
# Now upgrade # Now upgrade
# #
system( system(
"DEBIAN_FRONTEND=noninteractive chroot $tmp /usr/bin/apt-get upgrade --yes" "DEBIAN_FRONTEND=noninteractive chroot $tmp /usr/bin/apt-get upgrade --yes --force-yes"
); );
# #

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-create-config - Create a Xen configuration file for a new guest xt-create-config - Create a Xen configuration file for a new guest
@@ -148,7 +146,7 @@ $CONFIG{ 'extension' } = '.cfg';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
@@ -369,24 +367,12 @@ sub createXenConfig
# #
# Remove any trailing Mb. # Remove any trailing Mb.
# #
$ENV{ 'memory' } =~ s/^(\d+)Mb?.*$/$1/i; if ( $ENV{ 'memory' } =~ /^(\d+)Mb?.*$/i )
{
# $ENV{ 'memory' } = $1;
# The maxmem size: Convert Gb -> Mb.
#
if ( exists($ENV{ 'maxmem' }) and defined($ENV{ 'maxmem' })) {
if ($ENV{ 'maxmem' } =~ /^(\d+)Gb?.*$/i )
{
$ENV{ 'maxmem' } = $1 * 1024;
}
#
# Remove any trailing Mb.
#
$ENV{ 'maxmem' } =~ s/^(\d+)Mb?.*$/$1/i;
} }
# #
# Images as presented to Xen - either loopback images, or LVM partitions. # Images as presented to Xen - either loopback images, or LVM partitions.
# #

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-customize-image - Customize a freshly installed copy of GNU/Linux xt-customize-image - Customize a freshly installed copy of GNU/Linux
@@ -54,15 +52,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
executed from '/usr/share/xen-tools/foo.d'. Each executable will executed from '/usr/share/xen-tools/foo.d'. Each executable will
be loaded and executed in sorted order. be loaded and executed in sorted order.
The systems administrator can optionally provide site-specific
revisions of those same hooks by placing them in the directory
'/etc/xen-tools/hooks.d/' in which case a script with the same name
as the one in the 'foo.d' directory above will take precedence. In
this way certain hooks can be prevented from running, expanded with
site-specific features which won't get overwritten on upgrades, or
patched with critical bug-fixes before the upstream OS distribution
provider reacts.
=head1 AUTHORS =head1 AUTHORS
@@ -100,7 +89,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
@@ -260,7 +249,6 @@ sub runDistributionHooks
# Hook directory. # Hook directory.
# #
my $hooks = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d/"; my $hooks = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d/";
my $hooks_local = "/etc/xen-tools/hooks.d/";
# #
# Installation prefix # Installation prefix
@@ -305,20 +293,10 @@ sub runDistributionHooks
$name = $2; $name = $2;
} }
#
# Run a local version of the hook instead of the system one,
# if the local one exists and is executable.
#
my $file_local = $hooks_local . $name;
if ( ( -x $file_local ) && ( -f $file_local ) )
{
$file = $file_local
}
# #
# Complete command we're going to execute. # Complete command we're going to execute.
# #
my $cmd = $file . " $CONFIG{'location'}"; my $cmd = $hooks . $name . " $CONFIG{'location'}";
# #
# Run the command. This has different prolog and epilog # Run the command. This has different prolog and epilog

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and xt-guess-suite-and-mirror - Tries to guess the most suitable suite and
@@ -52,9 +50,9 @@ 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 (httpredir.debian.org # Which mirrors to use if everything else fails (http.debian.net
# redirects to a working mirror nearby) # redirects to a working mirror nearby)
my %fallback_mirror = ( Debian => 'http://httpredir.debian.org/debian/', my %fallback_mirror = ( Debian => 'http://http.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"
@@ -71,7 +69,6 @@ my @sources_list_files = ( '/etc/apt/sources.list',
use File::Slurp; use File::Slurp;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
use File::Which;
use strict; use strict;
@@ -79,7 +76,7 @@ use strict;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# Init # Init
my $mirror = ''; my $mirror = '';
@@ -151,8 +148,10 @@ all_sources_list_files: foreach my $sources_list_file (@sources_list_files) {
die "Couldn't find a useful entry in the sources.list files of the Dom0. Tried:\n ". 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; join("\n ", @sources_list_files)."\n" unless $found;
my $lsb_release = which('lsb_release'); my $lsb_release = `which lsb_release`;
if (!$found and defined($lsb_release) and -x $lsb_release) { chomp($lsb_release);
if (!$found and $lsb_release and -x $lsb_release) {
my $vendor = `$lsb_release -s -i`; my $vendor = `$lsb_release -s -i`;
if ($vendor eq 'Debian' or $vendor eq 'Ubuntu') { if ($vendor eq 'Debian' or $vendor eq 'Ubuntu') {

View File

@@ -1,7 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-install-image - Install a fresh copy of GNU/Linux into a directory xt-install-image - Install a fresh copy of GNU/Linux into a directory
@@ -28,7 +26,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
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'. --apt_proxy The proxy to use when installing with 'debootstrap'.
--keyring The keyring 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.
@@ -113,7 +110,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.6'; my $RELEASE = '4.4~dev';
# #
@@ -338,7 +335,6 @@ sub parseCommandLineArguments
"cachedir=s", \$CONFIG{ 'cachedir' }, "cachedir=s", \$CONFIG{ 'cachedir' },
"config=s", \$CONFIG{ 'config' }, "config=s", \$CONFIG{ 'config' },
"mirror=s", \$CONFIG{ 'mirror' }, "mirror=s", \$CONFIG{ 'mirror' },
"keyring=s", \$CONFIG{ 'keyring' },
"apt_proxy=s", \$CONFIG{ 'apt_proxy' }, "apt_proxy=s", \$CONFIG{ 'apt_proxy' },
# Help. # Help.
@@ -637,14 +633,6 @@ sub do_debootstrap
$EXTRA .= " --arch $CONFIG{'arch'}"; $EXTRA .= " --arch $CONFIG{'arch'}";
} }
#
# Propogate the --keyring argument
#
if ( $CONFIG{ 'keyring' } )
{
$EXTRA .= " --keyring=$CONFIG{'keyring'}";
}
# #
# Setup http_proxy so that debootstrap pulls files through the apt-proxy # Setup http_proxy so that debootstrap pulls files through the apt-proxy
# #

4
debian/NEWS vendored
View File

@@ -1,4 +1,4 @@
xen-tools (4.4~beta1-1) unstable; urgency=low xen-tools (4.4~dev-1) UNRELEASED; urgency=low
* Exported environment variables no more contain dashes ("-"). Dashes in * Exported environment variables no more contain dashes ("-"). Dashes in
environment variable names are from now on converted to underscores environment variable names are from now on converted to underscores
@@ -11,7 +11,7 @@ xen-tools (4.4~beta1-1) unstable; urgency=low
which all should be empty at that point, i.e. "rmdir -p which all should be empty at that point, i.e. "rmdir -p
/usr/lib/xen-tools/*" should do the trick. /usr/lib/xen-tools/*" should do the trick.
-- Axel Beckert <abe@debian.org> Fri, 23 Aug 2013 19:01:16 +0200 -- Axel Beckert <abe@debian.org> Fri, 05 Apr 2013 20:19:02 +0200
xen-tools (4.2~rc1-1) unstable; urgency=low xen-tools (4.2~rc1-1) unstable; urgency=low

View File

@@ -4,7 +4,7 @@ How to build xen-tools directly from the Git repository?
Clone the git repository and change to the directory of your local Clone the git repository and change to the directory of your local
working copy. working copy.
$ git clone git://github.com/xen-tools/xen-tools.git $ git clone git://gitorious.org/xen-tools/xen-tools.git
$ cd xen-tools $ cd xen-tools
If you just want to build the binary package, run If you just want to build the binary package, run
@@ -18,4 +18,5 @@ Debian or Ubuntu:
$ make orig-tar-gz $ make orig-tar-gz
$ dpkg-buildpackage $ dpkg-buildpackage
-- Axel Beckert <abe@debian.org>, Tue, 14 Jul 2015 18:35:38 +0200
-- Axel Beckert <abe@debian.org>, Mon, 13 Sep 2010 14:30:05 +0200

189
debian/changelog vendored
View File

@@ -1,169 +1,6 @@
xen-tools (4.6-1) unstable; urgency=low xen-tools (4.4~dev-1) UNRELEASED; urgency=low
* New upstream release * New upstream release
+ Fix usage of nonexistent variable in removeDebianPackage (Closes:
#774936) Thanks Lukas Schwaighofer!
+ Change all occurrences of http.debian.net to httpredir.debian.org
+ Ubuntu 12.04 Lucid Lynx and 14.10 Utopic Unicorn now EoL.
+ Preliminary support for Debian 9 Stretch and Ubuntu 15.10 Wily
Werewolf.
+ Installs bash completion into /usr/share/bash-completion/ (fixes
lintian warning package-install-into-obsolete-dir)
+ Allows # within configuration file comments. (Closes: #783060;
thanks Jean-Michel Nirgal Vourgère for the bug report and patch!)
+ Testsuite: Let modules.sh ignore the .git directory. (t/modules.t
failed if a git commit message had a line starting with "use ".)
+ Testsuite: Optimize and clean up modules.sh.
+ Drop all occurrences of apt's --force-yes parameter. It only forces
the installation of untrusted packages and that's unwanted. (Closes:
#776487)
+ Support passing commandline options with --debootstrap-cmd.
+ Use -o APT::Install-Recommends=false instead of
--no-install-recommends for backwards compatibility with older APT
versions which don't know either (but accept any Foo=Bar parameter
to "-o"). Allows one to install earlier Debian releases (e.g. Etch)
with the default configuration again.
+ Use md5 as default hash method again, to be able to properly set
passwords in older releases. Does not affect passwords changed later
inside the DomU.
+ Split off hardcoded release code names list and default mirrors in
xen-create-image into separate configuration file which are parsed
before the default settings or command-line options are set.
+ Pass --yes to lvcreate only if LVM version is 2.02.99 or
higher. Fixes regression introduced with 4.5 by the fix for #754517.
- Add new (build-)dependency on libsort-versions-perl.
+ Report all SSH fingerprints of the created DomU, not only RSA ones.
+ Split up test suite in functionality/compatibility tests (t) and
author/release tests (xt).
+ Make test suite support as-installed-testing
- Mark package as autopkgtestable.
+ Multiple release workflow improvements (target release in Makefile):
- Use TMPDIR instead of TMP for temporary directories.
- Always run the full test suite before doing a release.
- Use maximum compression and don't store time stamps in tar ball.
- Make "release" target to include "orig-tar-gz" and tagging.
+ New option --keyring which is passed through to deboootstrap. Its
default values work around bug #792729 in debootstrap.
+ Supports "unstable", "oldstable" and "oldoldstable" as distribution
names, too. ("oldoldstable" is not yet supported by debootstrap, see
feature request #792734 in debootstrap.)
+ New example script helpful for release testing.
+ Support VLANs with Open vSwitch (GH-2). Thanks to Félix Barbeira
for the patch.
* Update Vcs-* headers and documentation as Gitorious closed its doors
in June 2015 and is now only available with static contents.
* Recommend debian-archive-keyring (for installing Debian DomUs on
derivatives) and ubuntu-archive-keyring (for installing Ubuntu DomUs
on Debian).
* Reduce the list of alternative xen-hypervisor-* packages to just
"xen-hypervisor" which is a virtual package provided by at least all
xen-hypervisor-* packages since Debian 6 Squeeze.
* Recommend lvm2, it's at least required if the --lvm option is used.
* Add an adequate as-installed test to debian/tests/control.
-- Axel Beckert <abe@debian.org> Mon, 20 Jul 2015 16:05:04 +0200
xen-tools (4.5-1) unstable; urgency=low
* New upstream release
+ Use "686-pae" kernels instead of "686" kernels on Debian Wheezy and
later. Thanks to Daniel Lintott! (Closes: #742778)
+ Pass "-y" option ("assume yes") to yum (Closes: #735675)
Thanks Lionel FÉLICITÉ!
+ Drop all xend related sanity checks, they cause more havoc nowadays
than they help. Thanks Ian Campbell! (Closes: #732456)
+ Apply patch by Adrian C. (anrxc) to allow to override hooks in
/usr/share/xen-tools/*.d/ with hooks in /etc/xen-tools/hooks.d/.
Thanks! (Also add /etc/xen-tools/hooks.d/ to debian/dirs.)
+ Ignore cover_db directory in t/perl-syntax.t.
+ Update list of supported Ubuntu releases.
- Add support for Ubuntu 14.10 Utopic Unicorn.
- Add preliminary support for Ubuntu 15.04 Vivid Vervet.
- Use old-releases.ubuntu.com for Ubuntu 13.10 Saucy Salamander.
+ Fix always empty gateway on Debian DomUs (Thanks Joan! LP: #1328794)
+ pygrub detection: Prefer /usr/lib/xen-default over /usr/lib/xen-x.y.
+ Fix lvcreate awaiting user input when creating swap lv (Closes: #754517)
Thanks Eric Engstrom!
+ Fix missing quoting in shell function "assert" in hooks/common.sh.
+ Fix initial configuration summary in cases where pygrub is used.
+ Fix corner cases where not the latest kernel would have been checked.
+ --password overrides --genpass. (Closes: #764143) Based on patch by
Santiago Vila.
+ Add password length sanity check with fallback to default length.
+ Raise default password length from 8 to 23.
+ Flush output after each line in runCommand().
+ Makefile: Clean up coverage data in multiple targets.
+ t/perl-syntax.t: Ignore changelog files, too.
[ Santiago Vila ]
+ Fix unaligned maxmem output of xen-create-image. (Closes: #764126)
+ Fix copy & paste errors in comments in typos in roles/puppet
(Closes: #764134)
+ Fix typos in POD of xen-create-image (Closes: #764153)
* Bump Standards-Version to 3.9.6 (no changes needed)
* Fix lintian warning depends-on-perl-modules.
* Add lintian override for debian-news-entry-uses-asterisk; I disagree.
-- Axel Beckert <abe@debian.org> Sat, 25 Oct 2014 23:27:18 +0200
xen-tools (4.4-1) unstable; urgency=low
* New upstream release
- Run t/gitignore.t only if git is installed and .git present.
- Rework "minimal" role to be less based on personal preferences.
+ No more installs sudo, vim, syslog-ng, etc.
+ Fixes usage together with pygrub.
- hooks/common.sh: Split up installDebianPackage into
installDebianPackage and installDebianPackageAndRecommends.
* Also add build-dependency on "libterm-ui-perl | perl (<< 5.17.0)" and
"liblog-message-perl | perl (<< 5.17.0)" to avoid warnings with Perl
5.18 and future FTBFS.
* Mention Ubuntu 14.04 Trusty Tahr in long description.
-- Axel Beckert <abe@debian.org> Wed, 11 Dec 2013 20:59:06 +0100
xen-tools (4.4~rc1-1) unstable; urgency=low
* New upstream release candidate
- Also switch from cdn.debian.net to http.debian.net in xen-tools.conf
- Do not run "passwd" via runCommand as that one captures STDOUT for
logging. Makes --passwd usable again. Thanks to Christian Herzog for
the bug report.
- Loop around calling "passwd" to get a second chance to change the
password. (Closes: #703159) Thanks to Joan <aseques@gmail.com> for a
bug fix in this new code.
+ Add dependency on "libterm-ui-perl | perl (<< 5.17.0)"
- Declares one more POD encoding and recode Xen::Tools::Common to
UTF-8. Fixes FTBFS with Perl 5.18. (Finally closes: #720519)
- Apply patch by Philipp Erbelding to fix overzealous line matching in
xen-list-images. (Gitorious merge request #5)
- xen-list-images now displays a unit after the memory size
- Drop support for memory size in kilobytes in xen-create-image,
neither xt-create-xen-config nor xm support it.
- Refactoring: Replace all occurrences of "! -z" by "-n" in hooks and
bash completion.
- Handle potentially empty gateway setting properly in
hooks/common/40-setup-networking-deb. Thanks Simone Caruso!
- Reformat hooks/common/40-setup-networking-deb so that the result
neither has trailing whitespace nor broken indentation.
- Also display MAC address after the DomU has been created.
- Preliminary support for Ubuntu 14.04 Trusty Tahr.
- Added --maxmem flag to set a maximum value for dynamic memory
ballooning. Thanks to Joan <aseques@gmail.com> for the patch!
- Added fix by Patryk Ściborek againsat disableStartStopDaemon()
aborting under some circumstances. (Closes: #725192)
- Abort early and with proper error message if "xen-delete-image
--test" is not used with "--dir". (Closes: #704878)
- xen-delete-image: Exit with return code != 0 in all error cases.
- Refactoring: xt-create-xen-config: Use s/// to strip trailing MB
size suffixes.
* Bump Standards-Version to 3.9.5 (no changes).
-- Axel Beckert <abe@debian.org> Mon, 28 Oct 2013 22:31:03 +0100
xen-tools (4.4~beta1-1) unstable; urgency=low
* New upstream beta release
- Code deduplication to unify the xen-*-image scripts - Code deduplication to unify the xen-*-image scripts
- Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/ - Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/
- Use http.debian.net as default Debian mirror if no mirror is given - Use http.debian.net as default Debian mirror if no mirror is given
@@ -183,17 +20,14 @@ xen-tools (4.4~beta1-1) unstable; urgency=low
- Fixes "--extension=" with empty parameter. - Fixes "--extension=" with empty parameter.
- Sarge amd64 case handle properly - Sarge amd64 case handle properly
- Remove CVS revisions from --version output - Remove CVS revisions from --version output
- Support for Debian Jessie, Ubuntu Raring and preliminary support for - Preliminary support for Debian Jessie and Ubuntu Raring
Ubuntu Saucy (debootstrap doesn't have support for Saucy at the time
of writing)
- Preliminary support for xl toolstack - Preliminary support for xl toolstack
- xen-create-image: Consistently use runCommand() instead of system() - xen-create-image: Consistently use runCommand() instead of system()
- xt-install-image: Don't bail out if only cdebootstrap is installed - xt-install-image: Don't bail out if only cdebootstrap is installed
but not debootstrap (Thanks Elmar Heeb!) but not debootstrap (Thanks Elmar Heeb!)
- Makefile accepts DESTDIR=… - Makefile accepts DESTDIR=…
- Move examples from debian/examples to examples. - Move examples from debian/examples to examples.
- Uses File::Which exclusively (no more findBinary, no more `which`), - Uses File::Which, added (build-) dependency on libfile-which-perl
added (build-) dependency on libfile-which-perl
- Knows about module-init-tools → kmod transition in wheezy/raring. - Knows about module-init-tools → kmod transition in wheezy/raring.
- Adds default mount options for ext4, identical to ext2/ext3. - Adds default mount options for ext4, identical to ext2/ext3.
- Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0 - Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0
@@ -207,8 +41,7 @@ xen-tools (4.4~beta1-1) unstable; urgency=low
Add installCentOS4Package wrapper for backward compatibility. Add installCentOS4Package wrapper for backward compatibility.
- Fix filesystem tools installation in 91-install-fs-tools (which was - Fix filesystem tools installation in 91-install-fs-tools (which was
broken since 4.3~rc1-1) by merging 91-install-fs-tools back into broken since 4.3~rc1-1) by merging 91-install-fs-tools back into
90-make-fstab. (Closes: #715340) Also supports RPM-based 90-make-fstab. Also supports RPM-based distributions now.
distributions now.
- Fixes export of environment variables. Previously they could contain - Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from dashes and then were only accessible from within Perl, but not from
within Bash. within Bash.
@@ -218,14 +51,6 @@ xen-tools (4.4~beta1-1) unstable; urgency=low
- Removes unused Perl modules Xen::Tools and Xen::Tools::Log from - Removes unused Perl modules Xen::Tools and Xen::Tools::Log from
source code. Also removes the according tests from the test suite. source code. Also removes the according tests from the test suite.
→ Remove no more needed build-dependency on Moose. → Remove no more needed build-dependency on Moose.
- Better documents and checks requirements for the --apt_proxy
value. (See #623443 for the corresponding apt issue.) Add (build-)
dependency on libdata-validate-uri-perl.
- Use Data::Validate::{Domain,IP} for IP addresses and hostname checks.
Add corresponding (build-) dependencies on
libdata-validate-{domain,ip}-perl.
- Fixes broken quoting in list of required binaries
- Declares POD encoding. Fixes FTBFS with Perl 5.18. (Closes: #720519)
* Add debian/gbp.conf to be able to to build xen-tools with * Add debian/gbp.conf to be able to to build xen-tools with
git-buildpackage. git-buildpackage.
* Clean up debian/rules: * Clean up debian/rules:
@@ -237,14 +62,10 @@ xen-tools (4.4~beta1-1) unstable; urgency=low
dh_auto_* can't help. No more explicitly call "make manpages", it's dh_auto_* can't help. No more explicitly call "make manpages", it's
a depedency of "make install" in the next line anyway. a depedency of "make install" in the next line anyway.
- Finally switch to a minimal dh style debian/rules. - Finally switch to a minimal dh style debian/rules.
* Bump debhelper compatibility to 9
- Update versioned debhelper build-dependency
* Bump Standards-Version to 3.9.4 (no changes)
* Add dependency on ${perl:Depends} to fix dpkg-gencontrol warning.
* Bump copyright years in debian/copyright. * Bump copyright years in debian/copyright.
* Apply wrap-and-sort. * Apply wrap-and-sort.
-- Axel Beckert <abe@debian.org> Fri, 23 Aug 2013 19:00:03 +0200 -- Axel Beckert <abe@debian.org> Thu, 17 Jan 2013 17:09:02 +0100
xen-tools (4.3.1-1) unstable; urgency=low xen-tools (4.3.1-1) unstable; urgency=low

2
debian/compat vendored
View File

@@ -1 +1 @@
9 7

43
debian/control vendored
View File

@@ -2,49 +2,33 @@ 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 (>= 9~), Build-Depends: debhelper (>= 7.0.0),
devscripts, devscripts,
git, git,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl, libfile-slurp-perl,
libfile-which-perl, libfile-which-perl,
liblog-message-perl | perl (<< 5.17.0),
libterm-ui-perl | perl (<< 5.17.0),
libsort-versions-perl,
libtest-notabs-perl, libtest-notabs-perl,
libtest-pod-coverage-perl, libtest-pod-coverage-perl,
libtest-pod-perl, libtest-pod-perl,
libtext-template-perl libtext-template-perl
Standards-Version: 3.9.6 Standards-Version: 3.9.3
Homepage: http://xen-tools.org/software/xen-tools Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: https://gitlab.com/xen-tools/xen-tools Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
Vcs-Git: https://gitlab.com/xen-tools/xen-tools.git Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
Testsuite: autopkgtest
Package: xen-tools Package: xen-tools
Architecture: all Architecture: all
Depends: debootstrap | cdebootstrap, Depends: debootstrap | cdebootstrap,
libconfig-inifiles-perl, libconfig-inifiles-perl,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl, libfile-slurp-perl,
libfile-which-perl, libfile-which-perl,
libsort-versions-perl,
libterm-ui-perl | perl (<< 5.17.0),
libtext-template-perl, libtext-template-perl,
openssh-client, openssh-client,
perl, perl-modules,
${misc:Depends}, ${misc:Depends}
${perl:Depends} Recommends: libexpect-perl,
Recommends: debian-archive-keyring,
libexpect-perl,
lvm2,
rinse (>= 1.9.1-1), rinse (>= 1.9.1-1),
ubuntu-archive-keyring, xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae,
xen-hypervisor,
xen-utils xen-utils
Suggests: btrfs-tools, Suggests: btrfs-tools,
cfengine2, cfengine2,
@@ -62,9 +46,7 @@ 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 Wheezy * Debian 7.0 Wheezy
* Debian 8 Jessie
* Debian 9 Stretch (under development)
* 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
@@ -79,12 +61,5 @@ Description: Tools to manage Xen virtual servers
* Ubuntu 11.04 Natty Narwhal * Ubuntu 11.04 Natty Narwhal
* Ubuntu 11.10 Oneiric Ocelot * Ubuntu 11.10 Oneiric Ocelot
* Ubuntu 12.04 Precise Pangolin (LTS) * Ubuntu 12.04 Precise Pangolin (LTS)
* Ubuntu 12.10 Quantal Quetzal
* Ubuntu 13.04 Raring Ringtail
* Ubuntu 13.10 Saucy Salamander
* Ubuntu 14.04 Trusty Tahr (LTS)
* Ubuntu 14.10 Utopic Unicorn
* Ubuntu 15.04 Vivid Vervet
* Ubuntu 15.10 Wily Werewolf (under development)
* CentOS 5 * CentOS 5
* CentOS 6 * CentOS 6

3
debian/dirs vendored
View File

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

View File

@@ -1,2 +0,0 @@
# I disagree
xen-tools: debian-news-entry-uses-asterisk

3
debian/rules vendored
View File

@@ -5,7 +5,4 @@
%: %:
dh $@ dh $@
override_dh_auto_test:
make non-author-test
override_dh_auto_build: override_dh_auto_build:

View File

@@ -1,3 +0,0 @@
#!/bin/sh
adequate xen-tools >&2

View File

@@ -1,5 +0,0 @@
Tests: functionality
Depends: @, @builddeps@
Tests: adequate
Depends: @, adequate

View File

@@ -1,15 +0,0 @@
#!/bin/sh
export AS_INSTALLED_TESTING=1
prove -j1 -v \
t/hook-daemons.t \
t/hook-hostname.t \
t/hook-inittab.t \
t/hook-tls.t \
t/hooks.t \
t/plugin-checks.t \
t/pod-check.t \
t/xen-delete-image.t \
t/xen-lists-images.t \
t/xt-create-xen-config.t

View File

@@ -1,44 +0,0 @@
# xen-tools configuration file for distibution meta data
#
# Syntax:
#
# codename = distribution and further keywords
#
# Known distributions: debian, ubuntu
# Known keywords: eol, pygrub
#
sarge = debian eol
etch = debian eol
lenny = debian eol
squeeze = debian
wheezy = debian
jessie = debian
stretch = debian
sid = debian
testing = debian
oldoldstable = debian
oldstable = debian
stable = debian
unstable = debian
dapper = ubuntu eol
edgy = ubuntu eol
feisty = ubuntu eol
gutsy = ubuntu eol
hardy = ubuntu eol
intrepid = ubuntu eol
jaunty = ubuntu eol
karmic = ubuntu eol
lucid = ubuntu eol pygrub
maverick = ubuntu eol pygrub
natty = ubuntu eol pygrub
oneiric = ubuntu eol pygrub
precise = ubuntu pygrub
quantal = ubuntu eol pygrub
raring = ubuntu eol pygrub
saucy = ubuntu eol pygrub
trusty = ubuntu pygrub
utopic = ubuntu eol pygrub
vivid = ubuntu pygrub
wily = ubuntu pygrub

View File

@@ -1,13 +0,0 @@
# xen-tools default mirror configuration file
debian = http://httpredir.debian.org/debian
debian_archive = http://httpredir.debian.org/debian-archive/debian
ubuntu = http://archive.ubuntu.com/ubuntu
ubuntu_archive = http://old-releases.ubuntu.com/ubuntu
#
# If you like, you can also declare per-release mirrors:
#
# sarge = http://debian.ethz.ch/debian-archive/debian
# trusty = http://ubuntu.ethz,ch/ubuntu

View File

@@ -127,7 +127,6 @@ install-method = debootstrap
# #
size = 4G # Root disk, suffix (G, M, k) required size = 4G # Root disk, suffix (G, M, k) required
memory = 128M # Suffix (G, M, k) required memory = 128M # Suffix (G, M, k) required
#maxmem = 256M # Suffix (G, M, k) optional
swap = 128M # Suffix (G, M, k) required swap = 128M # Suffix (G, M, k) required
# noswap = 1 # Don't use swap at all for new systems. # noswap = 1 # Don't use swap at all for new systems.
fs = ext3 # Default file system for any disk fs = ext3 # Default file system for any disk
@@ -254,9 +253,44 @@ initrd = /boot/initrd.img-`uname -r`
# #
# #
# Use the mirror configured on the DomU as default mirror # The default mirror for debootstrap to install Debian-derived distributions
# #
# mirror = `xt-guess-suite-and-mirror --mirror` mirror = `xt-guess-suite-and-mirror --mirror`
#
# A mirror suitable for use when installing the Dapper release of Ubuntu.
#
# mirror = http://gb.archive.ubuntu.com/ubuntu/
#
# If you like you could use per-distribution mirrors, which will
# be more useful if you're working in an environment where you want
# to regularly use multiple distributions. The following are the
# default values used (for Debian the GeoIP feature is used, see
# http://wiki.debian.org/DebianGeoMirror):
#
# mirror_sarge = http://archive.debian.org/debian
# mirror_etch = http://archive.debian.org/debian
# mirror_lenny = http://archive.debian.org/debian
# mirror_squeeze = http://cdn.debian.net/debian
# mirror_wheezy = http://cdn.debian.net/debian
# mirror_jessie = http://cdn.debian.net/debian
# mirror_sid = http://cdn.debian.net/debian
# mirror_dapper = http://old-releases.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://old-releases.ubuntu.com/ubuntu
# mirror_oneiric = http://archive.ubuntu.com/ubuntu
# mirror_precise = http://archive.ubuntu.com/ubuntu
# mirror_quantal = http://archive.ubuntu.com/ubuntu
# mirror_raring = http://archive.ubuntu.com/ubuntu
# If this is defined it will be used by debootstrap, and configured as the # If this is defined it will be used by debootstrap, and configured as the
# proxy for the guest # proxy for the guest

View File

@@ -17,11 +17,6 @@
} }
} }
memory = '{$memory}' memory = '{$memory}'
{ if ( $maxmem )
{
$OUT .= "maxmem = '$maxmem'\n";
}
}
# Name # Name

View File

@@ -21,8 +21,8 @@
if ( $pygrub ) if ( $pygrub )
{ {
my $pygrub_bin = ''; my $pygrub_bin = '';
foreach my $pygrub_path (reverse glob('/usr/lib/xen-default/bin/pygrub foreach my $pygrub_path (reverse glob('/usr/lib/xen-*/bin/pygrub
/usr/lib/xen-*/bin/pygrub /usr/lib/xen-default/bin/pygrub
/usr/*bin/pygrub')) { /usr/*bin/pygrub')) {
if (-x $pygrub_path) { if (-x $pygrub_path) {
$pygrub_bin = $pygrub_path; $pygrub_bin = $pygrub_path;
@@ -37,11 +37,6 @@
} }
vcpus = '{$vcpus}' vcpus = '{$vcpus}'
memory = '{$memory}' memory = '{$memory}'
{ if ( $maxmem )
{
$OUT .= "maxmem = '$maxmem'\n";
}
}
# #
# Disk device(s). # Disk device(s).
@@ -151,12 +146,6 @@ name = '{$hostname}'
$br = ",bridge=$bridge" $br = ",bridge=$bridge"
} }
my $vl = '';
if ( $vlan )
{
$vl = ".$vlan"
}
$OUT .= "vif = [ 'ip=$ips"; $OUT .= "vif = [ 'ip=$ips";
$OUT .= "$m"; $OUT .= "$m";
$OUT .= "$vn"; $OUT .= "$vn";

View File

@@ -1,6 +0,0 @@
#!/bin/sh
# Skip dapper and edgy due to bug #659360 in debootstrap
for dist in $(awk '!/^#|^$/ {print $1}' /etc/xen-tools/distributions.conf | egrep -v '^(dapper|edgy)$'); do
xen-create-image --dist $dist --force --verbose "$@" || break
done 2>&1 | tee xen-tools-release-testing.log

View File

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

View File

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

View File

@@ -24,7 +24,7 @@ logMessage ()
{ {
message="$*" message="$*"
if [ -n "${verbose}" ]; then if [ ! -z "${verbose}" ]; then
echo $message echo $message
fi fi
} }
@@ -47,7 +47,7 @@ assert ()
shift shift
fi fi
if [ ! "$*" ] ; then if [ ! $* ] ; then
echo "assert failed: $0:$lineno [$*]" echo "assert failed: $0:$lineno [$*]"
exit exit
fi fi
@@ -55,63 +55,7 @@ assert ()
# #
# Install a number of Debian packages via apt-get including Recommends. # Install a number of Debian packages via apt-get.
#
# We take special care so that daemons shouldn't start after installation
# which they might otherwise do.
#
installDebianPackageAndRecommends ()
{
prefix=$1
shift
#
# Log our options
#
logMessage "Installing Debian packages $@ to prefix ${prefix}"
#
# We require a package + prefix
#
assert "$LINENO" "${prefix}"
#
# Prefix must be a directory.
#
assert "$LINENO" -d ${prefix}
#
# Use policy-rc to stop any daemons from starting.
#
printf '#!/bin/sh\nexit 101\n' > ${prefix}/usr/sbin/policy-rc.d
chmod +x ${prefix}/usr/sbin/policy-rc.d
#
# Disable the start-stop-daemon - this shouldn't be necessary
# with the policy-rc.d addition above, however leaving it in
# place won't hurt ..
#
disableStartStopDaemon ${prefix}
#
# Install the packages
#
DEBIAN_FRONTEND=noninteractive chroot ${prefix} /usr/bin/apt-get --yes install "$@"
#
# Remove the policy-rc.d script.
#
rm -f ${prefix}/usr/sbin/policy-rc.d
#
# Re-enable the start-stop-daemon
#
enableStartStopDaemon ${prefix}
}
#
# Install a number of Debian packages via apt-get, but without Recommends
# #
# We take special care so that daemons shouldn't start after installation # We take special care so that daemons shouldn't start after installation
# which they might otherwise do. # which they might otherwise do.
@@ -120,18 +64,61 @@ installDebianPackageAndRecommends ()
# #
installDebianPackage () installDebianPackage ()
{ {
prefix=$1 TARGET=$1
shift shift
installDebianPackageAndRecommends ${prefix} -o APT::Install-Recommends=false "$@" #
# Log our options
#
logMessage "Installing Debian packages $@ to target ${TARGET}"
#
# We require a package + target
#
assert "$LINENO" "${TARGET}"
#
# Target must be a directory.
#
assert "$LINENO" -d ${TARGET}
#
# Use policy-rc to stop any daemons from starting.
#
printf '#!/bin/sh\nexit 101\n' > ${TARGET}/usr/sbin/policy-rc.d
chmod +x ${TARGET}/usr/sbin/policy-rc.d
#
# Disable the start-stop-daemon - this shouldn't be necessary
# with the policy-rc.d addition above, however leaving it in
# place won't hurt ..
#
disableStartStopDaemon ${TARGET}
#
# Install the packages
#
DEBIAN_FRONTEND=noninteractive chroot ${TARGET} /usr/bin/apt-get --yes --force-yes --no-install-recommends install "$@"
#
# Remove the policy-rc.d script.
#
rm -f ${TARGET}/usr/sbin/policy-rc.d
#
# Re-enable the start-stop-daemon
#
enableStartStopDaemon ${TARGET}
} }
# #
# Generate a Debian-/Ubuntu-compliant menu.lst for legacy GRUB # Generate a Debian-/Ubuntu-compliant menu.lst for legacy GRUB
# #
generateDebianGrubMenuLst () generateDebianGrubMenuLst ()
{ {
prefix="$1" TARGET="$1"
DOMU_ISSUE="$2" DOMU_ISSUE="$2"
DOMU_KERNEL="$3" DOMU_KERNEL="$3"
DOMU_RAMDISK="$4" DOMU_RAMDISK="$4"
@@ -139,27 +126,27 @@ generateDebianGrubMenuLst ()
# #
# Log our options # Log our options
# #
logMessage "Generating a legacy GRUB menu.lst into prefix ${prefix}" logMessage "Generating a legacy GRUB menu.lst into target ${TARGET}"
# #
# We require at least 3 parameters # We require at least 3 parameters
# #
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
assert "$LINENO" "${DOMU_ISSUE}" assert "$LINENO" "${DOMU_ISSUE}"
assert "$LINENO" "${DOMU_KERNEL}" assert "$LINENO" "${DOMU_KERNEL}"
# #
# Prefix must be a directory, kernel a file # Target must be a directory, kernel a file
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
assert "$LINENO" -f "${prefix}/boot/${DOMU_KERNEL}" assert "$LINENO" -f "${TARGET}/boot/${DOMU_KERNEL}"
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
mkdir -p ${prefix}/boot/grub mkdir -p ${TARGET}/boot/grub
cat << E_O_MENU > ${prefix}/boot/grub/menu.lst cat << E_O_MENU > ${TARGET}/boot/grub/menu.lst
default 0 default 0
timeout 2 timeout 2
@@ -269,19 +256,17 @@ E_O_MENU
# #
disableStartStopDaemon () disableStartStopDaemon ()
{ {
local prefix="$1" local TARGET="$1"
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
for starter in start-stop-daemon initctl; do for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}" local daemonfile="${TARGET}/sbin/${starter}"
if [ -e "${daemonfile}" ]; then mv "${daemonfile}" "${daemonfile}.REAL"
mv "${daemonfile}" "${daemonfile}.REAL" echo '#!/bin/sh' > "${daemonfile}"
echo '#!/bin/sh' > "${daemonfile}" echo "echo \"Warning: Fake ${starter} called, doing nothing\"" >> "${daemonfile}"
echo "echo \"Warning: Fake ${starter} called, doing nothing\"" >> "${daemonfile}"
chmod 755 "${daemonfile}" chmod 755 "${daemonfile}"
logMessage "${starter} disabled / made a stub." logMessage "${starter} disabled / made a stub."
fi
done done
} }
@@ -292,10 +277,10 @@ disableStartStopDaemon ()
# #
enableStartStopDaemon () enableStartStopDaemon ()
{ {
local prefix=$1 local TARGET=$1
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
for starter in start-stop-daemon initctl; do for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}" local daemonfile="${TARGET}/sbin/${starter}"
# #
# If the disabled file is present then enable it. # If the disabled file is present then enable it.
@@ -316,28 +301,28 @@ enableStartStopDaemon ()
# #
removeDebianPackage () removeDebianPackage ()
{ {
prefix=$1 TARGET=$1
shift shift
# #
# Log our options # Log our options
# #
logMessage "Purging Debian package $@ from prefix ${prefix}" logMessage "Purging Debian package ${package} from target ${TARGET}"
# #
# We require a prefix # We require a target
# #
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
# #
# Prefix must be a directory. # Target must be a directory.
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
# #
# Purge the packages we've been given. # Purge the packages we've been given.
# #
chroot ${prefix} /usr/bin/apt-get remove --yes --purge "$@" chroot ${TARGET} /usr/bin/apt-get remove --yes --purge "$@"
} }
@@ -347,29 +332,29 @@ removeDebianPackage ()
# #
installRPMPackage () installRPMPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
# #
# Log our options # Log our options
# #
logMessage "Installing RPM ${package} to prefix ${prefix}" logMessage "Installing RPM ${package} to target ${TARGET}"
# #
# We require a package + prefix # We require a package + target
# #
assert "$LINENO" "${package}" assert "$LINENO" "${package}"
assert "$LINENO" "${prefix}" assert "$LINENO" "${TARGET}"
# #
# Prefix must be a directory. # Target must be a directory.
# #
assert "$LINENO" -d ${prefix} assert "$LINENO" -d ${TARGET}
# #
# Install the package # Install the package
# #
chroot ${prefix} /usr/bin/yum -y install ${package} chroot ${TARGET} /usr/bin/yum -y install ${package}
} }
# Backwards Compatibility Function # Backwards Compatibility Function
@@ -388,7 +373,7 @@ isYum() ( [ -x $1/usr/bin/yum ] )
# #
installPackage () installPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
if isDeb ; then if isDeb ; then
@@ -411,13 +396,13 @@ installPackage ()
# #
installGentooPackage () installGentooPackage ()
{ {
prefix=$1 TARGET=$1
package=$2 package=$2
# #
# Log our options # Log our options
# #
logMessage "Installing Gentoo package ${package} to prefix ${prefix}" logMessage "Installing Gentoo package ${package} to target ${TARGET}"
logMessage "NOTE: Not doing anything - this is a stub - FIXME" logMessage "NOTE: Not doing anything - this is a stub - FIXME"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -8,7 +8,7 @@
# http://www.steve.org.uk/ # http://www.steve.org.uk/
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -29,7 +29,7 @@ logMessage Script $0 starting
# #
# Make sure we have an /etc/network directory. # Make sure we have an /etc/network directory.
# #
mkdir -p ${prefix}/etc/network mkdir -p ${TARGET}/etc/network
# #
@@ -40,7 +40,7 @@ setupDynamicNetworking ()
# #
# The host is using DHCP. # The host is using DHCP.
# #
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces cat <<E_O_DHCP > ${TARGET}/etc/network/interfaces
# This file describes the network interfaces available on your system # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # and how to activate them. For more information, see interfaces(5).
@@ -71,8 +71,8 @@ setupStaticNetworking ()
# if $p2p is set then add a "pointopoint" setting. # if $p2p is set then add a "pointopoint" setting.
# #
point=''; point='';
if [ -n "${p2p}" ]; then if [ ! -z "${p2p}" ]; then
point=" pointopoint ${p2p}" point="pointopoint ${p2p}"
else else
point='' point=''
fi fi
@@ -81,21 +81,14 @@ setupStaticNetworking ()
# broadcast address? # broadcast address?
# #
bcast=''; bcast='';
if [ -n "${broadcast}" ]; then if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}" bcast=" broadcast ${broadcast}"
fi fi
#
# gateway address?
#
if [ -n "${gateway}" ]; then
gateway=" gateway ${gateway}"
fi
# #
# We have a static IP address # We have a static IP address
# #
cat <<E_O_STATIC >${prefix}/etc/network/interfaces cat <<E_O_STATIC >${TARGET}/etc/network/interfaces
# This file describes the network interfaces available on your system # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # and how to activate them. For more information, see interfaces(5).
@@ -107,10 +100,10 @@ iface lo inet loopback
auto eth0 auto eth0
iface eth0 inet static iface eth0 inet static
address ${ip1} address ${ip1}
${gateway} gateway ${gateway}
netmask ${netmask} netmask ${netmask}
${bcast} ${bcast}
${point} ${point}
# post-up ethtool -K eth0 tx off # post-up ethtool -K eth0 tx off
# #
@@ -129,7 +122,7 @@ E_O_STATIC
logMessage Adding etho:${interface} logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces cat <<E_O_STATIC >>${TARGET}/etc/network/interfaces
auto eth0:${interface} auto eth0:${interface}
iface eth0:${interface} inet static iface eth0:${interface} inet static
address ${value} address ${value}
@@ -146,12 +139,12 @@ E_O_STATIC
# will be restored after hooks are run. # will be restored after hooks are run.
# #
if [ '' != "$nameserver" ]; then if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old rm -f ${TARGET}/etc/resolv.conf.old
for ns in $nameserver; do for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old echo "nameserver $ns" >>${TARGET}/etc/resolv.conf.old
done done
else else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old cp /etc/resolv.conf ${TARGET}/etc/resolv.conf.old
fi fi
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -9,7 +9,7 @@
# -- # --
# http://nedos.net # http://nedos.net
prefix=$1 TARGET=$1
# #
# Source our common functions # Source our common functions
@@ -29,7 +29,7 @@ if [ "${pygrub}" ]; then
logMessage Script $0 starting logMessage Script $0 starting
# #
# Resolve the correct architecture # Resolve the correct architecutre
# #
if [ "${arch}" = "i386" ]; then if [ "${arch}" = "i386" ]; then
@@ -61,31 +61,20 @@ fi
KERNEL_XEN_PKG="linux-image-xen-$XEN_ARCH" KERNEL_XEN_PKG="linux-image-xen-$XEN_ARCH"
KERNEL_PKG="linux-image-$XEN_ARCH" KERNEL_PKG="linux-image-$XEN_ARCH"
# Add "-pae" suffix for Debian releases after Squeeze. See
# https://bugs.debian.org/742778 for details.
if [ "${dist}" != "sarge" -a \
"${dist}" != "etch" -a \
"${dist}" != "lenny" -a \
"${dist}" != "squeeze" -a \
"$XEN_ARCH" = "686" ]; then
KERNEL_XEN_PKG="$KERNEL_XEN_PKG-pae"
KERNEL_PKG="$KERNEL_PKG-pae"
fi
logMessage Attempting to install the $KERNEL_XEN_PKG kernel image logMessage Attempting to install the $KERNEL_XEN_PKG kernel image
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_XEN_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_XEN_PKG is available - installing logMessage Package $KERNEL_XEN_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_XEN_PKG installDebianPackage ${TARGET} $KERNEL_XEN_PKG
else else
logMessage Package $KERNEL_XEN_PKG is not available logMessage Package $KERNEL_XEN_PKG is not available
logMessage Attempting to install the $KERNEL_PKG kernel image logMessage Attempting to install the $KERNEL_PKG kernel image
logMessage WARNING: This kernel may not have pvops logMessage WARNING: This kernel may not have pvops
if chroot ${prefix} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then if chroot ${TARGET} /usr/bin/apt-cache show $KERNEL_PKG > /dev/null 2>&1; then
logMessage Package $KERNEL_PKG is available - installing logMessage Package $KERNEL_PKG is available - installing
installDebianPackage ${prefix} initramfs-tools installDebianPackage ${TARGET} initramfs-tools
installDebianPackage ${prefix} $KERNEL_PKG installDebianPackage ${TARGET} $KERNEL_PKG
else else
logMessage Package $KERNEL_PKG is not available logMessage Package $KERNEL_PKG is not available
logMessage pygrub set, but kernel could not be installed logMessage pygrub set, but kernel could not be installed
@@ -94,30 +83,27 @@ else
fi fi
fi fi
# Check for "ls -v" support DOMU_KERNEL=$(basename $(ls -1 ${TARGET}/boot/vmlinuz* | tail -n 1))
V=''; if ls -1 ${prefix}/boot/vmlinuz* > /dev/null 2>&1; then V=-v; fi
DOMU_KERNEL=$(basename $(ls -1 ${V} ${prefix}/boot/vmlinuz* | tail -n 1))
KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g") KERNEL_REV=$(echo $DOMU_KERNEL | sed "s/vmlinuz-//g")
DOMU_RAMDISK="initrd.img-$KERNEL_REV" DOMU_RAMDISK="initrd.img-$KERNEL_REV"
DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${prefix}/etc/issue) DOMU_ISSUE=$(sed -re "s/ *\\\.*//g" -e1q < ${TARGET}/etc/issue)
# #
# Generate initrd if it does not exist # Generate initrd if it does not exist
# #
if [ -f ${prefix}/boot/$DOMU_RAMDISK ]; then if [ -f ${TARGET}/boot/$DOMU_RAMDISK ]; then
logMessage initrd exists, skipping generation logMessage initrd exists, skipping generation
else else
logMessage initrd missing, generating logMessage initrd missing, generating
chroot ${prefix} update-initramfs -c -k $KERNEL_REV chroot ${TARGET} update-initramfs -c -k $KERNEL_REV
fi fi
# #
# Generate a menu.lst for pygrub # Generate a menu.lst for pygrub
# #
generateDebianGrubMenuLst "${prefix}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK" generateDebianGrubMenuLst "${TARGET}" "$DOMU_ISSUE" "$DOMU_KERNEL" "$DOMU_RAMDISK"
else else

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,8 +2,6 @@
package Xen::Tools::Common; package Xen::Tools::Common;
=encoding utf8
=head1 NAME =head1 NAME
Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts
@@ -22,10 +20,9 @@ use Exporter 'import';
use vars qw(@EXPORT_OK @EXPORT); use vars qw(@EXPORT_OK @EXPORT);
use English; use English;
use File::Which;
@EXPORT = qw(readConfigurationFile xenRunning runCommand setupAdminUsers @EXPORT = qw(readConfigurationFile xenRunning runCommand setupAdminUsers
findXenToolstack findXenToolstack findBinary
logprint_with_config logonly_with_config fail_with_config); logprint_with_config logonly_with_config fail_with_config);
=head1 FUNCTIONS =head1 FUNCTIONS
@@ -70,7 +67,7 @@ sub readConfigurationFile ($$)
next if ( length($line) < 1 ); next if ( length($line) < 1 );
# Strip trailing comments. # Strip trailing comments.
if ( $line =~ /([^#]*)\#(.*)/ ) if ( $line =~ /(.*)\#(.*)/ )
{ {
$line = $1; $line = $1;
} }
@@ -128,11 +125,7 @@ sub xenRunning ($$)
my $running = 0; my $running = 0;
unless ($CONFIG->{'xm'}) { die "Couldn't determine Xen toolstack" unless $CONFIG->{'xm'};
warn "Couldn't determine Xen toolstack, skipping check for running DomUs."
unless $ENV{AS_INSTALLED_TESTING};
return 0;
}
open( CMD, $CONFIG->{'xm'}." list $hostname 2>/dev/null |" ) or open( CMD, $CONFIG->{'xm'}." list $hostname 2>/dev/null |" ) or
fail_with_config("Failed to run '".$CONFIG->{'xm'}." list $hostname'", $CONFIG); fail_with_config("Failed to run '".$CONFIG->{'xm'}." list $hostname'", $CONFIG);
@@ -146,6 +139,38 @@ sub xenRunning ($$)
return ($running); return ($running);
} }
=head2 findBinary
=begin doc
Find the location of the specified binary on the curent user's PATH.
Return undef if the named binary isn't found.
=end doc
=cut
sub findBinary
{
my ($bin) = (@_);
# strip any path which might be present.
$bin = $2 if ( $bin =~ /(.*)[\/\\](.*)/ );
foreach my $entry ( split( /:/, $ENV{ 'PATH' } ) )
{
# guess of location.
my $guess = $entry . "/" . $bin;
# return it if it exists and is executable
return $guess if ( -e $guess && -x $guess );
}
return undef;
}
=head2 findXenToolstack =head2 findXenToolstack
=begin doc =begin doc
@@ -167,12 +192,12 @@ sub findXenToolstack
return $toolstack if $toolstack; return $toolstack if $toolstack;
} }
my $xm = which('xm'); my $xm = findBinary('xm');
if ($xm and system("$xm list >/dev/null 2>/dev/null") == 0) { if ($xm and system("$xm list >/dev/null 2>/dev/null") == 0) {
return $xm; return $xm;
} }
my $xl = which('xl'); my $xl = findBinary('xl');
if ($xl and system("$xl list >/dev/null 2>/dev/null") == 0) { if ($xl and system("$xl list >/dev/null 2>/dev/null") == 0) {
return $xl; return $xl;
} }
@@ -196,7 +221,6 @@ sub findXenToolstack
sub runCommand ($$;$) sub runCommand ($$;$)
{ {
local $| = 1;
my ($cmd, $CONFIG, $fail_ok) = (@_); my ($cmd, $CONFIG, $fail_ok) = (@_);
# #
@@ -409,7 +433,7 @@ sub logprint_with_config ($$)
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Dmitry Nedospasov, http://nedos.net/ Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois Stéphane Jourdois
Merged from several scripts by Axel Beckert. Merged from several scripts by Axel Beckert.

View File

@@ -31,7 +31,7 @@ function _find_xen_images
for i in /etc/xen/*.cfg ; do for i in /etc/xen/*.cfg ; do
name=`grep ^name $i 2>/dev/null | awk -F\' '{print $2}'` name=`grep ^name $i 2>/dev/null | awk -F\' '{print $2}'`
if [ -n "${name}" ] ; then if [ ! -z "${name}" ] ; then
names="${names} ${name}" names="${names} ${name}"
fi fi
done done

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,12 +1,15 @@
#!/bin/sh #!/bin/sh
# #
# Configure the new image to be a minimal image, by removing packages # Configure the new image to be a minimal image, by removing
# not necessarily needed - and installing less resource-hungry ones # packages I don't care about - and installing new ones I prefer.
#
# Steve
# --
# http://www.steve.org.uk/
# #
# Still far away from perfect. Less personal than in the past, but
# for now still based on gut feeling.
prefix=$1
TARGET=$1
@@ -23,74 +26,43 @@ fi
# #
# Install some new packages - do this first to avoid dependency errors # Install some new packages - do this first to avoid dependency errors.
# #
installDebianPackage ${TARGET} syslog-ng
installDebianPackage ${TARGET} deborphan
installDebianPackage ${TARGET} less
installDebianPackage ${TARGET} screen
installDebianPackage ${TARGET} sudo
installDebianPackage ${TARGET} vim
# Minimalst possible syslog service
installDebianPackage ${prefix} busybox-syslogd
# #
# Remove some standard packages. # Remove some standard packages.
# #
# PPP stuff. # PPP stuff.
removeDebianPackage ${prefix} pppconfig removeDebianPackage ${TARGET} pppconfig
removeDebianPackage ${prefix} pppoeconf removeDebianPackage ${TARGET} pppoeconf
removeDebianPackage ${prefix} pppoe removeDebianPackage ${TARGET} pppoe
removeDebianPackage ${prefix} ppp removeDebianPackage ${TARGET} ppp
removeDebianPackage ${prefix} libpcap0.7 removeDebianPackage ${TARGET} libpcap0.7
# Editors, keep only a minimal vi, namely nvi # Editors
installDebianPackage ${prefix} nvi removeDebianPackage ${TARGET} nano
removeDebianPackage ${prefix} ed nano removeDebianPackage ${TARGET} ed
removeDebianPackage ${prefix} vim-tiny vim-common vim-runtime removeDebianPackage ${TARGET} nvi
# Syslog # Syslog
removeDebianPackage ${prefix} klogd sysklogd removeDebianPackage ${TARGET} klogd
removeDebianPackage ${prefix} rsyslog removeDebianPackage ${TARGET} sysklogd
removeDebianPackage ${prefix} logrotate
# Man pages # manpages
removeDebianPackage ${prefix} manpages man-db groff-base removeDebianPackage ${TARGET} manpages
removeDebianPackage ${prefix} info removeDebianPackage ${TARGET} man-db
removeDebianPackage ${TARGET} info
# misc # misc
removeDebianPackage ${prefix} tasksel tasksel-data removeDebianPackage ${TARGET} tasksel tasksel-data
removeDebianPackage ${prefix} pciutils removeDebianPackage ${TARGET} pciutils
removeDebianPackage ${prefix} fdutils removeDebianPackage ${TARGET} fdutils
removeDebianPackage ${prefix} util-linux-locales locales removeDebianPackage ${TARGET} cpio
removeDebianPackage ${prefix} debconf-i18n
removeDebianPackage ${prefix} netcat-traditional netcat-openbsd
removeDebianPackage ${prefix} whiptail
# Unnecessary stuff only installed by default on Ubuntu
removeDebianPackage ${prefix} sudo
removeDebianPackage ${prefix} resolvconf
removeDebianPackage ${prefix} console-setup keyboard-configuration kbd xkb-data ureadahead
removeDebianPackage ${prefix} python python3 dh-python
# General cleanup
chroot ${prefix} aptitude -y markauto \
'~n -common' \
'~s libs' \
'~s localization' \
'~s misc' \
'~s perl' \
'~s python'
chroot ${prefix} apt-mark auto \
cpio \
crda \
debconf \
install-info \
kmod \
lsb-base \
makedev \
mime-support \
module-init-tools \
plymouth
chroot ${prefix} aptitude -y purge '~c'
removeDebianPackage ${prefix} aptitude aptitude-common
chroot ${prefix} apt-get autoremove --purge
chroot ${prefix} apt-get clean

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -8,7 +8,6 @@ verbose:
modules: modules.sh modules: modules.sh
./modules.sh > modules.t ./modules.sh > modules.t
chmod 750 modules.t
clean: clean:
rm -vf *~ modules.t rm -vf *~ modules.t

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that the arguments in etc/xen-tools.conf match those used in # Test that the arguments in etc/xen-tools.conf match those used in
# xen-create-image. # xen-create-image.

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that every perl script accepts and processes each of the options # Test that every perl script accepts and processes each of the options
# documented in its POD. # documented in its POD.

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that .gitignore is coherent # Test that .gitignore is coherent
# #
@@ -7,20 +7,10 @@
# #
use strict; use strict;
use Test::More; use Test::More tests => 3;
use File::Which;
if ( $ENV{TRAVIS} ) { BEGIN { use_ok( 'Git' ); }
plan( skip_all => "these tests don't make sense on a fresh checkout" );
}
if (which('git') and -d '.git') {
plan tests => 3;
} else {
plan skip_all => 'gitignore test is only thought for release testing.';
}
use_ok( 'Git' );
# First, check that no tracked files are ignored # First, check that no tracked files are ignored
my $cmd = Git::command_output_pipe('ls-files', '--ignored', '--exclude-standard'); my $cmd = Git::command_output_pipe('ls-files', '--ignored', '--exclude-standard');

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that our policy-rc.d file is created and removed as we expect in our hooks. # Test that our policy-rc.d file is created and removed as we expect in our hooks.
# #
@@ -19,14 +19,12 @@ use File::Temp;
# against we look for subdirectories beneath hooks/ and test each # against we look for subdirectories beneath hooks/ and test each
# one. # one.
# #
foreach my $dir ( glob( "hooks/*" ) )
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks';
foreach my $dir ( glob( "$hook_dir/*" ) )
{ {
next if ( $dir =~ /CVS/i ); next if ( $dir =~ /CVS/i );
next if ( ! -d $dir ); next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ ) if ( $dir =~ /hooks\/(.*)/ )
{ {
my $dist = $1; my $dist = $1;
@@ -51,7 +49,7 @@ sub maybeCallHook
# #
foreach my $file ( qw/ 01-disable-daemons 99-enable-daemons / ) foreach my $file ( qw/ 01-disable-daemons 99-enable-daemons / )
{ {
return if ( ! -e "$hook_dir/$dist/$file" ); return if ( ! -e "./hooks/$dist/$file" );
} }
# #
@@ -89,7 +87,7 @@ sub testHook
# #
# Call the first hook # Call the first hook
# #
`$hook_dir/$dist/01-disable-daemons $dir`; `./hooks/$dist/01-disable-daemons $dir`;
# #
# Now /usr/sbin should exist. # Now /usr/sbin should exist.
@@ -100,7 +98,7 @@ sub testHook
# #
# Now call the second hook # Now call the second hook
# #
`$hook_dir/$dist/99-enable-daemons $dir`; `./hooks/$dist/99-enable-daemons $dir`;
ok( ! -x $dir . "/usr/sbin/policy-rc.d", "The policy-rc.d file was correctly removed" ); ok( ! -x $dir . "/usr/sbin/policy-rc.d", "The policy-rc.d file was correctly removed" );
} }

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that we get an /etc/hosts etc file created when DHCP is used. # Test that we get an /etc/hosts etc file created when DHCP is used.
# #
@@ -19,14 +19,13 @@ use File::Temp;
# against we look for subdirectories beneath hooks/ and test each # against we look for subdirectories beneath hooks/ and test each
# one. # one.
# #
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks'; foreach my $dir ( glob( "hooks/*" ) )
foreach my $dir ( glob( "$hook_dir/*" ) )
{ {
next if ( $dir =~ /CVS/i ); next if ( $dir =~ /CVS/i );
next if ( $dir =~ /common/i ); next if ( $dir =~ /common/i );
next if ( ! -d $dir ); next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ ) if ( $dir =~ /hooks\/(.*)/ )
{ {
my $dist = $1; my $dist = $1;
@@ -79,14 +78,14 @@ sub testHostCreation
# Make sure we have the distro-specific hook directory, and # Make sure we have the distro-specific hook directory, and
# TLS-disabling hook script. # TLS-disabling hook script.
# #
ok( -d "$hook_dir/$dist", "There is a hook directory for the distro $dist" ); ok( -d "hooks/$dist", "There is a hook directory for the distro $dist" );
ok( -e "$hook_dir/$dist/50-setup-hostname", "There is a hook for setting up hostname stuff." ); ok( -e "hooks/$dist/50-setup-hostname", "There is a hook for setting up hostname stuff." );
# #
# Call the hook # Call the hook
# #
`$hook_dir/$dist/50-setup-hostname $dir`; `hooks/$dist/50-setup-hostname $dir`;
ok( -e $dir . "/etc/hosts", " There is now a hosts file present" ); ok( -e $dir . "/etc/hosts", " There is now a hosts file present" );

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that the /etc/inittab file is modified as we expect. # Test that the /etc/inittab file is modified as we expect.
# #
@@ -11,7 +11,6 @@ use Test::More;
use File::Temp; use File::Temp;
use File::Copy; use File::Copy;
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks';
# #
# Check if build system has /etc/inittab. # Check if build system has /etc/inittab.
@@ -24,13 +23,13 @@ SKIP: {
# against we look for subdirectories beneath hooks/ and test each # against we look for subdirectories beneath hooks/ and test each
# one. # one.
# #
foreach my $dir ( glob( "$hook_dir/*" ) ) foreach my $dir ( glob( "hooks/*" ) )
{ {
next if ( $dir =~ /CVS/i ); next if ( $dir =~ /CVS/i );
next if ( $dir =~ /common/i ); next if ( $dir =~ /common/i );
next if ( ! -d $dir ); next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ ) if ( $dir =~ /hooks\/(.*)/ )
{ {
my $dist = $1; my $dist = $1;
@@ -61,13 +60,13 @@ sub testHook
ok( -d $dir, "Temporary directory created OK" ); ok( -d $dir, "Temporary directory created OK" );
ok( -e $dir . "/etc/inittab", "/etc/inittab copied correctly." ); ok( -e $dir . "/etc/inittab", "/etc/inittab copied correctly." );
ok( -e "$hook_dir/$dist/30-disable-gettys", "$dist inittab fixing hook exists" ); ok( -e "hooks/$dist/30-disable-gettys", "$dist inittab fixing hook exists" );
ok( -x "$hook_dir/$dist/30-disable-gettys", "$dist inittab fixing hook is executable" ); ok( -x "hooks/$dist/30-disable-gettys", "$dist inittab fixing hook is executable" );
# #
# Call the hook # Call the hook
# #
`$hook_dir/$dist/30-disable-gettys $dir`; `hooks/$dist/30-disable-gettys $dir`;
# #
# Now we read the new file, and make sure it looks like we expect. # Now we read the new file, and make sure it looks like we expect.

View File

@@ -1,4 +1,4 @@
#!perl #!/usr/bin/perl
# #
# Test that the tls-disabling hook works. # Test that the tls-disabling hook works.
# #
@@ -21,17 +21,16 @@ if ( $Config::Config{archname} =~ /64/ )
# against we look for subdirectories beneath hooks/ and test each # against we look for subdirectories beneath hooks/ and test each
# one. # one.
# #
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks'; foreach my $dir ( glob( "hooks/*" ) )
foreach my $dir ( glob( "$hook_dir/*" ) )
{ {
next if ( $dir =~ /CVS|common/i ); next if ( $dir =~ /CVS|common/i );
next if ( ! -d $dir ); next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ ) if ( $dir =~ /hooks\/(.*)/ )
{ {
my $dist = $1; my $dist = $1;
testTLSDisabling( $dist ) if -e "$hook_dir/$dist/10-disable-tls"; testTLSDisabling( $dist ) if -e "hooks/$dist/10-disable-tls";
} }
} }
@@ -64,15 +63,15 @@ sub testTLSDisabling
# Make sure we have the distro-specific hook directory, and # Make sure we have the distro-specific hook directory, and
# TLS-disabling hook script. # TLS-disabling hook script.
# #
ok( -d "$hook_dir/$dist", "There is a hook directory for the distro $dist" ); ok( -d "hooks/$dist", "There is a hook directory for the distro $dist" );
ok( -e "$hook_dir/$dist/10-disable-tls", "TLS Disabling hook exists ($dist)" ); ok( -e "hooks/$dist/10-disable-tls", "TLS Disabling hook exists ($dist)" );
ok( -x "$hook_dir/$dist/10-disable-tls", "TLS Disabling hook is executable ($dist)" ); ok( -x "hooks/$dist/10-disable-tls", "TLS Disabling hook is executable ($dist)" );
# #
# Call the hook # Call the hook
# #
`$hook_dir/$dist/10-disable-tls $dir`; `hooks/$dist/10-disable-tls $dir`;
# #
# Make sure the the TLS directory is empty # Make sure the the TLS directory is empty

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that all the hook files we install are executable. # Test that all the hook files we install are executable.
# #
@@ -15,14 +15,13 @@ use Test::More;
# against we look for subdirectories beneath hooks/ and test each # against we look for subdirectories beneath hooks/ and test each
# one. # one.
# #
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks'; foreach my $dir ( glob( "hooks/*" ) )
foreach my $dir ( glob( "$hook_dir/*" ) )
{ {
next if ( $dir =~ /CVS/i ); next if ( $dir =~ /CVS/i );
next if ( $dir =~ /common/i ); next if ( $dir =~ /common/i );
next if ( ! -d $dir ); next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ ) if ( $dir =~ /hooks\/(.*)/ )
{ {
my $dist = $1; my $dist = $1;
testDistroHooks( $dist ); testDistroHooks( $dist );
@@ -38,12 +37,12 @@ sub testDistroHooks
# #
# Make sure we have a distro-specific hook directory. # Make sure we have a distro-specific hook directory.
# #
ok( -d "$hook_dir/$dist", "There is a hook directory for distro $dist" ); ok( -d "hooks/$dist", "There is a hook directory for distro $dist" );
# #
# Now make sure we just have files, and that they are executable. # Now make sure we just have files, and that they are executable.
# #
foreach my $file ( glob( "$hook_dir/$dist/*" ) ) foreach my $file ( glob( "hooks/$dist/*" ) )
{ {
if ( ! -d $file ) if ( ! -d $file )
{ {

View File

@@ -1,20 +0,0 @@
package File::Which;
# Mockup package to _not_ find anything
use strict;
use warnings;
use Exporter;
use vars qw{@ISA @EXPORT @EXPORT_OK};
BEGIN {
@ISA = 'Exporter';
@EXPORT = 'which';
}
sub which {
return;
}
'This is a fake!';

View File

@@ -25,9 +25,11 @@ use Test::More qw( no_plan );
EOF EOF
for i in `grep '^use ' -r .. | egrep -v '^\./\.git/|Expect|POSIX|Xen::' | awk '{print $2}' | tr -d '\r;()' | sort -u`; \ for i in `grep '^use ' -r .. | grep -v Expect | grep -v POSIX | grep -v Xen:: | awk '{print $2}' | tr -d
\;\(\) | sort | uniq`; \ \;\(\) | sort | uniq`; \
do \ do \
echo "BEGIN{ use_ok( '$i' ); }"; \ echo "BEGIN{ use_ok( '$i' ); }"; \
echo "require_ok( '$i' );" ; \ echo "require_ok( '$i' );" ; \
printf '\n' ; \ printf '\n' ; \
done

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that every perl + shell script we have contains no tabs. # Test that every perl + shell script we have contains no tabs.
# #

View File

@@ -1,4 +1,4 @@
#!perl -w #!/usr/bin/perl -w
# #
# Test that every perl file we have passes the syntax check. This of # Test that every perl file we have passes the syntax check. This of
# course needs not only build dependencies but also run-time # course needs not only build dependencies but also run-time
@@ -39,9 +39,6 @@ sub checkFile
# Nor about Makefiles # Nor about Makefiles
return if ( $file =~ /\/Makefile$/ ); return if ( $file =~ /\/Makefile$/ );
# Nor about Change Logs
return if ( $file =~ /\/changelog$/i );
# Nor about git files # Nor about git files
return if ( $file =~ /^\.\/\.git\// ); return if ( $file =~ /^\.\/\.git\// );
@@ -54,9 +51,6 @@ sub checkFile
# `tests/hook-tls.t` is too. # `tests/hook-tls.t` is too.
return if ( $file =~ /hook-tls.t$/ ); return if ( $file =~ /hook-tls.t$/ );
# Ignore cover_db files
return if ( $file =~ /^\.\/cover_db\// );
# See if it is a perl file. # See if it is a perl file.
my $isPerl = 0; my $isPerl = 0;

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