私がするなら:
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をスキップして直接ログインするように設定するにはどうすればよいですか?
Ubuntu 16.04でテストされました。
答え1
::respawn:-/bin/sh
を使用するには、次のようにBR2_ROOTFS_OVERLAY
ゲストを変更します。/etc/inittab
::respawn:-/bin/sh
デフォルトのフォーム行の代わりに:
console::respawn:/sbin/getty -L console 0 vt100
inittab
output/target/etc/inittab
デフォルト値をコピーしてビルドした後、上記の行を変更できます。
勉強してこれを見つけました。examples/inittab
Busybox 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
これはデフォルトでrootとしてログインしようとし、デフォルトのパスワードが空であるため自動的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_defconfig
Busyboxシステムinittab
をinit
使用していますBR2_INIT_BUSYBOX=y
。
しかし、このアプローチには1つの欠点があります。ログイン後のメッセージは次のとおりです。
/bin/sh can't access tty; job control turned off
広告したように、このようなものはCtrl+C
何の変化ももたらしません。