标签: boot

BIOS加载到RAM中的哪些信息?

我知道,在启动时,BIOS会在内存0x7c00上加载预定义设备驱动器的第一个扇区(512字节),然后跳转到该地址.

因此,从0x7c00到0x7dff的内存被占用.RAM中是否有其他部分被占用?

如果我正在编程操作系统,我可以使用除了0x7c00到ox7dff之外的所有RAM用于我自己的目的吗?或者,是否还有其他部分在启动时填充了"宝贵"信息,我不能覆盖?

我知道在给定的时刻,我可以覆盖内存中加载的MBR(链式加载),我的问题集中在......操作系统可用的内存部分是什么?

对不起,我的英语不好.谢谢你的回答!!

boot mbr bios

12
推荐指数
3
解决办法
4210
查看次数

普通的x86或AMD PC是直接从ROM运行启动/ BIOS代码,还是先将它们复制到RAM?

我知道现代计算机已经修改了哈佛架构.

事实上他们可以从他们保存数据的地方读取指令,这样他们可以直接从ROM芯片中获取指令吗?他们首先将BIOS加载到RAM,还是直接从芯片执行?我没有可以在附近打开的计算机,所以...如果我从内存插槽中删除所有RAM,计算机是否能够启动完整的BIOS,运行POST的东西并告诉我需要RAM?这很有趣我从未尝试过......

编辑:我的意图是要了解商业CPU(或至少是intel cpus)是否可以直接从ROM执行代码.它不是出于实际目的,而是为了增加我对计算机体系结构和内容的理解.删除RAM部分不是我的主要疑问,只是一个例子

cpu boot startup bios

12
推荐指数
1
解决办法
3718
查看次数

Linux:在连接的USB串行加密狗上启动守护程序

在我的Linux(BeagleBone Black上的Angstrom发行版)上,我有一个USB加密狗,它作为一个串口提供,默认情况下可用作 /dev/ttyUSB0

我想启动一个守护进程,它将连接到串行端口并使其可用作套接字.我有这个USB到套接字桥的代码,它可以在手动启动时工作.

我想让它在系统启动时自动启动,假设USB加密狗已插入.我应该怎么做?

到目前为止的尝试:

  1. systemd:我创造了条件systemd服务After: remote-fs.targetAfter:syslog.target,但(似乎)的USB加密狗是不准备在这一点上和守护程序的启动失败.

    是否有其他systemd targetsservices条件,以便只有当udev完成安装设备并且网络准备好后才启动守护进程?

  2. udev:我创建了一个udev规则

    KERNEL =="ttyUSB?",RUN + ="/ path/to/daemon.sh"

    哪个成功执行.但守护进程(在该脚本中以"&"作为后台进程启动)似乎不会执行.从udev规则分叉长时间运行的进程似乎也不赞成.

这样做的正确方法是什么?

linux usb boot udev systemd

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

了解U-Boot进程的Linux加载地址

我试图了解嵌入式Linux原理,无法在u-boot输出中找出地址.

例如,我有基于i.MX6四核处理器的UDOO板,我得到了U-Boot的以下输出:

U-Boot 2013.10-rc3 (Jan 20 2014 - 13:33:34)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: UDOO
DRAM:  1 GiB
MMC:   FSL_SDHC: 0
No panel detected: default to LDB-WVGA
Display: LDB-WVGA (800x480)
In:    serial
Out:   serial
Err:   serial
Net:   using phy at 6
FEC [PRIME]
Warning: FEC MAC addresses don't match:
Address in SROM is         00:c0:08:88:a5:e6
Address in environment is  00:c0:08:88:9c:ce

Hit any key to stop autoboot:  0 
Booting from mmc ...
4788388 bytes read in …
Run Code Online (Sandbox Code Playgroud)

linux boot arm embedded-linux u-boot

12
推荐指数
2
解决办法
2万
查看次数

启动接收器不工作

表现:

         <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".AlarmActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
            <receiver android:name="CallReciver">
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE">  

</action>
                </intent-filter>
            </receiver>
            <receiver android:name=".SmsReceiver"> 
               <intent-filter android:priority="1000">
                    <action android:name=
                        "android.provider.Telephony.SMS_RECEIVED" /> 
                </intent-filter> 
            </receiver>
             <receiver android:name=".OnBootReceiver">
          <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
          </intent-filter>
        </receiver>
            <service
                android:enabled="true"
                android:name=".AlarmService">
            </service>
        </application>
         <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
         </uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE">
        </uses-permission>
        <uses-permission android:name="android.permission.WRITE_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.READ_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.SEND_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.RECEIVE_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.INTERNET">
        </uses-permission>
Run Code Online (Sandbox Code Playgroud)

接收器:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class OnBootReceiver extends …
Run Code Online (Sandbox Code Playgroud)

boot android broadcastreceiver

11
推荐指数
2
解决办法
2万
查看次数

如何在Android中启动时启用adbd来侦听端口?

我有一个根深蒂固的HTC Hero,我想要做的是让adbd在启动时监听一个端口.

我尝试了一些代码,发现这里:

setprop service.adb.tcp.port 5555
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)

在Android外壳中,它运行良好.

