问题标签 [grub2]

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.

0 投票
1 回答
129 浏览

linux - 在 Linux 启动时,我多久可以将数据发送到串行端口?

我有一个外部串行外围设备,需要在 Linux 启动时在嵌入式系统上进行设置。我需要的是在系统启动期间尽早发送一个简短的配置字符串,所以我的程序很简单

  • 将端口设置为 115200 bps
  • 发送一个字符串,例如 "ABCDE\r\n"

我看到最近的内核支持早期的串行控制台,但我需要的不是控制台(我的外围设备也可以在那个阶段发送无意义的数据,另外我将在图形模式下显示启动画面),只是一个快速外围设备的初始化。

怎么做到呢?

0 投票
1 回答
360 浏览

grub - 创建一个自动检测 EFI 系统并启动第一个系统的 grub 脚本

我正在开发一个旨在部署裸机基础设施的开源项目bluebanquise,现在我们支持 RHEL/CentOS 8 发行版,我希望添加其他 RHEL 衍生发行版(Rocky Linux、Oracle Linux、Cloud Linux 等),将来还会有其他非 RHEL 发行版(Ubuntu、OpenSuse 等)。

默认情况下,在我们的基础架构上,所有服务器都默认通过 PXE 启动。DHCP 提供了一个 iPXE rom,它链接到其他 ipxe 文件等。在这个链中的某个点,如果服务器必须在磁盘上启动(所以不要在无盘中部署或启动),并且如果服务器在 EFI 中,iPXE 链到 grub2带有嵌入脚本的图像,该脚本尝试检测已安装的操作系统并启动找到的第一个操作系统。

注意:也许这不是在 EFI 中从 iPXE 引导到磁盘的最佳解决方案。但我什么也没找到。

脚本如下:grub2-efi-autofind.cfg

基本上,它会为 RedHat 或 CentOS Linux 搜索 grub.cfg 文件,如果找到则使用它们进行引导。但现在,我想让这个脚本更“通用”,这样它就可以绕过发行版名称的需要,只查找任何 /efi/*/grub.cfg 文件。

但是,我无法创建一个能够做到这一点的脚本:-(

我在此页面上找到了一个有趣的脚本,但我无法使 for 循环适应我的需要。我尝试单独使用它:

但这不会输出任何东西,除了 "( ,gpt )/efi/*/grub.cfg"

我尝试使用此页面的纯代码,它确实检测到了文件,但是在自动菜单中进行了几次迭代之后(我需要在 Detect EFI bootloaders 上按两次才能获得正确的路径)。这不是自动的。

GRUB2 文档中并没有很多与此相关的示例,我也没有在网上找到很多关于此问题的交流。

如果你们中的某个人知道从 iPXE rom 引导磁盘上的 EFI 系统的更好方法,或者如果您知道如何通过一般检测 efi 分区中的任何 grub.cfg 的方式将 search.file 替换为静态路径,我很高兴读到它!:-)

非常感谢您阅读本文,即使您没有答案。

我最好的问候

0 投票
1 回答
129 浏览

memory - GRUB 内存映射给了我奇怪的值

我正在尝试使用 grub 来获取内存映射,而不是通过 bios 路由。问题是 grub 似乎出于某种原因给了我非常奇怪的值。有人能帮忙吗?

相关代码:

这就是我解析 mmap 的方式

这是我的 mmap_entry_t 结构(不是 multiboot.h 中的那个):

这就是我所说的mm_init()

这是我在 qemu 上得到的输出:

是的,我正在推动eaxebx然后再打电话kmain。关于这里出了什么问题的任何想法?

0 投票
0 回答
24 浏览

makefile - GRUB 编译给出 2 个错误

我一直在尝试在 MacOS 上编译 GRUB,但是当我运行make它时出现错误:

有没有办法解决这个问题,或者只是我的笔记本电脑不兼容?

0 投票
1 回答
110 浏览

makefile - 在这种情况下如何用 grub 加载用户空间?

我通过教程学习用户模式。在教程中,他们通过以下代码构建内核映像:

并通过以下代码构建用户空间:

他们使用 bochs 和自定义引导加载程序,并通过以下代码加载内核和用户模式:

但是我将 grub 用于我的内核。我用 qemu 运行 iso。我也使用gas而不是nasm。

从我的 Makefile 制作 iso(就像在 osdev 教程中一样):

如何使用 grub 加载用户空间?或者我需要在内核中编写一些代码来加载用户进程?

github链接:https ://github.com/JustVic/kernel_usermode

0 投票
1 回答
117 浏览

osdev - 查找 GRUB2/Multiboot 'module' (aka initrd) 的位置

我正在开发一个操作系统,需要加载一个 INITRD(grub 命令“模块”)并且找不到关于模块加载到哪里(在 RAM 中)的信息

grub 是否有办法告诉我,或者它是固定地址还是以上都没有?任何帮助,将不胜感激

0 投票
0 回答
47 浏览

grub2 - Grub2 - 换行换行溢出文本

正如您在下面的第一张图片中看到的(请原谅我们中间),菜单选项的名称可能会溢出。我可以通过使菜单选项列表具有设定的宽度来修复溢出,但这只会减少文本(参见图 2)。

图1:溢出(我没有足够的声誉将其作为图片发布,所以这里是链接)

https://i.imgur.com/TKimgPO.png

图 2:缩略文字

https://i.imgur.com/UTph6Jb.png

如何使菜单选项溢出到新行?这可能吗?

0 投票
0 回答
58 浏览

shell - 如果使用 nohup 在后台执行脚本会卡住

我正在创建 shell 脚本来生成 grub2-mkpasswd-pbkdf2 密码,这是我的 test.sh 脚本的内容:

pbkdf_password=`echo -e "$MY_PASSWORD\n$MY_PASSWORD" | grub2-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}'`; echo "GRUB_PBKDF2_PASS=\"$pbkdf_password\"" >./grub2-password

当我使用 command: 直接执行该脚本时,它运行良好sh -x test.sh

但是当我试图在后台使用命令执行它时:nohup sh -x test.sh >test.log 2>&1 &

脚本卡在命令中:pbkdf_password=`echo -e "$MY_PASSWORD\n$MY_PASSWORD" | grub2-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}'

并且在我按“输入”之前不会继续进行,然后fg

可能是在执行上述命令时在后台调用另一个 shell 并在我按 enter 时退出它fg

有人遇到过类似的问题吗?

0 投票
0 回答
51 浏览

operating-system - 如何制作 grub UEFI ISO?

我正在制作一个使用 GRUB 启动的小型业余操作系统。到目前为止,它只能在 Legacy BIOS 系统上启动。我也希望它能够在 UEFI 机器上启动。我一直在搜索谷歌,但没有找到答案。我的操作系统是https://github.com/virajkhanna/viniux-os。我应该如何制作 GRUB UEFI 映像?

0 投票
1 回答
14 浏览

gentoo - 开机时水平线横屏

在此处输入图像描述

我正在按照 Gentoo ADMGPU将 gentoo 系统安装到我的笔记本电脑(lenvo XiaoXin)。除了使用 grub2 启动时,一切都运行良好,在屏幕上显示水平线。

使用/etc/default/grub其默认配置。如何解决这个问题呢?