标签: boot

谁在启动期间加载BIOS和内存映射

对于BIOS,维基百科说:

BIOS内存的地址位于首次启动计算机时执行.然后,跳转指令指示处理器开始在BIOS中执行代码.

我知道BIOS存在于非易失性存储器中.但它必须加载到RAM中才能执行.那么谁将BIOS加载到RAM中?

我还读到在启动时加载了内存映射.BIOS加载此内存映射吗?存放在哪里?

memory boot x86 operating-system bios

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

启动时启动活动

我想在手机启动后启动我的应用程序.显然应用程序是在启动后启动但它立即崩溃(只是为了清楚应用程序通常工作正常).我已经阅读并尝试了不同的解决方案(link1,link2),实际上相同的代码与我正在开发的另一个应用程序正常工作.这是代码:

AndroidManifest.xml中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bluetoothx10y"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="6"
        android:targetSdkVersion="15" />

    <uses-feature android:name="android.hardware.usb.accessory"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <receiver
            android:name=".StartMyActivityAtBootReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>


        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
               <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"/>
            </intent-filter>

            <meta-data 
                android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
                android:resource="@xml/accessory_filter">
            </meta-data>

        </activity>

        <activity android:name=".DeviceListActivity"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.Dialog"
              android:screenOrientation="landscape" />        
    </application> …
Run Code Online (Sandbox Code Playgroud)

boot android android-manifest

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

计算机如何知道引导加载程序位于文件系统中的位置?

计算机如何知道引导加载程序位于文件系统中的位置?所有操作系统和所有计算机(也许不是所有计算机,而是所有体系结构)之间是否存在指向引导加载程序的通用文件?我知道Raspberry Pi总是从SD卡的第一个分区加载bootcode.bin。PC 是否共享这样的公共文件?

boot bootloader

6
推荐指数
1
解决办法
628
查看次数

在 Ubuntu 上启动时运行 Jupyter-notebook

我有一个安装了 anaconda 的 Ubuntu 16.04 虚拟机,我希望它在启动时使用正确的配置文件(IP 地址、端口、密码...)启动 Jupyter-notebook

此配置在 /home/user/.jupyter/jupyter_notebook_config.py 中指定

当我以用户身份登录并在主目录 (/home/user/) 中时,它会启动正确的配置文件。

但是当使用命令时

jupyter-notebook
Run Code Online (Sandbox Code Playgroud)

在使用 rc.local 或使用 crontab 启动期间,它不会加载我的配置文件,并且没有正确的运行目录。

ubuntu boot startup server jupyter-notebook

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

为什么使用 uImage 而不是 zImage

我正在尝试了解 zImage 和 uImage 之间的区别。

在我的理解中,它uImage是通过运行mkimage获得的Image,因此它添加了一个 U-Boot 包装器(我不知道它究竟包含什么),其中包含一个标头以及加载地址和入口点,可能还有我的“额外信息”不知道。

另一方面,它zImage是压缩的Image,它不包含加载地址和入口点(我认为,如果我错了,请纠正我),但 U-Boot 也可以使用bootz.

  • 在这种情况下,为什么使用 auImage而不是 a zImage

  • 我很想知道 zImage 和 uImage 的格式是什么,你能推荐一些参考吗?

linux boot kernel u-boot

6
推荐指数
1
解决办法
4366
查看次数

渐进式网络应用程序:在 Android 设备启动时启动

在工作中,我们正在从本机应用程序切换到渐进式网络应用程序。我们之前获得的最后一个功能(不是通过 PWA 获得的)是我们的应用程序在设备启动时自动打开之前的功能。

PWA 似乎不可能(我错了吗?)。我们正在寻求安装一个可以在启动时启动 PWA 的 Android 本机应用程序。但似乎我们需要 PWA 包名称或其他来启动应用程序。

您知道 PWA 是否有包名称或其他名称吗?或者如果我们更笼统地说,您认为这是否可能?

boot android progressive-web-apps

6
推荐指数
1
解决办法
1594
查看次数

内核恐慌:找不到可用的初始化。尝试将 init= 选项传递给内核

我刚刚开始了解内核的工作原理和内部结构,首先,我正在尝试构建内核并启动它。

我使用 qemu 作为 x86 架构的模拟器。

我正在关注这篇文章(虽然是针对手臂的):http : //www.kaizou.org/2016/09/boot-minimal-linux-qemu/

我使用以下命令构建了内核:

cd kernel_4.9
make x86_64-defconfig
make -j8
Run Code Online (Sandbox Code Playgroud)

