mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00

* package: sync with upstream Removed: package/libs/libselinux/bcm27xx-userland (Already in package/utils/bcm27xx-userland) Signed-off-by: Linhui Liu <liulinhui36@gmail.com> * uclibc++: remove No package here depends on it. Furthermore, uClibc++ is a fairly buggy C++ library and seems to be relatively inactive upstream. It also lacks proper support for modern C++11 features. The main benefit of it is size: 66.6 KB vs 287.3 KB on mips24kc. Static linking and LTO can help bring the size down of packages that need it. Added warning message to uclibc++.mk Signed-off-by: Rosen Penev <rosenp@gmail.com> Acked-by: Hauke Mehrtens <hauke@hauke-m.de> * target: sync with upstream Signed-off-by: Linhui Liu <liulinhui36@gmail.com> * toolchain: gcc: Remove gcc 10.x support This compiler is old and was never used by default in OpenWrt. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> * ucode: update to latest Git HEAD 46d93c9 tests: fixup testcases 4c654df types: adjust double printing format eac2add compiler: fix bytecode for logical assignments of properties 3903b18 fs: add `realpath()` function 8366102 math: add isnan() function eef83d3 tests: relax sleep() test 394e901 lib: uc_json(): accept trailing whitespace when parsing strings 1867c8b uloop: terminate parent uloop in task child processes d2cc003 uci: auto-load package in `ctx.foreach()` and `ctx.get_first()` 6c5ee53 compiler: ensure that arrow functions with block bodies return no value fdc9b6a compiler: fix `??=`, `||=` and `&&=` logical assignment semantics 88dcca7 add cmake to install requires for debian Signed-off-by: Jo-Philipp Wich <jo@mein.io> * firewall4: update to latest Git HEAD 700a925 fw4: prevent null access when no ipsets are defined 6443ec7 config: drop input traffic by default 119ee1a ruleset: drop ctstate invalid traffic for masq-enabled zones Signed-off-by: Jo-Philipp Wich <jo@mein.io> * ustream-ssl: update to Git version 2022-12-07 9217ab4 ustream-openssl: Disable renegotiation in TLSv1.2 and earlier 2ce1d48 ci: fix building with i.MX6 SDK 584f1f6 ustream-openssl: wolfSSL: provide detailed information in debug builds aa8c48e cmake: add a possibility to set library version Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> * tools/mpfr: import patch fixing macro bug Co-authored-by: Nick Hainke <vincent@systemli.org> Signed-off-by: Linhui Liu <liulinhui36@gmail.com> Signed-off-by: Linhui Liu <liulinhui36@gmail.com> Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Jo-Philipp Wich <jo@mein.io> Co-authored-by: Rosen Penev <rosenp@gmail.com> Co-authored-by: Hauke Mehrtens <hauke@hauke-m.de> Co-authored-by: Jo-Philipp Wich <jo@mein.io> Co-authored-by: Nick Hainke <vincent@systemli.org>
130 lines
3.4 KiB
Diff
130 lines
3.4 KiB
Diff
From: Qi Liu <liuqi_colin@msn.com>
|
|
|
|
In order to support extroot, block extroot command has to be able to
|
|
discover and properly mount the rootfs_data volume in order to discover
|
|
the extroot volume. Currently this process can only discover MTD devices.
|
|
This patch leverages libfstools in a similar way as mount_root to
|
|
discover, initialize, and mount rootfs_data volume. It would enable any
|
|
device with non-MTD rootfs_data volume to support extroot, including x86.
|
|
|
|
Signed-off-by: Qi Liu <liuqi_colin@msn.com>
|
|
---
|
|
CMakeLists.txt | 4 ++--
|
|
block.c | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
libfstools/fstype.h | 12 ++++++++++++
|
|
libfstools/libfstools.h | 11 +----------
|
|
4 files changed, 55 insertions(+), 12 deletions(-)
|
|
create mode 100644 libfstools/fstype.h
|
|
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -78,9 +78,9 @@ INSTALL(TARGETS blockd RUNTIME DESTINATI
|
|
ADD_EXECUTABLE(block block.c probe.c probe-libblkid.c)
|
|
IF(DEFINED CMAKE_UBIFS_EXTROOT)
|
|
ADD_DEFINITIONS(-DUBIFS_EXTROOT)
|
|
- TARGET_LINK_LIBRARIES(block blkid-tiny dl uci ubox ubus blobmsg_json ubi-utils ${json})
|
|
+ TARGET_LINK_LIBRARIES(block fstools blkid-tiny dl uci ubox ubus blobmsg_json ubi-utils ${json})
|
|
ELSE(DEFINED CMAKE_UBIFS_EXTROOT)
|
|
- TARGET_LINK_LIBRARIES(block blkid-tiny dl uci ubox ubus blobmsg_json ${json})
|
|
+ TARGET_LINK_LIBRARIES(block fstools blkid-tiny dl uci ubox ubus blobmsg_json ${json})
|
|
ENDIF(DEFINED CMAKE_UBIFS_EXTROOT)
|
|
INSTALL(TARGETS block RUNTIME DESTINATION sbin)
|
|
|
|
--- a/block.c
|
|
+++ b/block.c
|
|
@@ -44,6 +44,8 @@
|
|
#include <libubox/vlist.h>
|
|
#include <libubus.h>
|
|
|
|
+#include "libfstools/fstype.h"
|
|
+#include "libfstools/volume.h"
|
|
#include "probe.h"
|
|
|
|
#define AUTOFS_MOUNT_PATH "/tmp/run/blockd/"
|
|
@@ -1696,6 +1698,44 @@ static int main_extroot(int argc, char *
|
|
}
|
|
#endif
|
|
|
|
+ /* Find volume using libfstools */
|
|
+ struct volume *data = volume_find("rootfs_data");
|
|
+ if (data) {
|
|
+ volume_init(data);
|
|
+
|
|
+ switch (volume_identify(data)) {
|
|
+ case FS_EXT4: {
|
|
+ char cfg[] = "/tmp/ext4_cfg";
|
|
+
|
|
+ /* Mount volume and try extroot (using fstab from that vol) */
|
|
+ mkdir_p(cfg, 0755);
|
|
+ if (!mount(data->blk, cfg, "ext4", MS_NOATIME, NULL)) {
|
|
+ err = mount_extroot(cfg);
|
|
+ umount2(cfg, MNT_DETACH);
|
|
+ }
|
|
+ if (err < 0)
|
|
+ rmdir("/tmp/overlay");
|
|
+ rmdir(cfg);
|
|
+ return err;
|
|
+ }
|
|
+
|
|
+ case FS_F2FS: {
|
|
+ char cfg[] = "/tmp/f2fs_cfg";
|
|
+
|
|
+ /* Mount volume and try extroot (using fstab from that vol) */
|
|
+ mkdir_p(cfg, 0755);
|
|
+ if (!mount(data->blk, cfg, "f2fs", MS_NOATIME, NULL)) {
|
|
+ err = mount_extroot(cfg);
|
|
+ umount2(cfg, MNT_DETACH);
|
|
+ }
|
|
+ if (err < 0)
|
|
+ rmdir("/tmp/overlay");
|
|
+ rmdir(cfg);
|
|
+ return err;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
/* As a last resort look for /etc/config/fstab on "rootfs" partition */
|
|
return mount_extroot(NULL);
|
|
}
|
|
--- /dev/null
|
|
+++ b/libfstools/fstype.h
|
|
@@ -0,0 +1,13 @@
|
|
+#ifndef _FS_TYPE_H__
|
|
+#define _FS_TYPE_H__
|
|
+enum {
|
|
+ FS_NONE,
|
|
+ FS_SNAPSHOT,
|
|
+ FS_JFFS2,
|
|
+ FS_DEADCODE,
|
|
+ FS_UBIFS,
|
|
+ FS_F2FS,
|
|
+ FS_EXT4,
|
|
+ FS_TARGZ,
|
|
+};
|
|
+#endif
|
|
\ No newline at end of file
|
|
--- a/libfstools/libfstools.h
|
|
+++ b/libfstools/libfstools.h
|
|
@@ -18,20 +18,10 @@
|
|
#include <libubox/blob.h>
|
|
#include <libubox/ulog.h>
|
|
#include <libubox/utils.h>
|
|
+#include "fstype.h"
|
|
|
|
struct volume;
|
|
|
|
-enum {
|
|
- FS_NONE,
|
|
- FS_SNAPSHOT,
|
|
- FS_JFFS2,
|
|
- FS_DEADCODE,
|
|
- FS_UBIFS,
|
|
- FS_F2FS,
|
|
- FS_EXT4,
|
|
- FS_TARGZ,
|
|
-};
|
|
-
|
|
enum fs_state {
|
|
FS_STATE_UNKNOWN,
|
|
FS_STATE_PENDING,
|