我正在开发一个带有 i.MX6 DL、Yocto Pyro 和内核 4.14.16 的定制板,并试图弄清楚如何添加新用户。我已经尝试过这里提供的建议: How to add an user and re set the root user in yocto? 无济于事。我还尝试按原样运行演示 useradd-example.bb 菜谱(位于菜谱骨架层),但这也不起作用。
它可以编译,我可以构建一个图像,但是当我尝试以任何新用户身份登录时,我登录不正确。如果我以 root 身份登录,则在 /home/ 目录中看不到任何文件夹(我已将根主文件夹移动到 /root)。我猜想是少了点什么。
这是我正在使用的食谱:
SUMMARY = "Add the user accounts that the production printer will need."
LICENSE = "CLOSED"
#inherit extrausers
#
#EXTRA_USERS_PARAMS = "\
# useradd -P Z2tQc0Ewto0c. mi_printer; \
# usermod -P Z2tQc0Ewto0c. root;"
#SUMMARY = "Example recipe for using inherit useradd"
#DESCRIPTION = "This recipe serves as an example for using …Run Code Online (Sandbox Code Playgroud) 我正在运行由 Yocto Zeus 构建的 Linux 内核 4.14.149,并且正在运行 2019.07 U-boot。根据我们安全团队的建议,我正在尝试摆脱 Linux 控制台。我不担心调试(一旦我让它工作无论如何);我们还有其他方法将系统日志从机器中取出,而这不会在软件开发板上完成。该机制已经到位,并且已经过测试工作。我们有一个 i.MX6 作为我们的核心(这是一个嵌入式系统),并且我们在开发板上的控制台有专用的 UART5。
我尝试了几种不同的方法来做到这一点。第一个是禁用帧缓冲区控制台内核配置 ( CONFIG_FRAMEBUFFER_CONSOLE)。这种方法的主要问题是它禁用了启动屏幕。我们在 U-boot 中出现了一个闪屏(并且由 Linux 再次显示),但是 Linux 在启动时似乎重置了帧缓冲区或其他内容,导致显示闪烁并在我们启动之前暂时空白。应用程序启动,这是不可接受的(这也是我们在 U-boot 和 Linux 中放置启动屏幕的原因)。
我还尝试在命令行上设置“console=”。这接近我们想要实现的目标,因为控制台不再从 UART 输出,但我们看到它开始出现在启动屏幕顶部的显示屏上。我还没有找到任何方法来解决这个问题(如果需要,我可以上传屏幕截图)。
仅仅完全消除控制台参数似乎不起作用,它仍然来自 UART。根据串行控制台文档,这是可以预料的,该文档表示它只使用第一个可用的设备。
我尝试在 Linux 源代码的 main.c 中注释掉控制台初始化,它很快就爆炸了。
我尝试设置为网络控制台(请参阅在嵌入式系统上将内核控制台发送到哪里?),但启动屏幕仍然被覆盖,与设置为无情况相同。
我尝试的最后一件事就是将其设置为虚假设备(Linux 命令行上的“console=ttymxc9”)。虽然这似乎有效(显示器或 UART 上没有数据),但它似乎在启动过程中停止(崩溃?)并且无法获取日志(它在我们的应用程序服务运行之前停止)。我说停止是因为我们为 Linux 配置了心跳,并且我们仍然获得正确的 LED 心跳行为。然而,我添加到我们的构建中的 systemd 服务似乎都没有运行(我添加了一个服务,用于在启动后将 Journalctl 日志文件保存到外部 SD 卡上的文件中,以进行调试,直到我开始工作为止)
至此,我已经没有关于如何摆脱控制台同时保持闪屏完整的想法了。禁用 Linux 控制台的正确方法是什么?