`apt-get`、`dpkg`はBluetoothシリアルポートでは失敗しますが、物理的に接続されたコンソールでは成功します。

`apt-get`、`dpkg`はBluetoothシリアルポートでは失敗しますが、物理的に接続されたコンソールでは成功します。

Linuxでは、一部のコマンドがシステムに接続されているコンソールでは実行できますが、シリアルコンソールでは実行できない理由を説明できる構成設定や機能はありますか?


リモートシステムはRaspberryPiなので、ここに公開しますが、そうではありません。考えるこの質問はこれに関連しています。私はこの問題が他のDebian(そしておそらく他のLinux)システムでも起こり得ると思います。

Bluetoothシリアルポートを介してリモートシステムにログインすると、apt-get update一部のパッケージ管理関連コマンドでエラーが発生します。

Raspbian GNU/Linux 9 raspberry pi rfcomm0
raspberrypi login: pi
Password:
Last login: Mon Dec  3 12:31:11 UTC 2018 on rfcomm0
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi:~$ sudo bash
root@raspberrypi:/home/pi# apt-get update
Hit:1 http://archive.raspbian.org/raspbian stretch InRelease
Err:1 http://archive.raspbian.org/raspbian stretch InRelease
  Waited for apt-key but it wasn't there
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://archive.raspbian.org/raspbian stretch InRelease: Waited for apt-key but it wasn't there
W: Failed to fetch http://archive.raspbian.org/raspbian/dists/stretch/InRelease  Waited for apt-key but it wasn't there
W: Some index files failed to download. They have been ignored, or old ones used instead.
root@raspberrypi:/home/pi# 
root@raspberrypi:/home/pi# dpkg -i /var/cache/apt/archives/apt-utils_1.4.8_armhf.deb 
dpkg: unrecoverable fatal error, aborting:
 wait for subprocess dpkg-split failed: No child processes

リモートシステムコンソールで同じコマンドを直接実行すると、次のようになります。いいえエラーが発生し、スムーズに動作しません。このボードには、Bluetooth設定以外の設定を変更せずにデフォルトのRaspbianシステムがインストールされています。

pi@raspberrypi:~$ who -a
           system boot  1970-01-01 00:00
           run-level 5  2018-12-03 12:29
pi       - tty1         2018-12-03 12:29 00:53         674
pi       - rfcomm0      2018-12-03 13:27   .          1906
pi@raspberrypi:~$ pstree
systemd─┬─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─cron
        ├─dbus-daemon
        ├─dhcpcd
        ├─hciattach
        ├─login───bash───sudo───bash   < XXX apt-* works from here
        ├─rfcomm───login───bash        <     but not from here
        ├─rsyslogd─┬─{in:imklog}
        │          ├─{in:imuxsock}
        │          └─{rs:main Q:Reg}
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-timesyn───{sd-resolve}
        ├─systemd-udevd
        ├─thd
        └─wpa_supplicant

これは再現可能ですか、それとも別のRPiですか?しかし、私は本当のDebianシステムをテストする余分なx86システムを持っていませんでした。


編集する:これははるかに話すべきことではありません。 straceを使用して問題を追跡しようとしましたが、

# apt-get install -y openssh-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libva-wayland1
Use 'apt autoremove' to remove it.
Suggested packages:
  molly-guard monkeysphere rssh ssh-askpass ufw
The following NEW packages will be installed:
  openssh-server
0 upgraded, 1 newly installed, 0 to remove and 114 not upgraded.
Need to get 0 B/301 kB of archives.
After this operation, 833 kB of additional disk space will be used.
E: Waited for /usr/bin/apt-listchanges --apt || test $? -lt 10 but it wasn't there
E: Failure running script /usr/bin/apt-listchanges --apt || test $? -lt 10
# strace apt-get install -y openssh-server
[...]
[long list of system calls]
[...]
munmap(0x74c0d000, 2269184)             = 0
munmap(0x74a56000, 1798144)             = 0
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

ご覧のとおり、実行がステータス0(成功)で終了し、パッケージが正しくインストールされましたapt-getstrace「外部的に」実行すると動作straceしませんか? ! ?


この質問は私のすべての調査を失望させました。 /var/log/syslog、/var/log/auth、またはJournalctlには何の手がかりも表示されません。私は私がAPTキャッシュをクリアしましたが、エラーメッセージが偽であると感じ、いくつかのサブプロセスを生成できないと思いました。 PAMと関係があると疑われますが、確信できません。

ベストアンサー1

私はRaspbian Stretchと一緒にRaspberry Pi Zero Wを使用しています。 Bluetoothシリアルコンソールを介してログインすると、sudo apt-get update同じWaited for apt-key but it wasn't thereエラーメッセージが表示されます。上記の投稿が見つかるまで、これは私を狂わせました。

straceで実行すると、あなたと同じように私にもうまくいきます。しかし、straceでapt-getを実行することは非常に不満足です。なぜなら、straceは非常に騒々しく、apt-getが何を言っているのかを読むことができないからです。

Bluetoothシリアルコンソールを使用してRaspberry PiのWiFi IPアドレスを見つけ、SSH経由でRaspberry Piにログインできました。sudo apt-get updateSSHを介して正常に実行できました。これは問題に対する考えられる解決策です。ssh localhostWiFiを使いたくない場合でも動作します。

2番目の解決策は、Bluetoothシリアルコンソールを介してRaspberry Piにログインし、screenRaspberry Piで実行することです。一度入ったら、Bluetooth経由でシリアルコンソールを起動screenできます。sudo apt-get update

端末エミュレーションに問題があるようですが、わかりません。 Bluetoothシリアルポートを介してRaspberry Piに初めて接続したとき、screenまたは以下の緑色のコマンドプロンプトは表示されませんssh。次の行でbluetooth rfcommシリアルコンソールを設定する方法に問題がある可能性がありますExecStart=

/etc/systemd/system/rfcomm.service

[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/rfcomm watch hci0 1 setsid /sbin/agetty -8 --noreset -s -w -L rfcomm0 115200 vt100 -a pi

[Install]
WantedBy=multi-user.target

ExecStart=行を次に変更すると、素晴らしい緑色のコマンドプロンプトが表示されます。

ExecStart=/usr/bin/rfcomm watch hci0 1 setsid /sbin/agetty -8 --noclear -s -w -L rfcomm0 115200 linux -a pi

このファイルを変更した後は、再起動が必要になることに注意してください。十分ではないようですsudo systemctl reload rfcomm.service

残念ながら、今すぐクールな緑のコマンドプロンプトがあるにもかかわらず、sudo apt-get update/で実行しないと、まだひどいエラーが発生します!Waited for apt-key but it wasn't therestracescreenssh

おすすめ記事