Raspberry Pi4の起動~日本語化やユーザアカウント名(pi)を変更などの手順

#はじめに
何度もOSインストールし直したりして、その度に手順確認するために複数のページを行ったりきたりして大変だったので…
次の導入時などに役立つよう、繰り返しやっていたことを備忘録的にまとめさせていただきます。

[Raspbian Buster with desktop]をダウンロードしてSD Cardへ書き込んだあとのraspi起動~の作業です。

#日本語入力
[Raspberry Pi3の日本語入力を有効にする](https://qiita.com/Higemal/items/6cde9d6b40cbe9f0e97f)

```terminal:LXTerminal
$sudo apt-get update                #パッケージリストを更新
$sudo apt-get install fcitx-mozc    #fcitx-mozc(ファイティクス－モズク)というパッケージをインストール
```



#vimのインストール
[RaspberryPi3のセットアップ続き〜VimやNFS設定](https://qiita.com/B73W56H84/items/1d164a3c083872e10ccb)

```terminal:LXTerminal
$ 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のままでも良いや～、
というのであれば不要ですが、どうせなら変更したい。

```terminal:LXTerminal
$ 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連打でおｋ
        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の設定]でも問題ないです。












![raspberrypiの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567673/d7d35794-6e59-5cf5-27f4-d2d5df31aa79.png)













ラズパイのIPアドレスを調べてメモっときます。
wlan0: ~ のinetがこのラズパイのIPアドレスです。以下の場合は192.168.1.1


```terminal:LXTerminal
$ 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ユーザにログインして以下を確認します…

```console:TeraTerm
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がいます…

```console:TeraTerm
tmp@rasberrypi:~ $ sudo usermod -l newpi pi    #piをnewpiに変更
[sudo] tmp　のパスワード:
usermod: user tmp is currently used by process xxxx
```
となり、当然ながら「ユーザ名変更」をしようとしてもできません。。。
「まあいいや強制的にログアウトさせちゃえ」と思って、

```console:TeraTerm
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が。

```console:TeraTerm
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で入ったユーザが残っているようです。




まず、起動時の自動ログインを無効にしなくてはいけません。

```console:TeraTerm
tmp@rasberrypi:~ $ sudo raspi-config
```
sudoでRaspi-Configを開いて設定をしていきます。









![ssh_enable1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567673/fe1c7d7d-8840-8a06-a7c5-cfa2f28d24b6.jpeg)









![ssh_enable2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567673/0c5fca68-a6a5-85b0-f4e0-f0467e0e150a.jpeg)









![ssh_enable3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567673/295821f2-a414-304b-6fd6-f9ae5eb423ad.jpeg)










Boot Options → Desktop / CLI　→ Console
と操作して、起動時autologinをせずconsoleで始まるように設定します。
(このあとDesktopに再設定すれば、再びDesktopで起動できるようになります)

raspi-configの最初の画面に戻ったら、「Finish」で終了します。







![ssh_enable4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567673/00fd1d5c-af52-7157-6ed0-bab2c32d0161.jpeg)







ここで「はい」すると再起動されます。(一度これで再起動されず、普通にshutdownされただけのようになったので、ここでの再起動でなくコンソールでのrebootの方がいいかも)
「いいえ」でコンソールに戻ります。そのときの設定によって違いますが、コンソールでは以下のような変更が行われていることが確認できると思います。

```console:TeraTerm
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
```

再起動。

```console:TeraTerm
tmp@rasberrypi:~ $ reboot
```

無事再起動されるとRaspberry Pi側は以下のようにコンソール画面で始まります。

```console:RaspberryPi側の起動後の画面
Raspbian GNU/Linux 10 raspberrypi tty1
raspberrypi login:
```
この状態のRaspberry Piにはpiもログインしていないはずです。
WindowsPC側で確認してみます。
(再起動時にSSH接続は切れてますので再び接続しなおしてtmpでログインしておきます)

この状態でSSH接続できない場合もあるようですが(私の場合はできましたが)、その場合ラズパイ側でもtmpでログインすればSSH接続できるようになるかと思います。

```console:TeraTerm
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ユーザ名とパスワードをうまいこと変更する](https://qiita.com/kenchang/items/849c82f16ba5eafe070d)

```console:TeraTerm
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で起動する設定になっています。

```console:RaspberryPi側の起動後の画面
Raspbian GNU/Linux 10 raspberrypi tty1
raspberrypi login:newpi     #ユーザ名
Password:_              #newpiのパスワードを入力(piのときから変更していなければpiのときのパスワード)
```
raspi-configにて
Boot Options → Desktop / CLI　→ Desktop
として、Desktopで起動できるようになります。

```console:RaspberryPi側Console
newpi@raspberrypi:~ $ sudo userdel tmp    #tmpを削除、警告のようなメッセージが出るかもしれませんが気にせず
newpi@raspberrypi:~ $ sudo passwd newpi   #任意で、newpiのパスワードを変更したい場合に
```

以上で作業完了です。