移植openharmony之启动shell服务
接上篇已经添加好init进程,但是目前还是无法进入终端,现在就来添加进入shell终端的步骤,首先拷贝源码中hisilicon配置文件到我们的目录中,然后删除多余的文件,只保留我们需要的文件即可
cp hisilicon/hispark_taurus_linux/init_configs xingyun/t113_nand/ -r
修改如下文件,添加需要拷贝的文件
diff --git a/vendor/xingyun/t113_nand/BUILD.gn b/vendor/xingyun/t113_nand/BUILD.gnindex e39d9c2a82..bc7de55655 100755--- a/vendor/xingyun/t113_nand/BUILD.gn+++ b/vendor/xingyun/t113_nand/BUILD.gn@@ -1,4 +1,9 @@ # Copyright (C) 2020 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. group("t113_nand") {+ deps = [+ "init_configs",+ "init_configs:init_initd",+ "init_configs:init_fstab"+ ] }
然后重新编译,可以看到多出了这么几句话,会将你的文件自动拷贝到对应的目录中,
然后直接运行,可以看到,能正常进入终端了。
至此,一个openharmony基本系统已经移植完成了。其中需要注意的点为init_t113_linux.cfg文件里面,
{ "jobs" : [{ "name" : "pre-init", "cmds" : [ "mkdir /storage/data", "chmod 0755 /storage/data", "mkdir /storage/data/log", "chmod 0755 /storage/data/log", "chown 4 4 /storage/data/log", "chmod 0666 /dev/binder", "mkdir /storage/data/softbus", "chmod 0700 /storage/data/softbus", "chown 7 7 /storage/data/softbus", "mkdir /storage/data/system", "mkdir /storage/data/system/param", "chmod 0755 /storage/data/system/param", "mkdir /storage/data/timertask", "chmod 0755 /storage/data/timertask", "chown 7 7 /storage/data/timertask", "chown 4 4 /dev/hilog", "chown 4 4 /dev/hwlog_exception", "mkdir /userdata", "chmod 0777 /userdata", "mkdir /userdata/photo", "chmod 0777 /userdata/photo", "mkdir /userdata/thumb", "chmod 0777 /userdata/thumb", "mkdir /userdata/video", "chmod 0777 /userdata/video" ] }, { "name" : "init", "cmds" : [ "start shell" //这里如果是只保留一个,不能有逗号,否则无法解析启动,可以自行测试 ] }, { "name" : "post-init", "cmds" : [] } ], "services" : [{ "name" : "shell", //需要注意ttyS0,需要修改为板卡对应的串口 "path" : ["/sbin/getty", "-n", "-l", "/bin/sh", "-L", "115200", "ttyS0", "vt100"], "uid" : 0, "gid" : 0, "once" : 0, "importance" : 0, "caps" : [4294967295] } ]}
接着再来移植一下与日志服务相关的内核文件。轻量化内核日志服务代码包含drivers/staging/hilog和drivers/staging/hievent,执行如下命令
cp -r linux-5.10/drivers/staging/hilog linux-5.4/drivers/staging/cp -r linux-5.10/drivers/staging/hievent/ linux-5.4/drivers/staging/
修改如下几个文件
diff --git a/kernel/linux/linux-5.4/drivers/staging/Kconfig b/kernel/linux/linux-5.4/drivers/staging/Kconfigindex 6f1fa4c849..57ace49198 100644--- a/kernel/linux/linux-5.4/drivers/staging/Kconfig+++ b/kernel/linux/linux-5.4/drivers/staging/Kconfig@@ -125,4 +125,8 @@ source "drivers/staging/exfat/Kconfig" source "drivers/staging/qlge/Kconfig"+source "drivers/staging/hilog/Kconfig"++source "drivers/staging/hievent/Kconfig"+ endif # STAGINGdiff --git a/kernel/linux/linux-5.4/drivers/staging/Makefile b/kernel/linux/linux-5.4/drivers/staging/Makefileindex a90f9b308c..19f1589648 100644--- a/kernel/linux/linux-5.4/drivers/staging/Makefile+++ b/kernel/linux/linux-5.4/drivers/staging/Makefile@@ -53,3 +53,5 @@ obj-$(CONFIG_UWB) += uwb/ obj-$(CONFIG_USB_WUSB) += wusbcore/ obj-$(CONFIG_EXFAT_FS) += exfat/ obj-$(CONFIG_QLGE) += qlge/+obj-$(CONFIG_HILOG) +=hilog/+obj-$(CONFIG_HIEVENT) +=hievent/
将驱动源文件拷贝到我们的linux内核源码中,然后修改内核配置文件,修改点如下
diff --git a/kernel/linux/config/linux-5.4/arch/arm/configs/t113_nand_linux_small_defconfig b/kernel/linux/config/linux-5.4/arch/arm/configs/t113_nand_linux_small_defconfigindex 00120106b8..8a16453e1e 100644--- a/kernel/linux/config/linux-5.4/arch/arm/configs/t113_nand_linux_small_defconfig+++ b/kernel/linux/config/linux-5.4/arch/arm/configs/t113_nand_linux_small_defconfig@@ -214,3 +214,7 @@ CONFIG_DEBUG_LL=y CONFIG_DEBUG_UART_PHYS=0x02500000 CONFIG_DEBUG_UART_VIRT=0xf2500000 CONFIG_EARLY_PRINTK=y++#hilog+CONFIG_HILOG=y+CONFIG_HIEVENT=y
然后重新编译内核,启动内核发现如下打印信息,说明驱动加成功,
然后修改如下几点,或者确保有以下几点存在
diff --git a/vendor/xingyun/t113_nand/config.json b/vendor/xingyun/t113_nand/config.jsonindex 62f74ff706..d1ed4769e9 100755--- a/vendor/xingyun/t113_nand/config.json+++ b/vendor/xingyun/t113_nand/config.json@@ -20,6 +20,12 @@ { "component": "init_lite", "features":[] }, { "component": "appspawn_lite", "features":[] } ]+ },^M+ {^M+ "subsystem": "hiviewdfx",^M+ "components": [^M+ { "component": "hilog", "features":[] }^M+ ]^M} ], "third_party_dir": "//third_party",index 373075b18e..15558a1740 100755--- a/vendor/xingyun/t113_nand/init_configs/init_t113_linux.cfg+++ b/vendor/xingyun/t113_nand/init_configs/init_t113_linux.cfg@@ -31,7 +31,8 @@ }, { "name" : "init", "cmds" : [- "start shell"+ "start shell",^M+ "start apphilogcat"^M ] }, { "name" : "post-init",@@ -46,6 +47,14 @@ "once" : 0, "importance" : 0, "caps" : [4294967295]+ },{^M+ "name" : "apphilogcat",^M+ "path" : ["/bin/apphilogcat"],^M+ "uid" : 4,^M+ "gid" : 4,^M+ "once" : 1,^M+ "importance" : 0,^M+ "caps" : []^M } ] }
启动后,有如下信息说明轻量化的日志打印功能启动成功。