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

Compare commits

..

121 Commits

Author SHA1 Message Date
Axel Beckert
fd0a486beb Release as 4.5 2014-10-26 01:43:53 +02:00
Axel Beckert
81ca2fb62d t/perl-syntax.t: Ignore changelog files, too 2014-10-26 01:43:53 +02:00
Axel Beckert
5b2d7d5d75 Makefile: Clean up coverage data in multiple targets 2014-10-26 01:43:52 +02:00
Axel Beckert
83a6d09e3d Flush output after each line in runCommand() 2014-10-26 01:20:44 +02:00
Axel Beckert
8562398af1 Add 15.04 Vivid, use old-releases.ubuntu.com for 13.10 Saucy 2014-10-25 22:43:18 +02:00
Axel Beckert
02730138a6 Add lintian override for debian-news-entry-uses-asterisk
I disagree.
2014-10-23 16:08:44 +02:00
Axel Beckert
1defbd3c02 Raise default password length from 8 to 23 2014-10-08 17:41:24 +02:00
Axel Beckert
19e07799cd Add password length sanity check with fallback to default length 2014-10-08 17:41:24 +02:00
Axel Beckert
5d7e059668 --password overrides --genpass
Closes: #764143

Based on patch by Santiago Vila.
2014-10-08 17:41:24 +02:00
Axel Beckert
0a7ec4f855 Update changelog and mention Santiago as contributor in AUTHORS 2014-10-06 00:57:26 +02:00
Santiago Vila
e1a5e89502 Fix two more typos 2014-10-06 00:56:49 +02:00
Axel Beckert
47a0cfe6f4 Add changelog item for Santiago's second contribution 2014-10-05 19:56:44 +02:00
Santiago Vila
36f318dbbe Fix copy & paste errors in comments in typos in roles/puppet (Closes: #764134) 2014-10-05 19:55:08 +02:00
Axel Beckert
41a30ede83 Add changelog item for Santiago's contribution 2014-10-05 18:16:26 +02:00
Santiago Vila
043b58b5ea Fix unaligned maxmem output of xen-create-image. (Closes: #764126) 2014-10-05 18:16:07 +02:00
Axel Beckert
4d64044f29 Fix corner cases where not the latest kernel would have been checked 2014-09-25 23:20:07 +02:00
Axel Beckert
48097cd07b Fix initial configuration summary in cases where pygrub is used 2014-09-25 23:18:48 +02:00
Axel Beckert
71e5ad4345 Fix missing quoting in shell function "assert" in hooks/common.sh 2014-09-25 23:15:51 +02:00
Axel Beckert
414d67c624 Add changelog entry for patch by Eric Engstrom 2014-09-25 22:09:27 +02:00
Eric Engstrom
58943d3b19 Fix lvcreate awaiting user input when creating swap lv 2014-09-25 22:07:30 +02:00
Axel Beckert
e850ad7ab3 Run some tests twice, once with mocked File::Which, once with original File::Which 2014-09-25 21:57:33 +02:00
Axel Beckert
0546776c17 Fix lintian warning depends-on-perl-modules 2014-09-25 21:37:37 +02:00
Axel Beckert
8de0aedfc3 Travis: Install lsb-release -- should cause some more code to be tested 2014-09-25 21:31:17 +02:00
Axel Beckert
d4265d6ced Mention code coverage in README 2014-09-25 21:24:51 +02:00
Axel Beckert
1e7f45d207 Coveralls.io: Ignore perl scripts under /usr, too 2014-09-25 21:11:20 +02:00
Axel Beckert
ba4d4f6db8 Travis: Add bin to local PATH 2014-09-25 21:05:27 +02:00
Axel Beckert
1b42dc14c7 Coveralls.io: Also pass ignore_re to report-generating cover call 2014-09-25 21:03:46 +02:00
Axel Beckert
4e43b8faf2 Test suite: Rename SAFE_ENV to SAVE_ENV to prevent confusion 2014-09-25 20:55:35 +02:00
Axel Beckert
dc84393d6c Coveralls.io: Separate runs again, as just "cover" checks coverage on .t files 2014-09-25 20:48:30 +02:00
Axel Beckert
2c0639ca21 Enable Coveralls.io 2014-09-25 20:42:56 +02:00
Axel Beckert
47b100cf08 Drop redundant occurrences of "./" from test suite 2014-09-25 20:10:11 +02:00
Axel Beckert
525f3ce24e Add Travis badge to README 2014-09-25 20:08:54 +02:00
Axel Beckert
6079dbab06 Travis: Drop Perl 5.8, doesn't know about =encoding in POD 2014-09-25 20:08:10 +02:00
Axel Beckert
fd0a5d2b10 Don't run t/gitignore.t on Travis, doesn't make sense on a fresh checkout 2014-09-25 19:50:24 +02:00
Axel Beckert
edc7737cb3 Make test suite work with perl in $PATH instead of hardcoded /usr/bin/perl 2014-09-25 19:40:26 +02:00
Axel Beckert
d2617ea85f Travis: Add forgotten build-dependency on Text::Template 2014-09-25 19:34:33 +02:00
Axel Beckert
559eeb14b9 Use Travis CI 2014-09-25 19:26:20 +02:00
Axel Beckert
78077e5aa3 Update debian/changelog to separate upstream and debian changes 2014-09-25 14:57:35 +02:00
Axel Beckert
8b3625426d Bump Standards-Version to 3.9.6 (no changes needed) 2014-09-25 14:55:34 +02:00
Axel Beckert
937e440d24 Mention Semantic versioning 2014-09-25 14:46:14 +02:00
Axel Beckert
c2ead30949 pygrub detection: Prefer /usr/lib/xen-default over /usr/lib/xen-x.y
Otherwise a versioned pygrub path will be used (e.g.
/usr/lib/xen-4.1/bin/pygrub  in the case of Debian Wheezy) and then
all host configurations would need to be updated when dist-upgrading
to Debian Jessie with Xen 4.3.

In case you already ran into this issue, the following command should
fix the issue for you:

fgrep -l xen-4.1/bin/pygrub -r /etc/xen/ | xargs sed -e 's:xen-4.1/bin/pygrub:xen-default/bin/pygrub:g' -i
2014-06-16 19:13:44 +02:00
Axel Beckert
03769b27fe Add changelog entry for previous commit 2014-06-11 09:52:47 +02:00
Joan
079382302b Fix gateway always empty on debian domU 2014-05-30 17:30:23 +02:00
Axel Beckert
0c894eec48 Update list of supported Ubuntu releases
Preliminary support for Ubuntu 14.10 Utopic Unicorn
2014-05-17 12:07:33 +02:00
Axel Beckert
b95c23b86f TODO: Debian bug #703606 2014-03-28 22:33:05 +01:00
Axel Beckert
fcebb14002 Drop all xend related sanity checks
They cause more havoc nowadays than they help.

Thanks Ian Campbell!

Closes: #732456
2014-03-28 22:24:21 +01:00
Axel Beckert
aa54db02c3 Add Thanks/Credits for recent contributions 2014-03-28 21:16:51 +01:00
Lionel FÉLICITÉ
5093c731cf Pass "-y" option ("assume yes") to yum
Closes: #735675
2014-03-28 20:48:18 +01:00
Axel Beckert
8610300206 Use "686-pae" kernels instead of "686" kernels on Debian Wheezy and later
Thanks to Daniel Lintott!

Closes: #742778
2014-03-28 20:06:00 +01:00
Axel Beckert
29bdbdd455 Fix typo in comment 2014-03-28 19:50:48 +01:00
Axel Beckert
e3f5230bcb TODO: Make default source installation work on non-debianesk systems 2014-03-12 00:19:39 +01:00
Axel Beckert
c5a2e2427a Ignore cover_db directory in t/perl-syntax.t 2013-12-15 17:32:32 +01:00
Axel Beckert
5d3f159aad Update d/changelog + d/dirs for Adrian C.'s patch 2013-12-15 17:23:01 +01:00
Adrian C. (anrxc)
4505f7e141 bin: support hook overrides in xt-customize-image
The systems administrator can optionally provide site-specific
revisions of upstream hooks by placing them in the directory
/etc/xen-tools/hooks.d/ as a method for disabling hooks, adding
site-specific extra features that don't get overwritten on upgrades,
or patching bugs early.

Signed-off-by: Adrian C. (anrxc) <anrxc@sysphere.org>
2013-12-15 17:18:28 +01:00
Axel Beckert
f20e312140 Release 4.4 2013-12-11 23:03:55 +01:00
Axel Beckert
3978561a44 Add build-dependency on "liblog-message-perl | perl (<< 5.17.0)"…
… to avoid warnings with Perl 5.18 and future FTBFS
2013-12-11 21:48:38 +01:00
Axel Beckert
0feefc4179 hooks/common.sh: Split up installDebianPackage…
… into installDebianPackage and installDebianPackageAndRecommends
2013-12-10 00:32:07 +01:00
Axel Beckert
8d8423fb06 TODOs from recent discussions and problem reports 2013-11-19 21:02:33 +01:00
Axel Beckert
c8867a0f67 Rework "minimal" role to be less based on personal preferences
No more installs sudo, vim, syslog-ng, etc.

Fixes usage together with pygrub.
2013-11-19 21:02:24 +01:00
Axel Beckert
5dc76d12b2 Fix some typos in the README 2013-10-30 11:07:45 +01:00
Axel Beckert
4c9fd36c28 Mention Ubuntu 14.04 Trusty Tahr in long description and README 2013-10-30 11:05:30 +01:00
Axel Beckert
b39f85303c Also add build-dependency on "libterm-ui-perl | perl (<< 5.17.0)" 2013-10-29 00:10:21 +01:00
Axel Beckert
81511000d8 Run t/gitignore.t only if git is installed and .git present 2013-10-29 00:09:03 +01:00
Axel Beckert
e1caf2566a Declare this as 4.4 RC1 2013-10-28 22:39:03 +01:00
Axel Beckert
2c020323f6 Refactoring: xt-create-xen-config: Use s/// to strip trailing MB size suffixes 2013-10-28 22:28:40 +01:00
Axel Beckert
c82cb31adc Fix cases where maxmem is not defined
(which is fine)
2013-10-28 21:57:10 +01:00
Axel Beckert
b676da079c xen-delete-image: Exit with return code != 0 in all error cases 2013-10-28 21:31:14 +01:00
Axel Beckert
4d73574a40 xen-delete-image: Proper error message if --test is not used with --dir
Also abort earlier in this case.

Closes: #704878
2013-10-28 21:28:45 +01:00
Axel Beckert
55b303f5a9 Add changelog entry for Patryk Ściborek's fix 2013-10-28 20:54:39 +01:00
Patryk Ściborek
96679edad9 Fix disableStartStopDaemon() if /sbin/initctl is not present 2013-10-28 20:48:10 +01:00
Axel Beckert
ca734e511f Bump Standards-Version to 3.9.5 (no changes) 2013-10-28 10:54:50 +01:00
Axel Beckert
1e76cd2da9 Update changelog 2013-10-25 19:23:39 +02:00
Axel Beckert
d9ed3e65db Merge branch 'fix_passwd' of gitorious.org:xen-tools/aseques-xen-tools 2013-10-25 18:36:54 +02:00
Axel Beckert
73ced0b3f3 Update changelog 2013-10-25 18:36:48 +02:00
Joan
42345c75d4 Fix password interation on image creation 2013-10-25 10:51:11 +02:00
Axel Beckert
ff4aa11dd3 Merge branch 'maxmem' of gitorious.org:xen-tools/aseques-xen-tools 2013-10-23 13:59:16 +02:00
Axel Beckert
cfa30f06b6 Preliminary support for Ubuntu 14.04 Trusty Tahr 2013-10-23 13:54:45 +02:00
Joan
b51936e6ee Updated changelog 2013-10-18 14:09:59 +02:00
Joan
1374208d3b Implemente the option maxmem in xen-tools allowing to set a maximum value to enable dynamic memory ballooning. 2013-10-18 12:59:50 +02:00
Axel Beckert
0e8178ab0f Fix german-ish grammar and remove dash in "IP-Addresses" 2013-10-01 22:20:41 +02:00
Axel Beckert
d20f832f82 Also display MAC address after the DomU has been created 2013-10-01 22:19:10 +02:00
Axel Beckert
fae561aaca Meaningful whitespace fixes in hooks/common/40-setup-networking-deb 2013-09-24 23:16:22 +02:00
Axel Beckert
205bf96f0a Handle potentially empty gateway setting properly
… in hooks/common/40-setup-networking-deb

Thanks Simone Caruso!
2013-09-24 23:11:05 +02:00
Axel Beckert
571f540992 Refactoring: Replace all occurrences of "! -z" by "-n"
Occurred in hooks and bash-completion.
2013-09-24 22:54:05 +02:00
Axel Beckert
86dd78c681 Drop support for memory size in kilobytes in xen-create-image
Neither xt-create-xen-config nor xm support it.
2013-09-24 22:41:20 +02:00
Axel Beckert
6644afa9fd xen-list-images now displays a unit after the memory size 2013-09-24 22:36:27 +02:00
Axel Beckert
7bb7089c9f Changelog entry for Gitorious merge request #5 2013-09-24 22:20:14 +02:00
Axel Beckert
a9dfc112b9 Merge commit 'refs/merge-requests/5' of git://gitorious.org/xen-tools/xen-tools into merge-requests/5 2013-09-24 22:08:41 +02:00
Axel Beckert
c62b053a7b Also declare POD encoding in Xen::Tools::Common
Recode Xen::Tools::Common to UTF-8

Fixes FTBFS with Perl 5.18. Closes #720519 a second time.
2013-09-24 22:02:28 +02:00
Axel Beckert
cc4e170357 Dependency on Term::UI needed for Perl >= 5.17 2013-09-10 17:53:51 +02:00
Axel Beckert
70bf0607db Merge branch 'master' of gitorious.org:xen-tools/xen-tools 2013-09-10 16:14:01 +02:00
Axel Beckert
d8e4a4f264 Note that f1c7c6e1 closes #703159 2013-09-10 16:10:33 +02:00
Axel Beckert
5825331cea Fix typo in current changelog entry 2013-08-24 04:07:16 +02:00
Axel Beckert
f1c7c6e11c Loop around calling "passwd" to get a second chance to change the password
Needs Term::UI which is part of Debian's perl-modules package, hence
no new (build-) dependencies needed.
2013-08-24 00:54:21 +02:00
Axel Beckert
3b806d9f25 Do not run "passwd" via runCommand
runCommand captures STDOUT for logging which is not desired for
interactive commands.

Makes --passwd usable again.

Thanks to Christan Herzog for the bug report.
2013-08-24 00:12:44 +02:00
Axel Beckert
97b0ed29c0 Also switch from cdn.debian.net to http.debian.net in xen-tools.conf 2013-08-23 21:13:44 +02:00
Axel Beckert
12960c8f2b Release 4.4 beta 1 2013-08-23 19:31:47 +02:00
Axel Beckert
029faab59c Add build-dependencies on libdata-validate-{domain,ip,uri}-perl 2013-08-23 19:31:47 +02:00
Axel Beckert
cb5ce9ea5c Bump Standards-Version to 3.9.4 (no changes) 2013-08-23 19:08:42 +02:00
Axel Beckert
fbc903877a Declare POD encoding to be UTF-8 in bin/*
Fixes FTBFS with Perl 5.18.

Closes: #720519
2013-08-23 09:08:43 +02:00
Axel Beckert
fb8b494b41 Preliminary support for Ubuntu Saucy
Does not yet work due to missing support for Saucy in debootstrap.

Also move default mirror for Ubuntu Hardy from archive to old-releases
as Hardy is now EoL.
2013-07-11 01:49:46 +02:00
Axel Beckert
516a7a1625 Update descriptions of distributions 2013-07-11 01:30:41 +02:00
Axel Beckert
d0c4439a10 README: Update list of required Perl modules 2013-07-11 01:13:45 +02:00
Axel Beckert
87fc2a76a0 Remove some redundancy in the README 2013-07-11 00:59:33 +02:00
Axel Beckert
34838811f9 Reorder list of Perl modules in README alphabetically 2013-07-11 00:57:59 +02:00
Axel Beckert
ad68cdb46b Change CPAN links from search.cpan.org to metacpan.org 2013-07-11 00:55:51 +02:00
Axel Beckert
e5abe64ae0 Fix broken quoting in list of required binaries 2013-07-11 00:44:25 +02:00
Axel Beckert
9c47e5da4f Use File::Which instead of findBinary or which 2013-07-11 00:39:05 +02:00
Axel Beckert
b271bf6a63 TODO: Still to many backticks in use
Also merge the two findBinary TODOs
2013-07-11 00:26:12 +02:00
Axel Beckert
a72fbb5f79 TODO: The mess after hitting Ctrl-C has been fixed, too 2013-07-11 00:16:09 +02:00
Axel Beckert
149ad47c5f TODO: Remove #623443-related stuff. Fixed in 74f35d65 2013-07-11 00:13:28 +02:00
Axel Beckert
4442c1a17f TODO: Move remaining code deduplication to Break-Backwards-Compatibility list 2013-07-11 00:11:54 +02:00
Axel Beckert
be55a4a6f2 Remove reference to removed t/xen-tools.t from KNOWN_BUGS 2013-07-11 00:07:37 +02:00
Axel Beckert
5883b7a15c TODO: Generate ECDSA host keys where possible 2013-07-10 23:54:46 +02:00
Axel Beckert
9e05298832 Add dependency on ${perl:Depends} to fix dpkg-gencontrol warning 2013-07-10 22:55:20 +02:00
Axel Beckert
be05397249 Bump debhelper compatibility to 9
Update versioned debhelper build-dependency
2013-07-10 22:53:14 +02:00
Axel Beckert
3b72f2ee4b Mention that #715340 is fixed by 1de424a6 2013-07-10 22:45:05 +02:00
Axel Beckert
699025f33e Use Data::Validate::{Domain,IP} for IP addresses and hostname checks
Add corresponding dependencies on libdata-validate-{domain,ip}-perl.
2013-07-10 22:38:29 +02:00
Axel Beckert
74f35d6550 Better document and check requirements for --apt_proxy
See http://bugs.debian.org/623443 for the corresponding apt issue.

Also add a dependency on libdata-validate-uri-perl which is used to do
the syntax check.
2013-07-10 21:50:09 +02:00
Axel Beckert
72a2a637be Mention issue about #623443 in TODO 2013-07-09 22:38:42 +02:00
Philipp Erbelding
70a30bb146 prevent matching lines like "shadow_memory = 16" 2012-11-08 12:38:48 +01:00
101 changed files with 1095 additions and 748 deletions

1
.gitignore vendored
View File

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

26
.travis.yml Normal file
View File

@@ -0,0 +1,26 @@
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
- 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,9 +34,15 @@ Contributions
Vagrant Cascadian <vagrant [at] org.debian>
- Less redundant SSH key generation
Adrian C. (anrxc) <anrxc [at] org.sysphere>
- Hook overrides
Edd Dumbill <edd [at] com.usefulinc>
- 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>
- Fixup for gentoos revised networking scripts. (dhcp)
@@ -65,6 +71,9 @@ Contributions
- Improved binary detection and good suggestions.
- 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>
- Fix for backward compatibility with xvc0 serial consoles
@@ -97,6 +106,9 @@ Contributions
- CentOS 6 support
- CentOS 5 fixes
Patryk Ściborek <patryk [at] com.sciborek>
- Ubuntu-related bugfix
Radu Spineanu <radu [at] org.debian>
- Supplied many small tweaks, bugfixes, and suggestions.
- Radu is also one of the former Debian package maintainers.
@@ -116,5 +128,12 @@ Contributions
Ward Vandewege <ward [at] be.pong>
- 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
- Proper upstart handling in the chroot

View File

@@ -32,12 +32,3 @@ Bugs to fix rather soon
Current (unreleased) fix is to sort by mountpoint length.
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

@@ -14,7 +14,7 @@
#
TMP ?= /tmp
DIST_PREFIX = ${TMP}
VERSION = 4.4~dev
VERSION = 4.5
DEBVERSION = $(shell echo $(VERSION)|sed 's/\(rc\|pre\|beta\|alpha\)/~\1/')
BASE = xen-tools
VCS = git
@@ -67,6 +67,7 @@ clean:
@if [ -e build-stamp ]; then rm -f build-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 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.asc ]; then rm $(BASE)-$(VERSION).tar.gz.asc ; fi
cd t; $(MAKE) clean
@@ -201,6 +202,10 @@ install-hooks:
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d
-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
cp hooks/common.sh ${prefix}/usr/share/xen-tools
cp -r hooks/common ${prefix}/usr/share/xen-tools
@@ -243,6 +248,7 @@ release: tidy fixup-perms update-version update-modules clean changelog
rm -f $(DIST_PREFIX)/$(BASE)-$(VERSION).tar.gz
cp -R . $(DIST_PREFIX)/$(BASE)-$(VERSION)
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/debian
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/cover_db
rm -rf $(DIST_PREFIX)/$(BASE)-$(VERSION)/.git*
cd $(DIST_PREFIX) && tar -cvf $(DIST_PREFIX)/$(BASE)-$(VERSION).tar $(BASE)-$(VERSION)/
gzip $(DIST_PREFIX)/$(BASE)-$(VERSION).tar

View File

@@ -1,6 +1,8 @@
xen-tools
=========
[![Travis CI Build Status](https://travis-ci.org/xtaran/xen-tools.svg)](https://travis-ci.org/xtaran/xen-tools)
* [Homepage](http://www.xen-tools.org/software/xen-tools)
* Git Repository:
* [at Gitorious](http://gitorious.org/xen-tools)
@@ -32,9 +34,9 @@ known to work reliably, i.e.:
* Etch 4.0 (Dom0 no more tested)
* Lenny 5.0
* Squeeze 6.0
* Wheezy 7.0
* Jessie 8.0 (preliminary support as it's not yet available)
* Sid (works at least at the moment of writing :-)
* Wheezy 7
* Jessie 8 (under development)
* Sid (always under development; works at least at the moment of writing :-)
### Ubuntu
@@ -54,7 +56,11 @@ known to work reliably, i.e.:
* Oneiric Ocelot 11.10
* Precise Pangolin 12.04
* Quantal Quetzal 12.10
* Raring Ringtail 13.04 (preliminary support as it's not yet available)
* Raring Ringtail 13.04
* Saucy Salamander 13.10
* Trusty Tahr 14.04 (LTS)
* Utopic Unicorn 14.10
* Vivid Vervet 15.04 (under development)
[1]: http://bugs.debian.org/659360
"debootstrap in Wheezy can no more build Ubuntu Edgy or earlier"
@@ -83,11 +89,22 @@ Requirements
To use these tools you'll need the following software:
* [debootstrap](http://packages.debian.org/debootstrap)
* Perl
* The Perl module [Text::Template](http://search.cpan.org/dist/Text-Template/)
([Debian Package libtext-template-perl](http://packages.debian.org/libtext-template-perl))
* The Perl module [Config::IniFiles](http://search.cpan.org/dist/Config-IniFiles/)
* Perl and the following Perl modules
* [Config::IniFiles](http://metacpan.org/release/Config-IniFiles)
([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))
* [Data::Validate::Domain](http://metacpan.org/release/Data-Validate-Domain)
([Debian Package libdata-validate-domain-perl](http://packages.debian.org/libdata-validate-domain-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
You can try to install RPM-based distributions such as CentOS, or
@@ -174,6 +191,24 @@ image.
* The script should only be used for Xen instances of Debian or a
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
-------------------
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/xtaran/xen-tools).
--
The Xen-Tools Developer Team

View File

@@ -6,12 +6,19 @@ See KNOWN_BUGS.markdown for real bugs.
Bugs to fix and features to add for 5.0
---------------------------------------
* Switch build-system to autotools or something CPANish.
* `xen-create-image` man page overhaul:
* ambiguous option list with regards to parameters
* Set Fail in more situations where the script has clearly failed
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.
Actually this should be pretty simple now that the parameters are
@@ -73,12 +80,6 @@ Bugs to fix and features to add for 5.0
* 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
This will generate a much nicer `menu.lst` as a side effect, as its
@@ -128,6 +129,9 @@ Bugs to fix and features to add for 5.0
`authorized_keys` (e.g. a users public key) or to just add the Dom0's
`/root/.ssh/authorized_keys` as the DomU's one.
* Generate ECDSA host keys where possible. (Likely depends on the
to-be-installed SSH version.)
* More generic roles
Deploy a web server or setup ssmtp directly via flag when setting up
@@ -165,11 +169,6 @@ Bugs to fix and features to add for 5.0
* 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
gracefully. Document --debug if --dumpconfig is removed.
@@ -182,8 +181,6 @@ Bugs to fix and features to add for 5.0
distributions the same. Currently Debian is a special case and
Ubuntu half a special case.
* Replace findBinary() with File::Which
* Remove from the (unused) Xen::Tools what's already in the used
Xen::Tools::Common.
@@ -194,6 +191,18 @@ Bugs to fix and features to add for 5.0
`xen-create-image` first. Which probably both would be a good
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
--------------------------------------------
@@ -238,10 +247,14 @@ Axel's Break-Backwards-Compatibility Wishlist
Maybe add some `--autostart` or such.
* Maybe replace findBinary with File::Which
* MAC addresses should no more depend on the distribution.
* Let the admin switch between MAC addresses based on XenSource's OUI,
its organisation's own OUI or locally administrated MAC addresses.
See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses
* 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,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xen-create-image - Easily create new Xen instances with networking and OpenSSH.
@@ -132,6 +134,13 @@ and EVMS EXAMPLE.
"MB", "G" and "GB" (case does not matter). If there's
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
Set the path to the kernel modules to use for domU.
If modules are specified they must exist.
@@ -142,9 +151,6 @@ and EVMS EXAMPLE.
used the system will not have a swap entry added to
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
configuration file within.
@@ -158,6 +164,7 @@ and EVMS EXAMPLE.
--password=passphrase
Set the root password for the new guest.
Note: This overrides --genpass
--(no)passwd (Don't) ask for a root password interactively during
setup. NOTE: This overrides --genpass --password.
@@ -243,9 +250,10 @@ and EVMS EXAMPLE.
Debian mirror. See http://http.debian.net/ for
details.
--apt_proxy=url
--apt_proxy=protocol://hostname:port/
Specify a proxy to be used by debootstrap, and within
the guest.
the guest. Needs the same syntax as APT's
Acquire::http::Proxy. See apt.conf(5).
--template=tmpl
Specify which template file to use when creating the
@@ -415,6 +423,7 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
size = 2Gb # Disk image size.
image = full # Allocate the full disk size immediately.
memory = 128Mb # Memory size
maxmem = 512Mb # Memory size
swap = 128Mb # Swap size
fs = ext3 # use EXT3 filesystems
dist = stable # Default distribution to install.
@@ -667,7 +676,7 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
=head1 ROLES
Currently there are some roles scripts included which work for
the Debian and Ubuntu distrubtions only. They are included
the Debian and Ubuntu distributions only. They are included
primarily as examples of the kind of things you could accomplish.
The supplied scripts are:
@@ -731,7 +740,7 @@ Install an X11 server, using VNC and XDM
Role scripts are invoked with the directory containing the
installed system as their first argument, and anything passed
as a role-arg will be passed allong as additional arguments.
as a role-arg will be passed along as additional arguments.
NOTE: Role scripts are invoked before the config file generation.
If you need access to the config file from within your role,
@@ -792,6 +801,11 @@ use File::Which;
use Getopt::Long;
use Pod::Usage;
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 Xen::Tools::Common;
@@ -825,7 +839,7 @@ my $MOUNT_POINT = undef;
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
#
@@ -840,6 +854,11 @@ my $IP_ADDRESSES = '';
my $PASSWORD = '';
#
# Define some fallback password length
#
my $default_genpass_len = 23;
# Minor helpers for reducing code duplication
sub fail ($) { fail_with_config($_[0], \%CONFIG); }
@@ -1143,11 +1162,11 @@ E_O_ERROR
# Check that all the binaries have been installed properly
#
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)
{
if ( !defined( findBinary($bin) ) )
if ( !defined( which($bin) ) )
{
logprint( "The script '$bin' was not found.\nAborting\n\n" );
$CONFIG{'FAIL'} = 1;
@@ -1180,95 +1199,6 @@ EOF
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
}
}
}
@@ -1328,10 +1258,10 @@ sub setupDefaultOptions
$CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian-archive/debian';
}
# Initialize per distribution mirror defaults: Ubuntu
foreach my $ubuntudist (qw(hardy lucid oneiric precise quantal raring)) {
foreach my $ubuntudist (qw(lucid precise trusty utopic vivid)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://archive.ubuntu.com/ubuntu';
}
foreach my $ubuntudist (qw(dapper edgy feisty gutsy intrepid jaunty karmic maverick natty)) {
foreach my $ubuntudist (qw(dapper edgy feisty gutsy hardy intrepid jaunty karmic maverick natty oneiric quantal raring saucy)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu';
}
$CONFIG{ 'apt_proxy' } = '';
@@ -1340,7 +1270,6 @@ sub setupDefaultOptions
chomp($CONFIG{ 'arch' });
$CONFIG{ 'fs' } = 'ext3';
$CONFIG{ 'force' } = 0;
$CONFIG{ 'no_xen_ok' } = 0;
$CONFIG{ 'install' } = 1;
$CONFIG{ 'hooks' } = 1;
$CONFIG{ 'partitions' } = '';
@@ -1363,8 +1292,8 @@ sub setupDefaultOptions
# Default values for passwords
#
$CONFIG{ 'genpass' } = 1;
$CONFIG{ 'genpass_len' } = 8;
$CONFIG{ 'password' } = '';
$CONFIG{ 'genpass_len' } = $default_genpass_len;
$CONFIG{ 'password' } = undef;
$CONFIG{ 'hash_method' } = 'sha256';
#
@@ -1421,8 +1350,8 @@ sub checkOption
# Define argument types
my %types = (
integerWithSuffix => {
check => qr/^[0-9.]+[GMk]B?$/i,
message => "takes a suffixed (mb, MB, G, k, etc.) integer.\n",
check => qr/^[0-9.]+[GM]B?$/i,
message => "takes a suffixed (mb, MB, G, etc.) integer.\n",
},
distribution => {
check => sub { -d "/usr/share/xen-tools/$_[0].d" },
@@ -1450,15 +1379,15 @@ sub checkOption
message => "must be a disk device (xvd[a-z]+, sd[a-z]+).\n",
},
ipv4 => {
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]?)$/,
check => sub { is_ipv4($_[0]) },
message => "must be valid IPv4.\n",
},
ipv4_or_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]?))$/,
check => sub { is_ipv4($_[0]) or $_[0] eq 'auto' },
message => "must be valid IPv4 or the keyword 'auto'.\n",
},
hostname => {
check => qr/^[a-z0-9][a-z0-9.-]{0,254}$/i,
check => sub { is_hostname($_[0]) },
message => "must be a valid hostname.\n",
},
supportedFs => {
@@ -1489,6 +1418,10 @@ sub checkOption
check => qr/^md5|sha256|sha512$/i,
message => "must be md5, sha256 or sha512.\n",
},
uri => {
check => sub { is_uri($_[0]) },
message => "must be an URI including the protocol\n",
},
);
# Define what argument each option accepts.
@@ -1499,6 +1432,7 @@ sub checkOption
swap => 'integerWithSuffix',
image => 'imageType',
memory => 'integerWithSuffix',
maxmem => 'integerWithSuffix',
kernel => 'existingFile',
initrd => 'existingFile',
modules => 'existingDir',
@@ -1523,6 +1457,7 @@ sub checkOption
mac => 'mac',
ip => 'ipv4_or_auto',
hash_method => 'hashMethod',
apt_proxy => 'uri',
);
# If given option does not exists in optionsTypes,
@@ -1596,6 +1531,7 @@ sub parseCommandLineArguments
"noswap", \&checkOption,
"image=s", \&checkOption,
"memory=s", \&checkOption,
"maxmem=s", \&checkOption,
"vcpus=i", \&checkOption,
# Locations
@@ -1666,7 +1602,7 @@ sub parseCommandLineArguments
"finalrole=s", \&checkOption,
"roledir=s", \&checkOption,
"force!", \$CONFIG{ 'force' },
"no-xen-ok", \$CONFIG{ 'no_xen_ok' },
"no-xen-ok", sub { warn "Option --no-xen-ok is deprecated and ignored."; },
"keep!", \$CONFIG{ 'keep' },
"template=s", \&checkOption,
"output=s", \&checkOption,
@@ -1817,7 +1753,7 @@ sub checkArguments
#
# Lucid and probably all later Ubuntus, too, don't work without pygrub
#
if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal|raring/ )
if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal|raring|saucy|trusty|utopic|vivid/ )
{
$CONFIG{ 'pygrub' } = 1;
}
@@ -2265,7 +2201,7 @@ sub checkBinariesPresent
foreach my $file (@required)
{
if ( !defined( findBinary($file) ) )
if ( !defined( which($file) ) )
{
logprint("The following binary is required to run this tool\n");
logprint("\t$file\n");
@@ -2281,7 +2217,7 @@ sub checkBinariesPresent
{
# loopback image
if ( !defined( findBinary("dd") ) )
if ( !defined( which("dd") ) )
{
logprint("The following binary is required to run this tool\n");
logprint("\tdd\n");
@@ -2302,7 +2238,7 @@ sub checkBinariesPresent
foreach my $file (@evms)
{
if ( !defined( findBinary($file) ) )
if ( !defined( which($file) ) )
{
logprint("The following binary is required to run this tool\n");
logprint("\t$file\n");
@@ -2322,7 +2258,7 @@ sub checkBinariesPresent
foreach my $file (@lvm)
{
if ( !defined( findBinary($file) ) )
if ( !defined( which($file) ) )
{
logprint("The following binary is required to run this tool\n");
logprint("\t$file\n");
@@ -2628,19 +2564,29 @@ sub showSummary
logprint("Image type : $CONFIG{'image'}\n");
logprint("Memory size : $CONFIG{'memory'}\n");
if ( defined( $CONFIG{ 'kernel' } ) && length( $CONFIG{ 'kernel' } ) )
if ( defined( $CONFIG{ 'maxmem' } ) )
{
logprint("Kernel path : $CONFIG{'kernel'}\n");
logprint("Max mem size : $CONFIG{'maxmem'}\n");
}
if ( defined( $CONFIG{ 'modules' } ) && length( $CONFIG{ 'modules' } ) )
{
logprint("Module path : $CONFIG{'modules'}\n");
}
if ( exists( $CONFIG{ 'pygrub' } ) &&
$CONFIG{ 'pygrub' } ) {
logprint("Bootloader : pygrub\n");
} else {
if ( defined( $CONFIG{ 'kernel' } ) && length( $CONFIG{ 'kernel' } ) )
{
logprint("Kernel path : $CONFIG{'kernel'}\n");
}
if ( defined( $CONFIG{ 'initrd' } ) && length( $CONFIG{ 'initrd' } ) )
{
logprint("Initrd path : $CONFIG{'initrd'}\n");
if ( defined( $CONFIG{ 'modules' } ) && length( $CONFIG{ 'modules' } ) )
{
logprint("Module path : $CONFIG{'modules'}\n");
}
if ( defined( $CONFIG{ 'initrd' } ) && length( $CONFIG{ 'initrd' } ) )
{
logprint("Initrd path : $CONFIG{'initrd'}\n");
}
}
logprint("\nNetworking Information\n");
@@ -3057,8 +3003,7 @@ sub createLVMBits
# Delete if forcing
if ( $CONFIG{ 'force' } )
{
if ( $CONFIG{ 'no_xen_ok' } or
!xenRunning($CONFIG{ 'hostname' }, \%CONFIG)) {
unless ( xenRunning($CONFIG{ 'hostname' }, \%CONFIG)) {
logprint(
"Removing $lvm_disk - since we're forcing the install\n");
runCommand("lvremove --force $lvm_disk", \%CONFIG);
@@ -3091,7 +3036,7 @@ sub createLVMBits
# The commands to create the volume.
#
my $disk_cmd =
"lvcreate $CONFIG{'lvm'} -L $partition->{'size'} -n $disk";
"lvcreate $CONFIG{'lvm'} --yes -L $partition->{'size'} -n $disk";
#
# Create the volume
@@ -3296,7 +3241,7 @@ sub createFilesystem
#
my ($binary, $args) = split(/ /, $command, 2);
if ( !defined( findBinary($binary) ) )
if ( !defined( which($binary) ) )
{
logprint(
"The binary '$binary' required to create the filesystem $fs is missing\n"
@@ -3916,7 +3861,19 @@ sub setupRootPassword
{
if ( -x $MOUNT_POINT . "/usr/bin/passwd" )
{
runCommand("chroot $MOUNT_POINT /usr/bin/passwd", \%CONFIG);
my $tryagain = 1;
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
{
@@ -3935,13 +3892,17 @@ sub setupRootPassword
#
# Generate a password, salt and use that to generating a hash
#
if ( $CONFIG{ 'genpass' } )
if ( defined( $CONFIG{ 'password' } ) )
{
$PASSWORD = $CONFIG { 'password' };
}
elsif ( $CONFIG{ 'genpass' } )
{
$PASSWORD = generatePassword( $CONFIG{ 'genpass_len' } );
}
else
{
$PASSWORD = $CONFIG { 'password' };
fail("oops... neither passwd nor password nor genpass are set, should not happen!");
}
my $salt = generatePassword(8);
@@ -4005,6 +3966,10 @@ sub setupRootPassword
sub generatePassword {
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 $password = '';
while (length($password) < $length) {
@@ -4222,7 +4187,8 @@ END
logprint("---------------------\n");
logprint("Hostname : $CONFIG{'hostname'}\n");
logprint("Distribution : $CONFIG{'dist'}\n");
logprint("IP-Address(es) : ");
logprint("MAC Address : $CONFIG{'mac'}\n");
logprint("IP Address(es) : ");
if ( $CONFIG{ 'dhcp' } ) {
logprint("dynamic");
} elsif( $CONFIG{ 'ip' } ) {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xen-update-image - Update the software installed upon offline Xen images.
@@ -111,7 +113,7 @@ my %CONFIG;
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
#

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xt-create-config - Create a Xen configuration file for a new guest
@@ -146,7 +148,7 @@ $CONFIG{ 'extension' } = '.cfg';
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
@@ -367,11 +369,23 @@ sub createXenConfig
#
# Remove any trailing Mb.
#
if ( $ENV{ 'memory' } =~ /^(\d+)Mb?.*$/i )
{
$ENV{ 'memory' } = $1;
}
$ENV{ 'memory' } =~ s/^(\d+)Mb?.*$/$1/i;
#
# 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.

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xt-customize-image - Customize a freshly installed copy of GNU/Linux
@@ -52,6 +54,15 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
executed from '/usr/share/xen-tools/foo.d'. Each executable will
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
@@ -89,7 +100,7 @@ my %CONFIG;
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
@@ -249,6 +260,7 @@ sub runDistributionHooks
# Hook directory.
#
my $hooks = "/usr/share/xen-tools/" . $CONFIG{ 'dist' } . ".d/";
my $hooks_local = "/etc/xen-tools/hooks.d/";
#
# Installation prefix
@@ -293,10 +305,20 @@ sub runDistributionHooks
$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.
#
my $cmd = $hooks . $name . " $CONFIG{'location'}";
my $cmd = $file . " $CONFIG{'location'}";
#
# Run the command. This has different prolog and epilog

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and
@@ -69,6 +71,7 @@ my @sources_list_files = ( '/etc/apt/sources.list',
use File::Slurp;
use Getopt::Long;
use Pod::Usage;
use File::Which;
use strict;
@@ -76,7 +79,7 @@ use strict;
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
# Init
my $mirror = '';
@@ -148,10 +151,8 @@ 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 ".
join("\n ", @sources_list_files)."\n" unless $found;
my $lsb_release = `which lsb_release`;
chomp($lsb_release);
if (!$found and $lsb_release and -x $lsb_release) {
my $lsb_release = which('lsb_release');
if (!$found and defined($lsb_release) and -x $lsb_release) {
my $vendor = `$lsb_release -s -i`;
if ($vendor eq 'Debian' or $vendor eq 'Ubuntu') {

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
=encoding utf8
=head1 NAME
xt-install-image - Install a fresh copy of GNU/Linux into a directory
@@ -110,7 +112,7 @@ my %CONFIG;
#
# Release number.
#
my $RELEASE = '4.4~dev';
my $RELEASE = '4.5';
#

4
debian/NEWS vendored
View File

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

124
debian/changelog vendored
View File

@@ -1,6 +1,104 @@
xen-tools (4.4~dev-1) UNRELEASED; urgency=low
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
- Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/
- Use http.debian.net as default Debian mirror if no mirror is given
@@ -20,14 +118,17 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Fixes "--extension=" with empty parameter.
- Sarge amd64 case handle properly
- Remove CVS revisions from --version output
- Preliminary support for Debian Jessie and Ubuntu Raring
- Support for Debian Jessie, Ubuntu Raring and preliminary support for
Ubuntu Saucy (debootstrap doesn't have support for Saucy at the time
of writing)
- Preliminary support for xl toolstack
- xen-create-image: Consistently use runCommand() instead of system()
- xt-install-image: Don't bail out if only cdebootstrap is installed
but not debootstrap (Thanks Elmar Heeb!)
- Makefile accepts DESTDIR=…
- Move examples from debian/examples to examples.
- Uses File::Which, added (build-) dependency on libfile-which-perl
- Uses File::Which exclusively (no more findBinary, no more `which`),
added (build-) dependency on libfile-which-perl
- Knows about module-init-tools → kmod transition in wheezy/raring.
- Adds default mount options for ext4, identical to ext2/ext3.
- Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0
@@ -41,7 +142,8 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
Add installCentOS4Package wrapper for backward compatibility.
- Fix filesystem tools installation in 91-install-fs-tools (which was
broken since 4.3~rc1-1) by merging 91-install-fs-tools back into
90-make-fstab. Also supports RPM-based distributions now.
90-make-fstab. (Closes: #715340) Also supports RPM-based
distributions now.
- Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from
within Bash.
@@ -51,6 +153,14 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Removes unused Perl modules Xen::Tools and Xen::Tools::Log from
source code. Also removes the according tests from the test suite.
→ Remove no more needed build-dependency on Moose.
- 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
git-buildpackage.
* Clean up debian/rules:
@@ -62,10 +172,14 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
dh_auto_* can't help. No more explicitly call "make manpages", it's
a depedency of "make install" in the next line anyway.
- Finally switch to a minimal dh style debian/rules.
* Bump 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.
* Apply wrap-and-sort.
-- Axel Beckert <abe@debian.org> Thu, 17 Jan 2013 17:09:02 +0100
-- Axel Beckert <abe@debian.org> Fri, 23 Aug 2013 19:00:03 +0200
xen-tools (4.3.1-1) unstable; urgency=low

2
debian/compat vendored
View File

@@ -1 +1 @@
7
9

27
debian/control vendored
View File

@@ -2,16 +2,21 @@ Source: xen-tools
Section: utils
Priority: extra
Maintainer: Axel Beckert <abe@debian.org>
Build-Depends: debhelper (>= 7.0.0),
Build-Depends: debhelper (>= 9~),
devscripts,
git,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl,
libfile-which-perl,
liblog-message-perl | perl (<< 5.17.0),
libterm-ui-perl | perl (<< 5.17.0),
libtest-notabs-perl,
libtest-pod-coverage-perl,
libtest-pod-perl,
libtext-template-perl
Standards-Version: 3.9.3
Standards-Version: 3.9.6
Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
@@ -20,12 +25,17 @@ Package: xen-tools
Architecture: all
Depends: debootstrap | cdebootstrap,
libconfig-inifiles-perl,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl,
libfile-which-perl,
libterm-ui-perl | perl (<< 5.17.0),
libtext-template-perl,
openssh-client,
perl-modules,
${misc:Depends}
perl,
${misc:Depends},
${perl:Depends}
Recommends: libexpect-perl,
rinse (>= 1.9.1-1),
xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae,
@@ -46,7 +56,8 @@ Description: Tools to manage Xen virtual servers
* Debian 4.0 Etch
* Debian 5.0 Lenny
* Debian 6.0 Squeeze
* Debian 7.0 Wheezy
* Debian 7 Wheezy
* Debian 8 Jessie (under development)
* Debian Sid (Unstable)
* Ubuntu 6.06 Dapper Drake (LTS)
* Ubuntu 6.10 Edgy Eft
@@ -61,5 +72,11 @@ Description: Tools to manage Xen virtual servers
* Ubuntu 11.04 Natty Narwhal
* Ubuntu 11.10 Oneiric Ocelot
* 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.05 Vivid Vervet (under development)
* CentOS 5
* CentOS 6

3
debian/dirs vendored
View File

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

2
debian/lintian-overrides vendored Normal file
View File

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

View File

@@ -127,6 +127,7 @@ install-method = debootstrap
#
size = 4G # Root disk, 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
# noswap = 1 # Don't use swap at all for new systems.
fs = ext3 # Default file system for any disk
@@ -272,15 +273,15 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# 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_squeeze = http://http.debian.net/debian
# mirror_wheezy = http://http.debian.net/debian
# mirror_jessie = http://http.debian.net/debian
# mirror_sid = http://http.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_hardy = http://old-releases.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
@@ -289,8 +290,12 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# 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
# mirror_quantal = http://old-releases.ubuntu.com/ubuntu
# mirror_raring = http://old-releases.ubuntu.com/ubuntu
# mirror_saucy = http://old-releases.ubuntu.com/ubuntu
# mirror_trusty = http://archive.ubuntu.com/ubuntu
# mirror_utopic = http://archive.ubuntu.com/ubuntu
# mirror_vivid = http://archive.ubuntu.com/ubuntu
# If this is defined it will be used by debootstrap, and configured as the
# proxy for the guest

View File

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

View File

@@ -21,8 +21,8 @@
if ( $pygrub )
{
my $pygrub_bin = '';
foreach my $pygrub_path (reverse glob('/usr/lib/xen-*/bin/pygrub
/usr/lib/xen-default/bin/pygrub
foreach my $pygrub_path (reverse glob('/usr/lib/xen-default/bin/pygrub
/usr/lib/xen-*/bin/pygrub
/usr/*bin/pygrub')) {
if (-x $pygrub_path) {
$pygrub_bin = $pygrub_path;
@@ -37,6 +37,11 @@
}
vcpus = '{$vcpus}'
memory = '{$memory}'
{ if ( $maxmem )
{
$OUT .= "maxmem = '$maxmem'\n";
}
}
#
# Disk device(s).

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,6 +2,8 @@
package Xen::Tools::Common;
=encoding utf8
=head1 NAME
Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts
@@ -20,9 +22,10 @@ use Exporter 'import';
use vars qw(@EXPORT_OK @EXPORT);
use English;
use File::Which;
@EXPORT = qw(readConfigurationFile xenRunning runCommand setupAdminUsers
findXenToolstack findBinary
findXenToolstack
logprint_with_config logonly_with_config fail_with_config);
=head1 FUNCTIONS
@@ -125,7 +128,10 @@ sub xenRunning ($$)
my $running = 0;
die "Couldn't determine Xen toolstack" unless $CONFIG->{'xm'};
unless ($CONFIG->{'xm'}) {
warn "Couldn't determine Xen toolstack, skipping check for running DomUs.";
return 0;
}
open( CMD, $CONFIG->{'xm'}." list $hostname 2>/dev/null |" ) or
fail_with_config("Failed to run '".$CONFIG->{'xm'}." list $hostname'", $CONFIG);
@@ -139,38 +145,6 @@ sub xenRunning ($$)
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
=begin doc
@@ -192,12 +166,12 @@ sub findXenToolstack
return $toolstack if $toolstack;
}
my $xm = findBinary('xm');
my $xm = which('xm');
if ($xm and system("$xm list >/dev/null 2>/dev/null") == 0) {
return $xm;
}
my $xl = findBinary('xl');
my $xl = which('xl');
if ($xl and system("$xl list >/dev/null 2>/dev/null") == 0) {
return $xl;
}
@@ -221,6 +195,7 @@ sub findXenToolstack
sub runCommand ($$;$)
{
local $| = 1;
my ($cmd, $CONFIG, $fail_ok) = (@_);
#
@@ -433,7 +408,7 @@ sub logprint_with_config ($$)
Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/
Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois
Stéphane Jourdois
Merged from several scripts by Axel Beckert.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,15 +1,12 @@
#!/bin/sh
#
# Configure the new image to be a minimal image, by removing
# packages I don't care about - and installing new ones I prefer.
#
# Steve
# --
# http://www.steve.org.uk/
# Configure the new image to be a minimal image, by removing packages
# not necessarily needed - and installing less resource-hungry ones
#
# Still far away from perfect. Less personal than in the past, but
# for now still based on gut feeling.
TARGET=$1
prefix=$1
@@ -26,43 +23,74 @@ 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.
#
# PPP stuff.
removeDebianPackage ${TARGET} pppconfig
removeDebianPackage ${TARGET} pppoeconf
removeDebianPackage ${TARGET} pppoe
removeDebianPackage ${TARGET} ppp
removeDebianPackage ${TARGET} libpcap0.7
removeDebianPackage ${prefix} pppconfig
removeDebianPackage ${prefix} pppoeconf
removeDebianPackage ${prefix} pppoe
removeDebianPackage ${prefix} ppp
removeDebianPackage ${prefix} libpcap0.7
# Editors
removeDebianPackage ${TARGET} nano
removeDebianPackage ${TARGET} ed
removeDebianPackage ${TARGET} nvi
# Editors, keep only a minimal vi, namely nvi
installDebianPackage ${prefix} nvi
removeDebianPackage ${prefix} ed nano
removeDebianPackage ${prefix} vim-tiny vim-common vim-runtime
# Syslog
removeDebianPackage ${TARGET} klogd
removeDebianPackage ${TARGET} sysklogd
removeDebianPackage ${prefix} klogd sysklogd
removeDebianPackage ${prefix} rsyslog
removeDebianPackage ${prefix} logrotate
# manpages
removeDebianPackage ${TARGET} manpages
removeDebianPackage ${TARGET} man-db
removeDebianPackage ${TARGET} info
# Man pages
removeDebianPackage ${prefix} manpages man-db groff-base
removeDebianPackage ${prefix} info
# misc
removeDebianPackage ${TARGET} tasksel tasksel-data
removeDebianPackage ${TARGET} pciutils
removeDebianPackage ${TARGET} fdutils
removeDebianPackage ${TARGET} cpio
removeDebianPackage ${prefix} tasksel tasksel-data
removeDebianPackage ${prefix} pciutils
removeDebianPackage ${prefix} fdutils
removeDebianPackage ${prefix} util-linux-locales locales
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.
#
TARGET=$1
prefix=$1
#
# Source our common functions - this will let us install a Debian package.
@@ -24,16 +24,16 @@ logMessage Script $0 starting
#
# Install ssh
# Install puppet
#
installDebianPackage ${TARGET} puppet
installDebianPackage ${prefix} puppet
#
# Make sure sshd isn't running, this will cause our unmounting of the
# Make sure puppet isn't running, this will cause our unmounting of the
# disk image to fail..
#
chroot ${TARGET} /etc/init.d/puppet stop
chroot ${prefix} /etc/init.d/puppet stop
#
# Log our finish

View File

@@ -3,7 +3,7 @@
# This role helps to customize guest's /etc/resolv.conf
#
TARGET=$1
prefix=$1
#
# 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) :
#
cat <<RESOLV_CONF_EOF >${TARGET}/etc/resolv.conf.old
cat <<RESOLV_CONF_EOF >${prefix}/etc/resolv.conf.old
nameserver 192.168.1.1
#search domain.tld
RESOLV_CONF_EOF

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that .gitignore is coherent
#
@@ -7,10 +7,20 @@
#
use strict;
use Test::More tests => 3;
use Test::More;
use File::Which;
BEGIN { use_ok( 'Git' ); }
if ( $ENV{TRAVIS} ) {
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
my $cmd = Git::command_output_pipe('ls-files', '--ignored', '--exclude-standard');

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that our policy-rc.d file is created and removed as we expect in our hooks.
#
@@ -87,7 +87,7 @@ sub testHook
#
# Call the first hook
#
`./hooks/$dist/01-disable-daemons $dir`;
`hooks/$dist/01-disable-daemons $dir`;
#
# Now /usr/sbin should exist.
@@ -98,7 +98,7 @@ sub testHook
#
# Now call the second hook
#
`./hooks/$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" );
}

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that we get an /etc/hosts etc file created when DHCP is used.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that the /etc/inittab file is modified as we expect.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl
#!perl
#
# Test that the tls-disabling hook works.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that all the hook files we install are executable.
#

View File

@@ -0,0 +1,20 @@
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

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

View File

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

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that the plugins each refer to environmental variables,
# not the perl config hash.

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that the POD we include in our scripts is valid, via the external
# podchecker command.

View File

@@ -1,3 +1,5 @@
#!perl
use strict;
use warnings;
use Test::More;

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl
#!perl
#
# Test that the POD we use in our modules is valid.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that we don't use non-portable shell syntax in our hooks.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w -I..
#!perl -w -I..
#
# Test that we have several required programs present.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that every bash script using variables uses " not ' around the
# variable.

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that every shell script we have passes a syntax check.
#

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that every script in ./bin/ has no trailing whitespace.
#

View File

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

View File

@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!perl -w
#
# Test that the xen-list-images script can process two "fake"
# installations which we construct manually.

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