我正在尝试修改Mint 13(ubuntu衍生物)的initrd。主要的想法是我正在制作的程序由本地顶级脚本运行。也就是说 - 当内核启动并加载initrd时,我的程序必须在initrd中并在从ram卸载initrd之前运行。基本上我想显示windows并使用一些ncurses lib函数,但是我收到了一个错误。我已将库包含在我的initrd文件中。 我得到的错误是: 打开终端时出错:linux。
也许这里有人对如何解决这个问题有所了解?
答案 0 :(得分:4)
这还不够。 Ncurses有很多终端文件,它们可能在/ etc / terminfo中。实际的终端类型总是存储在TERM环境变量中,这可能是你的“linux”。此结构的目标是使ncurses应用程序兼容,或至少可在任何地方使用。例如,一个wyse终端(来自antediluvian时代的古代终端)具有完全不同的控制序列,如linux或freebsd控制台。
仅复制库是不够的,您还需要复制/etc/terminfo/l/linux
。
可能需要更多文件,这可以用strace命令测试(如果你不能解释它的输出,google是你的朋友,或者我们正在等你的下一个问题)。语法:
strace -s 200 -f -o sux.txt ./theCommandToTest
它会将./theCommandToTest的内核调用日志转储到sux.txt文本文件中。
无论如何,要测试这个东西,最好的解决方案是在命令shell中启动linux(例如,使用init = / bin / bash启动选项,或者从local-top调用一个简单的bash)。所以你将能够运行这个strace,并使用它,找出可能需要的东西。
祝你好运!