sim/nsh: dynamic rcS/rcRAW generation support

1. RCSRCS: Remove the fixed array definition and preprocessing
   dynamic configuration makes the RC script more flexible.

2. RCRAWS: Add preinstalled file support.

Change-Id: Id7c1640962b12101fb85013bc2cfbd60ee08cd2f
Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
chao.an 2020-04-15 17:53:35 +08:00 committed by patacongo
parent c0c24d29df
commit 0668a1552d
9 changed files with 70 additions and 121 deletions

View File

@ -1,2 +0,0 @@
/etc
/romfs_img

View File

@ -1,89 +1,25 @@
const unsigned char romfs_img[] = { /****************************************************************************
0x2d, 0x72, 0x6f, 0x6d, 0x31, 0x66, 0x73, 0x2d, 0x00, 0x00, 0x01, 0xe0, * boards/sim/sim/sim/include/nsh_romfsimg.h
0xbf, 0xed, 0xd6, 0xc0, 0x53, 0x69, 0x6d, 0x45, 0x74, 0x63, 0x56, 0x6f, *
0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, * Licensed to the Apache Software Foundation (ASF) under one or more
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xff, 0xff, 0x97, * contributor license agreements. See the NOTICE file distributed with
0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * this work for additional information regarding copyright ownership. The
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, * ASF licenses this file to you under the Apache License, Version 2.0 (the
0x00, 0x00, 0x00, 0x00, 0xd1, 0xd1, 0xff, 0x80, 0x2e, 0x2e, 0x00, 0x00, * "License"); you may not use this file except in compliance with the
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * License. You may obtain a copy of the License at
0x00, 0x00, 0x01, 0x59, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, *
0x68, 0x2d, 0x94, 0xb3, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x64, 0x00, 0x00, * http://www.apache.org/licenses/LICENSE-2.0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, *
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xd1, 0xff, 0x40, * Unless required by applicable law or agreed to in writing, software
0x2e, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, 0x00, 0x00, * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
0x00, 0x00, 0x00, 0x6e, 0x8d, 0x9c, 0xab, 0x60, 0x72, 0x63, 0x53, 0x00, * License for the specific language governing permissions and limitations
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * under the License.
0x23, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x52, *
0x41, 0x4d, 0x44, 0x49, 0x53, 0x4b, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, ****************************************************************************/
0x6f, 0x75, 0x6e, 0x74, 0x20, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x2f,
0x74, 0x6d, 0x70, 0x0a, 0x0a, 0x6d, 0x6b, 0x72, 0x64, 0x20, 0x2d, 0x6d, #ifndef __CONFIGS_SIM_INCLUDE_NSH_ROMFSIMG_H
0x20, 0x32, 0x20, 0x2d, 0x73, 0x20, 0x35, 0x31, 0x32, 0x20, 0x31, 0x30, #define __CONFIGS_SIM_INCLUDE_NSH_ROMFSIMG_H
0x32, 0x34, 0x0a, 0x6d, 0x6b, 0x66, 0x61, 0x74, 0x66, 0x73, 0x20, 0x2f, extern const unsigned char romfs_img[];
0x64, 0x65, 0x76, 0x2f, 0x72, 0x61, 0x6d, 0x32, 0x0a, 0x6d, 0x6f, 0x75, extern const unsigned int romfs_img_len;
0x6e, 0x74, 0x20, 0x2d, 0x74, 0x20, 0x76, 0x66, 0x61, 0x74, 0x20, 0x2f, #endif
0x64, 0x65, 0x76, 0x2f, 0x72, 0x61, 0x6d, 0x32, 0x20, 0x2f, 0x74, 0x6d,
0x70, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0x00, 0x00, 0x00, 0x00, 0xd1, 0xff, 0xff, 0xa0, 0x2e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
0x18, 0x3a, 0x8a, 0xc8, 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x64, 0x6d, 0x69,
0x6e, 0x3a, 0x38, 0x54, 0x76, 0x2b, 0x48, 0x62, 0x6d, 0x72, 0x33, 0x70,
0x4c, 0x64, 0x64, 0x53, 0x6a, 0x74, 0x7a, 0x4c, 0x30, 0x6b, 0x77, 0x43,
0x3a, 0x30, 0x3a, 0x30, 0x3a, 0x2f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x28, 0x8d, 0x90, 0x75,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x72, 0x6f, 0x6f, 0x74, 0x3a, 0x2a, 0x3a, 0x30,
0x3a, 0x72, 0x6f, 0x6f, 0x74, 0x2c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x0a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
const unsigned int romfs_img_len = 1024;

View File

@ -60,7 +60,7 @@ endif
CROSSDEV = CROSSDEV =
CC = $(CROSSDEV)cc CC = $(CROSSDEV)cc
CXX = $(CROSSDEV)c++ CXX = $(CROSSDEV)c++
CPP = $(CROSSDEV)cc -E CPP = $(CROSSDEV)cc -E -P -x c
LD = $(CROSSDEV)ld LD = $(CROSSDEV)ld
STRIP = $(CROSSDEV)strip --strip-unneeded STRIP = $(CROSSDEV)strip --strip-unneeded
AR = $(CROSSDEV)ar rcs AR = $(CROSSDEV)ar rcs

View File

@ -74,4 +74,9 @@ else
endif endif
endif endif
#ifdef CONFIG_NSH_ROMFSETC
RCSRCS = etc/init.d/rcS
RCRAWS = etc/group etc/passwd
#endif
include $(TOPDIR)/boards/Board.mk include $(TOPDIR)/boards/Board.mk

View File

@ -5,7 +5,7 @@ README
-------- --------
This directory contains logic to support a custom ROMFS start-up script. This directory contains logic to support a custom ROMFS start-up script.
This startup script is used by by the NSH when it starts provided that This startup script is used by by the NSH when it starts provided that
CONFIG_NSH_ARCHROMFS=y. The script provides a ROMFS volue that will be CONFIG_NSH_ARCHROMFS=y. The script provides a ROMFS volume that will be
mounted at /etc and will look like this at run-time: mounted at /etc and will look like this at run-time:
NuttShell (NSH) NuttX-7.31 NuttShell (NSH) NuttX-7.31
@ -64,34 +64,8 @@ README
Updating the ROMFS File System Updating the ROMFS File System
------------------------------ ------------------------------
The content on the nsh_romfsimg.h header file is generated from a sample The content on the nsh_romfsimg.h header file is generated from a sample
directory structure. That directory structure is contained in the binary directory structure. You can directly modify files under etc/ folder,
file etc.tar.gz and can be modified per the following steps: The build system will regenerate nsh_romfsimg.h automatically.
NOTE: It is not advised to do this under Windows. Windows will end up
changing the file permissions so the files under /etc will have executable
permissions.
1. Unpack the directory structure:
tar zxf etc.tar.gz
2. Make modifications as desired.
3. Create the new ROMFS image.
genromfs -f romfs_img -d etc -V SimEtcVol
4. Convert the ROMFS image to a C header file
xxd -i romfs_img >nsh_romfsimg.h
5. Edit nsh_romfsimg.h, mark both data definitions as 'const' so that
that will be stored in FLASH.
6. Re-package the modified /etc directory
tar cvf etc.tar etc
gzip etc.tar
See the sim/nsh configuration for an example of the use of this file See the sim/nsh configuration for an example of the use of this file
system. system.

View File

@ -0,0 +1 @@
root:*:0:root,admin

View File

@ -0,0 +1,34 @@
/****************************************************************************
* boards/sim/sim/sim/src/etc/init.d/rcS
*
* 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>
#define CONCAT_(x, y) x##y
#define CONCAT(x, y) CONCAT_(x, y)
#ifdef CONFIG_NSH_ROMFSETC
/* Create a RAMDISK and mount it at /tmp */
mkrd -m CONFIG_NSH_FATDEVNO -s CONFIG_NSH_FATSECTSIZE CONFIG_NSH_FATNSECTORS
mkfatfs CONCAT(/dev/ram, CONFIG_NSH_FATDEVNO)
mount -t vfat CONCAT(/dev/ram, CONFIG_NSH_FATDEVNO) CONFIG_NSH_FATMOUNTPT
#endif /* CONFIG_NSH_ROMFSETC */

View File

@ -0,0 +1 @@
admin:8Tv+Hbmr3pLddSjtzL0kwC:0:0:/