这给了我 bzImage。现在我开发了一个initramfshello world 作为可执行文件的虚拟对象。这是init.c

#include <stdio.h>

void main()
{
    printf("Tiny init - Hello World...\n");
    while(1);
}
Run Code Online (Sandbox Code Playgroud)

打包 initramfs

gcc -static init.c -o init
chmod +x init
echo init | cpio -o --format=newc > initramfs
Run Code Online (Sandbox Code Playgroud)

现在运行 qemu :

qemu-system-x86_64 -kernel ~/data/linux/arch/x86/boot/bzImage -append 'console=ttyS0' -serial stdio -initrd ~/data/linux/arch/x86/boot/initramfs
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[    1.158556] Write protecting the kernel text: 8528k
[    1.158842] Write protecting …
Run Code Online (Sandbox Code Playgroud)

boot qemu bsp linux-kernel embedded-linux

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

BCDEdit错误,参数不正确

我正在尝试将 SSD 添加到启动菜单。我按照Microsoft提供的说明进行操作。但我不断收到同样的错误。

这个命令给了我错误:

bcdedit /copy {current} /d "mySSD"
Run Code Online (Sandbox Code Playgroud)

然后我跑去bcdedit /videntifier'sGUID。这个命令也给了我同样的错误:

bcdedit /copy {c562ef5b-d0f6-11e8-bfb5-e86a64139893} /d "mySSD"
Run Code Online (Sandbox Code Playgroud)

错误:

The copy command specified is not valid.
Run "bcdedit /?" for command line assistance.
The parameter is incorrect.
Run Code Online (Sandbox Code Playgroud)

我应该怎么办?


这是输出结果bcdedit /v

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-accb-f32b344d4795}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaab-896d9d0a9f0e}
default                 {c562ef5b-d0f6-11e8-bfb5-e86a64139893}
resumeobject            {c562ef5a-d0f6-11e8-bfb5-e86a64139893}
displayorder            {c562ef5b-d0f6-11e8-bfb5-e86a64139893}
toolsdisplayorder       {b2721d73-1db4-4c62-bf7b-c548a880142d}
timeout                 0

Windows Boot Loader
-------------------
identifier              {c562ef5b-d0f6-11e8-bfb5-e86a64139893} …
Run Code Online (Sandbox Code Playgroud)

windows boot bcdedit windows-10

6
推荐指数
1
解决办法
7516
查看次数

如何在 Centos-8 下的命令行中列出和编辑 GRUB2 的“菜单项”?

如何在Centos-8下的命令行中列出GRUB2的\xe2\x80\x9cmenuentries\xe2\x80\x9d?\n使用的可行方法“fgrep menuentry /etc/grub2.conf”失败。

\n\n

因为在 Centos-8/RHEL-8 中,它们不会将菜单项存储在 /etc/grub2.conf 中。\n相反,它们会在启动运行时搜索并构建条目。

\n\n

以及如何将自定义命令行参数添加到特殊菜单项?\n/etc/grub2.conf 中没有菜单项,我无法编辑任何菜单项。

\n

boot rhel grub2 centos8

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

引导加载程序在 qemu 中工作,但在 virtualbox 和硬件上失败

我的引导加载程序由两个 512 字节的阶段组成。阶段 1 由 bios 加载到 MBR 区域。stage1 然后继续从驱动器加载 stage2 并跳转到它。

我用十六进制编辑器确认最终二进制“program.bin”的大小正好是 1024 字节长,并且包含两个“签名”(每个阶段的最后两个字节,0xAA55 用于 stage1(MBR 签名)和 0xCC77 用于 stage2)。

预期产出是:

1 // stage1 started
0000 or 0080 // drive# in hex
CC77 // stage2 "signature" in hex
2 // stage2 started
Run Code Online (Sandbox Code Playgroud)

这在 QEMU 中工作正常,但在 virtualbox 和硬件上失败。在我看来,stage2 加载无声无息地失败(错误分支没有被调用),我希望解决这个问题两周,但没有成功。

QEMU 输出
QEMU 输出

硬件和 Virtual Box 输出
VBox 输出

stage1.asm:

global _start
extern _stage2
extern _stage2data

BITS 16

_start:
; init registers
    xor ax, ax
    mov es, ax
    mov gs, ax
    mov ss, ax …
Run Code Online (Sandbox Code Playgroud)

boot assembly mbr x86-64

6
推荐指数
1
解决办法
217
查看次数