Commit Graph

676 Commits

Author SHA1 Message Date
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
David Shea
04d170bb09 Add a verification step to Lorax.run.
After the cleanup step, check that everything in /usr/bin and /usr/sbin
can still run. Currently, this just checks that ELF files have
everything they need to link, and scripts have an interpreter.

Verifying is on by default but can be skipped with --noverify
2015-07-20 16:18:20 -04:00
Brian C. Lane
8a8b4e1a45 Add a bit more overhead to the root filesystem size
When this is too small the rootfs can run into problems when used with a
live system. Doubling it leaves enough space for the system to run
properly during the installation and since it's all compresses it
doesn't make the image noticeably bigger.
2015-07-01 08:32:33 -07:00
Chris Lumens
c3743c54bc Pass setup_logging the log file, not the whole opts structure. 2015-06-03 08:55:34 -04:00
Chris Lumens
ffa25dd609 Move IsoMountpoint into its own module. 2015-06-01 14:27:32 -04:00
Chris Lumens
d23605d3cc Move setup_logging into pylorax/__init__.py. 2015-06-01 14:27:29 -04:00
Chris Lumens
893791cf7d Break all the log monitoring stuff from LMC out into its own module. 2015-05-29 13:53:07 -04:00
Brian C. Lane
7cd329a065 Fix bug with product DataHolder overwriting product string. 2015-05-18 08:24:23 -07:00
Brian C. Lane
3560d12608 Update execWith* docstrings 2015-05-15 17:11:21 -07:00