Hiroto's diary

プログラミングとか色々

新規購入した Raspberry Pi をセットアップする

Raspberry Pi 3 Model B 以来 3~4 年振りのラズパイを新規購入. 録画鯖用に Raspberry Pi 4 Model B 4GB を買った.

もう一台別用途で買うかもしれないのでやったことを書いておく.

用意するもの

Raspberry Pi 本体

メモリが 1GB / 2GB / 4GB から選べる.

困ったらとりあえず 4GB を買っておけば間違いない.

www.switch-science.com

www.switch-science.com

電源 (5V/3A 推奨)

Raspberry Pi 4 なので電源は USB Type-C. 推奨は 5V/3A 出力だけど, USB 周り使わないなら 2.4A とかでも動くらしい.

5V/3A のアダプタなんて中々ないしなーと思ってたけど, 秋月とかスイッチサイエンスに売ってたのでこれを使った.

akizukidenshi.com

www.switch-science.com

microSDHC

最低限 16GB は欲しい. 32GB あれば余裕.

microSDXC を買うとフォーマットが面倒なので普通に microSDHC を買ったほうがいい.

ケース (必要なら)

今回は常時起動で使うのでファンとかヒートシンクもついてるこれを買った. 普通に良いデザインなのでサーバーにしておくのが惜しい.

これに付属してるファンに限らず, GPIO で動くファンは shutdown コマンドで電源落としても USB Type-C の電源抜かないと回り続けるので, 気になる人はスイッチで完全に電源を切れるアダプタ付きのを買ったほうがいい気がする.

LAN ケーブル (必要なら)

有線で作業する場合のみ必要. 自分はルーターから生えてるケーブルをそのまま使った.

後で書くけど wpa_supplicant.conf を最初に作れば無線 LAN だけでセットアップ完結出来るし別になくてもいい.

Raspbian を microSD に焼く

Raspbian をダウンロードして microSD に焼く.

デスクトップ用途では使わないので Raspbian Lite をダウンロードした.

https://www.raspberrypi.org/downloads/raspbian/www.raspberrypi.org

本家からダウンロードすると時間掛かりすぎて一生終わらないので, JAIST のミラーからダウンロード するといい.

ftp.jaist.ac.jp

ダウンロードした zip ファイルを展開して img ファイルを microSD に書き込む. 自分は macOS を使ってるので dd コマンドを使って書き込んだ.

# diskutil list を使って microSD の場所を調べておく
$ diskutil list

# フォーマットする
$ diskutil eraseDisk MS-DOS rpi /dev/disk2

$ diskutil umount /dev/disk2
$ sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2

書き込み終わったら microSD/bootssh という名前の空ファイルを作っておく. (/boot/ssh があると SSH がオンになる.)

無線 LAN を使う場合は /bootwpa_supplicant.conf ファイルを作っておくと, 起動時に Wi-Fi に繋がる.

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="ルーターの SSID"
    psk="ルーターのパスワード"
}

ラズパイに SSH で接続する

ルーターの管理画面なり何なりでローカルの IP アドレス調べて SSH で接続する. 初期のユーザー / パスワードは pi / raspberry.

$ ssh pi@192.168.0.xxx

raspi-config を使って初期設定する

raspi-config コマンドを使って

などをする

$ sudo raspi-config

終わると再起動する必要があるので再起動して再度ログインする.

apt のミラーを設定する

初期設定の raspbian.raspberrypi.org でもミラーに転送してくれるけど, 最初から日本のサーバーに設定しておく.

/etc/apt/sources.list を編集する.

# 初期のはコメントアウトしておく
#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

# JAIST あたりを追加する
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi

IP アドレスを固定しておく

/etc/dhcpcd.conf に IP アドレスを書き込むか, ルーター側で IP アドレスを固定するかのどっちか. dhcpcd.conf に書く場合は以下のような感じに

# 有線
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

# 無線
interface wlan0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

ユーザー名を pi から変更する

サーバー用途で pi / raspberry のまま使うのは本当に最悪なので, ユーザー名とパスワードを変更する.

アカウント削除で説明してる記事もあるけど, 既に pi ユーザーで作ったファイルがあったら面倒なので変更がいいと思う.

pi ユーザーでログインしたままユーザー名を変えるのは不可能なので, 一旦作業用ユーザーを作って実行する.

$ sudo useradd -M tmp
$ sudo gpasswd -a tmp sudo
$ sudo passwd tmp

一旦ログアウトして tmp でログインする.

$ sudo usermod -l newuser pi
$ sudo usermod -d /home/newuser -m newuser
$ sudo groupmod -n newuser pi

ログアウトして newuser でログインし直し, 作業用ユーザーを削除する.

$ sudo userdel tmp

newuser のパスワードを変える.

$ sudo passwd newuser

鍵を設定する

SSH のログインで毎回パスワードを打つのは大変なので, 公開鍵認証でログイン出来るようにする.

ホスト側で ssh-keygen を実行して鍵を作る.

$ ssh-keygen -t ed25519

ラズパイに SSH の設定ディレクトリとファイルを作る.

$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

ホストの id_ed25519.pub をラズパイの ~/.ssh/authorized_keys に追加する. ssh-copy-id を使うと楽にコピーできていい.

$ ssh-copy-id -i ~/.ssh/id_ed25519.pub ${user_name}@192.168.0.xxx

ホスト側の ~/.ssh/config を設定しておく

Host raspi4
    Hostname 192.168.1.xxx
    Port 22
    User ユーザー名
    IdentityFile ~/.ssh/raspi/id_ed25519

ここで一旦, 公開鍵認証でログイン出来るか試しておく. 設定出来てないままパスワードログインを無効化すると完全に終わるので一回試す.

sshd の設定

ラズパイ側の /etc/ssh/sshd_config を編集する

  • root でのログインを無効化
    • PermitRootLogin no
  • 空パスワードの無効化
    • PermitEmptyPasswords no
  • パスワード認証の無効化
    • PasswordAuthentication no
  • ポートの変更
    • Port 任意のポート番号

終わったら sudo systemctl restart sshdsshd を再起動. 一旦 SSH を切断して新しい設定でログイン.

スワップの無効化

デフォルトでは 100MB ほどスワップ領域が確保されるけど, あってもまず使うことないし, 使っても遅いしでメリットないので切っておく.

$ sudo swapoff --all
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile

/tmp/var/tmp を tmpfs にする

/tmp とかでデカい容量使わないなら実行しておくといい.

/etc/fstab を編集して, /tmp/var/tmp を tmpfs にする.

$ sudo vim /etc/fstab
tmpfs    /tmp          tmpfs    defaults,size=32m,noatime,mode=1777  0    0
tmpfs    /var/tmp    tmpfs    defaults,size=16m,noatime,mode=1777  0    0

終わったら再起動しておく.


これで基本的なセットアップは終わり.

Vue.js で日本語の変換中に `keyup.up` や `keyup.down` が発火しないようにする

対処方法

  • $event ( KeyboardEvent インスタンス) の isComposing をチェック
  • Edge や IE では動かない

developer.mozilla.org

<template>
  <div>
    <input
      :value="inputValue"
      @keyup.up="onKeyUp($event)"
      class="input"
      type="text"
    >
  </div>
</template>

<script>
export default {
  name: 'TestComponent',
  data () {
    return {
      inputValue: '',
    };
  },
  methods: {
    onKeyUp (event) {
      if (event.isComposing) {
        // 変換が未確定の時に何もしない
        return;
      }

      // do something.
    },
  },
};
</script>

© 2015 hiroxto