| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
TODO:
- sync dracut and NM naming convention for slaves?
perhaps better: don't write any ifcfg files for kickstart case
- test with new NM (dhcp on slaves)
|
|
|
|
|
|
|
|
|
|
|
| |
So it turns out that having the device that contains the runtime image
mounted *underneath* the runtime image means we have a mount loop, e.g.:
The DVD can't be unmounted because it holds the image for /
/ can't be unmounted because the DVD is mounted underneath it
To fix this, we move the repo mount(s) back out from under the runtime
image during dracut's pre-shutdown hook (new in dracut 024-25).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ksdevice option doesn't work in f17 and f18.
It used to specify which network device to activate in early stage of
installation, eg. to fetch kickstart or installation image.
In F17 and F18 the device should be specified by dracut option ip=
Mapping of ksdevice options from loader to dracut options used in
F17 and F18:
- ksdevice missing (and network is required)
loader: user was asked in UI in case of more devices present
dracut: activates all devices if not specified
- ksdevice=eth0
loader: eth0 is activated
dracut: specify device in ip=, eg
ip=eth0:dhcp
ip=10.34.39.44::10.34.39.254:255.255.255.0::eth0:none
- ksdevice=00:12:34:56:78:9a
loader: device with MAC address is activated
dracut: We translate it to ifname=ksdev0:00:12:34:56:78:9a which renames
the device.
It is possible to use BOOTIF=00-12-34-56-78-9a, which this patch
does.
- ksdevice=link
loader: first device with link found is activated
dracut: all devices with link are activated
(default dracut behaviour for not specified device)
- ksdevice=ibft
loader: activate devcie configrued in iBFT
dracut: use ip=ibft option
|
|
|
|
|
|
| |
Drastically speeds up compression of the initramfs for modern multicore
systems, doesn't slow anything down if you're on a single core machine
(like a virt guest), and only adds ~20kb to the image size. Good deal!
|
|
|
|
|
|
|
| |
product.img should place its files under /run/install/product
This maintains consistency between updates.img and product.img and
supports correct operation whether or not tmpfs is used for /tmp
|
| |
|
|
|
|
|
| |
The docs and anaconda did not match up. This updates anaconda to work the same
as it used to do, now to update the docs to match.
|
|
|
|
|
| |
No wonder we can't seem to eject the DVD - we don't have the eject
binary! Include it in the initramfs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since dracut dropped its slightly-too-clever trick to save a copy of
itself at /run/initramfs, we need to locate or save a copy of initramfs
so we can switch back into it and shut down properly.
So: first, check to see if we're running off media; if so, we can just
use the initramfs from the media. Easy!
Otherwise we need to save a copy. The anaconda initramfs (for current
F18-ish images on x86_64) uses about 96M RAM when unpacked, which is a
bit wasteful.
To save RAM we can filter out some stuff we don't need for shutdown:
* kernel modules: ~39M
* firmware: ~9M
* python: ~8M
* ssl certs: ~1M
* fsck binaries: ~1M
which leaves us with 38M of data. We can reduce this to 18M by gzipping
it, but that delays startup for 3s on my test system.
(Using xz would save 4.5M, but it takes 15s (!) and uses 100M RAM (!!).)
Using gzip -1 drops this to just over 1 second; RAM use goes up by 1M,
but that seems like a reasonable tradeoff.
If `pigz` is available, that gets used instead, which makes the delay
basically negligible on any modern multicore system.
|
|
|
|
|
|
|
|
| |
We've got this shiny new method selection UI but if you want to use it, you've
first got to sit through the delay of fetching metadata for the closest mirror
which might be completely wrong for you. Thus, this parameter will skip the
default action. Entering and leaving the source spoke will unset this
parameter.
|
|
|
|
| |
It was being unpacked to /updates instead of /updates/tmp/product
|
| |
|
|
|
|
|
| |
In default case, use SLAAC auto configuration (NM's default
IPV6_AUTOCONF=yes).
|
|
|
|
|
|
|
| |
We need to pass dhcp lease file to NM's dhclient also in case of
kickstart installs. For non-kickstart case, this is done in dracut,
modules.d/45ifcfg/write-ifcfg.sh.
See dracut's commit 66666c670a462548df4ea4c8069d54b8c309ecf4
|
| |
|
| |
|
|
|
|
|
|
| |
In dracut we set ONBOOT=yes for --activate so that NM activates
the device upon its start, in anaconda we set the real value
of ONBOOT.
|
|
|
|
|
| |
anaconda-dracut always passes a path to dmsquash-live-root so its
checkisomd5 never runs (it needs a block device).
|
| |
|
|
|
|
|
|
|
|
|
| |
move doesn't work because /run/ is a shared filesystem. So do as
systemd suggests, mark the filesystem as private. We don't know of any
reason in anaconda for the filesystem to be shared anyway.
This hack can go away if/when the kernel ever allows moving mounts
within a shared filesystem.
|
| |
|
|
|
|
|
| |
We need these after the pivot and we can't get to them without copying
them into /run ourselves.
|
|
|
|
|
|
|
|
|
|
| |
This is kind of silly, since IPV6_AUTOCONF=yes is the default (according
to sysconfig.txt from 'initscripts'). But it might not always be the
default, so let's just make sure we do what the user wants.
Also, it's not our job to set policy; if DHCPV6C=yes should disable
IPV6_AUTOCONF that's up to initscripts/NetworkManager. So leave it alone
otherwise.
|
|
|
|
| |
It turns out IPV6INIT defaults to "no", so we need to set this.
|
|
|
|
|
| |
A bunch of these comments don't apply anymore - update them so they
reflect reality
|
|
|
|
| |
Systemd handles the tricky bits of logging for us now. Yay!
|
|
|
|
|
|
|
|
|
|
| |
the splitsep function was buggy before, but it was fixed in dracut 019
so we don't need these workarounds anymore.
See upstream dracut commit f7cadaa843498c4b986f8a030fab39002ad108b6.
Related: 844c0c156ed2f27920257d86690f3017727f398e
Related: 700e985082b03abcbd3009de81885b8fbf72818b
|
|
|
|
|
|
|
| |
rd.neednet is no longer in use by dracut. This is how you tell dracut
"definitely bring up the network interfaces, dammit" now.
Related: 861d6e3fc9d9cd3f719f7e2dbbff31244dc80142
|
| |
|
| |
|
|
|
|
| |
Argh I dropped a colon somehow. Whoops.
|
|
|
|
|
|
|
| |
Some info about the variables that dracut exports and uses.
This helps clarify the $netroot situation in anaconda-lib.sh a bit.
Bonus: add some links to Further Reading.
|
|
|
|
| |
You can't use 'eth0' with ifname=<name>:<MAC>. Use 'ksdev0' instead.
|
|
|
|
| |
We don't handle upgrades in anaconda anymore, so this isn't necessary.
|
|
|
|
|
| |
Dracut now passes $netif as the first argument to the script rather than
setting it in the scripts environment. So we need to do netif=$1.
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we parse "ip=... gw=..." and emit a new "ip=..." line, we end up with
multiple conflicting ip= args for that device. This makes dracut panic
with:
"Sorry, 'ip=$p' does not make sense for multiple interface
configurations"
Luckily dracut handles old-style anaconda ip=... arguments now, so we
can just drop this block of code and fix the problem. Yay!
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since each hook is (basically) a separate shell, we need to import
anaconda-lib.sh at least once per hook.
Since anaconda-modprobe.sh runs before the other scripts, this covers
the whole hook.
Still, it's a good idea to leave the imports in place so future
maintainers know what functions come from where; clean up the existing
import in repo-genrules.sh to actually provide this info.
|
|
|
|
|
|
| |
'rd.neednet' is no longer used by dracut. Instead it checks for the
presence of /tmp/net.ifaces or $netroot. So, if we need network (and
$netroot isn't set), make sure /tmp/net.ifaces exists.
|
|
|
|
|
|
|
|
|
| |
save_netinfo moved into upstream dracut's net-lib.sh, so we don't need
our own version here.
The only place we currently use save_netinfo is in the initqueue/online
hook, which will always have sourced net-lib.sh first, so we don't need
to worry about changing anything else.
|
|
|
|
|
|
| |
a) cmdline happens before we start messing with devices, so we don't
really need to do modprobe here,
b) we don't care if the user doesn't have a floppy drive, that's OK
|
|
|
|
|
|
|
|
| |
Current dracut crashes (intentionally!) if you use 'ip=' arguments with
'BOOTIF='.
Until that's fixed upstream, add a temporary workaround that skips
writing 'ip=' arguments if 'BOOTIF' is present.
|
|
|
|
|
| |
Should be no actual behavior changes here, mostly just adding a bunch of
comments and clarifying the flow a bit.
|
|
|
|
|
| |
Add a README containing some notes that should cover a lot of the common
questions people ask about how this thing works.
|
|
|
|
|
|
| |
We're going to be playing whack-a-mole here for a bit. Because each
stage of dracut is now a new shell we don't have access to things
sourced in previous stages.
|
|
|
|
|
|
|
|
| |
commit c1da5cd was originally part of an attempt to fix something else,
but the other patch (which introduced proc_cmdline) was rejected on
review.
This adds proc_cmdline so init_logger() won't traceback.
|
|
|
|
|
|
| |
For some reason right now this library is not being imported at the time
repo-genrules.sh is being ran, so add a stub that forces the import
since we need the $rulesfile variable.
|
|
|
|
|
|
|
| |
Basename got removed from dracut land. This was our only use of it so
use shell built ins to accomplish the same thing. Sadly you cannot
strip both prefix and suffix at the same time, so take a two step
approach.
|
|
|
|
|
|
| |
Loader used to handle this, but it was lost when we moved to dracut.
This adds back the functionality to set cmdline, text, or graphical based
on kickstart contents.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Originally, parsing inst.ks.{sendmac,sendsn} happened in
parse-anaconda-kickstart.sh. But it turned out that sendmac needed to
happen after the modules were loaded, so commit 4fcc157 tried to fix
this by making it a function, and using initqueue to run that function
in the 'initqueue/settled' hook.
Well, it turns out initqueue doesn't like adding jobs that are function
names - the job ends up empty and nothing happens.
So instead, let's handle these two arguments directly in a script that
runs in initqueue/settled.
|