我正在编写一个引导加载程序,我正在遵循的教程提供了以下代码:
main:
;----------------------------------------------------
; code located at 0000:7C00, adjust segment registers
;----------------------------------------------------
cli ; disable interrupts
mov ax, 0x07C0 ; setup registers to point to our segment
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
;----------------------------------------------------
; create stack
;----------------------------------------------------
mov ax, 0x0000 ; set the stack
mov ss, ax
mov sp, 0xFFFF
sti ; restore interrupts
Run Code Online (Sandbox Code Playgroud)
我可能误解了一些东西但是如果SS寄存器包含0x0000则不意味着ds,es,fs和gs会重叠堆栈吗?还有fs和gs寄存器的功能是什么?此外,BIOS是否自动设置了cs段?因为它表示代码位于0000:7c00.此外,本教程永远不会解释为什么禁用中断.我在某处读到通常禁用中断以避免死锁.这是什么意思,为什么会发生?
关于PC的启动,我在某些方面不是很清楚.
术语:引导块,引导扇区,MBR,引导加载程序与引导过滤器,bios与cmos及其功能.
这些如何与当前的引导程序如grub相关.
我明白了引导顺序和高级软件的东西后启动,但我真的很好奇,当有人按下按钮电源这些芯片内发生的事情.
维基百科似乎有点神秘,所以我想也许stackoverflow可以给我一些清晰的答案或至少指向一个我可以找到简单解释的位置.
非常感谢帮助.
我喜欢AWS OpsWorks,但我现在面临的一个重大缺点是启动时间:节点启动速度超慢.
在我的情况下,对于t1.micro实例,在我的cookbook开始运行之前需要10分钟(尽管从EC2控制台视图看,实例应该在大约2分钟后准备就绪:在这么短的时间之后可以通过SSH访问它) .您也可以参考此主题.
我尝试使用自定义AMI但遇到了另一个问题:节点一直保持启动状态.但在创建AMI时,这可能是我的错.
回到最初的问题,我怎样才能改善OpsWorks节点的启动时间?
我目前正在尝试在引导过程结束时插入内核模块,因此我在 init.rc 中创建了以下条目:
on post_late_start
start myscript
on nonencrypted
class_start late_start
trigger post_late_start
on property:void.decrypt=trigger_restart_framework
class_start main
class_start late_start
trigger post_late_start
service myscript /data/my_sh.sh
disabled
oneshot
Run Code Online (Sandbox Code Playgroud)
然后在我的 /data 目录中 my_sh.sh 有以下内容:
#!/system/bin/sh
log -t mytag -p V "Hello World!"
insmod mymodule.ko mod_parameter=arg
Run Code Online (Sandbox Code Playgroud)
但是当我运行时——有时我在 logcat -s“mytag”时看不到“Hello World”标签,当然,也没有安装 insmodded 模块。
延迟插入内核模块的正确方法是什么(它需要在网络启动并挂载 /data 后插入)。更进一步 - 我如何将 insmod 的输出输入到日志中以便我可以调试?任何帮助表示赞赏,如有必要,我可以发布更多详细信息。
我想在 CentOS 在 init 3 中启动时向我显示我的 ip 地址,然后再登录。例如:
CentOS Realese 6.5(Final)
Kernel 2.6..
ip addr: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
或类似的东西。
我制作的脚本是:
#!/bin/bash
ifconfig eth0 | grep 'inet addr'
Run Code Online (Sandbox Code Playgroud)
但是,我不知道我把它放在哪里。
我在 rc.local 中尝试(使用“cat”和他的路径)但显然它不是正确的地方,或者我做错了什么。我在 /etc/issue 中尝试,但也许我做错了什么。
我已经安装了最新的Xcode 6并尝试在iOS 8模拟器上运行我的项目.它给出了"无法启动iOS模拟器"的错误.我已经尝试了所有堆栈溢出答案,但无法修复此问题.
假设,我有一个Hello world内置的简单程序C.现在如何在启动PC时启动它?
我的愿望是制作简单的hello world操作系统.我有相当的知识就C和C++,我怎么能启动呢?请告诉我.我需要学习汇编语言吗?
如果是,那么在装配内部我需要先了解什么?我应该在哪里去了大会(NASM,MASM等..)?
帮助将不胜感激!
由于某些启动顺序问题,我在Google Compute Engine上的实例无法启动。
因此,我创建了另一个实例并重新配置了我的机器。
我的问题:
日志
[0.348577]密钥类型可信注册
[0.349232]密钥类型已加密注册
[0.349769] AppArmor:启用了AppArmor sha1策略哈希
[0.350351] ima:未找到TPM芯片,正在激活TPM旁路!
[0.351070] EVM:HMAC属性:0x1
[0.351549]幻数:11:333:138
[0.352077]块ram3:哈希匹配
[0.352550] rtc_cmos 00:00:将系统时钟设置为2015-12-19 17:06:53 UTC(1450544813)
[0.353492] BIOS EDD设备v0.16 2004年6月25日,找到0个设备
[0.354108] EDD信息不可用。
[0.536267]输入:AT Translated Set 2键盘为/ devices / platform / i8042 / serio0 / input / input2
[0.537862] md:在自动检测之前,等待所有设备可用
[0.538979] md:如果您不使用raid,请使用raid = noautodetect
[0.539969] md:自动检测RAID阵列。
[0.540699] md:已扫描0,并添加了0个设备。
[0.541565] md:自动运行...
[0.542093] md:...自动运行完成。
[0.542723] VFS:无法打开根设备“ sda1”或未知块(0,0):错误-6
[0.543731]请附加正确的“ root =”引导选项;这是可用的分区:
[0.545011]内核崩溃-不同步:VFS:无法在未知块(0,0)上安装根fs
[0.546199] CPU:0 PID:1 Comm:swapper / 0未污染3.19.0-39-generic#44〜14.04.1-Ubuntu
[0.547579]硬件名称:Google Google,BIOS Google 01/01/2011
[0.548728] ffffea00008ae140 ffff880024ee7db8 ffffffff817af92b … 我试图了解arch/arm启动时的内核内存预留.
有一个调用paging_init()用于设置页表,初始化区域内存映射等setup_arch().它还zero page在分配实际值之前分配一个mem_map.
void __init paging_init(const struct machine_desc *mdesc)
{
void *zero_page;
---
zero_page = early_alloc(PAGE_SIZE);
---
empty_zero_page = virt_to_page(zero_page);
__flush_dcache_page(NULL, empty_zero_page);
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这个角色zero page吗?
这个问题的一部分,这个.
重新启动主机时,我希望我的Docker引擎在启动时启动。
这可能吗?谁能指出我正确的方向?
我的操作系统是RHEL 7.3,/ usr / lib / systemd / system / docker.service文件如下所示:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target firewalld.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using …Run Code Online (Sandbox Code Playgroud) boot ×10
assembly ×2
kernel ×2
linux-kernel ×2
android ×1
arm ×1
aws-opsworks ×1
bash ×1
bios ×1
bootloader ×1
c ×1
c++ ×1
centos ×1
chef-infra ×1
disk ×1
docker ×1
filesystems ×1
init ×1
ios ×1
networking ×1
systemd ×1
x86 ×1
xcode6 ×1