dev-setup: allow a path prefix for use in chroots
With this adjustment, we can reuse this code elsewhere, such as in nspawn.
This commit is contained in:
parent
50b3e64e27
commit
8f0e73f250
|
@ -398,7 +398,7 @@ int mount_setup(bool loaded_policy) {
|
|||
/* Create a few default symlinks, which are normally created
|
||||
* by udevd, but some scripts might need them before we start
|
||||
* udevd. */
|
||||
dev_setup();
|
||||
dev_setup("");
|
||||
|
||||
/* Mark the root directory as shared in regards to mount
|
||||
* propagation. The kernel defaults to "private", but we think
|
||||
|
|
|
@ -50,7 +50,7 @@ static int symlink_and_label(const char *old_path, const char *new_path) {
|
|||
return r;
|
||||
}
|
||||
|
||||
void dev_setup(void) {
|
||||
void dev_setup(const char *pathprefix) {
|
||||
const char *j, *k;
|
||||
|
||||
static const char symlinks[] =
|
||||
|
@ -60,6 +60,16 @@ void dev_setup(void) {
|
|||
"/proc/self/fd/1\0" "/dev/stdout\0"
|
||||
"/proc/self/fd/2\0" "/dev/stderr\0";
|
||||
|
||||
NULSTR_FOREACH_PAIR(j, k, symlinks)
|
||||
symlink_and_label(j, k);
|
||||
NULSTR_FOREACH_PAIR(j, k, symlinks) {
|
||||
char *linkname;
|
||||
|
||||
if (asprintf(&linkname, "%s/%s", pathprefix, k) < 0) {
|
||||
log_oom();
|
||||
break;
|
||||
}
|
||||
|
||||
symlink_and_label(j, linkname);
|
||||
|
||||
free(linkname);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
|
||||
#ifndef foodevsetuphfoo
|
||||
#define foodevsetuphfoo
|
||||
#pragma once
|
||||
|
||||
/***
|
||||
This file is part of systemd.
|
||||
|
@ -22,6 +21,4 @@
|
|||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
void dev_setup(void);
|
||||
|
||||
#endif
|
||||
void dev_setup(const char *pathprefix);
|
||||
|
|
|
@ -1155,7 +1155,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
mkdir("/run/udev", 0755);
|
||||
|
||||
dev_setup();
|
||||
dev_setup("");
|
||||
static_dev_create_from_modules(udev);
|
||||
|
||||
/* before opening new files, make sure std{in,out,err} fds are in a sane state */
|
||||
|
|
Loading…
Reference in New Issue