标签: boot

以 root 身份在启动时运行 Python 脚本

我写了一个想要在启动时执行的 python 程序,但它必须以 root 身份执行,我不知道如何执行。我需要做些什么来实现这一目标?我应该把文件放在哪里(脚本在一个包含必要 python 包的文件夹中)以便它在启动时运行?如何以 root 身份运行文件?无论是将python文件夹放在某个目录下,使用其他脚本执行python脚本,还是其他方式,请分享您的解决方案!我是在树莓派上做的,所以操作系统是 Linux。

python boot root raspberry-pi

3
推荐指数
1
解决办法
727
查看次数

为什么在arm64引导代码__primary_switched中将init_task结构体地址保存到sp_el0?

这是来自 linux arm64 (arch/arm64/kernel/head.S) 的汇编代码。(内核源代码 5.4.21)

__primary_switched:
    adrp    x4, init_thread_union   -- line 1
    add sp, x4, #THREAD_SIZE        -- line 2
    adr_l   x5, init_task           -- line 3
    msr sp_el0, x5          // Save thread_info   -- line 4
    adr_l   x8, vectors         // load VBAR_EL1 with virtual  -- line5
    msr vbar_el1, x8            // vector table address  -- line 6
    isb                    -- line7
    
    stp xzr, x30, [sp, #-16]!            -- line8
    mov x29, sp                   -- line9
    
    str_l   x21, __fdt_pointer, x5      // Save FDT pointer   -- line10 …
Run Code Online (Sandbox Code Playgroud)

boot assembly linux-kernel arm64

3
推荐指数
1
解决办法
1517
查看次数

8086 (x86-16) CPU 堆栈指针的初始值是多少?

  1. SS、SP、BP的初始值是多少?它们是否为空 (0x0) 或者例如 SP 是否立即设置为 0xFFFE?

  2. 当我们编写汇编代码而不使用 pop 和 push 语句时,堆栈指针是否设置为一个值?

boot assembly cpu-registers x86-16 stack-pointer

3
推荐指数
1
解决办法
814
查看次数

BOOT_COMPLETED从未收到过

每个设备都发送BOOT_COMPLETED吗?我想在Boot Completed上启动一个Activity.

我在Manifest中添加了以下内容:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootFinished">            
    <intent-filter>                
         <action android:name="android.intent.action.BOOT_COMPLETED" />           
    </intent-filter>        
</receiver>
Run Code Online (Sandbox Code Playgroud)

创建了以下类(接收者):

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.widget.Toast;

public class BootFinished extends BroadcastReceiver {

    @Override        
    public void onReceive(Context mContext, Intent intent) {
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {               
          //do something like start an activity or service
        }

        try {
            PackageManager pm = mContext.getPackageManager();
            Intent launch = pm.getLaunchIntentForPackage("com.example.afterboot");
            mContext.startActivity(launch);
        } catch (Exception e) {
            Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT);
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?谢谢!

boot android broadcastreceiver android-intent

2
推荐指数
1
解决办法
4653
查看次数

Rails App根文件夹中boot.rb文件中的Ruby bundler语句

我在我的Rails应用程序的根文件夹中的boot.rb文件中找到了以下给定的语句.

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
Run Code Online (Sandbox Code Playgroud)

谁能帮我了解的使用ENV['BUNDLE_GEMFILE'],并||=在这方面?

谢谢.

ruby boot ruby-on-rails bundler

2
推荐指数
1
解决办法
445
查看次数

当采样集中的所有值相等时,避免R boot.ci函数中的错误

我有许多数据集作为函数的输入.数据存储在数据表中,我正在计算函数输出的置信区间.但是,在某些情况下,所有输入数据都相同,导致错误:"x的所有值都等于100 \n无法计算置信区间"如何避免此错误(例如,只需设置置信区间在所有值相等的情况下,为0或NA等任意值?例如:

library(boot)
library(data.table)

problem=1

data<-data.table(column1=c(1:100),column2=c(rep(100,99),problem))
resample.number=1000
confidence=0.95

sample.mean<-function(indata,x){mean(indata[x])}

boot_obj<-lapply(data,boot,statistic = sample.mean,R = resample.number)

boot.mean.f<-function(x,column){
    x[column][1]
}

means<-data.table(sapply(boot_obj,boot.mean.f))
bootci_obj<-lapply(boot_obj,boot.ci, conf = confidence, type = "perc")
bootci.f<-function(x,column){
    x<-x[column][4]
    x<-unlist(strsplit(as.character(x[1]),","))
    x<-sub("[:punct:].*","",x)
    x<-sub("lis.*","",x)
    x<-sub(").?","",x)
    x<-na.omit(as.numeric(x))
}

cis<-data.table(t(sapply(bootci_obj,bootci.f)))
setnames(means,"V1","stat")

cis[,V1:=NULL]
cis[,V2:=NULL]
setnames(cis,c("V3","V4"),c("lci","uci"))

return(cbind(means,cis))
Run Code Online (Sandbox Code Playgroud)

收益:

stat      lci       uci
1:  50.5 44.96025  56.26797
2: 99.01 97.03000 100.00000
Run Code Online (Sandbox Code Playgroud)

更改

problem=1
Run Code Online (Sandbox Code Playgroud)

返回:"t的所有值都等于100 \n无法计算置信区间",这会导致其他错误.

我希望结果如下:

stat      lci       uci
1:  50.5 44.96025  56.26797
2: 100.0 0.0000 0.00000
Run Code Online (Sandbox Code Playgroud)

帮助/想法非常感谢!

boot r confidence-interval

2
推荐指数
1
解决办法
2049
查看次数

BOOT_COMPLETE和ACTION_SHUTDOWN从不调用BroadcastReceiver

我想使用BroadcastReceiver捕获ACTION_SHUTDOWN和BOOT_COMPLETE.但事实证明两个信号都不会触发BroadcastReceiver(我没有看到任何登录logcat).这是我的源代码.

我给了Manifest许可

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)

我尝试以两种方式注册BroadcastReceiver

protected void onCreate(Bundle savedInstanceState)
{
    registerReceiver(BootReceiver, new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
    registerReceiver(ShutDownReceiver, new IntentFilter(Intent.ACTION_SHUTDOWN));
}

<receiver android:name=".BootReceiver" 
          android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
      <intent-filter>
          <action android:name="android.intent.action.BOOT_COMPLETED" />
          <action android:name="android.intent.action.QUICKBOOT_POWERON" />
          <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

BootReceiver和ShutDownReceiver的源代码如下

private BroadcastReceiver BootReceiver  = new BroadcastReceiver()
{
    private String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(ACTION_BOOT)){
            //my stuff  
            Log.d("Power", "Boot Complete");
        }
    }
};

private BroadcastReceiver ShutDownReceiver = new BroadcastReceiver()
{
    private String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
    @Override
    public void onReceive(Context …
Run Code Online (Sandbox Code Playgroud)

boot android broadcastreceiver

2
推荐指数
1
解决办法
5692
查看次数

Linux内核启动方法预先构建的rootfs

我正在学习linux内核启动过程并尝试在我的beagleboard xM上安装linux.我在使用SD卡时遇到了两种方法.1.将MLO,initrd,uboot.bin和uImage放在一个分区中.2.在一个分区中使用MLO,uboot.bin和uImage,在第二个分区中使用预先构建的rootfs(Angstrom).

在第一种方法中,如何将initrd转换为第二个分区上的完整文件系统.当uboot从uImage中提取内核并将其粘贴到第二个分区时,内部会发生什么.哪些目录将被修改为init rootfs.如何调用内核的init进程.

boot linux-kernel embedded-linux bootloader

2
推荐指数
1
解决办法
876
查看次数

在Raspberry PI 2上使用Ubuntu MATE 15.04启动到shell

是否可以启动到终端?我试图寻找一个grub文件,但我找不到它.另外/boot/firmware/config.txt似乎没有这样的选项.

shell boot raspberry-pi2 ubuntu-15.04

2
推荐指数
1
解决办法
6420
查看次数

u-boot基于GPIO状态选择启动分区

我正在开发嵌入式系统上的恢复机制.如果用户按下GPIO按钮,我想启动进入恢复模式.恢复模式意味着选择不同的内核和根分区.我坚持在条件命令中使用gpio值.如果我写的if gpio input 20; then cmd; fi cmd将始终运行,因为gpio返回错误状态而不是GPIO的值.我怎样才能获得价值?

使用U-Boot命令实现引导选择是否可行(我需要将LED闪烁15秒,如果用户按下按钮至少5秒,则切换到恢复).在C代码中实现这个逻辑会更容易吗?如果是这样在哪里看,有没有例子?

通常,提供恢复系统似乎是嵌入式工程师的常见任务.这种情况下的最佳做法是什么?实现这个的最常见方式是什么?我在网上找不到任何帮助或指导.

embedded boot embedded-linux u-boot gpio

2
推荐指数
1
解决办法
4018
查看次数