我试图更改init.rc文件.我在init.rc中添加了上面的代码,并通过以下命令将其替换为原始文件:

adb push init.rc sdcard

adb shell
adb su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /
adb cp sdcard/init.rc /
Run Code Online (Sandbox Code Playgroud)

该文件已成功替换,但是当我重新启动手机并尝试连接时:

adb connect <IP>:5555
Run Code Online (Sandbox Code Playgroud)

连接尚未建立.

有任何想法吗?

(PS.我不想使用remoteADB应用程序和shell命令一样 am start -n ... )

boot android init remote-connection adb

11
推荐指数
2
解决办法
2万
查看次数

linux在systemd中启动脚本

我可以在下面执行此启动服务,一旦运行就没有错误显示,但下面的服务器脚本不运行!

ln /lib/systemd/aquarium.service aquarium.service
systemctl daemon-reload
systemctl enable aquarium.service
systemctl start aquarium.service
Run Code Online (Sandbox Code Playgroud)

谢谢

aquarium.service:

[Unit]
Description=Start aquarium server

[Service]
WorkingDirectory=/home/root/python/code/aquarium/
ExecStart=/bin/bash server.* start
KillMode=process

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这是server.sh脚本

#!/bin/bash

PID=""

function get_pid {
   PID=`pidof python ./udpthread.py`
}

function stop {
   get_pid
   if [ -z $PID ]; then
      echo "server is not running."
      exit 1
   else
      echo -n "Stopping server.."
      kill -9 $PID
      sleep 1
      echo ".. Done."
   fi
}


function start {
   get_pid
   if [ -z $PID ]; then
      echo  "Starting …
Run Code Online (Sandbox Code Playgroud)

linux bash boot startup systemd

11
推荐指数
1
解决办法
7万
查看次数

嵌入式系统中启动代码的流程,启动加载程序的概念?

我正在使用嵌入式主板,但我不知道相同的启动代码(C /汇编)的流程.

在嵌入式系统的情况下,我们是否可以讨论启动操作所采取的一般模块/步骤.

只是高级概述(算法)就足够了.欢迎所有的例子.

/ Kanu__

c embedded boot microcontroller assembly

10
推荐指数
2
解决办法
2万
查看次数

boottrpping如何为gcc工作?

我正在查找pypy项目(Python中的Python),并开始思考运行python外层的问题?当然,我猜想,它不能像古老的说法那样"乌龟一路走下去"!毕竟,python是无效的x86程序集!

很快我就想起了bootstrapping的概念,并查找了编译器引导."好的",我想,"所以它可以用不同的语言编写,也可以用汇编编写".为了性能,我确信C编译器只是从汇编中构建的.

这一切都很好,但问题仍然存在,计算机如何获得该汇编文件?!

假设我买了一个没有任何东西的新cpu.在第一次操作期间,我希望安装一个运行C的操作系统.什么运行C编译器?BIOS中是否有微型C编译器?

谁可以给我解释一下这个?

architecture compiler-construction boot gcc bootstrapping

10
推荐指数
2
解决办法
3219
查看次数

Cron启动脚本仅在一天中的某些时间

所以我有一系列脚本,用于控制我的接收器和电视电源在某些事件,如启动,屏幕保护和远程控制.其中一个是在登录期间执行的,但事情可能是我不希望它在机器计划启动时运行脚本.我有逻辑在执行启动应用程序期间如果blanked = 0则忽略事件,因此它不会在启动或关闭期间发送ir.我怎样才能通过使用cron来实现这一目标?我选择cron是因为这些事件发生在启动应用程序之前.Cron真棒,但据我所知,我只能在开机时或按计划运行,而不是两者兼而有之.我需要编写时间变量的脚本,但我不确定如何.

syson.sh(在登录期间调用为启动应用程序和屏幕状态更改)

#!/bin/sh
cd /home/gilson585/
blanked=`cat blanked`
if [ $blanked -eq 0 ] ; then
    blanked=1;echo $blanked > blanked
else
    irsend SEND_ONCE VR4085DF KEY_POWER;irsend SEND_ONCE Kenwood_RC-R0813 power;blanked=0;echo $blanked > blanked
    sleep 1
    irsend SEND_ONCE Kenwood_RC-R0813 cd/dvd
fi
Run Code Online (Sandbox Code Playgroud)

sysoff.sh(在关机期间调用,作为lirc init.d脚本和屏幕状态更改的一部分)

#!/bin/sh
cd /home/gilson585/
blanked=`cat blanked`
if [ $blanked -eq 0 ] ; then
    irsend SEND_ONCE Kenwood_RC-R0813 power;irsend SEND_ONCE VR4085DF KEY_POWER;blanked=1;echo $blanked > blanked
fi
Run Code Online (Sandbox Code Playgroud)

xscreensaver.sh(屏幕保护程序看门狗,在登录时调用)

#!/bin/bash
cd /home/gilson585/
xscreensaver-command -watch|
while read STATUS; do
  case "$STATUS" in
    BLANK*)
      /home/gilson585/sysoff.sh;blanked=1;echo …
Run Code Online (Sandbox Code Playgroud)

boot cron time lirc

10
推荐指数
1
解决办法
307
查看次数