はじめに
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秒後にシェルスクリプトを実行する場合の書き方は以下のようになる。
[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.html
や static
フォルダなどのルートとなるフォルダを変更する。
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アドレス]/[共有フォルダ名] [マウント先のディレクトリ]
関連記事