Age | Commit message (Collapse) | Author | Files | Lines |
|
We've gotta stop moving this around...
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Since 3b18c9cd we have a blank /etc/fstab in the image. This is also
forward thinking for the next release of util-linux (2.22), where fsck
complains loudly about my filthy hack of using /dev/null as /etc/fstab.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
sysfs contains enough information about block devices to be able to
determine the order of stacked devices such as lvm, raid, or crypto. By
looking at the device symlinks from the holders/ attributes of a block
device, we can walk down each device chain until we reach the most
descendant device.
For each of these devices at the end of a chain, detect its type and
perform the appropriate action to disassemble it. Then, walk back up the
device chain, disassembling each parent device.
To save ourselves some pain and make sure we're fairly accurate, lsblk
is brought in for detection of device types.
Thanks-To: Florian Pritz <bluewind@xinu.at>
Thanks-To: Tom Gundersen <teg@jklm.no>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Make this consistent with the rest of the codebase.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
- Use git-ls-files and bsdtar to create the archive rather than using
git-archive and an temporary directory.
- Remove the tarball target. 'dist' is more common.
- Remove the 'clean' dependency from dist. Our dependencies are
sufficient higher up that touching the Makefile or the asciidoc input
will trigger a doc rebuild on changes.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
The combination of the udev+mdadm hooks plus a tag based root= would
cause resolve_device to fail because it immediately looked for a udev
symlink which would never be created. The proper fix is to get rid of
the mdadm hook and to always use mdadm_udev (which should be merged into
mdadm), but this might come back and bite us again.
The new solution doesn't assume that udev rules exist and tries blkid
first. If the device doesn't (yet) exist fall back on a udev symlink if
udevd is running.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This is implemented for the keymap and consolefont hooks. It's done in
such a way that vconsole.conf and locale.conf will override and
supplement rc.conf.
Implements FS#29022.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Possible options are 'skip' and 'force' which are synonyms for fastboot
and forcefsck, respectively.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
I don't want to make a habit of treating cmdline opts as special if they
don't need to be, and this is a case where some simple PE magic can be
substituted.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
[dreisner: add handling for -A flag]
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|
|
- cleanup syntax, style
- use case to detect syntax (avoid problems with vanilla devspecs
containing a ':')
- support LABEL=/UUID= syntax for vanilla hibernation (FS#28504)
- be more verbose about errors
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This fixes a strange edge where-in a user creates an image as non-root
and attempts to boot from it. Any setuid binaries (such as mount) will
fail, as the ownership is preserved.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
The only reason this has to be done is because of the Kconfig option
that reuses the ext4 module for ext[23], thereby aliasing ext[23] to
ext4. This is (currently) the only case in the whole kernel where valid
module names magically become aliases.
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>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This is a really ugly patch, but allows mkinitcpio to read hooks from
multiple locations, namely:
/usr/lib/initcpio/{install,hooks}
/lib/initcpio/{install,hooks}
Preference is given to the first, and all files included with mkinitcpio
are moved there.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Relying on blkid to do tag resolution will fail when the root device
doesn't yet exist. This is, of course, bad for USB root devices.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
e2fsprogs makes a lot of hardlinks for its fsck tools. If ext[234] is
detected, add the fsck.ext4 binary and add symlinks.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Make the logic similar to how we treat usrfstype.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
|
|
Behavior changed in util-linux commit 2f1ac44b4b.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Trading out modinfo for modprobe allows us to detect filesystems like
ext2 and ext3 which might be aliased to ext4 in the case of Kconfig
CONFIG_EXT4_USE_FOR_EXT23 being enabled. Maybe this catches other insane
corner cases, too.
Since we now treat this as possible aliases, we also need to be mindful
of the fact that it could resolve to multiple module names. Assign the
output as an array to respect this.
Fixes FS#28569.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
mkinitcpio will always create /lib/modules/$kernver/kernel in the image,
so we can use this to detect the kernel the image was built for, even if
the image contains no modules.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This increases compression efficiency, which might be useful on an image
containing a lot of modules.
For the usecase I had in mind, this reduced the size by about a quarter.
Signed-off-by: Tom Gundersen <teg@jklm.no>
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
depmod doesn't care where modules are, within reason, and separating
modules into the respective hierarchies only serves to irritate users
who go looking for modules in the rootfs (aka me). Forget all this and
dump everything into the kernel/ dir.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Move the unsetting of the errtrace and ERR trap flags to after the
image has been built. This lets us capture errors during module
installation to the build root and the call to depmod. Either of these
steps failing could be hazardous and should prompt a failure.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
FS#10061 still isn't dead, its just resting:
https://bbs.archlinux.org/viewtopic.php?pid=1056003
An strace from a helpful user shows that our mdadm call is trying to
open a block device and the call never returns:
open("/dev/sdb", O_RDONLY|O_DIRECT|O_LARGEFILE
Fix this by only scanning explicitly the block devices we're interested
in, found via sysfs. This is an all around win for everyone, especially
users who have mdadm installed without any need for it.
This changes some of our assumptions about the environment:
- the mdadm binary exists when we find md devices in /sys
- the user running mkinitcpio isn't any specific UID or part of any
particular group, but merely has read access to the block devices
we're about to scan.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
These should belong to the udev package.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
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>
|
|
our fsck_ret function would always return true when passed 0, which
clearly isn't what we want. Use a simple string compare instead.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
An error in logic here would cause the --try flag to be passed to all
modules after the first, if a hook added modules ending with a '?'.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
In particular, skipping ata-generic causes some macbooks to not boot.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
This makes us more resilient against path changes -- add_binary is smart
enough to resolve the path for us.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Install kmod in /usr/bin and provide symlinks for all the applets to the
kmod multi-call.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
All official hooks have been using build() for quite some time now.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
systemd passes 'kexec' on 'systemctl kexec' which isn't being caught.
Catch the few possible verbs for a halt, and let everything else default
to trying a kexec; falling back on a reboot.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
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>
|
|
This is cosmetic change, but using rootfs is more correct than ramfs.
[Rootfs is a special instance of ramfs or tmpfs, if that is enabled]
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
|
|
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|
|
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>
|
|
This is required for mounting a separate /usr. While the shutdown hook
is essentially a soft requirement for a separate /usr, we shouldn't
break init.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
|