www.aatomu.work
Jump to Discord Server Jump to Twitter Jump to Github

ラズパイ4のセットアップ

毎度のようにraspiを吹っ飛ばすので備忘録として一括で書きます。

1.普通のPCでの準備

  1. Raspberrypi.org OSページ から OS をダウンロード (おすすめはraspiOS CUI)
  2. Raspberrypi.org Softwareページ から RaspberrypiImager をダウンロード (やり方がわかるならRufusでもどうぞ)
  3. RaspberrypiImage をインストールし microSD(16GB+) にダウンロードした raspiOS をインストール この際ユーザー設定とかはお任せ(後ほど設定します)
  4. 書き込みに成功したら /boot に ssh というからのファイルの作成
  5. (任意) Wifi設定ファイル生成 で Wifi設定ファイル を作り/bootに突っ込む
  6. raspi に突っ込み sshで接続 ex) ssh pi@raspberrypi 初期パスワードはraspberry

2.sshでいろいろと設定する

1.IPを固定

nmcli cでDEVICEからNAMEを見つける sudo nano /etc/NetworkManager/system-connections/${NAME}.nmconnectionを編集 x.xxxはWifiとLANで違うようにすること y.yyyはルーター/ホームゲートウェイのIP
下記のように変える

[ipv4]
method=manual
address1=192.168.x.xxx/24,192.168.y.yyy
dns=192.168.y.yyy

以下このコマンドで更新(ssh connection等は切れる)

sudo nmcli connection reload
sudo nmcli connection up ${NAME}

以下のは古いやつ sudo nano /etc/dhcpcd.conf

# 有線LAN
interface eth0
static ip_address=192.168.x.xxx/24
static routers=192.168.y.y
static domain_name_servers=192.168.y.yyy 8.8.8.8
# 無線LAN(Wi-Fi)
interface wlan0
static ip_address=192.168.x.xxx/24
static routers=192.168.y.y
static domain_name_servers=192.168.y.yyy 8.8.8.8

を追記
x.xxxはWifiとLANで違うようにすること y.yyyはルーター/ホームゲートウェイのIP

2.パスワードを設定

passwd で pi ユーザーのパスワードを
sudo passwd で root ユーザーのパスワードを (最高権限ユーザーだから取扱注意)
また pi ユーザー は攻撃対象にあることが多いから知識があれば他ユーザーに変えることをお勧めします

3.raspi-configでいろいろと設定を変更

以下 設定項目の変更を推奨 OS ver で異なるので頑張って探して!

1. System Options
  Hostname # sshなどにつかう
2. Display Options
  Resolution # 画質設定
  # 良いのがないは別ページ参照
3. Interface Options
  SSH # Enableに
4. Performance Options
  GPU Memory # 32ぐらいで十分
5. Localisation Options
  Locale # ja-jp.UTF-8.UTF-8 に設定
  Timezone # Asia Tokyo に設定
  Wlan Country # JP Japan に設定

これで大体十分

4.オヌヌメソフト(おすすめパッケージ)

データを更新
sudo apt update
sudo apt full-upgrade
以下のパッケージおすすめ
sudo apt install apache2 # Webサバ
sudo apt install samba # Windowsからエクスプローラーでファイルを触れるようになる
sudo apt install tmux # 仮想ターミナル
sudo apt install screen # 仮想ターミナル どっちでもいい
sudo apt install ufw # ファイアーウォール
sudo apt install xrdp # リモートデスクトップ CUI環境はいらない
sudo apt install git # githubを使ったりするのに必要
sudo apt install ffmpeg # 映像,画像処理のやつ
sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m00 # OpenjTalkの必要なセット

5.ファイアーウォールを設定

最初に使うポートを許可する
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 137/udp # Samba
sudo ufw allow 138/udp # Samba
sudo ufw allow 139/udp # Samba
sudo ufw allow 445/tcp # Samba
sudo ufw allow 3389/tcp # Xrdp
で 必要ない(デフォルト)ポートを閉じる
sudo ufw default deny
そしたら ファイアーウォールを起動する
sudo ufw enable

以上で設定終わり!

3. おまけ

ショートカットの追加

nano ~/.bashrcalias l="ls -lah" とかを追記しとくと l だけでまとめて確認できたりする

Xrdpの設定

sudo nano /etc/xrdp/xrdp.ini で開き 書き換え終わったら service xrdp restart でok

OpenjTalkを使ってみる

# 読み上げ文をechoで
echo "読み上げ文" | open_jtalk -x path/to/dic -m path/to/voice.htsvoice -ow path/to/output.wav
# 読み上げ文と.txtで
open_jtalk -x path/to/dic -m path/to/voice.htsvoice -ow path/to/output.wav reading.txt
# aptでフルセット入れた場合はこんな感じ
echo "こんにちは" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow ~/ojtalk.wav

