Age | Commit message (Collapse) | Author | Files | Lines |
|
The kernel command line allows quoted strings with whitespace in them. Until now,
such parameters would crash /init and cause a kernel panic.
Move parsing into a function and use the 'set' builtin to split /proc/cmdline
into arguments.
Fixes FS#13900 and FS#22080.
|
|
- Remove ":: Loading initramfs" message
- Start udev after command line parsing, so quiet will be respected
|
|
Mount /run as a 10MB tmpfs with 1777 permissions early. Move it to /new_root
when switching.
|
|
- Loop over dev, sys, proc instead of repeating the same command.
- If the target directory does not exist, umount instead of moving.
|
|
42e8dba5dce4879e4a372c5c2fb5446b4e8bb16c.
|
|
|
|
This is the counterpart to a similar patch to initscripts, making sure that the change applies regardless of whether initrd is used.
Thanks to David Reisner for pointing out that this was needed.
|
|
These devices used to be present because they were added in the image.
Since we now mount {dev,}tmpfs early in initramfs, the devices from
the image will be invisible. In the tmpfs-case, create the devices
manually so everything will be in order until udev is started, or
if udev isn't used at all.
|
|
before switch_root
|
|
the real root
|
|
Devices will never "magically" appear when udevd is not running. Thus,
poll_device now exits instantly when a device when udevd is not running.
The return value is unchanged, just the delay is removed.
Assuming that the drive is available just after loading the module is
unsafe. However, "fast" devices like most (all?) pata/sata seem to
work this way for many people. On "slow" devices like USB, we still
have to wait - those will not work without udev.
|
|
|
|
mount point
The old check couldn't distinguish different tmpfs mounts and failed to work with aufs (archiso).
This check is actually the same one that busybox/switch_root uses to determine where
to stop deleting files. If this check fails and we still launch switch_root it may start
deleting data.
|
|
|
|
mount handler (default_mount_handler)
|
|
Instead of having special NFS code in /init, make it possible for a hook to register a mount handler
When a hook sets the mount_handler environment variable, the normal mount code will be skipped and
the handler will be called with the path to mount point as the first and only argument.
|
|
terminate before continuing
|
|
exist on it, bail out instead of panicing
In these cases, we will exec /bin/sh, such that manual recovery is still possible as sh has PID 1
An expert might be able to mount and switch_root manually. In any case, this is less scary than a panic and a useless trace.
|
|
Slow devices like USB devices will be detected after we kill udev, thus booting will fail.
Kill udev as the last step, directly before we umount /proc and /sys and run switch_root.
|
|
stupid me
|
|
|
|
is specified
|
|
typing reboot is ineffective
|
|
|
|
otherwise will access to /sys/block//sys/block/sda/sda1/dev (for example)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|
|
There is no nss library or user/group database in initramfs, so tell udev to not try to resolve any names
|
|
This fixes FS#18213.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use busybox/switch_root for the final step. TODO: NFS
|
|
CONFIG_BUSYBOX_EXEC_PATH="/bin/busybox" in busybox
|
|
Remove klibc-isms from base and init (except kinit, which will be done in a later commit)
Install busybox to the initramfs and change /init so it can be used with busybox
|
|
|
|
|
|
|
|
and make it more reliable
The old implementation failed on bash and failed on both if rootdelay was not a number.
The logic is now as follows:
If "$rootdelay"="", then [ -z "${rootdelay}" ] is true
If not, then the part after the || is executed - if ${rootdelay} is not a number, or is <0, then [ ${rootdelay} -ge 0 ] fails,
and the test will return true due to the !. The previous implementation failed here, because [ ! ${rootdelay} -ge 0 ] returns false
on error, while ! [ ${rootdelay} -ge 0 ] returns true on error.
|
|
See `man dash`
Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
|
|
|
|
|
|
If we have a symlink, we don't check further if it points to a block device, partially due to klibc's readlink being broken.
|
|
|
|
- Set rootdelay to 10 by default
- Skip the whole detection stage if we use root on nfs
- Use the new poll_device function to wait for at most $rootdelay seconds
- Always pass rootdelay=0 to kinit, as we ensure the existence of the root device
- Don't reboot after the fallback. This allows a user to fix a problem and continue booting
- Rely on kinit to detect the root filesystem type. The rootfstype= option can still be used to override
Our old method would have failed as well, as the code for filesystem detection is the same
|
|
and the hooks
|
|
udev forks some processes, and sometimes minips returns multiple
PIDs. The error messages are annoying, so we'll simply remove them
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
|
|
|
|
|