And other non-device entries (like fstab does).
Mount whatever the user asked to be mounted on / on the kernel
command line. Do less sanity check and do *not* bail out
when the mount device looks strange or does not exist.
This basically makes the changes for deviceless filesystems
from yesterday unnecessary and is in line with what we do for
filesystems set up in fstab.
Remove some code that is now dead (reverting
fb02a2775a65 and
b0438462).
[tomegun:
- change patch title/description a bit.
- don't touch the /usr logic, that would be a separate change and
we don't currently have a convincing use-case for that.
- don't bail out on /sys ro. This only makes sense in containers,
where we would not be doing this anyway. If there is a use-case
we could consider that as a separate patch.]
_cleanup_free_ char *what = NULL;
const char *opts;
- if (fstype_is_deviceless(arg_root_fstype)) {
- if (free_and_strdup(&what, arg_root_what) < 0)
- return log_oom();
- } else {
- if (isempty(arg_root_what)) {
- log_debug("Could not find a root= entry on the kernel command line.");
- return 0;
- }
-
- what = fstab_node_to_udev_node(arg_root_what);
- if (!path_is_absolute(what)) {
- log_debug("Skipping entry what=%s where=/sysroot type=%s", what, strna(arg_root_fstype));
- return 0;
- }
+ if (isempty(arg_root_what)) {
+ log_debug("Could not find a root= entry on the kernel command line.");
+ return 0;
}
+ what = fstab_node_to_udev_node(arg_root_what);
+ if (!what)
+ log_oom();
+
if (!arg_root_options)
opts = arg_root_rw > 0 ? "rw" : "ro";
else if (arg_root_rw >= 0 ||
"/sysroot",
arg_root_fstype,
opts,
- 1,
+ is_device_path(what) ? 1 : 0,
false,
false,
false,
assert(what);
assert(where);
- if (fstype_is_deviceless(fstype)) {
- log_debug("Not checking deviceless filesystem \"%s\".", fstype);
- return 0;
- }
-
if (!is_device_path(what)) {
log_warning("Checking was requested for \"%s\", but it is not a device.", what);
return 0;
return nulstr_contains(table, fstype);
}
-bool fstype_is_deviceless(const char *fstype) {
- static const char table[] =
- "autofs\0"
- "bdev\0"
- "cgroup\0"
- "configfs\0"
- "cpuset\0"
- "debugfs\0"
- "devpts\0"
- "devtmpfs\0"
- "efivarfs\0"
- "hugetlbfs\0"
- "mqueue\0"
- "overlayfs\0"
- "pipefs\0"
- "proc\0"
- "pstore\0"
- "ramfs\0"
- "rootfs\0"
- "rpc_pipefs\0"
- "securityfs\0"
- "sockfs\0"
- "sysfs\0"
- "tmpfs\0";
-
- return !isempty(fstype) && (
- nulstr_contains(table, fstype) || fstype_is_network(fstype));
-}
-
int chvt(int vt) {
_cleanup_close_ int fd;
int close_all_fds(const int except[], unsigned n_except);
bool fstype_is_network(const char *fstype);
-bool fstype_is_deviceless(const char *fstype);
int chvt(int vt);