apacheのWebRootを増やしてみる

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/(任意).conf # デフォルトをコピー
sudo nano /etc/apache2/sites-available/(任意).conf # 設定を変更
# "VirtualHost" と "DocumentRoot" を変更すること
sudo nano /etc/apache2/ports.conf # Listenを追加する
sudo a2ensite <任意>.conf # 設定ファイルを読み込み
sudo service apache2 restart # リロード&再起動

Sambaの設定

sudo nano /etc/samba/smb.conf # 設定を追記する 詳しくは下を参照
sudo service smbd restart # 適応
[Share]
comment = Raspberry Pi
# 共有するフォルダの path
path = /home/pi/Share
guest ok = yes
read only = no
browsable = yes
# 共有するフォルダにアクセスする際の User
force user = pi

ドライブのマウント

# 内部名を取得する Disk /dev/sd?? で表示される ころころ変わるから注意
sudo fdisk -l
# マウントコマンド
sudo mount /dev/sd?? (マウント先フォルダ)
# アンマウントコマンド 実行しないとデータ破損? どっちでも問題なし
sudo unmount (ディスク名)
sudo unmount (マウント先フォルダ)

Swapのあれこれ

スワップ領域 削除

sudo swapoff --all # 停止
sudo apt purge --auto-remove dphys-swapfile # パッケージ削除
sudo rm -fr /var/swap # スワップの残骸削除

swap領域 リセット
swapoff -a && swapon -a
swap領域 有効化
sudo apt install dphys-swapfile
swap領域 拡張

sudo nano /etc/dphys-swapfile # 設定書き換え 詳しくは下を参照
sudo /etc/init.d/dphys-swapfile restart # 再起動
# Swapの大きさ(単位M)
CONF_SWAPSIZE= 100
# もし4GB以上なら こっちも変更(単位M) & 先頭の#を外す
CONF_MAXSWAP= 1000

swap領域 追加

sudo fallocate -l 1G /swapfile # swap用ファイル 任意サイズ,任意Path
sudo chmod 600 /swapfile # 権限設定
sudo mkswap /swapfile # Swap File 化
sudo swapon /swapfile # 登録
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab # Reboot時の自動登録
sudo swapon --show #swap file確認 # Swap File をチェック

NoVNC

なんか便利なのでめもっときます なおX11環境(GUI)じゃないといけない

cd ~
sudo apt install x11vnc # install
git clone https://github.com/novnc/noVNC.git
# 下の二つは同時に
x11vnc -display :0 -passwd (password) -repeat -forever -shared -loop -rfbport 6081
~/noVNC/utils/novnc_proxy --vnc localhost:6081
# 止めるときは 両方Ctrl+C
nano ~/vnc.sh # 楽に管理できる奴 要screen

vnc.sh

if [ "$(screen -ls | grep "vnc")" = "" ]
 then
  screen -U -A -md -S vncServer
  screen -r vncServer -X stuff "x11vnc -display :0 -passwd (password) -repeat -forever -shared -loop -rfbport 6081\n"
  screen -U -A -md -S vncWeb
  screen -r vncWeb -X stuff "~/noVNC/utils/novnc_proxy --vnc localhost:6081\n"
 else
  screen -r vncServer -X kill
  screen -r vncWeb -X kill
fi

その他 自分でもよくわからんメモ

# 自動スリープ 無効化
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
# 自動スリープ 有効化
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
# ユーザー情報
id (user)
# uid: ユーザー名&ID,gid グループ名&ID,groups その他グループ名&ID
# ユーザー追加 -m が homedir 生成,無い場合は / に
useradd -m (user)
# グループ -f は 重複時は生成しない ops
groupadd -f (group)
# ユーザーのパスワード設定
sudo passwd (user)
# ユーザーの色々
usermod -g (group) (user) # メイングループ変更
usermod -G (group) (user)               # サブグループを変更
usermod -G (group1),(group2),... (user) # サブグループを変更
usermod -aG (group) (user)               # サブグループを追加
usermod -aG (group1),(group2),... (user) # サブグループを追加
usermod -L (user) # ユーザーをロックする
usermod -U (user) # ユーザーのロックを解除する
usermod -d (directory) (user) # ユーザーのホームディレクトリを設定
userdel -r (user) # ユーザーを削除 -r をつけるとホームディレクトリ削除

ユーザーの追加&引継ぎ

sudo useradd -m (user) # ユーザーの追加
sudo passwd (user) # パスワードを設定
groups pi # pi の所属グループを入手
# それを参考にユーザーにグループを設定 (group は :以降のを , で区切る)
sudo usermod -G (group) (user)
# もしくは これをなぐる (正常に動くかはわからんけど)
sudo usermod -G $(groups pi| sed -e "s|^.*: ||g" -e "s| |,|g") (user)
sudo cp -r /home/pi/* /home/(user) # pi のファイルを 新しいのに移動
sudo nano /etc/lightdm/lightdm.conf # ログインユーザーを変更
sudo nano /etc/systemd/system/autologin@.service # 自動ログインのほうも変更
sudo usermod -L pi # piユーザー をロック

lightdm.conf

#ログインユーザー変更
autologin-user=(user)

autologin@.service

--autologin (user)