问题标签 [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.
python - 是否有 python grub.cfg 解析器?
有谁知道用于 grub2 的 grub.cfg 文件的 python 解析器?
我正在尝试通过设备分区(根)获取“菜单项”,例如
等等
解决方案:
[('Ubuntu, with Linux 3.0.0-15-generic', '(hd0,msdos1)'), ('Ubuntu, with Linux 3.0.0-15-generic (恢复模式)', '(hd0,msdos1) '), ('Ubuntu, with Linux 3.0.0-14-generic', '(hd0,msdos1)'), ('Ubuntu, with Linux 3.0.0-14-generic (恢复模式)', '(hd0, msdos1)'), ('Ubuntu, with Linux 3.0.0-13-generic', '(hd0,msdos1)'), ('Ubuntu, with Linux 3.0.0-13-generic (恢复模式)', '( hd0,msdos1)'), ('Ubuntu, with Linux 3.0.0-12-generic', '(hd0,msdos1)'), ('Ubuntu, with Linux 3.0.0-12-generic (恢复模式)', '(hd0,msdos1)'), ('内存测试 (memtest86+)', '(hd0,msdos1)'), ('内存测试 (memtest86+, 串行控制台 115200)', '(hd0,msdos1)'), ( 'Windows 7(在 /dev/sdc1 上)', '(hd2,msdos1)')]
bootloader - grub stage1.5 代码在磁盘中的什么位置?
我正在尝试编写一个将加载 GRUB stage1.5 的 stage1 引导加载程序。那么它的代码到底在哪里呢?我怎么知道它有多大(所以我知道我需要读取多少字节)?
linux - GRUB 阶段 1.5 的代码驻留在磁盘的什么位置,加载的地址是什么?
我已经grub v1.98安装并在反汇编 MBR 后发现以下我不理解的代码片段:
这段代码似乎试图设置 1.5 阶段代码的磁盘地址,然后加载并运行它。但是,我怎样才能确定它试图读取哪个物理块?更何况,stage 1.5 代码的目的地是什么?0x7000?
我指的是 Windows 7 的 MBR,其中加载了后续启动代码0x7c00。给定 MBR 首先在 address 加载0x7c00,它包含一段将 MBR 复制0x7c00到的代码0x0600,然后分支到0x0600,以防原始代码损坏。加载阶段 1.5 的代码会0x7000与原始代码冲突吗?更重要的是,我还发现:
在 MBR 的开头。除了第一条指令外,代码似乎试图做与 Windows 7 的 MBR 相同的事情,将原始 MBR 从复制0x7c00到。这些代码实际上会执行吗?如果是,什么时候控制跳转到这里。(我相信答案是肯定的,但被领先者弄糊涂了)。0x0600jmpjmp
kernel - Brans 内核开发:Grub Multiboot 头文件?
我正在关注 Bran 的内核开发教程。在他的汇编代码中,他有以下代码块,他将其描述为不是那么重要,但与 GRUB 相关。
我仍然想知道这段代码在做什么?有人可以给我或指出我在哪里可以找到关于此的描述。二、为什么这段代码需要4字节对齐?这是出于效率原因还是在 GRUB 的上下文中具有某些特殊意义?
debugging - 如何调试引导加载程序?
我使用 gdb 调试了小程序。
我有 GRUB 的源代码。GRUB 的第二阶段是用 C 编写的。我可以使用 gdb 调试它吗?
是否可以调试引导加载程序?如果是,那么如何?
ubuntu - 安装 ubuntu 时出现 Grub 问题
我安装了ubuntu,但是当我重新启动我的机器时它显示:
我尝试从 live cd 运行引导修复,这里是它的转储:http: //paste.ubuntu.com/1411870/
让我知道是否有人以前这样做过
centos - centos 6.2 grub 失败,黑屏,光标闪烁,但在手动输入引导命令行时工作
在 $work,我们有一个 CentOS 6.2 的自定义安装(一个预先准备好的图像,带有一组减少的软件包)。
正常的 CentOS 6.2 安装工作正常。
自定义的启动失败如下:
- grub 启动并显示定义的引导选项
- 如果我们让它继续并尝试启动,它会给出“带有闪烁光标的黑屏”,这是找不到内核的症状
- 如果我们进入 grub 命令行并手动输入与从 grub.conf 加载的 grub 完全相同的引导命令,机器就会成功引导。
我的 google-foo 在这里失败了,有人有建议或解决方案吗?
assembly - 简单内核无法在 GRUB 中启动
我正在从OSDev.org学习一点操作系统开发。我有一个内核,我正在尝试使用 qemu 在 GRUB Legacy (0.97) 中启动。但是,当我输入时kernel 200+9,我会收到消息
这是我所期望的,除了(坏的)部分。如果我boot现在输入 GRUB 就会挂起。
我认为数字 0x100000、0x44、0x4008 分别代表 .text 段起始地址、.bss 起始地址和 .bss 段大小。我认为这是因为objdump -h在内核映像上运行会给出以下输出:
所以你可以看到我提到的数字几乎匹配。问题是 .bss 的开头不是 100044,而是 44。我认为这就是 GRUB 说不好的原因。我的内存(内存不足)中不能有低于 1 MB 的部分。但是 objdump 告诉我我的部分高于该阈值,所以我不知道出了什么问题。无论如何,我将在下面粘贴我的代码,它相对较短。尽管如果您以前做过操作系统开发,我的问题可能是非常基本的,所以代码可能是无关的。
.
以下是我的自定义链接器脚本:
最后,我使用以下几行构建内核:
其中 stage1 和 stage2 是来自 GRUB Legacy 的文件,而 pad 是任何 750 字节的文件(因此 stage1+stage2+pad 的文件大小为 102400 字节或 200 个块,这就是我使用内核 200+9 启动的原因)。
最后,我在 qemu 中运行内核:
file - 使用 grub 编辑文件
我在 rc.local 引导文件中犯了一个非常严重的错误。我在这个文件的列表中添加了一个带有无限循环的进程,这样我的 arch linux 发行版就不能完全启动,因为这个进程会阻止进一步的启动过程。
有没有办法在 grub 中编辑这个 rc.local 文件,以便我可以删除这个过程?
linux - 快速测试 Linux 内核
我想学习 linux 内核编程,所以我从 www.kernel.org 下载了 Linux kernel 3.7.6 源代码。然而,在编辑任何东西之前,我尝试使用在线教程对其进行编译。
编译需要很多时间,make我还没有完全完成。有什么快速的方法可以更改源代码并进行测试吗?因为我读过内核编译大约需要一个小时。
另外,是否可以在 USB 驱动器上复制和测试修改后的内核?是否可以在 USB 驱动器上安装 GRUB,在 USB 上复制内核,在 USB 上配置 GRUB 然后运行它?如果是这样,请给我任何具有相同步骤的资源。我的笔记本电脑上也安装了 GRUB。如何在 USB 上设置新的 GRUB 而不会干扰笔记本电脑上的配置?
谢谢.. :)