This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 9bca43a07b9d6e6fd2018c2c0483e9236164f41e
Author: wangjianyu3 <[email protected]>
AuthorDate: Sat Sep 5 12:00:11 2026 +0800

    boards/risc-v/qemu-rv: switch rv-virt flat nsh defconfigs to nxinit 
entrypoint
    
    Switch every rv-virt (qemu-rv) flat-build defconfig whose init entry
    point was nsh_main to nxinit (init_main): citest, citest64, fb, fb64,
    flats, flats64, leds, leds64, leds64_rust, leds64_zig, libcxx,
    libcxx64, lvgl64_vector, netnsh, netnsh64, netnsh64_smp, netnsh_smp,
    nsh, nsh64, python, smp, smp64, virt_nsh (23 configs; pnsh/pnsh64 are
    switched in the following commit). nsh now runs as a "console sh"
    service started by init.rc instead of being the top-level init task,
    matching boards/arm/qemu-armv7a, boards/arm64/qemu-armv8a and
    boards/sim. elf (elf_main) and the 11 kernel-build configs (which use
    CONFIG_INIT_FILEPATH) are out of scope and untouched.
    
    Each switched defconfig gains only the nxinit-essential keys
    (regenerated with make savedefconfig): CONFIG_INIT_ENTRYPOINT="init_main",
    CONFIG_SYSTEM_NXINIT=y and its deps (CONFIG_EXPERIMENTAL,
    CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_CHILD_STATUS), and
    CONFIG_ETC_ROMFS=y/CONFIG_FS_ROMFS=y to ship init.rc via ROMFS.
    
    Add boards/risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc registering a
    "console sh" service (guarded by CONFIG_SYSTEM_NSH), shipped via ROMFS
    in both the Make (RCSRCS, only when CONFIG_ETC_ROMFS && 
CONFIG_SYSTEM_NXINIT)
    and CMake (nuttx_add_romfs()) builds, matching qemu-armv7a/qemu-armv8a.
    rc.sysinit and rcS are left in place: on rv-virt both are empty
    license-only shells still referenced unconditionally by boards/Board.mk
    for the kernel-build and pnsh/pnsh64 configs.
    
    CONFIG_FS_BINFS=y is added with a binfs mount at CONFIG_PATH_INITIAL
    (pre-existing "/system/bin") in
    qemu_rv_boardinit.c:board_late_initialize() (gated on CONFIG_FS_BINFS,
    so the block and the CONFIG_PATH_INITIAL reference compile out when
    binfs is not selected).
    Rationale: nxinit resolves the "sh" service via posix_spawnp() ->
    exec_spawn() -> load_module(); with CONFIG_LIBC_ENVPATH that walks $PATH
    via envpath_next() and stat()s each "$dir/sh" candidate, so it never
    reaches the builtin binfmt loader unless a real directory entry exists.
    CONFIG_PATH_INITIAL is left at its pre-existing "/system/bin"; mounting
    binfs there (rather than repointing PATH) makes "sh" resolvable while
    keeping the defconfig delta minimal. This never surfaced under nsh_main,
    which runs nsh_consolemain() inline without spawning by relative path.
    Equivalent to the binfs mount already present in boards/sim's
    sim_bringup.c (which mounts at /bin, its own PATH_INITIAL).
    
    smp and smp64 additionally re-enable binfmt: their CONFIG_DEFAULT_SMALL=y
    default pulls in CONFIG_BINFMT_DISABLE=y, which blocks
    CONFIG_LIBC_EXECFUNCS (thus CONFIG_SYSTEM_NXINIT) and would otherwise
    fail to link with "undefined reference to init_main". Same fix
    boards/sim used for its affected configs.
    
    citest/citest64 also carry their pre-existing explicit
    CONFIG_INIT_STACKSIZE value (3072/4096) over to
    CONFIG_SYSTEM_NSH_STACKSIZE: under nxinit "sh" is a separate spawned
    child sized by SYSTEM_NSH_STACKSIZE, which otherwise dropped to the
    2048 default and overflowed (citest64 crashed running `ps`). Every
    other switched config that had an INIT_STACKSIZE override already had a
    matching SYSTEM_NSH_STACKSIZE one.
    
    All 23 switched configs were booted (not just compiled) and show
    init_main as the parent with sh as its Running child in `ps` (see the
    PR description for logs).
    
    Assisted-by: opencode-agent/claude-sonnet-5
    Signed-off-by: wangjianyu3 <[email protected]>
