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-get
。strace
「外部的に」実行すると動作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 update
SSHを介して正常に実行できました。これは問題に対する考えられる解決策です。ssh localhost
WiFiを使いたくない場合でも動作します。
2番目の解決策は、Bluetoothシリアルコンソールを介してRaspberry Piにログインし、screen
Raspberry 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 there
strace
screen
ssh