LoginSignup
3
3

Raspberry Piで最初にやるべき設定~いくつか便利な設定

Last updated at Posted at 2022-11-10

はじめに

Raspberry Piを初めて使うor初期化後に、よく使うであろう設定(また自分が欲しいと思った設定など)をまとめたものである。
新しい設定をしたら随時追記していく。

microSDカードの作成

使用するSDカードにRaspberry Pi OS(64-BIT)をインストールするために、WindowsにRaspberry Pi Imagerをダウンロードする。

ダウンロードは Raspberry Pi公式ページ より可能。

ダウンロードしたexeファイルからインストールし、起動。OSはRaspberry Pi OS(64-BIT)を選択、ストレージはPCに接続したSDカードを選択し、その他wifiやsshなどの設定もしたら書き込む。

書き込みが完了したらSDカードをRaspberry Pi本体にセットして完了。

SSH接続

OSインストール段階でSSHの設定をしたので、このまま接続ができるはず。

ssh <username>@<host> を実行し、設定したパスワードを入力する。

<username>@<host>:~ $

という表示になっていれば接続完了。

リセットによって過去の接続と違う、と怒られた場合、以下で解決。

ssh-keygen -R <接続先>

IPアドレスの固定

IPアドレスを固定するための設定を行う。

sshから ifconfig を実行し、wifiで接続中なので「wlan0」の項目を確認し、現在のIPアドレスとサブネットマスクを確認する。

これを元に設定ファイルを編集するので、以下のコマンドでファイルを開く。これはシステムの設定ファイルのため、管理者権限が必要。

sudo nano /etc/dhcpcd.conf

ファイルが開いたら一番下に以下の項目を追加する。

interface wlan0
static ip_address=192.168.3.81/24
static routers=192.168.3.1
static domain_name_servers=192.168.3.1
各項目の説明
interface wlan0
static ip_address={固定IPアドレス}/{サブネットマスク長}
static routers={デフォルトゲートウェイのIPアドレス}
static domain_name_servers={DNSサーバーのIPアドレス}

追加できたら上書き保存して閉じ、reboot コマンドで再起動して設定を反映させる。

VNC接続

sshでVNC接続が可能になるように設定を行う。

ssh接続したら、sudo raspi-config を実行し、設定をしていく。

Interface Options」を選択、さらに【VNC」を選択すると、VNCサーバを有効化するか聞かれるので「Yes」を選択する。

VNC Viewerは realvnc.com からダウンロードする。

固定したIPアドレスを入力し、usernameとpasswordを使ってログインできる。

使用するメインのディレクトリを作る

pi ディレクトリを作成し、これをメインで使用するディレクトリとした。

mkdir pi

NASとしての設定をする

SSHやVNCで接続して使用すれば良いが、複数のファイルを転送する際などに面倒なので、pi ディレクトリをNASとして設定する。

Sambaのインストール

Sambaを使用してファイルサーバとするので、インストールする。

sudo apt install samba samba-common-bin

設定ファイルの変更

Sambaの設定ファイルを編集するので、一応デフォルトのバックアップをしてから編集する。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo nano /etc/samba/smb.conf

以下を、ファイルの末尾に追加する。

[<表示されるディレクトリ名>]
comment = <ディレクトリの説明>
path = <ファイルサーバにするディレクトリのパス>
public = no(yesだとパスワードなしで利用可能)
read only = no(yesだと読み込みのみ)
browsable = yes(yesだと利用可能一覧に表示)
force user = tatsu(ファイル操作をするユーザ)
[pi]
comment = nas pi
path = /home/tatsu/pi
public = no
read only = no
browsable = yes
force user = tatsu

保存したらSambaを再起動させて更新を反映させる。

sudo systemctl restart smbd

Samba用のユーザとパスワードを設定

Raspberry Pi本体のものとは関係ないので、自由に設定する。
ユーザ tatsu で設定する場合は以下。

sudo smbpasswd -a tatsu

登録されているユーザは以下で確認できる。

sudo pdbedit -L

参考

外付けHDDをマウントする

マウント用ディレクトリを作成する

/mnt にマウント用ディレクトリを作成する。今回はBUFFALOのHDDだったので bhdd とした。

mkdir /mnt/bhdd

マウントしたいHDDを接続し、以下コマンドを実行する。

sudo fdisk -l
/dev/sda1          64 3907029119 3907029056  1.8T  7 HPFS/NTFS/exFAT

のように出力された。この /dev/sda1 をマウントしていく。

参考記事では、

exFATでフォーマットされたHDDは、そのままマウントしてもエラーになるので、以下のコマンドを実行してexFATをマウント出来るようにする

sudo apt-get install exfat-fuse exfat-utils

との記述があったが、そのまま出来た。32bit,64bitの違いだろうか?

マウントする

bhddという名前でマウントする。

sudo mount /dev/sda1 /mnt/bhdd

以下のコマンドで、正しくマウントできているか確認する。

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/root      ext4       58G  3.8G   52G   7% /
devtmpfs       devtmpfs  1.7G     0  1.7G   0% /dev
tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs     759M  3.0M  756M   1% /run
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
/dev/mmcblk0p1 vfat      255M   31M  225M  12% /boot
tmpfs          tmpfs     380M   24K  380M   1% /run/user/1000
/dev/sda1      exfat     1.9T   14G  1.9T   1% /mnt/bhdd

起動時に自動でマウントするように設定

再起動するとマウントが解除されてしまうので、起動時にマウントするように設定をする。
UUIDが必要なので、以下コマンドで確認する。

sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="3772-58CD" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="63fe744c-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="ee7f279a-1fe9-4c98-9f3c-83c7173683b7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="63fe744c-02"
/dev/sda1: LABEL="BHDD" UUID="0C0B-8F40" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="5413ecc8-01"

より、今回のUUIDは 0C0B-8F40

起動時にマウントすると、ユーザの書き込み権限がなくなってしまうため、ユーザのudiとgidが必要なので、以下コマンドで確認する。

whoami
id
tatsu
uid=1000(tatsu) gid=1000(tatsu) groups=1000(tatsu),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),104(input),106(render),108(netdev),117(lpadmin),997(gpio),998(i2c),999(spi)

今回はuidもgidも 1000

確認出来たら、以下コマンドで設定ファイルを編集する。

sudo nano /etc/fstab

末尾に以下のように追加する。

UUID="0C0B-8F40" /mnt/bhdd exfat uid=1000,gid=1000,defaults,nofail 0 0

UUID マウント位置 ファイルシステム uid=XXXX,gid=XXXX,defaults,nofail 0 0 の形式。 nofail を書くと、マウントに失敗しても起動することになるので、書かないとマウント失敗時に起動しなくなる。

これもNASにする

上記のNAS設定より、このディレクトリもNASに設定する。

sudo nano /etc/samba/smb.conf
[bhdd]
comment = nas bhdd
path = /mnt/bhdd
public = no
read only = no
browsable = yes
force user = tatsu

参考

pythonスクリプトをautostartする

Raspberry Piが再起動した際にターミナルを立ち上げてPythonを自動で実行するように設定をする。

OSのバージョンなどによっていくつかの方法があるようだが、今回はautostartを使用した。

ユーザーディレクトリにある .config ディレクトリの中に autostart ディレクトリを作成し、ここに実行ファイルを作成する。 <任意の名前>.desktop という拡張子にする。

cd .config
mkdir autostart
sudo nano <任意の名前>.desktop

書き込む内容は以下。

[Desktop Entry]
Exec=<実行するコマンド>
Type=Application
Name=<任意の名前>
Terminal=true

実行するコマンドは、全てをフルパスで書く。

ターミナルを起動し、10秒後にシェルスクリプトを実行する場合の書き方は以下のようになる。

autostart.desktop
[Desktop Entry]
Exec=lxterminal -e "sleep 10 ; /home/tatsu/pi/autostart.sh"
Type=Application
Name=Autostart
Terminal=true

このとき、実行するプログラムにエラーなどがあってもそのまま終了するだけなので注意が必要。また、Pythonを実行するときなどはPythonの標準ライブラリ以外をimportしている場合には正しく実行出来ないことがあるため、起動後一定時間画経ち読み込みが完了してから実行するようになどの変更する必要があった。

Pythonの定時実行

毎日同じ時刻になったら実行するようなPythonスクリプトを書く。

pip install schedule

ここでは毎日朝5時にラズパイを再起動するように書きたいので、以下のようなコードになった。

import schedule
import time
import subprocess


def reboot_pi():
    print("reboot")
    rb = subprocess.Popen("reboot", shell=True)


print("scheduled.")
schedule.every().days.at("05:00").do(reboot_pi)

while 1:
    schedule.run_pending()
    time.sleep(1)

実行されているのを確認するための print を入れた。

スケジュールの指定の仕方はこちらを参照

Webサーバーの起動

Nginxを使用して、webサーバーとしての機能を持たせる。

Nginxのインストール

sudo apt install nginx

nginx -v でバージョンが表示されればインストール完了。

インストール後、自動でサービスに登録されて起動しているはず。以下で確認、起動、停止ができる。

# 確認
sudo systemctl status nginx

# 起動、自動起動登録
sudo systemctl start nginx
sudo systemctl enable nginx

# 停止、自動起動解除
sudo systemctl stop nginx
sudo systemctl disable nginx

Raspberry PiのIPアドレスへブラウザでアクセスし、デフォルトのページが表示されればOK。

ドキュメントルートの変更

index.htmlstatic フォルダなどのルートとなるフォルダを変更する。

sudo nano /etc/nginx/sites-enabled/default

元の記述をコメントアウトし、設定したいディレクトリで書き換える。

# root /var/www/html;       <-- ここをコメントアウト
root /home/tatsu/pi/nginx;  <-- ここを追加

このとき、ドキュメントルートにたどり着くまでのすべてのディレクトリで、[その他ユーザ]に実行権限が必要。ホームディレクトリ内に設定する場合は以下を実行する。

sudo chmod 701 /home/[ユーザー名] 

変更を反映させるためにNginxを再起動する。

変更後のディレクトリにhtmlを配置し、反映されていたらOK。

参考

ngrokのインストール

ローカルのwebサーバに外部からアクセス出来るようになりサービス ngrok をインストールする。

ssh接続して実行する。

wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
unzip ngrok-stable-linux-arm.zip
sudo mv ngrok /usr/local/bin/

ngrok version を実行し、バージョンが表示されればインストール完了。

この状態ではゲストとしての使用になり接続時間の制限があるため、認証を行う。ngrok公式 にログインし、Authtokenを確認したら、

ngrok authtoken <authtoken>

を実行することで、アカウントの認証が完了する。

windowsファイル共有へのアクセス

同じネットワーク上にあるwindowsPCの共有フォルダへのアクセスを設定する。

共有するフォルダをwindows上で作成したら、プロパティから共有設定をし、ネットワークからアクセス可能にしておく。

LinuxからのアクセスではCIFSを使用するので、インストールする。

sudo apt install cifs-utils

共有フォルダをマウントするディレクトリを作成し、マウントさせる。ここでは、カレントディレクトリに/shareを作成し、そこにwindows上のshareフォルダをマウントさせた。

sudo mkdir share
sudo mount -t cifs -o user=[Windowsユーザー名],password=[Windowsパスワード],uid=[Linuxのユーザー名] //[Windowsサーバー名 or IPアドレス]/[共有フォルダ名] [マウント先のディレクトリ]

関連記事

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3