Buildroot BusyBox init에 루트 사용자 이름이나 비밀번호를 입력하지 않고 자동으로 로그인하는 방법은 무엇입니까?

Buildroot BusyBox init에 루트 사용자 이름이나 비밀번호를 입력하지 않고 자동으로 로그인하는 방법은 무엇입니까?

만약 내가한다면:

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

root쉘을 사용하려면 먼저 QEMU를 입력해야 합니다 .

buildroot를 건너뛰고 직접 로그인하도록 어떻게 구성합니까?

우분투 16.04에서 테스트되었습니다.

답변1

::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로그인 셸을 나타내는 것으로 해석되며, 이를 통해 일부 초기화 파일을 가져올 수 있습니다 /etc/profile. 또한 다음을 살펴보세요.https://stackoverflow.com/a/42291142/895245

console이것이 기본값이므로 다음은 동일합니다.

console::respawn:-/bin/sh

기본적으로 다른 사용자로 로그인하려면 다음을 사용할 수 있습니다.

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

여기 하나 있어요예시 설정.

이전 답변:getty -l

거의 2년여만에 드디어 찾았네요! :-)

를 사용하여 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기본적으로 루트로 로그인이 시도되고, BR2_TARGET_GENERIC_ROOT_PASSWD기본 비밀번호가 비어 있으므로 자동으로 로그인됩니다( ).

이 기술은 기본적으로 Ubuntu 14.04에 존재 하지만 BusyBox의 구현에는 없는 -a <user>옵션을 다시 구현합니다.getty

그런 다음 다른 사용자로 로그인하려면 다음을 실행하세요.

/bin/login

이것은예시 설정.

이전 답변:console::respawn:/bin/sh

나는 가지고있다메일링 리스트에 물어보세요토마스 페타조니는 이렇게 대답했습니다.

/etc/inittab

다음을 포함해야 합니다:

console::respawn:/bin/sh

바꾸다:

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

이후 qemu_x86_defconfigBusybox 시스템 inittabinit사용하고 있습니다 BR2_INIT_BUSYBOX=y.

그러나 이 접근 방식에는 한 가지 단점이 있습니다. 로그인 후 메시지는 다음과 같습니다.

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

광고한 대로, 이와 같은 것은 Ctrl+C아무런 변화를 가져오지 않습니다.

관련 정보