raspi-configでI2Cをenableにしたら「ユーザ 'pi' のパスワードエントリがありません」が表示される

スポンサーリンク

初めに

ラズパイの初期設定にも書いた通り、piユーザをそのまま残しておくと

セキュリティ上好ましくないということで別のユーザ名に変更しております。

BME280を使うためにI2Cをenableしたところ以下のメッセージが出力されました。

「ユーザ 'pi' のパスワードエントリがありません」

このメッセージを何とかしようとして何とかできなかった話です。

I2Cを使うためにやること

sudo raspi-configと入力します。

5 Interfacing Options

P5 I2Cを選択

Would you like the ARM I2C interface to be enabled?と聞かれるので

はい or いいえ を選択します。

これだけです。はいを選ぶとI2Cが使用できるようになります。

が、私がこの手順を実行すると成功はするもの、例のメッセージが出力されます。

いやそもそもpiユーザはもういないんですがそれは・・・

何でこのメッセージが出るのか突き止めたかった

このメッセージ、どこかでpiユーザで実行しようとしている?と思い

まずraspi-configが何をしているのか調べました。

raspi-configのgithubはこちらにあります。

findで調べると私のラズパイでは以下にありました。

/etc/init.d/raspi-config

この中で関連しそうなファイル、コマンドを探しました。

まず以下のファイルを参照していますが関係なし。

BLACKLIST=/etc/modprobe.d/raspi-blacklist.conf

CONFIG=/boot/config.txt

I2Cに関連するところを重点的に探すと以下コマンドを発見。

dtparam i2c_arm=$SETTING

enableのときはdtparam i2c_arm=onとなります。

このままコマンド実行すると

「ユーザ 'pi' のパスワードエントリがありません」

おまえかー!

ただ、この後が問題でdtparamの中身が見れず断念しました。。

実際成功しているのか

このメッセージ出てもI2Cが使えれば良いのです。

raspi-configの中身を見てみるとon,offで関係しそうなコマンドはこちら。
※見ていたのはdo_i2c() {から始まる箇所です。

set_config_var dtparam=i2c_arm $SETTING $CONFIG &&

printf "i2c-dev\n" >> /etc/modules

dtparam i2c_arm=$SETTING

modprobe i2c-dev

$STATUSがenabledなら$SETTINGはon。

$STATUSがdisabledなら$SETTINGはoff。

SETTINGがonなら

set_config_varでdtparam=i2c_arm=onを/boot/config.txtに書き込みます。

/etc/modulesにi2c-dev\nが追加されます。※1回目だけっぽい

dtparam i2c_arm=onが実行されます。

modprobe i2c-devが実行されます。

SETTINGがoffなら

set_config_varでdtparam=i2c_arm=offを/boot/config.txtに書き込みます。

dtparam i2c_arm=offが実行されます。

modprobe i2c-devが実行されます。

実際i2cが使えるかどうかは

lsmodでモジュール確認します。

onのときは以下のようなmodが表示されました。

offのときは表示さえませんでした。

piユーザは変更した方がいいのか?

piユーザを変更せずに実施しているばこのエラーは出ないでしょうね。

ここはセキュリティを取るか、使いやすさを取るかですかね。

piユーザは残しておいた方が色々捗りそうですが、どっちを取るかは人それぞれでしょうか。

私はセキュリティを意識してpiユーザを変更する方を選びますた。

linux(raspbian)の勉強にもなりますしね!

決して

・こんなことになるとは思わなかった。

・piユーザに戻すのが面倒くさい。

というわけではありません。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする