Create /dev/root symlink pointing to real root device, if any.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -16,6 +16,7 @@ | |
| #include <string.h> | |
| #include <sys/mman.h> | |
| #include <sys/stat.h> | |
| + | #include <sys/sysmacros.h> |
| #include <sys/types.h> | |
| #include <unistd.h> | |
| #include <stdlib.h> | |
| @@ -27,6 +28,8 @@ | |
| #include <busybox.h> | |
| + | int root_major, root_minor; |
| + | |
| /* mknod in /dev based on a path like "/sys/block/hda/hda1" */ | |
| static void make_device(char *path) | |
| { | |
| @@ -169,6 +172,9 @@ found_device: | |
| if (mknod(temp, mode | type, makedev(major, minor)) && errno != EEXIST) | |
| 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); | |
| end: | |
| @@ -217,6 +223,11 @@ int mdev_main(int argc, char *argv[]) | |
| /* Scan */ | |
| 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"); | |
| find_dev(temp); | |
| strcpy(temp,"/sys/class"); | |