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 02c4f9855e21eaa670f633ff2107ab9f9039e766 Author: wangjianyu3 <[email protected]> AuthorDate: Thu Aug 27 18:45:58 2026 +0800 boards/arm/qemu-armv7a: switch all nsh defconfigs to nxinit entrypoint Switch every qemu-armv7a defconfig whose init entry point was nsh_main (6 configs: full, gdbstub, nsh, rpproxy, rpserver, smp) to nxinit (init_main). nsh now runs as a "console sh" service started by init.rc instead of being the top-level init task. Each switched defconfig only gains the nxinit-essential keys (minimal delta): - CONFIG_INIT_ENTRYPOINT="init_main" - CONFIG_SYSTEM_NXINIT=y plus its Kconfig deps not already set: CONFIG_EXPERIMENTAL, CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_CHILD_STATUS (depends on CONFIG_SCHED_HAVE_PARENT) - CONFIG_ETC_ROMFS=y / CONFIG_FS_ROMFS=y to ship init.rc via ROMFS No stack-size overrides: INIT_STACKSIZE/SYSTEM_NSH_STACKSIZE keep their Kconfig defaults. Add boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc, shipped via ROMFS in the Make build (RCSRCS) and CMake (nuttx_add_romfs()), gated on CONFIG_ETC_ROMFS && CONFIG_SYSTEM_NXINIT. Testing: qemu-armv7a:nsh (and smp with -smp 4) boot into nxinit with nsh spawned as its service (init task = init_main, sh = its child), confirmed via qemu-system-arm in an earlier run of this series. Note: current apache/master fails to build qemu-armv7a locally this round (missing arm_timer.h) independent of this change. Assisted-by: opencode-agent/claude-opus-4-8 Signed-off-by: wangjianyu3 <[email protected]> --- boards/arm/qemu/qemu-armv7a/configs/full/defconfig | 6 +++- .../arm/qemu/qemu-armv7a/configs/gdbstub/defconfig | 6 +++- boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig | 7 ++++- .../arm/qemu/qemu-armv7a/configs/rpproxy/defconfig | 6 +++- .../qemu/qemu-armv7a/configs/rpserver/defconfig | 6 +++- boards/arm/qemu/qemu-armv7a/configs/smp/defconfig | 6 +++- boards/arm/qemu/qemu-armv7a/src/.gitignore | 1 + boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt | 14 +++++++++ boards/arm/qemu/qemu-armv7a/src/Makefile | 6 ++++ boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc | 33 ++++++++++++++++++++++ 10 files changed, 85 insertions(+), 6 deletions(-) diff --git a/boards/arm/qemu/qemu-armv7a/configs/full/defconfig b/boards/arm/qemu/qemu-armv7a/configs/full/defconfig index 72e72c33c47..2a8ee49e017 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/full/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/full/defconfig @@ -46,6 +46,7 @@ CONFIG_DRIVERS_VIDEO=y CONFIG_DRIVERS_VIRTIO_GPU=y CONFIG_DRIVERS_VIRTIO_INPUT=y CONFIG_DRIVERS_VIRTIO_MMIO=y +CONFIG_ETC_ROMFS=y CONFIG_EVENT_FD=y CONFIG_EXAMPLES_FB=y CONFIG_EXAMPLES_HELLO=y @@ -65,7 +66,7 @@ CONFIG_GRAPHICS_INPUT_TOOL=y CONFIG_GRAPHICS_LVGL=y CONFIG_HAVE_CXX=y CONFIG_IDLETHREAD_STACKSIZE=4096 -CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_ENTRYPOINT="init_main" CONFIG_INPUT_MOUSE_WHEEL=y CONFIG_INTELHEX_BINARY=y CONFIG_INTERPRETERS_LUA=y @@ -109,6 +110,8 @@ CONFIG_RAM_VSTART=0x40200000 CONFIG_RAW_BINARY=y CONFIG_READLINE_CMD_HISTORY=y CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_CHILD_STATUS=y +CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORKPRIORITY=192 CONFIG_SCHED_INSTRUMENTATION=y CONFIG_SCHED_INSTRUMENTATION_DUMP=y @@ -130,6 +133,7 @@ CONFIG_SYSTEM_NOTE=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NXCAMERA=y CONFIG_SYSTEM_NXCODEC=y +CONFIG_SYSTEM_NXINIT=y CONFIG_SYSTEM_VI=y CONFIG_SYSTEM_YMODEM=y CONFIG_SYSTEM_ZMODEM=y diff --git a/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig b/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig index 197c37571e3..182f7756e6e 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig @@ -26,6 +26,7 @@ CONFIG_DEBUG_SCHED_INFO=y CONFIG_DEBUG_SCHED_WARN=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y CONFIG_EXPERIMENTAL=y CONFIG_FLASH_SIZE=127926272 @@ -36,7 +37,7 @@ CONFIG_FS_ROMFS=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_IDLETHREAD_STACKSIZE=4096 -CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_ENTRYPOINT="init_main" CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_EXECFUNCS=y CONFIG_LIB_GDBSTUB=y @@ -51,6 +52,8 @@ CONFIG_RAM_VSTART=0x40200000 CONFIG_RAW_BINARY=y CONFIG_READLINE_CMD_HISTORY=y CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_CHILD_STATUS=y +CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y CONFIG_SCHED_HPWORKPRIORITY=192 CONFIG_SERIAL_GDBSTUB=y @@ -61,6 +64,7 @@ CONFIG_START_MONTH=4 CONFIG_START_YEAR=2023 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NXINIT=y CONFIG_SYSTEM_SYSTEM=y CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y diff --git a/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig b/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig index 425d4c9ca3d..b78ab69a5b4 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig @@ -26,6 +26,7 @@ CONFIG_DEBUG_FEATURES=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y CONFIG_EXPERIMENTAL=y CONFIG_FLASH_SIZE=1048576 @@ -33,11 +34,13 @@ CONFIG_FLASH_START=0 CONFIG_FLASH_VSTART=0 CONFIG_FS_HOSTFS=y CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y CONFIG_FS_TMPFS=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_IDLETHREAD_STACKSIZE=4096 -CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_ENTRYPOINT="init_main" +CONFIG_LIBC_EXECFUNCS=y CONFIG_MODULE=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 @@ -52,6 +55,7 @@ CONFIG_RAM_VSTART=0x40000000 CONFIG_RAW_BINARY=y CONFIG_READLINE_CMD_HISTORY=y CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_CHILD_STATUS=y CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y CONFIG_SCHED_HPWORKPRIORITY=192 @@ -62,6 +66,7 @@ CONFIG_START_YEAR=2023 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_GPROF=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NXINIT=y CONFIG_SYSTEM_SYSTEM=y CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y diff --git a/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig b/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig index f387ad8f73d..7faf9899e9e 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig @@ -46,6 +46,7 @@ CONFIG_DRIVERS_VHOST_RNG=y CONFIG_DRIVERS_VHOST_RPMSG=y CONFIG_DRIVERS_VIRTIO_MMIO=y CONFIG_DRIVERS_VIRTIO_SERIAL=y +CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y CONFIG_EXAMPLES_RPMSGSOCKET=y CONFIG_EXPERIMENTAL=y @@ -63,9 +64,10 @@ CONFIG_FS_ROMFS=y CONFIG_FS_RPMSGFS=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_LIBC_EXECFUNCS=y CONFIG_LIBC_HOSTNAME="proxy" CONFIG_LIBC_LOCALE=y CONFIG_LIBC_LOCALTIME=y @@ -94,6 +96,7 @@ CONFIG_RPTUN=y CONFIG_RPTUN_IVSHMEM=y CONFIG_RPTUN_IVSHMEM_NAME="0:server:s" CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_CHILD_STATUS=y CONFIG_SCHED_EVENTS=y CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y @@ -123,6 +126,7 @@ CONFIG_SYSLOG_TIMESTAMP=y CONFIG_SYSTEM_CUTERM=y CONFIG_SYSTEM_DUMPSTACK=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NXINIT=y CONFIG_UART1_BASE=0x9000000 CONFIG_UART1_IRQ=33 CONFIG_UART1_PL011=y diff --git a/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig b/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig index 91551876a52..f788b364a78 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig @@ -48,6 +48,7 @@ CONFIG_DRIVERS_VIRTIO_MMIO=y CONFIG_DRIVERS_VIRTIO_RNG=y CONFIG_DRIVERS_VIRTIO_RPMSG=y CONFIG_DRIVERS_VIRTIO_SERIAL=y +CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y CONFIG_EXAMPLES_RPMSGSOCKET=y CONFIG_EXPERIMENTAL=y @@ -65,9 +66,10 @@ CONFIG_FS_RPMSGFS=y CONFIG_FS_RPMSGFS_SERVER=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_LIBC_EXECFUNCS=y CONFIG_LIBC_HOSTNAME="server" CONFIG_LIBC_LOCALE=y CONFIG_LIBC_LOCALTIME=y @@ -94,6 +96,7 @@ CONFIG_RPTUN=y CONFIG_RPTUN_IVSHMEM=y CONFIG_RPTUN_IVSHMEM_NAME="0:proxy:m" CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_CHILD_STATUS=y CONFIG_SCHED_EVENTS=y CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y @@ -123,6 +126,7 @@ CONFIG_SYSTEM_CUTERM=y CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyproxy" CONFIG_SYSTEM_DUMPSTACK=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NXINIT=y CONFIG_TTY_LAUNCH=y CONFIG_TTY_LAUNCH_STACKSIZE=2048 CONFIG_TTY_SIGINT=y diff --git a/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig b/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig index e361061edaa..b7231060c48 100644 --- a/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig +++ b/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig @@ -22,6 +22,7 @@ CONFIG_DEBUG_FEATURES=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y CONFIG_EXPERIMENTAL=y CONFIG_FLASH_SIZE=127926272 @@ -32,7 +33,7 @@ CONFIG_FS_ROMFS=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_IDLETHREAD_STACKSIZE=4096 -CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_ENTRYPOINT="init_main" CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_EXECFUNCS=y CONFIG_MM_KASAN=y @@ -48,6 +49,8 @@ CONFIG_RAM_VSTART=0x40200000 CONFIG_RAW_BINARY=y CONFIG_READLINE_CMD_HISTORY=y CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_CHILD_STATUS=y +CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y CONFIG_SCHED_HPWORKPRIORITY=192 CONFIG_SMP=y @@ -57,6 +60,7 @@ CONFIG_START_MONTH=4 CONFIG_START_YEAR=2023 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NXINIT=y CONFIG_SYSTEM_SYSTEM=y CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_KASAN=y diff --git a/boards/arm/qemu/qemu-armv7a/src/.gitignore b/boards/arm/qemu/qemu-armv7a/src/.gitignore new file mode 100644 index 00000000000..1baf09ba3ae --- /dev/null +++ b/boards/arm/qemu/qemu-armv7a/src/.gitignore @@ -0,0 +1 @@ +/etctmp* diff --git a/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt b/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt index dbf972c8e15..250449d0bad 100644 --- a/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt +++ b/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt @@ -27,3 +27,17 @@ if(CONFIG_LIBC_FDT) endif() target_sources(board PRIVATE ${SRCS}) + +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/arm/qemu/qemu-armv7a/src/Makefile b/boards/arm/qemu/qemu-armv7a/src/Makefile index d4e6c4e3595..bd26e1ea133 100644 --- a/boards/arm/qemu/qemu-armv7a/src/Makefile +++ b/boards/arm/qemu/qemu-armv7a/src/Makefile @@ -24,6 +24,12 @@ include $(TOPDIR)/Make.defs CSRCS = qemu_boardinit.c qemu_bringup.c +ifeq ($(CONFIG_ETC_ROMFS),y) +ifeq ($(CONFIG_SYSTEM_NXINIT),y) + RCSRCS += etc/init.d/init.rc +endif +endif + ifeq ($(CONFIG_LIBC_FDT),y) CFLAGS += ${INCDIR_PREFIX}$(TOPDIR)$(DELIM)libs$(DELIM)libc$(DELIM)fdt$(DELIM)dtc$(DELIM)libfdt endif diff --git a/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc b/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc new file mode 100644 index 00000000000..acfc572ae25 --- /dev/null +++ b/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc @@ -0,0 +1,33 @@ +/**************************************************************************** + * boards/arm/qemu/qemu-armv7a/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