---
 .../qemu-rv/rv-virt/configs/citest/defconfig       |  6 +++-
 .../qemu-rv/rv-virt/configs/citest64/defconfig     | 10 ++++++-
 boards/risc-v/qemu-rv/rv-virt/configs/fb/defconfig |  8 +++++-
 .../risc-v/qemu-rv/rv-virt/configs/fb64/defconfig  |  8 +++++-
 .../risc-v/qemu-rv/rv-virt/configs/flats/defconfig |  9 +++++-
 .../qemu-rv/rv-virt/configs/flats64/defconfig      |  9 +++++-
 .../risc-v/qemu-rv/rv-virt/configs/leds/defconfig  |  9 +++++-
 .../qemu-rv/rv-virt/configs/leds64/defconfig       |  9 +++++-
 .../qemu-rv/rv-virt/configs/leds64_rust/defconfig  |  9 +++++-
 .../qemu-rv/rv-virt/configs/leds64_zig/defconfig   |  9 +++++-
 .../qemu-rv/rv-virt/configs/libcxx/defconfig       |  9 +++++-
 .../qemu-rv/rv-virt/configs/libcxx64/defconfig     |  9 +++++-
 .../rv-virt/configs/lvgl64_vector/defconfig        |  8 +++++-
 .../qemu-rv/rv-virt/configs/netnsh/defconfig       |  8 +++++-
 .../qemu-rv/rv-virt/configs/netnsh64/defconfig     |  8 +++++-
 .../qemu-rv/rv-virt/configs/netnsh64_smp/defconfig |  8 +++++-
 .../qemu-rv/rv-virt/configs/netnsh_smp/defconfig   |  8 +++++-
 .../risc-v/qemu-rv/rv-virt/configs/nsh/defconfig   |  9 +++++-
 .../risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig |  9 +++++-
 .../qemu-rv/rv-virt/configs/python/defconfig       |  6 +++-
 .../risc-v/qemu-rv/rv-virt/configs/smp/defconfig   | 10 ++++++-
 .../risc-v/qemu-rv/rv-virt/configs/smp64/defconfig | 10 ++++++-
 .../qemu-rv/rv-virt/configs/virt_nsh/defconfig     |  9 +++++-
 boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt   | 14 +++++++++
 boards/risc-v/qemu-rv/rv-virt/src/Makefile         |  6 ++++
 .../risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc  | 33 ++++++++++++++++++++++
 .../risc-v/qemu-rv/rv-virt/src/qemu_rv_boardinit.c |  6 ++++
 27 files changed, 233 insertions(+), 23 deletions(-)

diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
index d9ccaeaee41..ed3468054af 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
@@ -56,8 +56,10 @@ CONFIG_EXAMPLES_PIPE=y
 CONFIG_EXAMPLES_POPEN=y
 CONFIG_EXAMPLES_ROMFS=y
 CONFIG_EXAMPLES_USRSOCKTEST=y
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LFN=y
 CONFIG_FS_AIO=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_LINKS=y
@@ -68,7 +70,7 @@ CONFIG_FS_SHMFS=y
 CONFIG_FS_TMPFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_NBUFFERS=128
@@ -120,6 +122,8 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_POPEN=y
 CONFIG_SYSTEM_SETLOGMASK=y
 CONFIG_TESTING_CMOCKA=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
index 4408b55cc3d..090c3840b3f 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
@@ -33,19 +33,23 @@ CONFIG_BUILTIN=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_HELLOXX=y
 CONFIG_EXAMPLES_PIPE=y
 CONFIG_EXAMPLES_POPEN=y
 CONFIG_EXAMPLES_USRSOCKTEST=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_LINKS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_FS_TMPFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_HRTIMER=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=4096
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LIBC_ENVPATH=y
@@ -68,6 +72,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
@@ -76,6 +82,8 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NSH_STACKSIZE=4096
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_POPEN=y
 CONFIG_SYSTEM_POPEN_STACKSIZE=3072
 CONFIG_SYSTEM_SETLOGMASK=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/fb/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/fb/defconfig
index 9f25404c0b4..e45e3435630 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/fb/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/fb/defconfig
@@ -37,17 +37,21 @@ CONFIG_DRIVERS_VIRTIO_GPU=y
 CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_FB=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_LARGEFILE=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1530
@@ -72,6 +76,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -85,6 +90,7 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_VIDEO_FB=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/fb64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/fb64/defconfig
index 233f14990b2..dbd2eca10b7 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/fb64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/fb64/defconfig
@@ -37,17 +37,21 @@ CONFIG_DRIVERS_VIRTIO_GPU=y
 CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_FB=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_LARGEFILE=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1534
