Commit Graph

684 Commits

Author SHA1 Message Date
Brian C. Lane
4fea0ba7f1 pylorax: proc.returncode can be None
So use %s to keep it from generating a Traceback. If a callback is used
and it exits before the process does the returncode can be None.
2016-03-09 16:41:11 -08:00
Brian C. Lane
4699c88109 livemedia-creator: Create runtime using kickstart partition size
When using no-virt the runtime filesystem size comes from the kickstart.
For virt installs lmc was creating a runtime filesystem that was just
slightly larger than the space used by the files installed by anaconda.
This can run into problems with larger filesystem. It is also
inconsistent behavior between virt and no-virt installations.

With this commit the virt runtime filesystem will also come from the
kickstart.
2016-03-09 16:41:11 -08:00
Brian C. Lane
8cf8877e50 pylorax: Fix undefind strings on subprocess crash
Set output_string and err_string to None so that a crash will not crash.
2016-03-09 16:41:11 -08:00
Brian C. Lane
a72e9aed0c livemedia-creator: Bump default releasever to 25 2016-03-04 08:57:55 -08:00
Brian C. Lane
f8316a7b89 livemedia-creator: Use qemu instead of virt-install
Switching to using qemu directly allows lmc to be more flexible. It can
now run from inside a mock chroot for creation of all image types,
inculding disk images, and can take advantage of KVM on the host system
if /dev/kvm device is present inside the mock.

