在initrd中使用ncurses(linux mint 13-默认内核)

在initrd中使用ncurses(linux mint 13-默认内核),linux,ncurses,linux-mint,initrd,Linux,Ncurses,Linux Mint,Initrd,我正试图修改Mint13(ubuntu的衍生物)的initrd。主要想法是让我正在制作的程序由本地顶级脚本运行。也就是说,当内核启动并加载initrd时,我的程序必须在initrd中运行,然后才能从ram卸载initrd。基本上我想显示窗口并使用一些ncurses lib函数,但我得到了一个错误。当然,我已经在我的initrd文件中包含了这个库。 我得到的错误是: 打开终端时出错:linux 也许这里有人有办法解决这个问题?这还不够。Ncurses有很多终端文件,它们可能位于/etc/termi

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


也许这里有人有办法解决这个问题?

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

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

也许还需要更多的文件,你可以用strace命令测试(如果你不能解释它的输出,谷歌是你的朋友,或者我们在等你的下一个问题)。语法:

strace -s 200 -f -o sux.txt ./theCommandToTest
它将把./theCommandToTest的内核调用日志转储到sux.txt文本文件中

无论如何,要测试这一点,最好的解决方案是在命令shell中引导linux(例如,使用init=/bin/bash引导选项,或者从本地顶部调用简单的bash)。因此,你将能够运行这个strace,并使用它,来发现还需要什么


祝你好运

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

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

也许还需要更多的文件,你可以用strace命令测试(如果你不能解释它的输出,谷歌是你的朋友,或者我们在等你的下一个问题)。语法:

strace -s 200 -f -o sux.txt ./theCommandToTest
它将把./theCommandToTest的内核调用日志转储到sux.txt文本文件中

无论如何,要测试这一点,最好的解决方案是在命令shell中引导linux(例如,使用init=/bin/bash引导选项,或者从本地顶部调用简单的bash)。因此,你将能够运行这个strace,并使用它,来发现还需要什么


祝你好运

你好,非常感谢你给我提供的信息。我只是尝试添加terminfo文件(我不知道旧的终端使用不同的seq)。结果是我不再得到那个错误,但我得到了一个冻结(目前本地顶级自动启动我的应用程序)。另外,这也不是完全冻结,因为我多次单击窗口应该在哪里(但显然没有显示),并收到一条消息,说明某些程序可能试图直接访问硬件设备。明天我也会尝试使用strace,这样我就可以更清楚地了解到底发生了什么。单击?在字符控制台上?这是可能的(google for:gpm console linux),但不太可能。好的,现在我可以在initramfs环境中运行ncurses应用程序,但我仍然不能使用鼠标。因此,目前我正在尝试找出如何将gpm或其他东西放入initrd并加载它。(我尝试只是复制gpm二进制文件,但它没有按预期工作,或者可能是我做错了什么)。gpm也需要一些配置。最好首先在正在运行的系统上调优gpm,并且仅作为第二步将其迁移到initrd。但是你做得很好!正如俄罗斯人(?)程序员所能做到的那样::-)我相信,您可以很快地了解这个strace(以及unix内核api)。Ncurses可以连接到鼠标,它可以在char控制台上处理gpm的鼠标点击,也可以在xterm窗口中运行,尽管我从未对其进行过编程。感谢您的帮助,我非常感谢。现在我知道如何做到这一切,但我选择了更多-我想使用图形,ncurses是不够的,我的目的。我学会了如何使用SDL——它有现成的鼠标和键盘支持。问题是-它使用/dev/fb0,我似乎无法理解它背后的概念。我可以通过将vesafb:mtrr,ywrap vga=0x319传递到内核来显示它,但我听说这是不推荐的。还使用模块文件,如/etc/modules、黑名单等。真正的问题是当我使用Xen时。我根本无法显示/deb/fb0。您好,非常感谢您向我提供的信息。我只是尝试添加terminfo文件(我不知道旧的终端使用不同的seq)。结果是我不再得到那个错误,但我得到了一个冻结(目前本地顶级自动启动我的应用程序)。另外,这也不是完全冻结,因为我多次单击窗口应该在哪里(但显然没有显示),并收到一条消息,说明某些程序可能试图直接访问硬件设备。明天我也会尝试使用strace,这样我就可以更清楚地了解到底发生了什么。单击?在字符控制台上?这是可能的(google for:gpm console linux),但不太可能。好的,现在我可以在initramfs环境中运行ncurses应用程序,但我仍然不能使用鼠标。因此,目前我正试图找出如何将gpm或其他东西放在initrd中并加载它(我只是尝试复制gpm二进制文件,但它并没有按预期或预期工作)