如何自动登录而无需在Buildroot BusyBox init中键入root用户名或密码?

Ciro Santilli新疆棉花TRUMP BAN BAD

如果我做:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
make BR2_JLEVEL=2
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user

我必须先键入rootQEMU才能使用该外壳。

如何配置buildroot跳过它并直接登录?

在Ubuntu 16.04上测试。

Ciro Santilli新疆棉花TRUMP BAN BAD

::respawn:-/bin/sh

使用BR2_ROOTFS_OVERLAY,将来宾修改/etc/inittab为包含:

::respawn:-/bin/sh

而不是默认的表格行:

console::respawn:/sbin/getty -L console 0 vt100

您可以在构建后复制默认值inittaboutput/target/etc/inittab以修改上面的内容。

我在研究examples/inittabBusybox 1_28_3时发现了这一点,并找到了它,并对其进行了尝试,并且它起作用了,所以这是我到目前为止找到的最好的解决方案。

不要忘了前划线-,否则Ctrl + C之类的作业控制操作将无法正常工作,如下所述。

-BusyBox的init神奇地解析了前导破折号https//github.com/mirror/busybox/blob/1_28_3/init/init.c#L439并为随后的命令设置了TTY。

BusyBox还将或附加-到开头或arg[0],后者/bin/sh解释为表示登录shell,这使它可以获取一些初始化文件,例如/etc/profile另请参阅:https : //stackoverflow.com/a/42291142/895245

以下是等效的,因为console它是默认值:

console::respawn:-/bin/sh

默认情况下,要以其他用户身份登录,可以使用:

::respawn:-/bin/login -f user0

这是一个示例设置

先前的答案: getty -l

将近两年后,我找到了它!:-)

使用BR2_ROOTFS_OVERLAY,覆盖/创建以下文件:

/ etc / inittab:从https://github.com/buildroot/buildroot/blob/2018.02/package/busybox/inittab开始,并将控制台行编辑为:

console::respawn:/sbin/getty -n -L -l /loginroot.sh console 0 vt100

/loginroot.sh:

#!/bin/sh
exec /bin/login root

/bin/login是默认可执行文件(如果-l未提供)。我们创建了一个可执行文件/bin/login并使用root指定用户进行调用的操作

这使得init尝试默认情况下以root用户身份登录,然后由于默认密码为空(BR2_TARGET_GENERIC_ROOT_PASSWD),因此它将自动登录。

该技术基本上重新实现了-a <user>Ubuntu 14.04中存在选项getty,而BusyBox的实现则没有选项

然后,要以其他用户身份登录,只需运行:

/bin/login

这是一个示例设置

先前的先前答案: console::respawn:/bin/sh

我已在邮件列表中询问,托马斯·佩塔佐尼(Thomas Petazzoni)回答说:

/etc/inittab

应包含:

console::respawn:/bin/sh

代替:

console::respawn:/sbin/getty -n -L  console 0 vt100 # GENERIC_SERIAL

使用qemu_x86_defconfig由于导致inittabBusybox的init系统正在使用BR2_INIT_BUSYBOX=y

但是,此方法确实有一个缺点:登录后,消息显示:

/bin/sh can't access tty; job control turned off

并且如广告所示,类似的东西Ctrl+C将无效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查busybox版本(从busybox)?

如何将busybox设置为用户的登录shell?

如何使用python在弹出窗口中键入用户名

AWS Cognito登录用户而无需来自服务器的用户名和密码

Rails自动登录用户而无需登录页面

登录Windows 8帐户,无需键入用户名

如何执行我自己的身份验证(检查用户键入的用户名和密码)

我如何经过BusyBox?

如何自动将两种不同类型的用户登录到不同的活动而无需再次登录?

如何创建到帐户的直接链接以使用auth0直接登录而无需用户名和密码

如何设置用户名/密码mosquitto?

如何使用不具有root特权的PAM验证用户名/密码

如何发布数据用户名密码进行登录

如何自动登录(不输入用户名和密码)(文本模式)

Firefox:如何自动完成密码而不是用户名

如何禁用保存的用户名/密码自动填充

如何删除html自动填充用户名和密码?

Busybox-如何删除busybox容器的循环创建

Buildroot busybox受限命令集

登录系统,输入用户名和密码后登录

从Angular将密码和用户名发送到IdentityServer,而无需重定向

用户名显示为root而不是登录用户?

SSH over Socks代理,无需用户名或密码

我的登录用户名和密码是什么?

什么是Grafana登录页面默认的用户名和密码?

ssh登录和git pull询问用户名/密码

登录失败:未知的用户名或错误的密码-服务凭据

登录时QuickFixJ Initiator设置用户名和密码

使用帐户,用户名,密码登录到AWS Console