Age | Commit message (Collapse) | Author | Files | Lines |
|
This introduces support for the rd.log and rd.debug kernel command line
options, which log early userspace activity to /run/initramfs/init.log.
Code is largely inspired by Dracut's implementation of early userspace
logging, but without needless complexity and redundancies.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This makes it easier to test parse_cmdline.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Adjust the test in poll_device to look for either an unset OR an empty
2nd parameter.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Since mkinitcpio rewrites its runtime config, we can guarantee that
these variable are sanitized of extraneous whitespace. Meld the two
calls together, ensuring that we retain the ordering, but only call
modprobe once.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
busybox gives us something sane which doesn't need setting, or
resetting.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This fixes a bug that made it impossible for systemd to be booted with a
separate /usr partition.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This will allow us to tell how much time was spent in the initramfs,
which might be good for working on optimizations and making sure we
don't regress.
If a binary able to produce the timestamp is not installed this is a
noop.
I'll post separately an install hook to the systemd package that will
install systemd-timestamp. However, it would be trivial to replace this
by an independent implementation if people want to use this without
systemd.
With this patch I get the following on my (ancient) laptop:
$ systemd-analyze
Startup finished in 294ms (kernel) + 2684ms (initramfs) + 15741ms (userspace) = 18720ms
FWIW, 1 second is spent on inserting the needed modules, and 1.5 seconds
on mounting the rootfs (mounting btrfs is slow!).
Signed-off-by: Tom Gundersen <teg@jklm.no>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Mount separate /usr partitions voluntarily, as a late running hook.
This is an unfortunate patch that will no doubt result in some hatemail,
though it won't thoroughly break anyone to the point of not booting.
As a side effect, findmnt is no longer a requisite of the core /init, so
move it to the shutdown and usr hooks where it's required.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This will be handled by udev's run_earlyhook and run_cleanuphook,
respectively.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This adds support for three more rounds of hooks during early userspace.
Users can define a 'run_latehook' in their hook script similar to the
declaration of 'run_hook' (which continue to run at the same point in
execution). These are run in the same order as the original "early"
hooks shortly after root is mounted.
Additionally, 'run_cleanup' hook can be defined which will run right
after the late hooks. These scripts are executed after mounting root in
reverse order of how they're clared in mkinitcpio'c config.
These late running hooks should take care of things such as:
- mounting /usr (possibly encrypted)
- moving config to the real root (mostly for liveCDs)
- shutting down previously started daemons (e.g. udev or dropbear)
Finally, we add run_earlyhook which is run as soon as possible. There
will likely be only a few subscribers to this, but udev will certainly
be one of them, as it needs to be started as early as possible when
present, to avoid problems with firmware loading.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Abstract this out to the init_functions file, and allow this function
take 2+ parameters -- the hook name to be run, a user friendly short
description, and then the list of hook files to source from. While we're
at it, take advantage of the fact that hooks are now installed with
executable perms. If a hook isn't marked excutable, we skip it, thereby
removing our eval hack.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This never worked properly and only "fixed" the stupid bug that found
an edge case when either of these vars contains nothing more than a
single space.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
We've gotta stop moving this around...
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Applies to both the real root and any device that's mounted on /usr
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Behavior changed in util-linux commit 2f1ac44b4b.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Move this logic inside fsck_device as well, so that fastboot skips a
possible fsck on the /usr partition as well.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
udev does not support this as of udev-176, so there is no point in
pretending it will work.
This also drops devtmpfs_mounted=1, so any custom hooks that use this
would have to be updated (no official hooks are affected).
Signed-off-by: Tom Gundersen <teg@jklm.no>
|
|
Use findmnt to detect the existance of a separate /usr partition
existing in the real root. If it does exist, fetch the options for it
and mount it. This currently makes a lot of assumptions and won't be
very friendly towards something such as a dm-crypt device.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
init doesn't set a umask, so this was previously created as world
writable and sticky.
Reported-by: Thomas Bächler <thomas@archlinux.org>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This means that no "setup" of the initramfs is requried on boot,
and this should make testing a lot eaiser by just chrooting into
the ramfs to check if it works.
Signed-off-by: Tom Gundersen <teg@jklm.no>
|
|
Add compat symlinks from /bin, /sbin and /usr/sbin, so nothing is lost.
This will make sure that it is not possibly to install two different
versions of the same binary in PATH.
The main usecase of this is that we want to be able to override any
symlink provided by busybox by adding a binary by the same name. With
this patch we don't have to worry in case the busybox symlink and the
binary we add are in different directories; the last binary to be added
always takes precedence.
Signed-off-by: Tom Gundersen <teg@jklm.no>
|
|
These are all root owned, so we don't need to be concerned about DoS
attacks via these FS's.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
The only downside is on systems where devtmpfs is not enabled
will see and error message, anyway /dev will be tmpfs as fallback like now.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This is a much better solution than busybox's, as it will move our API
filesystems and /run for us.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This adds support for fsck'ing root at bootstrap if the fsck binary and
necessary helpers are included.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
We'll use this as a channel to communicate with later userspace.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Remove this ancient relic. It's not been needed in a very long time.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
We always need this in early userspace, so add it as part of the build
process instead of forking at runtime.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
- usb_id and path_id are now builtin functionality of udevadm
- /sbin/udevd moves to /lib/udev/udevd
- update dev PKGBUILD to reflect version requirement
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This is required for busybox 1.19.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
An empty file will be created in any case, does not cause any harm, but for correctness.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|
|
This is already done in initscripts so we mirror it here.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Add in 'premount' and 'postmount' as trigger conditions, but also leave
in the old 'y' value as a synonym for premount.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
when one is set to " "
|
|
These don't really serve a purpose and might actually munge a test for
an unset var. Declare vars as we need them, substituing with default
expansions where possible.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
We were never very consistent about this anyways.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
* Create only the directories that are necessary. If others are
needed, they'll be created along the way. As part of this, we create
/new_root sooner in init, so it's less jarring to the user if they
request a break.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
This also adds a /bin/bash shebang to functions. While not technically
necessary, this ensures that vim gives us the correct syntax highlight
file.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
This is harmless when it fails, but it might alarm users.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
devtmpfs is not used.
|
|
We preserve TERM, but everything else can be destroyed from the
environment. Without preserving TERM, the value is reset to 'dumb' in
userspace, and we get false readings by the initscripts on terminal
capabilities.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
This is no longer supported, as m-i-t supports modprobe.blacklist=
syntax on the kernel cmdline. We load all modules from the config at
once with --all and --use-blacklist flags in order to honor the cmdline
blacklisting.
Signed-off-by: Dave Reisner <d@falconindy.com>
|
|
>From udev NEWS:
The running udev daemon can now cleanly shut down with:
udevadm control --exit
Udev in initramfs should clean the state of the udev database
with: udevadm info --cleanup-db which will remove all state left
behind from events/rules in initramfs. If initramfs uses
--cleanup-db and device-mapper/LVM, the rules in initramfs need
to add OPTIONS+="db_persist" for all dm devices. This will
prevent removal of the udev database for these devices.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|
|
This brings it in line with initscripts (and systemd), there should be no need for everyone to have write access to the /run folder.
Reported-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Tom Gundersen <teg@jklm.no>
|
|
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|