@@ -72,6 +76,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -85,6 +90,7 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_VIDEO_FB=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/flats/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/flats/defconfig
index e8538abc8d1..7fc8b3e0107 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/flats/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/flats/defconfig
@@ -34,11 +34,15 @@ CONFIG_DEBUG_FEATURES=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_PERROR_STDOUT=y
@@ -54,6 +58,8 @@ CONFIG_RAM_START=0x80200000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -61,6 +67,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/flats64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/flats64/defconfig
index c97cf4221e5..d3572d1c651 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/flats64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/flats64/defconfig
@@ -36,11 +36,15 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEVICE_TREE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
@@ -57,6 +61,8 @@ CONFIG_RAM_START=0x80200000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -65,6 +71,7 @@ CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/leds/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/leds/defconfig
index fce3860e062..63e0ce7c691 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/leds/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/leds/defconfig
@@ -33,12 +33,16 @@ CONFIG_DEBUG_FEATURES=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_LEDS=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_PERROR_STDOUT=y
@@ -54,6 +58,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -61,6 +67,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/leds64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/leds64/defconfig
index aaf7d79af25..df1d34dbea5 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/leds64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/leds64/defconfig
@@ -35,12 +35,16 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEVICE_TREE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_LEDS=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
@@ -57,6 +61,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -65,6 +71,7 @@ CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/leds64_rust/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/leds64_rust/defconfig
index 93fa2225770..1e40df371d2 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/leds64_rust/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/leds64_rust/defconfig
@@ -35,13 +35,17 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEVICE_TREE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_LEDS=y
 CONFIG_EXAMPLES_LEDS_RUST=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
@@ -58,6 +62,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -66,6 +72,7 @@ CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/leds64_zig/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/leds64_zig/defconfig
index 729ebbbd0b1..853876db368 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/leds64_zig/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/leds64_zig/defconfig
@@ -35,13 +35,17 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEVICE_TREE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_LEDS=y
 CONFIG_EXAMPLES_LEDS_ZIG=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
@@ -58,6 +62,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -66,6 +72,7 @@ CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/libcxx/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/libcxx/defconfig
index 69ea5bd6524..6a63ccd15fe 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/libcxx/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/libcxx/defconfig
@@ -33,12 +33,16 @@ CONFIG_CXX_WCHAR=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LIBCXX=y
 CONFIG_LIBC_ENVPATH=y
@@ -57,6 +61,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -64,6 +70,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_CXXTEST=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TLS_NELEM=4
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/libcxx64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/libcxx64/defconfig
index 23b030c1404..06202bb3d37 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/libcxx64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/libcxx64/defconfig
@@ -33,12 +33,16 @@ CONFIG_CXX_WCHAR=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LIBCXX=y
 CONFIG_LIBC_ENVPATH=y
@@ -57,6 +61,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -64,6 +70,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_CXXTEST=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TLS_NELEM=4
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/lvgl64_vector/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/lvgl64_vector/defconfig
index 1894388391a..c3b3cd17154 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/lvgl64_vector/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/lvgl64_vector/defconfig
@@ -38,20 +38,24 @@ CONFIG_DRIVERS_VIRTIO_GPU=y
 CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_FB=y
 CONFIG_EXAMPLES_HELLO=m
 CONFIG_EXAMPLES_LVGLDEMO=y
 CONFIG_EXAMPLES_LVGLDEMO_STACKSIZE=32768
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_LARGEFILE=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_GRAPHICS_LVGL=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=4096
 CONFIG_INPUT=y
 CONFIG_INTELHEX_BINARY=y
@@ -86,6 +90,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -99,6 +104,7 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_VIDEO_FB=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh/defconfig
index 3b4246a00fe..9c9fa6b957e 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh/defconfig
@@ -42,15 +42,19 @@ CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SOUND=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1530
@@ -96,6 +100,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -110,6 +115,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_DHCPC_RENEW=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_NXPLAYER=y
 CONFIG_SYSTEM_NXRECORDER=y
 CONFIG_SYSTEM_PING=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64/defconfig
index bb33afcb1a3..02f7455d695 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64/defconfig
@@ -42,15 +42,19 @@ CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SOUND=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1534
@@ -97,6 +101,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -111,6 +116,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_DHCPC_RENEW=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_NXPLAYER=y
 CONFIG_SYSTEM_NXRECORDER=y
 CONFIG_SYSTEM_PING=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64_smp/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64_smp/defconfig
