Create /dev/root symlink pointing to real root device, if any.
This commit is contained in:
parent
c5789a6e23
commit
a7e3d05208
@ -16,6 +16,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/sysmacros.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -27,6 +28,8 @@
|
|||||||
|
|
||||||
#include <busybox.h>
|
#include <busybox.h>
|
||||||
|
|
||||||
|
int root_major, root_minor;
|
||||||
|
|
||||||
/* mknod in /dev based on a path like "/sys/block/hda/hda1" */
|
/* mknod in /dev based on a path like "/sys/block/hda/hda1" */
|
||||||
static void make_device(char *path)
|
static void make_device(char *path)
|
||||||
{
|
{
|
||||||
@ -169,6 +172,9 @@ found_device:
|
|||||||
if (mknod(temp, mode | type, makedev(major, minor)) && errno != EEXIST)
|
if (mknod(temp, mode | type, makedev(major, minor)) && errno != EEXIST)
|
||||||
bb_perror_msg_and_die("mknod %s failed", temp);
|
bb_perror_msg_and_die("mknod %s failed", temp);
|
||||||
|
|
||||||
|
if (major==root_major && minor==root_minor)
|
||||||
|
symlink(temp,DEV_PATH "/root");
|
||||||
|
|
||||||
if (ENABLE_FEATURE_MDEV_CONF) chown(temp,uid,gid);
|
if (ENABLE_FEATURE_MDEV_CONF) chown(temp,uid,gid);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
@ -217,6 +223,11 @@ int mdev_main(int argc, char *argv[])
|
|||||||
/* Scan */
|
/* Scan */
|
||||||
|
|
||||||
if (argc == 2 && !strcmp(argv[1],"-s")) {
|
if (argc == 2 && !strcmp(argv[1],"-s")) {
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
stat("/", &st); // If this fails, we have bigger problems.
|
||||||
|
root_major=major(st.st_dev);
|
||||||
|
root_minor=minor(st.st_dev);
|
||||||
strcpy(temp,"/sys/block");
|
strcpy(temp,"/sys/block");
|
||||||
find_dev(temp);
|
find_dev(temp);
|
||||||
strcpy(temp,"/sys/class");
|
strcpy(temp,"/sys/class");
|
||||||
|
Loading…
Reference in New Issue
Block a user