#はじめに
何度もOSインストールし直したりして、その度に手順確認するために複数のページを行ったりきたりして大変だったので…
次の導入時などに役立つよう、繰り返しやっていたことを備忘録的にまとめさせていただきます。
[Raspbian Buster with desktop]をダウンロードしてSD Cardへ書き込んだあとのraspi起動~の作業です。
#日本語入力
Raspberry Pi3の日本語入力を有効にする
$sudo apt-get update #パッケージリストを更新
$sudo apt-get install fcitx-mozc #fcitx-mozc(ファイティクス-モズク)というパッケージをインストール
#vimのインストール
RaspberryPi3のセットアップ続き〜VimやNFS設定
$ dpkg -l | grep vi #viの確認
$ sudo apt-get --purge remove vim-common vim-tiny #purgeで削除
$ sudo apt-get install vim #vimをインストール
#ユーザアカウント追加
piアカウントのユーザ名を変更するために必須です。
なぜなら、piでログインしている限りpiのユーザ名は変更できません。
passwordを変更していて、ユーザ名はpiのままでも良いや~、
というのであれば不要ですが、どうせなら変更したい。
$ sudo adduser tmp #ここは仮にtmpというユーザを追加します
Adding user `tmp' ...
Adding new group `tmp' (1002) ...
Adding new user `tmp' (1002) with group `tmp' ...
Creating home directory `/home/tmp' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: #←仮垢のパスワードを入力
Retype new UNIX password: #もう一度入力
passwd: password updated successfully
Changing the user information for taneyats
Enter the new value, or press ENTER for the default
Full Name []: #以下、入力せずにenter連打でおk
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y # Yを入力(連打しちゃっても大丈夫、enterでYとして扱われるっぽいです)
$ sudo gpasswd -a tmp sudo #tmpをsudoグループに追加(これをやらないとsudoが使えない)
$ sudo passwd tmp #tmpのパスワードを設定
#SSH接続の有効化
Windows等、他のPCから接続してRaspberry Piをコマンドで動かせるようにします。
[Raspberry Pi の設定]を開いてインターフェイスのタブでSSHを有効にすればOKです。
raspi-configから設定したり、ターミナルでvimから編集してもいいですが、[Raspberry Piの設定]でも問題ないです。
ラズパイのIPアドレスを調べてメモっときます。
wlan0: ~ のinetがこのラズパイのIPアドレスです。以下の場合は192.168.1.1
$ ifconfig
wlan0: flags=xxxx<UP,BROADCAST,RUNNING,MULTICAST> mtu xxxx
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 ffff::ffff:ffff:ffff:ffff prefixlen xx scopeid 0x00<link>
ether ff:ff:ff:ff:ff:ff txqueuelen 0000 (イーサネット)
RX packets 999999 bytes 99999999 (99.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 99999 bytes 9999999 (9.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
以降は、基本的にWindowsPCからTera Termなどを使ってラズパイに接続して、WindowsPCから操作します。
Tera Termをインストールできれば
・ラズパイのIPアドレス
・ログインしたいアカウントのユーザ名(この場合tmp)
・ログインしたいアカウントのパスワード
を入力して早速SSH接続可能です。
#piユーザのログアウト
実はここがなかなか解決できず時間を食った部分です…
例えば、ラズパイメニューからshutdown > logout をしてアカウントを選択(piかtmp)できる画面にしておき、
SSH接続したWindowsPCからTeraTermでtmpユーザにログインして以下を確認します…
tmp@rasberrypi:~ $ w #ログインしているユーザの確認
00:00:00 up 0 days, 23:59, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
pi tty1 :0 土02 1days 0:00 0.00s /xxx/xxx/xxx
tmp pts/0 192.168.1.xxx 23:59 0.00s 0.00s 0.00s w
tty1のpiがいます…
tmp@rasberrypi:~ $ sudo usermod -l newpi pi #piをnewpiに変更
[sudo] tmp のパスワード:
usermod: user tmp is currently used by process xxxx
となり、当然ながら「ユーザ名変更」をしようとしてもできません。。。
「まあいいや強制的にログアウトさせちゃえ」と思って、
tmp@rasberrypi:~ $ kill -9 xxxx #プロセスxxxxをキルする
tmp@rasberrypi:~ $ sudo usermod -l newpi pi
[sudo] tmp のパスワード:
usermod: user tmp is currently used by process xxxy
ダメです!
今度はプロセスxxxyが。
tmp@rasberrypi:~ $ w
00:00:00 up 0 days, 23:59, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
pi tty1 :0 土02 1days 0:00 0.00s /xxx/xxx/xxx
tmp pts/0 192.168.1.xxx 23:59 0.00s 0.00s 0.00s w
と言った感じです。
プロセスxxxyをキルしても、今度はxxyyが、xxyyをキルしてもxyyyが、xyyyをキルしてもyyyyが、と堂々巡りです。
それをキルしてもまた新たなプロセスNo.になって、何度でも蘇ります。
キルしてもキルできない。。。
調べるとどうやらラズパイ起動時にautologinで入ったユーザが残っているようです。
まず、起動時の自動ログインを無効にしなくてはいけません。
tmp@rasberrypi:~ $ sudo raspi-config
sudoでRaspi-Configを開いて設定をしていきます。
Boot Options → Desktop / CLI → Console
と操作して、起動時autologinをせずconsoleで始まるように設定します。
(このあとDesktopに再設定すれば、再びDesktopで起動できるようになります)
raspi-configの最初の画面に戻ったら、「Finish」で終了します。
ここで「はい」すると再起動されます。(一度これで再起動されず、普通にshutdownされただけのようになったので、ここでの再起動でなくコンソールでのrebootの方がいいかも)
「いいえ」でコンソールに戻ります。そのときの設定によって違いますが、コンソールでは以下のような変更が行われていることが確認できると思います。
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
再起動。
tmp@rasberrypi:~ $ reboot
無事再起動されるとRaspberry Pi側は以下のようにコンソール画面で始まります。
Raspbian GNU/Linux 10 raspberrypi tty1
raspberrypi login:
この状態のRaspberry Piにはpiもログインしていないはずです。
WindowsPC側で確認してみます。
(再起動時にSSH接続は切れてますので再び接続しなおしてtmpでログインしておきます)
この状態でSSH接続できない場合もあるようですが(私の場合はできましたが)、その場合ラズパイ側でもtmpでログインすればSSH接続できるようになるかと思います。
tmp@rasberrypi:~ $ w
00:00:00 up 23:59, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tmp pts/0 192.168.1.xxx 23:59 0.00s 0.00s 0.00s w
成功です。
tmpユーザしかいないことが確認できました。
#ユーザ名変更
Raspbianでpiユーザ名とパスワードをうまいこと変更する
tmp@rasberrypi:~ $ sudo usermod -l newpi pi #piをnewpi(任意のユーザ名)に変更
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for tmp: #tmpのパスワードを入力
tmp@rasberrypi:~ $ sudo usermod -d /home/newpi -m newpi #newpiのホームディレクトリを/home/newpiに変更
tmp@rasberrypi:~ $ sudo groupmod -n newpi pi #piグループをnewpiグループに変更
tmp@rasberrypi:~ $ reboot
再起動して完了です。
#後処理 : 仮ユーザ削除やDesktopでの起動
ラズパイ側の操作でも他のPCからでも良いですが、newpiでログインして、後処理を忘れないようにしましょう。
ラズパイ側で入る場合、まだConsoleで起動する設定になっています。
Raspbian GNU/Linux 10 raspberrypi tty1
raspberrypi login:newpi #ユーザ名
Password:_ #newpiのパスワードを入力(piのときから変更していなければpiのときのパスワード)
raspi-configにて
Boot Options → Desktop / CLI → Desktop
として、Desktopで起動できるようになります。
newpi@raspberrypi:~ $ sudo userdel tmp #tmpを削除、警告のようなメッセージが出るかもしれませんが気にせず
newpi@raspberrypi:~ $ sudo passwd newpi #任意で、newpiのパスワードを変更したい場合に
以上で作業完了です。