问题标签 [grub]
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.
framebuffer - grub2、grub-mkrescue、bios、vbe 帧缓冲区、自定义内核
是时候在这里问我的第一个问题了。
在过去的某个时候,我曾经使用 GRUB2 让我的内核 Just Work (TM);它仍然适用于 GRUB Legacy,但我想要 [VBE] 帧缓冲区图形。
我注意到的第一个问题是
grub-mkrescue -o cd.iso cdimg/
构建虚假的、无法启动的图像。如果我将内核复制到图像源目录的根目录并将其命名为 efi.img(否则,xorriso 由于缺少 efi.img 而失败),我尝试过的最新版本会构建一个正常的文本模式图像。
我想这里真正的问题是 GRUB2 是否应该与非 EFI 系统一起工作?:( 据我所知,我的帧缓冲区初始化和用白色填充屏幕与之前用于使用某些早期版本的 GRUB2 的代码完全相同。
提前致谢,
文杜
PS FWIW,操作系统项目位于https://github.com/vendu/OS-Zero/
PPS 我希望这不是太模糊...... :)
framebuffer - GRUB2 + VESA BIOS 扩展/VBE 坏了?
虽然我之前确实解决了构建正确引导映像的问题,但在一天的大部分时间里,我一直在努力解决另一个与 GRUB2 相关的问题。
问题是,即使我在多重引导标头中设置了视频信息请求位,GRUB2 也不会返回正确的 VESA BIOS 扩展 (VBE) 信息。
内核是我自己的工作,值得注意的是它曾经与一些早期版本的 GRUB2 一起工作(TM)(我可以用白色像素填充屏幕,没问题)。
这是我当前的 grub.cfg:
这是我用来构建启动映像的脚本:
assembly - 为什么 GRUB2 不直接加载 diskboot.img 到地址 0x8000?
我正在研究 GRUB2 的源代码,并试图理解为什么 boot.S 中的代码首先将 diskboot.img(core.img 的第一个扇区)加载到地址 0x70000,然后使用 copy_buffer 将其复制到 0x8000 并跳转到继续执行。为什么不直接将图像加载到0x8000?
#define GRUB_BOOT_MACHINE_BUFFER_SEG 0x7000 有一条评论:“磁盘缓冲区必须为 32K 长,并且不能跨越 64K 边界。” 但第一个扇区只占 512 字节。
linux - 以编程方式编辑 grub 选项
我想以编程方式选择将在当前操作系统重启后运行的下一个操作系统。例如我有这些操作系统:
我现在在linux中,我想在重启后运行windows。我必须修改什么文件?
assembly - 使用 grub 引导汇编编写的内核
我知道,对于这么小的简单内核,我实际上不需要使用 GRUB 启动它,但我正在尝试在我的内核变大并且需要启动它之前学习如何做到这一点。我使用 OSDev.org 上的实模式汇编教程编写了一个带有汇编的简单内核。我试图启动它,但 GRUB 给了我一个错误,即它找不到多启动标头。我查看了 C Bare Bones 教程的汇编代码。我是否只需将所有内容都放在 .multiboot 部分中?你能告诉我如何启动这段代码吗?(这段代码不是我创造的,我把代码留在家里的机器上,现在在学校,我只是从 OSDev 借来这段代码,所以请不要给我任何刻薄的评论说我偷了别人的代码。)
我可以使用 BIOS 启动和打印还是使用堆栈?
先感谢您。
grub - 启动内核时读取 grub.conf 的源代码
我想查看读取 grub.conf 的代码,谷歌搜索但未找到。从下面的链接我了解到 /boot/grub/stage2 读取 grub.conf,这是一个二进制文件。 http://docs.oracle.com/cd/E37670_01/E41138/html/ch04s02.html
Stage 2 Stage 2 代码读取 /boot/grub/grub.conf 以确定如何加载内核。第 2 阶段代码存储在文件 /boot/grub/stage2 中:
ls -al /boot/grub/stage2
-rw-r--r--。1 根 125976 2012 年 6 月 28 日 /boot/grub/stage2
任何我能找到的想法。谢谢
makefile - grub_script.yy.c:2354:13:错误:“yy_fatal_error”已定义但未使用
构建最新的 grub2 (2.00) 时出现此错误。
我尝试添加-Wno-unused-function
到HOST_CFLAGS
,HOST_CPPFLAGS
和. 我什至尝试在运行时删除该功能!TARGET_CPPFLAGS
TARGET_CFLAGS
Makefile
make
不幸的是,错误仍然存在。
linux - 如何使用 grub2-extra-lua 模块
我用谷歌搜索了 grub2-lua,但发现它的信息很少。我找不到 grub2-lua 的官方网站(即官方源代码 tarball 下载链接),除了一个 git clone 链接。
此外,我找不到任何关于 grub lua 的文档。所以我不知道如何使用它。
我设法将 grub2 和 lua 模块一起编译,然后我启动到 grub 并键入“help lua”以尝试获取一些帮助信息。但它只是说我可以使用命令“lua script_file.lua”来执行 lua 脚本。所以我只想了解如何使用lua模块的细节。例如,如何执行 grub.cfg 文件中的 lua 命令,如何将 lua 执行结果返回到 grub.cfg 文件,grub 为 lua 模块提供了哪些 API。
我之所以使用lua模块,是因为我需要在grub中进行文件系统操作(即mv、cp、cd、pwd、mkdir、rm、nano命令)。grub2 本身不提供此功能。一些帖子说 grub-extra-lua 模块可能提供此功能。
所以我只想知道如何使用grub lua模块对文件和目录进行操作。
grub - nixos 引导加载程序额外的条目格式?
Nixos 在手册中有一个配置选项,用于在 grub 菜单“boot.loader.grub.extraEntries”中指定额外的条目,但我不知道如何让它在同一个硬盘上使用它自己的第二个 linux 安装工作蛴螬。
更多细节:我安装了 ubuntu 并从 /dev/sda2 引导,其中 /dev/sda1 格式化为 FAT。我将 /dev/sda1 重新格式化为 ext4 并成功安装了 nixos,并为它的 grub 指定了 /dev/sda。它启动正常,但不显示 ubuntu 安装。我希望能够将 ubuntu 指定为来自 nixos grub 的菜单项,我相信我应该能够通过使用配置选项 boot.loader.grub.extraEntries 来做到这一点,但我无法弄清楚我到底需要什么放入该条目以使其工作。谁能给我一些指示?
shared-libraries - 具有共享库支持的 Grub 引导加载程序
我想在引导阶段使用 grub 引导加载程序加载一个共享库(闭源二进制用户空间库)。有没有这样的机会,或者我必须编写一个自定义elf-loader(grub模块)来做到这一点?
- 2014 年 8 月 29 日:有关更多详细信息,这是一个编程问题,我想在其中自定义或向 Grub 引导加载程序项目添加一些新功能。谢谢大家的支持!