It should also be possible to create cross-arch images, but without kvm
available this is likely to be a very slow option.
2016-03-03 17:22:50 -08:00
Brian C. Lane
7c0a6dffd6 livemedia-creator: Stop passing --repo to anaconda (#1304802)
When running a no-virt installation it was parsing the kickstart url
method and passing it to anaconda using --repo which prevents it from
working with url --mirrorlist method. There is no good reason to do
this, anaconda gets the method directly from the kickstart when it isn't
on the cmdline.
2016-02-12 10:22:52 -08:00
Brian C. Lane
c15349c3da livemedia-creator: Add /usr/share/lorax/templates.d/ support 2016-02-11 10:54:54 -08:00
Brian C. Lane
c86bd205c3 Add check for templates.d in the sharedir
This allows lorax to support multiple templates.

If there is no templates.d under the sharedir (/usr/share/lorax or the
directory passed by --sharedir) then the templates in that directory
will be used as they were previously.

If there are directories under templates.d the first one will be used,
unless --sharedir points to a specific one.
2016-02-10 17:14:11 -08:00
Brian C. Lane
87d941b81a livemedia-creator: Add kernel-modules and kernel-modules-extra to examples
If you don't do this DNF will add the debug kernel to the package set to
satisfy kmod() requirements.

Also bump the default releasever for lmc to 24.
2016-01-13 14:31:40 -08:00
Brian C. Lane
ba4218ea98 livemedia-creator: Make sure the rootfs.img can be compressed
Use 4k blocks for the ext4 filesystem. Run fsck on the filesystem to
make sure deleted blocks are actually zeroed, and pass -Xbcj to
mksquashfs.

4k blocks and -Xbcj decreases the size by 2-6% depending on the
filesystem size. Zeroing the blocks of the ext4 fs improves things
dramatically. The problem is that DNF downloads the rpms before
installing them. In addition to forcing us to use a larger filesystem
than we would like it leaves data that is difficult to compress on the
image. The downloaded files are removed, but need to be zeroed out so
that mksquashfs can compress it.
2016-01-13 08:09:01 -08:00
Brian C. Lane
b138b27bd8 Add --iso-name to use with --iso-only
Instead of reusing --image-name add a new argument to name the iso. This
way the disk image can be given a unique name with --image-name and the
iso can be named something different.
2016-01-11 09:54:40 -08:00
Brian C. Lane
a39ed39313 Prefix temporary files and directories with lmc-
This makes it easier to spot things leftover from a crash.
2016-01-08 08:53:55 -08:00
Brian C. Lane
059e40a64b Add --iso-only option to --make-iso
This option removes all the extra build artifacts from --make-iso,
leaving only the boot.iso

It also supports naming of the final iso with --image-name
2016-01-08 08:53:55 -08:00
Scott K Logan
33d008d9f2 livemedia-creator: Fix calculation of disk_size in some cases
If the kickstart includes multiple definitions for the same mount point,
the last one defined is used. The current code includes all of them in
size calculation, and the image file that livemedia-creator makes is big
enough to hold all of the partitions, even though the duplicates are
ignored by Anaconda.
2015-12-22 12:44:30 -08:00
Brian C. Lane
be685b51ac livemedia-creator: Add --image-type and --qemu-args options
Also alias --qcow2 to --image-type=qcow2

This allows --make-disk to be used to create any disk image that
qemu-img supports, not just raw or qcow2. See qemu-img --help for a list
of the supported image types.
2015-12-21 16:13:08 -08:00
Brian C. Lane
3d343aace8 pylorax: Add mkqemu_img function, alias mkqcow2 to it.
Preserve the API but add a more descriptive name for the function.
2015-12-21 16:13:08 -08:00
Brian C. Lane
a3097b3085 Update things to make pylint 1.5.1 happy 2015-12-16 12:59:48 -08:00
Brian C. Lane
ceabb7e214 Write a list of debuginfo packages to /root/debug-pkgs.log (#1068675)
Sometimes debugging a boot.iso requires using gdb, and finding the
corresponding debuginfo packages can be difficult. This writes the
matching -debuginfo package names and full ENVR to a file on the iso.
This can then be fed to dnf to install the correct debug packages.
2015-12-16 10:23:23 -08:00
Fabian Deutsch
0d22b72615 livemedia-creator: Raise an error if url is used without networking
Because livemedia-creator is using a media based installation by default,
no networking is brought up automatically. If then the url installation
method is used, it fails with an unclear reason.

This patch adds a check to raise a clear error if the url installation
method is used insisde the kickstart but no networking is configured.

Signed-off-by: Fabian Deutsch <fabiand@fedoraproject.org>
2015-12-02 16:31:38 -08:00
Fabian Deutsch
3a8659e4e4 livemedia-creator: Fix a small typo
Signed-off-by: Fabian Deutsch <fabiand@fedoraproject.org>
2015-12-02 16:29:31 -08:00
Fabian Deutsch
1a653dad7f livemedia-creator: Use discard during installation
This could help to keep the disk size down during installation,
if the FS within the VM is also supporting TRIM.

Signed-off-by: Fabian Deutsch <fabiand@fedoraproject.org>
2015-12-02 16:29:31 -08:00
Fabian Deutsch
f2239d7860 livemedia-creator: Use cache=unsafe for the installation disk
This should improve the installation speed, as no sync is required on the
underlying disk.

Signed-off-by: Fabian Deutsch <fabiand@fedoraproject.org>
2015-12-02 16:29:31 -08:00
Brian C. Lane
e728e9ccee Include qemu modules in the initrd
This includes, among other things, virtio-rng. Without it the initrd may
take longer to initialize the random non-blocking pool on KVM
installations.
2015-11-23 09:33:42 -08:00
Brian C. Lane
50bda8cf17 livemedia-creator: Check kickstart for shutdown (#1207959)
When using virt with livemedia-creator the kickstart needs to include
shutdown to make sure it doesn't hang at the end of the installation.
2015-11-23 09:26:33 -08:00
Brian C. Lane
83acd6cec7 livemedia-creator: Correctly handle not mounting image
mktar may not be run if the mount failed, this is also an error so just
set rc=1
2015-11-23 09:26:09 -08:00
Brian C. Lane
4bc4b4c5a5 livemedia-creator: Use hd:LABEL for stage2 iso
The correct way with the current dracut (and it should be backwards
compatible) is to reference it as stage2=hd:LABEL=...
2015-11-23 09:26:09 -08:00
Brian C. Lane
7a1227a522 Add support for .repo files (#1264058)
This adds the --repo command which can be added multiple times to point
to dnf .repo files.

--enablerepo and --disablerepo can be used multiple times to control
which repos from the .repo files are actually used for the boot.iso
creation.

--repo can be used instead of --source, or in addition to it.
2015-11-18 16:53:32 -08:00
Brian C. Lane
8935460d06 livemedia-creator: Actually pass vcpus to virt-install
This passes the # of cpus from --vcpus to --virt-install. Previously it
was using whatever number virt-install defaults to.
2015-11-13 13:46:08 -08:00
Brian C. Lane
e5c0c634b0 Add --virt-uefi to boot the VM using OVMF
This requires OVMF to be setup on the system, and for the kickstart to
create a /boot/efi/ partition. You can then use it to create UEFI
bootable partitioned disk images.
2015-11-05 09:33:15 -08:00
Brian C. Lane
a252baed18 lorax: Improve argument parsing and help
Make the metavars useful, not STRING. Simplify some of the error
checking, let the parser handle it. Add type=os.path.abspath to several
path arguments so that relative paths will be converted to absolute
paths when they are processed.
2015-10-30 08:46:06 -07:00
Brian C. Lane
77a7eb266d lorax: Add --sharedir to override configuration path
One of the most useful things to override is the path to the templates,
this adds a cmdline option to do that instead of needing to create a
whole configuration file and pass it.
2015-10-30 08:46:06 -07:00
Brian C. Lane
3338de31f3 livemedia-creator: Allow novirt ostree partitioned images (#1273199)
A --no-virt --make-ostree-live build uses a partitioned disk image.
2015-10-28 14:44:24 -07:00
Brian C. Lane
5a9ffebe7c livemedia-creator: Make --make-vagrant work with --no-virt
Also added a check to make sure the optional vagrant metadata.json file
actually exists, if passed.
2015-10-20 17:45:53 -07:00
Brian C. Lane
04878b2a16 livemedia-creator: Add --make-vagrant command
This adds support for creating Vagrant boxes using virt-install. It also
includes an example kickstart that sets up the vagrant user with the
default ssh key.

The default result, without passing --image-name, is in
/var/tmp/vagrant.tar.xz
2015-10-20 17:45:53 -07:00
Brian C. Lane
9ba304d74b Add selinux switch to mktar
Sometimes you don't want to include the selinux xattrs in the tar (eg.
bsdtar has problems extracting them). They are still included by
default, but pass selinux=False to remove '--selinux --acls --xattrs'
from the tar cmdline.
2015-10-20 17:45:53 -07:00
Brian C. Lane
6ccebefc26 livemedia-creator: Make --make-oci work with --no-virt
Also added a check to exit early if the config and runtime files don't
actually exist.
2015-10-20 17:43:39 -07:00
Brian C. Lane
3de5c0b53e livemedia-creator: Add --make-oci for Open Container Initiative images
This implements the bundle spec from:
https://github.com/opencontainers/specs

It creates a tar with the filesystem under /rootfs/ and includes user
provided config.json and runtime.json files.
2015-10-19 15:35:50 -07:00
Brian C. Lane
b96fd98af3 Add submount directory to PartitionMount class
This allows the partition to be mounted on a directory underneath the
temporary directory, eg. /rootfs/, to help support creating other image
types without needed to move the files around.
2015-10-19 15:33:30 -07:00
David Shea
f276f0f825 Fix the concatenation of error output.
The "x or y" construct does not have the precedence it looks like it
has.
2015-10-06 17:23:35 -04:00
Brian C. Lane
d282f1fa8c Reduce the size of macboot.img (#952747)
The size estimate was counting the /EFI/BOOT/ contents twice and then
doubling that. Only count things once, then double it for the
System/Library/CoreServices/ copy.

hard-links don't work. With CoreServices hardlinked to /EFI/BOOT/ the
Mac won't boot. With /EFI/BOOT/ hardlinked to CoreServices grub2 cannot
read the config file so there are 2 real copies.

This reduces the image size from 21M to about 12M
2015-10-02 13:34:12 -07:00
David Shea
21b7654659 Look for crashes from the anaconda signal handler. 2015-09-24 16:53:02 -04:00
Brian C. Lane
1c928080f2 Do not install weak deps in boot.iso 2015-09-11 14:04:34 -07:00
Brian C. Lane
b3bf61bfdd Drop multiprocessing for do_transaction (#1208296)
When running the transaction in a separate process it crashes if you use
a https repo source. There's really no need for threads or processes in
lorax so drop it.

Also switched to using the DNF TransactionProgress API for progress
reporting.
2015-09-09 15:58:57 -07:00
Brian C. Lane
bf255a41a5 Don't include early microcode in initramfs (#1258498)
The system the image boots on will likely not match the host where lorax
was run, and in some cases this can cause systems to hang.

Resolves: rhbz#1258498
2015-09-01 09:51:47 -07:00
Will Woods
a3e1a275ff don't build upgrade.img anymore
fedup is deprecated and abandoned. Let's save time and disk by not
building `upgrade.img` when nothing is going to use it anymore.

For the record, performing upgrades using an initramfs from the new
system turns out to be fragile and hard to support:

* dracut initramfs isn't generic enough to handle booting all systems
  (e.g. missing vconsole.conf means you get keymaps wrong, so users
  can't unlock encrypted disks)

* The ABI differences between the two versions of plymouth, systemd,
  etc. requires nasty workarounds at best and causes nightmarish
  systemd crashes at worst

This patch removes all the code that built and installed `upgrade.img`.

For backwards compatibility, the API retains the `doupgrade` keyword
argument, and the `--noupgrade` flag is still accepted.
2015-08-31 16:24:39 -07:00
Brian C. Lane
394d37fbb5 livemedia-creator: no-virt fsimage should only use / size from ks
The amount of free space for / should be consistent between installation
types, otherwise some may have enough space, and others won't.
2015-08-28 11:37:05 -07:00
Brian C. Lane
522ec34360 Return the output from failed commands in CalledProcessError
Some callers expect CalledProcessError.output to have the output, so
pass up the stdout + stderr output.

This means failed runcmd template commands will log to program.log and
lorax.log
2015-08-04 10:50:37 -07:00
Brian C. Lane
9f702f5624 Use execReadlines in livemedia-creator
Log output from anaconda as it is received so that progress can be
monitored.
2015-07-30 09:05:31 -07:00
Brian C. Lane
cfe4777042 Add execReadlines to executils.
Returns output in realtime instead of buffering it.
2015-07-30 09:02:48 -07:00
Brian C. Lane
11b8eb8b97 Add reset_lang argument to everything in executils.
Running anaconda from lmc needs to override the language reset,
otherwise libuser crashes because it cannot support "C".
2015-07-27 11:27:43 -07:00