2

我正在尝试修改 Mint 13(ubuntu 衍生)的 initrd。主要思想是让我正在制作的程序由本地顶级脚本运行。也就是说 - 当内核启动并加载 initrd 时,我的程序必须在该 initrd 中并在从 ram 中卸载 initrd 之前运行。基本上我想显示窗口并使用一些 ncurses lib 函数,但我得到一个错误。我当然已经在我的 initrd 文件中包含了这个库。我得到的错误是:打开终端时出错:linux。

也许这里有人对如何解决这个问题有想法?

4

1 回答 1

4

那还不够。Ncurses 有很多终端文件,它们可能在 /etc/terminfo 中。实际的终端类型总是存储在 TERM 环境变量中,这可能是你的“linux”。这种结构的目标是使 ncurses 应用程序兼容,或者至少可以在任何地方使用。例如,一个 wyse 终端(来自上古时代的古老终端)具有完全不同的控制序列,如 linux 或 freebsd 控制台。

仅复制库是不够的,您还需要复制/etc/terminfo/l/linux

也许可能需要更多文件,您可以使用 strace 命令进行测试(如果您无法解释其输出,谷歌是您的朋友,或者我们正在等待您的下一个问题)。语法:

strace -s 200 -f -o sux.txt ./theCommandToTest

它将 ./theCommandToTest 的内核调用日志转储到 sux.txt 文本文件中。

无论如何,要测试这个东西,最好的解决方案是在命令 shell 中启动 linux(fe 使用 init=/bin/bash 启动选项,或者从本地顶部调用简单的 bash)。因此,您将能够运行这个 strace,并使用它来找出可能还需要什么。

祝你好运!

于 2013-12-12T20:32:04.583 回答