index e553a5df7f8..7e4421de3ec 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64_smp/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh64_smp/defconfig
@@ -42,15 +42,19 @@ CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SOUND=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1534
@@ -98,6 +102,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -113,6 +118,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_DHCPC_RENEW=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_NXPLAYER=y
 CONFIG_SYSTEM_NXRECORDER=y
 CONFIG_SYSTEM_PING=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh_smp/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh_smp/defconfig
index bfc085dd90b..2bb95fa3a0e 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/netnsh_smp/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/netnsh_smp/defconfig
@@ -42,15 +42,19 @@ CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SOUND=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=m
+CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
 CONFIG_IOB_BUFSIZE=1530
@@ -97,6 +101,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -112,6 +117,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_DHCPC_RENEW=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_NXPLAYER=y
 CONFIG_SYSTEM_NXRECORDER=y
 CONFIG_SYSTEM_PING=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
index 546dc6fa3ec..e89ddf2176b 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
@@ -33,11 +33,15 @@ CONFIG_DEBUG_FEATURES=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_PERROR_STDOUT=y
@@ -53,6 +57,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -60,6 +66,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
index cf9364106be..13c91d5046b 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
@@ -35,11 +35,15 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEVICE_TREE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
@@ -56,6 +60,8 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
@@ -64,6 +70,7 @@ CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/python/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/python/defconfig
index 3040231a60f..8b2c06670ed 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/python/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/python/defconfig
@@ -46,6 +46,7 @@ CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SOUND=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EVENT_FD=y
 CONFIG_EXAMPLES_HELLO=m
 CONFIG_EXAMPLES_LEDS=y
@@ -53,6 +54,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_FAT_LCNAMES=y
 CONFIG_FAT_LFN=y
 CONFIG_FRAME_POINTER=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FATTIME=y
 CONFIG_FS_HOSTFS=y
@@ -61,7 +63,7 @@ CONFIG_FS_PROCFS=y
 CONFIG_FS_ROMFS=y
 CONFIG_FS_TMPFS=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=4096
 CONFIG_INTELHEX_BINARY=y
 CONFIG_INTERPRETERS_CPYTHON=y
@@ -118,6 +120,7 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_LPWORK=y
@@ -132,6 +135,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_DHCPC_RENEW=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_NXPLAYER=y
 CONFIG_SYSTEM_NXRECORDER=y
 CONFIG_SYSTEM_PING=y
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/smp/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/smp/defconfig
index 73534db452c..297eab5d402 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/smp/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/smp/defconfig
@@ -5,6 +5,7 @@
 # You can then do "make savedefconfig" to generate a new defconfig file that 
includes your
 # modifications.
 #
+# CONFIG_BINFMT_DISABLE is not set
 # CONFIG_DISABLE_OS_API is not set
 # CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
 # CONFIG_FS_PROCFS_EXCLUDE_BLOCKS is not set
@@ -52,11 +53,15 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEFAULT_SMALL=y
 CONFIG_DEV_ZERO=y
+CONFIG_ETC_ROMFS=y
+CONFIG_EXPERIMENTAL=y
 CONFIG_FILE_STREAM=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_FLOATINGPOINT=y
 CONFIG_LIBC_PERROR_STDOUT=y
 CONFIG_LIBC_STRERROR=y
@@ -67,6 +72,8 @@ CONFIG_NSH_FILEIOSIZE=64
 CONFIG_RAM_SIZE=33554432
 CONFIG_RAM_START=0x80000000
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_SMP=y
@@ -75,6 +82,7 @@ CONFIG_STACK_COLORATION=y
 CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_SMP=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/smp64/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/smp64/defconfig
index a199b282b21..75cd1d30f4b 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/smp64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/smp64/defconfig
@@ -5,6 +5,7 @@
 # You can then do "make savedefconfig" to generate a new defconfig file that 
includes your
 # modifications.
 #
+# CONFIG_BINFMT_DISABLE is not set
 # CONFIG_DISABLE_OS_API is not set
 # CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
 # CONFIG_FS_PROCFS_EXCLUDE_BLOCKS is not set
@@ -53,12 +54,16 @@ CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEFAULT_SMALL=y
 CONFIG_DEV_ZERO=y
+CONFIG_ETC_ROMFS=y
+CONFIG_EXPERIMENTAL=y
 CONFIG_FILE_STREAM=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_FLOATINGPOINT=y
 CONFIG_LIBC_PERROR_STDOUT=y
 CONFIG_LIBC_STRERROR=y
