web-dev-qa-db-ja.com

mkinitcpiobusyboxをソース/ etc / profileにアッシュする方法は?

Arch Linux /usr/lib/initcpio/busyboxはパッケージmkinitcpio-busybox 1.27.2-1によって所有されており、 機能が少ないように構成されています 、たとえばCONFIG_FEATURE_USE_INITTABは設定されていません。

そのbusyboxを含むカスタムinitramfsで、ソース/etc/profileが機能するsshネットワークログインを取得することができました。また、VGAモニターにashシェルプロンプトが表示されます。

ただし、その「vga」シェルは/etc/profileをソースしません。 Q: ログインシェルと非ログインシェルの違いは? このシェルはログインシェルではないと思います。そのシェルは/initによって開始されます:

exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'

回帰:

  • exec setsid sh -c 'exec sh -i </dev/tty1 >/dev/tty1 2>&1'
  • exec setsid sh -c 'exec sh - </dev/tty1 >/dev/tty1 2>&1'
  • exec setsid sh -c 'exec -sh </dev/tty1 >/dev/tty1 2>&1'

このbusyboxashシェルをソース/etc/profileにする方法、および/または(自動)ログインシェルにする方法は?

1
Pro Backup

従来、シェルは、-で始まるコマンド名で呼び出された場合、ログインシェルとして機能します。 exec -shは、パスに-shという実行可能ファイルがある場合に機能します。 BusyBoxashは-lオプションもサポートしているため、sh -lを実行できます。

ログインすると、loginプログラム(またはsshd、またはログインを処理するもの)が、コマンド名の先頭に-を付けてユーザーのシェルを実行します(コマンド名は実行可能ファイルの名前と同じである必要はありません。これは、loginが故意に違反する非常に一般的な規則です)。ここでは、「ログインを処理しているものは何でも」がミニスクリプトなので、注意する必要があります。