私が行った場合:
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
シェルを使用する前に、QEMUにroot
と入力する必要があります。
ビルドルートをスキップして直接ログインするように設定するにはどうすればよいですか?
Ubuntu 16.04でテスト済み。
::respawn:-/bin/sh
BR2_ROOTFS_OVERLAY
を使用して、ゲストに/etc/inittab
を含めます。
::respawn:-/bin/sh
デフォルトのフォーム行の代わりに:
console::respawn:/sbin/getty -L console 0 vt100
ビルド後、output/target/etc/inittab
からデフォルトのinittab
をコピーできます。
私は examples/inittab
in Busybox 1_28_ を調べているときにこれを発見し、これを見つけて試してみましたが、うまくいったので、これまでのところ最高の解決策です。
先頭のダッシュ-
を忘れないでください。そうしないと、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
などのいくつかのinitファイルを取得するようにします。参照: https://stackoverflow.com/a/42291142/895245
console
がデフォルト値であるため、以下は同等です。
console::respawn:-/bin/sh
デフォルトで別のユーザーとしてログインするには、代わりに次を使用できます:
::respawn:-/bin/login -f user0
これが sample setup です。
前の回答: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
がデフォルトの実行可能ファイルです。ユーザーroot
が既に指定されている状態で/bin/login
を呼び出す実行可能ファイルを作成するために行ったこと。
これにより、init
はデフォルトでrootユーザーとしてログインしようとし、デフォルトのパスワードは空(BR2_TARGET_GENERIC_ROOT_PASSWD
)であるため、自動的にログインします。
この手法は基本的に、BusyBoxの実装にはないUbuntu 14.04のgetty
にある-a <user>
オプションを再実装します。
次に、別のユーザーとしてログインするには、次のコマンドを実行します。
/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
があるため、BR2_INIT_BUSYBOX=y
により、Busyboxのinittab
システムでinit
が使用されています。
ただし、この方法には欠点があります。ログイン直後に次のメッセージが表示されます。
/bin/sh can't access tty; job control turned off
宣伝どおり、Ctrl+C
のようなものは効果がありません。