1. More OS support:
- Debian Etch, Lenny, Squeeze
- SUSE Linux 10.0, 10.1
- openSUSE 10.2
- OpenBSD (http://people.cs.uchicago.edu/~brendan/howtos/openbsd_install/)
- NetBSD (anita)
- Dragonfly BSD
- Windows Vista, 98, 95, ME
- RHL 5.2, 6.0, 6.1, 6.2 (only nfs installs work)
2. Add partition support to the TDL.
3. Add improved error logging to guest installation. That is, if the guest
installation fails, we want to get detailed error information out of the
installer to find out why. Fedora/RHEL support doing remote syslog via
network or virtio-serial, and I also believe anaconda will dump data to
syslog during installation, so that is one avenue to pursue. NOTE: anaconda
virtio-serial support does not exist until F-14. See
4. Before attempting an install, check the output_dir to make sure it will
approximately have enough space for the output disk image.
5. With windows from MSDN (at least 2000, maybe other versions too), the
top-level doesn't really contain the bits you care about. What happens is
that there are 3 boot options on the CD: installer for Professional, Server,
and Advanced Server. The directory structure on the CD is something like:
and underneath each of (adv_server, pro, server) are the bits you care
about. To automate this you really need to figure out which one the user
cares about, then copy just that subdirectory. You'll also need to extract
the appropriate parts of eltorito so it boots automatically, and then
you'll also need to set i386/txtsetup.sif [SetupData]: SetupSourcePath = "\".
6. Take a screen shot if some customization or generate-icicle steps time out.
7. Try to do automatic detection of distro/version/architecture from the ISO
that are provided to us. That will make it so that a minimal TDL will only
include the path to the ISO, and we can figure out the rest of the
8. Add support for additional drivers during install (needed for Windows virtio
9. Make "python setup.py bdist_rpm" work. The problem is that bdist_rpm
generates its own SPEC file based on the information in setup.py. When it
does this, it somehow messes up the %description (minor, probably a change
to the setup macro), fails to create the /var/lib/oz subdirectories (which
could be moved into setup.py as well), and also fails to find the gzipped
man page files (which is what eventually causes the build to fail).
10. RHL 6.2 does not work via HTTP because of a bug in the installer; when
parsing a URL passed in via "method", it fails to put a / at the beginning
of the URL. What this means is that when the installer goes to fetch the
install images via "GET path/to/netstg2.img HTTP/0.9", the web server then
returns an error. To do a fully automated install, we need to use an ISO,
NFS or FTP install method; I could not get FTP to work, but I did not try
11. RHL 6.1 fails because there is no netstg2.img available in the distribution
I have. Unfortunately, I have not been able to find the netstg2.img, nor an
ISO of 6.1 to do an alternate install. NFS may still work here.
12. RHL 6.0 fails because the kernel panics on boot:
VFS: Cannot open root device 08:21
Kernel panic: VFS: Unable to mount root fs on 08:21
13. Enable SELinux in enforcing mode inside of Fedora/RHEL guests. The current
problem with this is that prior to launching the customize step, we upload
files like ssh keys via libguestfs. In the default mode libguestfs uploads
them with no SELinux context, which means reads are denied.
Jim Meyering suggests that we add a script to the end of /etc/rc.d/rc.local
that does a "restorecon" on the files we care about. Then we don't need
to worry about knowing the context in Oz; we just make it do the right
thing. There are two problems with this: 1) if we upload /etc/rc.d/rc.local,
that will have the wrong context that we have to deal with, and 2) there
is a race condition between icicle-nc checking in and this restorecon
script finishing. Neither problem is insurmountable, but we should make
the effort to get this working.
14. Do preflight checks on detected bridges. That is, if we detected the
bridge (i.e. it was not specified by the user), then we should do some
basic checks to make sure that we think it will work. We should check the
state of at least:
iptables -t filter -L -v
iptables -t nat -L -v
15. We should add a mode where we assume the responsibility for uploading RPMs
into the guest (via ssh) and then doing a yum localinstall on those RPMs.
16. We should add additional commands section. In particular, we should have
"pre" package installation and "post" package installation command
17. Support hashes for the root password support.
18. Add a mode where we use a reverse ssh tunnel with a SOCKS proxy to
download the packages. This means that the packages need to be visible to
the imagefactory machine, but not necessarily to the instance.
19. During customization/icicle generation, we should check to make sure that
the bridge listed in the libvirt XML matches up with what we detected (if
anything). This isn't really an issue when doing oz-install -g -u, but if
you use the short-circuit oz-customize or oz-generate-icicle, the user
could have fed us bad data.
20. Currently we use libguestfs to extract the installation ISO, make changes
to it, and then rebundle the ISO using mkisofs. This is time consuming,
partially because we are doing two copies of the ISO (once from the ISO to
the filesystem, and once from the filesystem to the new ISO), and partially
because we are only modifying a very small portion of the ISO. We can
improve this situation and get rid of one whole copy by mounting the ISO
with fuseiso/guestmount, symlinking most of the contents to a temporary
directory, and only modifying the small bits we need to. Then we can pack
the whole thing back up using mkisofs. This gets rid of the first copy, so
it should cut our initial time in half (plus or minus the page cache).
21. Change setup.py to make the directories /var/lib/oz/*. Since that is
repeated in both of the RPM and deb building stuff, it would be better to
just do it on python setup.py install instead.