【buildroot】初始化脚本后台运行, 解决启动时间过长

在使用buildroot勾选组件时, 在生成文件系统时会增加组件的初始化脚本.

由于初始化脚本是在登陆前运行的, 某些初始化脚本过慢导致登陆时间过长, 影响体验

初始化运行流程

#!/bin/sh
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done
Created with Raphaël 2.2.0 /etc/init.d/rcS 循环查找/etc/inid.d/的文件 前台运行

添加循环条件, 指定后台运行

  • /etc/init.d/中, 在想要后台运行的脚本文件名后添加-bg后缀, 例如S50sshd-bg
  • 修改/etc/init.d/rcS文件, 添加条件, 当有-bg后缀则转入后台运行
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue


#!/bin/sh
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
# 新增代码段-------------------开始
    *-bg)
        (
            echo $i "run it background"
            trap - INT QUIT TSTP
            . $i start &
        )
        ;;
# 新增代码段-------------------终止
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done

修改后的流程如下

Created with Raphaël 2.2.0 /etc/init.d/rcS 循环查找/etc/inid.d/的文件 -bg后缀 后台执行 前台执行 yes no
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在使用Buildroot编译系统时出现无法启动的问题,可能有几种原因导致。首先,可能是因为文件系统下没有对应的init文件,导致内核启动时找不到初始化入口,无法启动init进程。解决这个问题的方法之一是制作init的软链接文件。 另外,国内网络或公司网络的问题可能导致在编译Buildroot时无法下载源文件或下载中断,从而导致编译错误或中断。可以尝试在网上下载对应版本的源文件,并将其保存在Buildroot源文件目录的dl文件夹内。系统在重新编译时会自动检测该目录中是否已经存在所需文件。此外,还需要确保选择合适的编译器。 如果启动系统时出现“ssh服务启动失败”的提示,可能是由于/var/empty文件夹的权限问题。一开始,该文件夹的权限可能设置为777,但实际上需要的是744的权限。可以在制作文件系统之前将该文件夹的权限修改为正确的权限,以避免每次重新制作系统时都需要手动修改权限。此外,还可能出现使用sftp或xshell登录不上的问题。 综上所述,如果Buildroot无法启动,可能是因为缺少init文件、网络下载问题或文件夹权限问题等原因。你可以根据具体情况尝试上述提供的解决方法来解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [buildroot编译内核启动报错:Kernel panic - not syncing: No working init found问题解决](https://blog.csdn.net/aixueai/article/details/121693208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [制作buildroot文件系统遇到的问题(1)](https://blog.csdn.net/qq_44766222/article/details/124141693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值