问题标签 [boot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boot - 启动后的寄存器状态
我正在 x86 机器上开发引导加载程序。
当 BIOS 将 MBR 的内容复制到 0x7c00 并跳转到该地址时,寄存器的内容是否有标准含义?寄存器有标准值吗?
我知道段寄存器通常设置为 0,但有时会设置为 0x7c0。其他硬件寄存器呢?
boot - 如何保留低内存(操作系统前)?
背景:在我的操作系统启动之前,我需要保留低于 0xA0000 的内存量。为此,我更改了0040:0013(或 0x413)字,这是 KiB 中可用的低内存量。
但是,Windows 和其他操作系统使用E820h/INT15h来查询内存布局,并且某些 BIOS:es 不会反映 E820h/INT15h BIOS 功能的 0x413 更改。因此,如果需要,我还必须挂钩 E820h 功能。
问题:在操作系统之前是否有另一种(更可靠的)方法来保留低内存?或任何其他改变 E820h/INT15h 结果的方法,而不是挂钩 INT15h(也许通过戳 EBDA?)
perl - 我如何知道系统是否已启动?
我正在编写一个通过网络启动系统的脚本。然后我需要在另一台主机上运行一些命令。如何知道系统是否已开机?
我的编程语言是 Perl,目标主机是 RHEL5。
是否有任何内核中断或网络引导信息表明系统已开机且操作系统已加载?
[在不同的情况下] 我也想知道如果我只是手动打开我的机器。确切地说是什么时候通电。以及操作系统应该何时完全启动以进行网络相关操作,例如在那里执行网络命令。如果系统在 DHCP 上怎么办,那么远程系统将如何搜索这台机器 [我猜这可能通过 mac 地址。但如果我错了]。
如果我错过了任何信息,请随时问我。如果您有任何建议可以使任务更轻松,请提出:)
谢谢伊姆金
linux - 设置快速启动 Linux 的最佳/简单方法
希望这仍然属于 StackOverflow 的保护范围!
我正在为我的妻子创建一个快速启动的 linux 笔记本电脑。它真正需要的只是能够浏览互联网(使用 Flash 和视频等)。
是否有为此而制作的发行版,或者那里有任何指南可以显示加快速度的好方法?我读过我应该“从内核中删除我不使用的东西”,但这有点超出我的技能范围。
谢谢!
accessibility - 视障人士如何处理启动失败和其他低级环境
我知道屏幕阅读器和类似软件的存在是为了帮助盲人和视障者在 Windows 或其他操作系统中使用计算机。
我很好奇在 OS 安装程序和 BIOS 设置等较低级别的环境中提供哪些支持。
solaris - 如何将 OpenSolaris x86 引导到单用户模式?
现代 OpenSolaris 配置为在正常引导期间不允许 root 登录。只有在单用户模式下才有可能。然而,网上的许多指令只是简单地说在默认的 grub 引导参数的末尾添加“-s”,这使得图形引导进度显示处于无限循环中,并且永远不会进入单用户模式控制台。
vxworks - 如何从 Workbench 构建 PXE 可引导引导加载程序?
我正在尝试构建一个可从 Workbench 进行 PXE 引导的 VxWorks 引导加载程序,但没有任何成功。这是我的环境的一个破败:
- VxWorks 6.6 + 最新补丁
- Workbench 3.0 + 最新补丁
- 蒙特维纳 BSP 版本 2.0/1
目标是戴尔 Precision M4400 笔记本电脑。这是我一直在做的事情,但没有成功:
VxWorks Image Project
使用配置文件在基于 Montevina BSP 的 Workbench 中创建一个新的PROFILE_BOOTAPP
。- 将以下组件添加到内核配置(否则构建失败):
-INCLUDE_TIMER_SYS
-INCLUDE_PCI_BUS
-INCLUDE_PCI_OLD_CONFIG_ROUTINES
-INCLUDE_PENTIUM_PCI
- 将
INCLUDE_PC_CONSOLE
组件添加到内核配置中以进行控制台显示(目标上没有任何串行端口) - 将构建规范设置为
default_romCompress
并添加一个名为的新构建目标vxWorks_romCompress.bin
- 构建
vxWorks_romCompress.bin
目标,这将创建相应的文件。 - 将 PXE 填充添加到文件中:
cat $WIND_BASE/vxworks-6.6/target/config/montevina/pxeBoot.bin vxWorks_romCompress.bin > vxWorks_romCompress.pxe
- 复制
vxWorks_romCompress.pxe
到我的 TFTP 服务器的适当位置,然后从我的目标执行 PXE 引导。
此时,目标成功地从 TFTP 服务器下载文件,但停在那里没有输出。控制台上没有显示任何内容。
和似乎在 Workbench 项目中设置正确(它们分别与旧 config.h 文件的设置匹配和RAM_HIGH_ADRS
)。RAM_LOW_ADRS
0x00108000
0x003080000
(请注意,Montevina BSP 确实附带了一个预构建的bootrom.pxe
引导加载程序,我已经能够成功地进行 PXE 引导。不过,我需要向引导加载程序添加几个组件,并且真的更喜欢通过Workbench 环境,而不是旧的 config.h 方法。)
我还尝试镜像 Workbench 项目的内核配置中包含的组件,以尽可能接近地匹配旧版 config.h 设置,但没有成功。这些是添加的组件(除了这些组件的任何依赖项):
INCLUDE_PLB_BUS
DRV_NVRAM_FILE
INCLUDE_GENERICPHY
DRV_INTCTLR_IOAPIC
INCLUDE_GEI825XX_VXB_END
DRV_TIMER_IA_TIMESTAMP
INCLUDE_MII_BUS
DRV_INTCTLR_MPAPIC
DRV_SIO_NS16550
INCLUDE_FEI8255X_VXB_END
DRV_TIMER_LOAPIC
INCLUDE_SIO_UTILS
VXBUS_TABLE_CONFIG
INCLUDE_INTCTLR_LIB
INCLUDE_DMA_SYS
INCLUDE_PARAM_SYS
INCLUDE_SW_FPP
所以,这就是我现在的位置。我猜问题出在上面的步骤 4-6 中,但我在文档中没有看到任何关于从 Workbench 中使引导加载程序 PXE 可引导的正确方法。
c - 无操作系统执行
如何将C程序编译为有效的ELF格式(或 RAW 格式),以便可以在没有任何操作系统的情况下直接从 RAM 执行?假设存在一个引导加载程序,它能够将代码加载到 RAM 中的任何位置并在该地址开始执行。准确地说,编译器(GCC)标志应该是什么?是否需要地图文件?
一个示例 helloworld 应用程序将是最受欢迎的 :)
只是为了详细说明我的观点,
让 main() 方法是一个空的无限 while 循环,以确保不使用特定于操作系统或标准库的调用。所需的 o/p 是一个挂起。使用通常的GCC选项,引导加载程序肯定无法加载可执行文件,告诉它是无效的ELF格式。但是,通过将-dN选项传递给链接器将使其成为有效的ELF。需要更多编译器/链接器选项才能使其挂起而不崩溃!!这些编译器选项到底是什么?
编译
gcc -c -nostdinc -fno-builtin
file.c ld -dN -nostdlib file.o
Bootloader 将a.out加载到 RAM 并执行。
windows - 选择引导操作系统的编程方式?
我正在设置一个测试平台,我正在测试跨多个 Windows 操作系统的设备连接。我无法在 VM 中执行此操作(无法虚拟化对设备的访问),因此我有一个多引导系统。我有一个脚本来自动化这个过程,但我希望它继续完成,选择下一个操作系统来启动并运行它的测试。
一个问题是 XP/2K3 使用 boot.ini 而 Vista 和更高版本使用 BCDEdit。我可以手动拥有两个脚本……每个 XP/2K3 一个来编辑 boot.ini。然后是用于 Vista 系统的 BCDEdit。不过,我讨厌必须对每一个都进行硬编码,尤其是如果我必须根据测试条件更改顺序和/或关闭某些操作系统。
BCDEdit 还使用 GUID 作为其条目,这意味着在不同的机器上进行设置意味着确定接下来要转到哪个 GUID。
有什么想法或提示吗?是否有任何实用程序可以帮助自动执行此操作?
linux - 使用 parted 将带有 parted 的设备格式化为特定模式
这确实是一个分开的使用问题,但欢迎提出其他关于如何实现这一点的想法。
我需要创建一个引导设备,设置如下:
(最多 4MB 擦除块大小 (EBS)):
通过使用 32 个扇区/磁道和 128 个磁头并使用奇数起始编号(从 1 开始计数)在 4MB 块上对齐分区
MBR:syslinux MBR 引导加载程序
分区 1: FAT16 (0x06), 32MB, 标准布局, syslinux setup + kernel
分区 4:分区 1 的副本(是的,在 part2 的前面!)
分区 2:LVM,磁盘的剩余部分