@@ -69,6 +74,8 @@ CONFIG_NSH_FILEIOSIZE=64
 CONFIG_RAM_SIZE=33554432
 CONFIG_RAM_START=0x80000000
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_SMP=y
@@ -78,6 +85,7 @@ CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_SMP=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/virt_nsh/defconfig 
b/boards/risc-v/qemu-rv/rv-virt/configs/virt_nsh/defconfig
index 3b8f77a9bfc..2b51094b59f 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/virt_nsh/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/virt_nsh/defconfig
@@ -32,11 +32,15 @@ CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
 CONFIG_DRIVERS_VIRTIO_SERIAL_CONSOLE=y
 CONFIG_ELF=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_BINFS=y
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_LIBC_ENVPATH=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_PERROR_STDOUT=y
@@ -52,12 +56,15 @@ CONFIG_RAM_START=0x80000000
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_STACK_COLORATION=y
 CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt 
b/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt
index 810656072b9..ea3c97f1721 100644
--- a/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt
+++ b/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt
@@ -45,3 +45,17 @@ if(CONFIG_ARCH_CHIP_QEMU_RV)
 endif()
 
 set_property(GLOBAL PROPERTY LD_SCRIPT "${NUTTX_BOARD_DIR}/scripts/${LDFILE}")
+
+if(CONFIG_ETC_ROMFS AND CONFIG_SYSTEM_NXINIT)
+  nuttx_add_romfs(
+    NAME
+    etc
+    MOUNTPOINT
+    etc
+    RCSRCS
+    etc/init.d/init.rc
+    PATH
+    ${CMAKE_CURRENT_BINARY_DIR}/etc)
+
+  target_link_libraries(board PRIVATE romfs_etc)
+endif()
diff --git a/boards/risc-v/qemu-rv/rv-virt/src/Makefile 
b/boards/risc-v/qemu-rv/rv-virt/src/Makefile
index bf19bc2c40b..76cbaeeca06 100644
--- a/boards/risc-v/qemu-rv/rv-virt/src/Makefile
+++ b/boards/risc-v/qemu-rv/rv-virt/src/Makefile
@@ -24,6 +24,12 @@ include $(TOPDIR)/Make.defs
 
 RCSRCS = etc/init.d/rc.sysinit etc/init.d/rcS
 
+ifeq ($(CONFIG_ETC_ROMFS),y)
+ifeq ($(CONFIG_SYSTEM_NXINIT),y)
+  RCSRCS += etc/init.d/init.rc
+endif
+endif
+
 CSRCS = qemu_rv_boardinit.c
 
 ifeq ($(CONFIG_BUILD_KERNEL),y)
diff --git a/boards/risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc 
b/boards/risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc
new file mode 100644
index 00000000000..06c6131ef6a
--- /dev/null
+++ b/boards/risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc
@@ -0,0 +1,33 @@
+/****************************************************************************
+ * boards/risc-v/qemu-rv/rv-virt/src/etc/init.d/init.rc
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#ifdef CONFIG_SYSTEM_NSH
+service console sh
+   restart_period 1000
+#endif
+
+on init
+#ifdef CONFIG_SYSTEM_NSH
+   start console
+#endif
diff --git a/boards/risc-v/qemu-rv/rv-virt/src/qemu_rv_boardinit.c 
b/boards/risc-v/qemu-rv/rv-virt/src/qemu_rv_boardinit.c
index 584bd74ec39..7a6f4c056c4 100644
--- a/boards/risc-v/qemu-rv/rv-virt/src/qemu_rv_boardinit.c
+++ b/boards/risc-v/qemu-rv/rv-virt/src/qemu_rv_boardinit.c
@@ -121,6 +121,7 @@ void board_late_initialize(void)
   if (NSECTORS(romfs_img_len) > 1)
     {
       int ret = OK;
+
       ret = romdisk_register(0, romfs_img, NSECTORS(romfs_img_len),
         SECTORSIZE);
       if (ret < 0)
@@ -138,6 +139,10 @@ void board_late_initialize(void)
   mount(NULL, CONFIG_LIBC_TMPDIR, "tmpfs", 0, NULL);
 #endif
 
+#ifdef CONFIG_FS_BINFS
+  mount(NULL, CONFIG_PATH_INITIAL, "binfs", 0, NULL);
+#endif
+
 #ifdef CONFIG_DRIVERS_VIRTIO_MMIO
 #ifndef CONFIG_BOARD_EARLY_INITIALIZE
   qemu_virtio_register_mmio_devices();
@@ -152,6 +157,7 @@ void board_late_initialize(void)
   /* Register the LED driver */
 
   int ret = userled_lower_initialize("/dev/userleds");
+
   if (ret < 0)
     {
       syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n", ret);

Reply via email to