grub相关内容
阅读完这个这个问题后,这是主要的答案,我在内核上运行 readelf,并注意到我的 .text 部分位于 0x00101000 而不是 0x00100000.我还注意到上面的一个部分读取了 .not.gnu.build-i ,它位于 .text 部分应该在的位置.有没有办法让我的 .text 部分位于正确的位置?我已经用align 4设置为1M. 解决方案 问题在于 LD(或 LD via
..
阅读此此问题,它是主要答案,我在内核上运行 readelf,注意到我的 .text 部分在 0x00101000 而不是 0x00100000.我还注意到上面的部分显示为.not.gnu.build-i,该位置应该位于.text部分.有没有一种方法可以使我的.text节放置在正确的位置?我已经使用 align 4 将其设置为1M. 解决方案 问题是 LD (或 LD 通过 GCC )自动在
..
我正在使用Windows 8.1和Ubuntu双重启动笔记本电脑,我想删除Ubuntu,因此我在磁盘管理中删除了这些驱动器,还恢复了USB上的Windows.当我重新启动时,我得到了最小的bash支持,例如行编辑和提示grub.我希望我的Windows 8.1回来,有人可以帮我吗? 解决方案 此答案适用于那些使用UEFI且在删除grub之前已删除Ubuntu分区的人 您将在Windo
..
我正在开发一个简单的Grub模块,它将在启动过程的早期阶段启用一些其他视频设置/初始化.我实际的最佳想法是为该任务使用一些VESA调用. 不幸的是,最近我发现Grub无法提供实模式调用. 但是GRUB可以执行非常复杂的操作,如果没有BIOS的帮助,这可能是无法想象的. 怎么可能?我怎么能从the叫BIOS? 解决方案 据我所知,grub使用功能
..
为了从闪存驱动器启动,我们在实模式下使用BIOS中断13h加载磁盘,并指定了磁盘0x80.如 我正在尝试制作简单的GRUB . 我的第一步是从闪存驱动器启动(将MBR加载到0x7C00并打印一条消息,作为正确启动的证明)并读取我的主HDD(我假设它的编号为0x81,并且前15个扇区需要重新启动)再次进入0x7C00. 我想这个天真的主意应该让我进入主硬盘的引导加载程序,但这不是预期的.
..
我一直在研究玩具OS,并一直使用grub作为引导加载程序.最近,当尝试使用VGA时,我发现我无法使用硬件中断.我发现这是因为我被grub误入了保护模式. 有人知道如何在不摆脱grub的情况下回到实模式吗? 解决方案 您的意思是writeport(value,$ 3c9)? >mov 03c9,AH >out value,AL 或类似intel asm(NASM) 3c
..
我想知道如何从ubuntu的源代码构建grub 2引导程序,并使用qemu模拟器对其进行测试. 我还想在新版本中更改grub2引导程序的默认背景图像吗? 这可能吗?如果是,怎么办? 解决方案 当然可以. 如 GRUB网站所示,grub源代码可从git.savannah.gnu.org通过git获得. 那么从理论上讲这只是一个问题 $ ./autogen.sh
..
我想在启动阶段使用grub boot-loader加载共享库(源代码二进制用户空间库).有什么机会吗,或者我必须编写一个custom-elf-loader(grub模块)来做到这一点? 2014年8月29日:有关更多详细信息,这是我遇到的一个编程问题 想要自定义或向Grub引导加载程序添加一些新功能 项目.谢谢您的全力支持! 解决方案 因此,您并不确定要做什么,但是: 无法将用
..
我想用GRUB2引导自定义内核(非多重引导),我读到我需要这样的grub.cfg: menuentry "custom kernel" { set root=(hd0,0) chainloader +1 } 所以,我有一些问题: grub如何检测内核? (对于多重引导规范,我使用了kernel /boot/kernel.bin) 我的内核看起来如何(对不起我的英语
..
我最近开始着迷于内核开发,并从OSDev Wiki上的基础知识教程开始.在实现Hello World示例之后,我继续进行并开始尝试创建Global Descriptor Table.我从网上的各种来源整理了一些GDT的代码,但最终都失败了.我在执行此操作时是否有问题,如果还不能立即弄清楚,是否有任何来源可以提供更多信息? 简而言之,以下带有GDT的内核实现无法使用GRUB加载.我正在使用gcc和
..
我遇到了Grub 2(和QEMU的-kernel)无法在内核中检测到Multiboot v1标头的问题.我在.text之前的单独部分中具有标题. linker.ld: SECTIONS { . = 1M; .multiboot ALIGN(4K) : { *(.multiboot) } .text ALIGN(4K) :
..
我想问的是,是GRUB在引导过程中将CPU切换到保护模式还是Linux内核做到了这一点.我还要问-内核本身(vmlinuz)是ELF还是纯二进制格式?谢谢. 解决方案 GRUB 确实将您置于保护模式. GRUB Multiboot规范(0.6.96版) 3.2节告诉您这一点 "CR0" 位31(PG)必须清除.必须设置位0(PE).其他位均未定义. CR0寄存器映射
..
我想开始编写一个os内核,然后,我发现一个文档引入multboot2规范。 有三个示例代码文件,名为 boot.S , kernel.c 和 multiboot2.h ,属于分支中的 multiboot2 分支首先,我试着用一些选项(使用i686-elf-gcc)来编译和链接代码,比如 $ c> -nostartfiles , -nodefaultlibs 和 -freestanding ,
..
似乎有关使用这两个一起的信息不容易得到。当试图让我得到一些有趣的错误。我想知道我的版本的gcc(4.7)不会削减它,或者我缺乏依赖。 我包括... GCC GNU Make GNU Bison GNU gettext GNU binutils Flex $ b Cygwin x86中出现的错误 - 可能与GCC 4.7相关? /grub-2.00/grub
..
我已经写了尝试两个字符写入到帧缓冲简单的内核。 如果我在内核中定义一个字符串,我得到以下输出在引导时: 引导“OS”内核/boot/kernel.elf错误13:无效或不支持的可执行格式preSS任意键继续...... 否则,如果我定义了两个角色我得到以下(注意'AB'在输出的开始): abBooting'操作系统'内核/boot/kernel.elf [多重精灵,< 0x10
..
我学习了位操作系统的发展从 OSDev.org 。我有一个内核和我试图用QEMU GRUB遗产(0.97)来引导。然而,当我键入内核200 + 9 ,我得到的消息 [多引导小精灵,< 0x100000处:0x80的:0x4008>(坏),入境= 0x10000c] 这是我所期望的除外(坏)的一部分。如果键入启动现在GRUB只是挂起。 我觉得数字的0x100000,0x44进行,
..
我想知道是否有什么办法让我写一个C程序更改了GRUB的变量的值。 我需要编写一个程序,可以重新启动我的计算机上的其他操作系统,例如: 我在SUSE的disk1 程序更改GRUB的变量,并自动重启。 我在SUSE磁盘2 我想访问变量一样:标题,根,内核的initrd。但是,如果没有编辑了/boot/grub/menu.lst或grub.conf文件。 是否有GRUB的AP
..