Raspberry Pi OS(May 7th 2021)のインストールと初期設定。
前にやった Raspbian Busterのインストール からあまり違わないけど、微妙に違いもあるので、もう一度メモしておく。
ダウンロードはこちら。https://www.raspberrypi.org/downloads/raspbian/
「Raspberry Pi OS with desktop」 の 「Download」でダウンロードしてSDカードに書き込む。
(「・・・ and recommended software」 の方ではない)
以下の手順は、RaspberryPi4 model B で確認。
ブートの前にSDカードのFATパーティションのファイルをいじっておく。
UARTをコンソールとして使用するためにconfig.txt の [pi4]の行の前に以下を追加
# enable uart
enable_uart=1
[!WARNING] シリアルコンソールの送信改行コードは
CRにしておくこと。
そうしないと、ビミョーに悲しいことが起こる場合がある。
ついでにディスプレイ出力の解像度を変更するためにconfig.txtの [pi4]の行の前に以下も追加。
hdmi_groupとhdmi_modeについては使用するモニタに合わせる。
hdmi_group=2はモニタ種別でDMT(一般的にモニタディスプレイ)、
hdmi_mode=82が 1920x1080 60Hz(1080p)を示している。
設定値の内容については、Video options in config.txt
を参照。
framebuffer_XXXはテキストモードで表示したいサイズに合わせる。1920と1080とか、1280と720とか。
hdmi_force_hotplugを1に設定することで、ホットプラグを無効にし、常に接続状態となる。
これはHDMIを後から接続したら表示が出ないのを防ぐため。
# display resolution force setting
hdmi_group=2
hdmi_mode=82
framebuffer_width=1920
framebuffer_height=1080
hdmi_force_hotplug=1
[!NOTE] HDMIディスプレイを常に接続しているなら設定しなくても問題ないが、
HDMIディスプレイをはずしてVNCでリモート接続だけする場合は設定しておかないと
解像度が1024x768までしか設定できなくなるので注意。
Wi-Fiのアクセスポイントに接続するために
SDカードのFATパーティションに wpa_supplicant.conf という名前のファイルを以下の内容で作成する。ssidとpskは使用する環境に合わせて修正すること。
SSID名は ダブルクォーテーションで囲む。
暗号化キーは平文で記載する場合は ダブルクォーテーションで囲む。256bitキーの場合はダブルクォーテーションで囲まない。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID名"
psk="暗号化キー"
}
なお、暗号化キーの256bitキーはwpa_passphraseコマンドで作成できる。
wpa_passphrase "SSID名" "暗号化キー"
↓ 実行結果
network={
ssid="SSID名"
#psk="暗号化キー"
psk=ほにゃらら~~~ほにゃらら~~~
}
この実行結果をwpa_supplicant.confの該当部分に転記すればよい。
ちなみに、#psk="暗号化キー"の部分は削除しておくのが良い。(そうでないと何のために暗号化したのか分からなくなる。
そのままでもコメントとして扱われるので実動作に影響はないが。)
また、既に接続済みのシステムがある場合は、そのシステムの/etc/wpa_supplicant/wpa_supplicant.confをコピーして使用しても良い。
SSH接続を有効にするために
SDカードのFATパーティションに ssh (または ssh.txt ) という名前の空ファイルを作成する。
ここまでPCでの作業。
作成したSDカードをRaspberryPiに挿入し、起動。
起動ログはHDMI、シリアルコンソール両方に表示される。(SplashScreenをOFFしていた場合:後述)
RaspberryPiを使うとき、デフォルトパスワードの変更は言わずもがなですが、
できればユーザ名も変更しておきましょう。
追加してもいいけど、今あるユーザをリネームした方がなにかと便利。
GUIログインしているとpiユーザ使用中になってしまうので、GUIを無効化しておく。
GUI使えないとシリアルコンソールかSSH接続が必須になるので、つながることを以下の手順を実行する前に確認しておくこと。
手順はこんな感じ。
sudo raspi-config
1 System Options
S5 Boot / Auto Login
B1 Console
<Finish>
Would you like to reboot now?
と聞かれるので <Yes>
ついでにSplash Screenも無効化するならこんな感じで設定。
シリアルコンソールに起動ログが表示されるようにするにはSplash Screenを無効化しないといけない。
sudo raspi-config
1 System Options
S7 Splash Screen
Would you like to show the splash screen at boot?
に対して <No> を選択
Splash screen at boot is disabled
と表示されるので <OK>
<Finish>
[!NOTE] この操作で
/boot/cmdline.txtが書き換えられるらしい。
以下はシリアルコンソール or SSHで接続して行う。
sudo useradd -M temp # デフォルトユーザの変更のためにtemporary userを作る
sudo gpasswd -a temp sudo # temporary user にsudoグループを追加
sudo passwd temp # temporary user にパスワード設定
# 一旦log offしてtempでlog in
sudo usermod -l <新ユーザ名> pi # usermod -lでユーザ名をpiから<新ユーザ名>に変更
sudo usermod -d /home/<新ユーザ名> -m <新ユーザ名> # usermod -dでホームディレクトリを/home/piから/home/<新ユーザ名>に変更
sudo groupmod -n <新ユーザ名> pi # groupmod -nでpiグループを<新ユーザ名>グループに変更
# log offして新ユーザでlog in
sudo userdel temp # temporary user を削除
# パスワード変更する
passwd
《パスワードを設定》
参考情報はこちら。https://jyn.jp/raspberrypi-username-change/
↑にも書いてあるが、ユーザ名を変更するとsudoではパスワードを聞かれるようになる。
(おススメしないが)新しいユーザでもsudoのパスワードを省略したい場合は/etc/sudoers.d/010_pi-nopasswdの先頭のpiを<新ユーザ名>に変更する。新ユーザ名>
GUIログインに戻す。
sudo raspi-config
1 System Options
S5 Boot / Auto Login
B1 Console
B4 Desktop Autologin
<Finish>
Would you like to reboot now?
と聞かれるので <Yes>
GUIログインのユーザはraspi-configを実行したユーザに設定される。なので、ちゃんと変更したユーザで実行しないとダメです。
# アップデート実行
sudo apt update
sudo apt upgrade
# リブート
sudo reboot
sudo rpi-update は前は実行してたけど、なんか「通常は実行するな」と言われるのでやめておこう。
リモートデスクトップを使うために、VNCサーバのインストールと有効化を行う。
sudo apt install realvnc-vnc-server # インストール済みみたいだけど、念のため。
sudo raspi-config
3 Interfacing Options
P3 VNC
Would you like the VNC Server to be enabled?
と聞かれるので <Yes>
The VNC Server is enabled
と表示されるので <Ok>
<Finish>
Windows側のクライアントは、
https://www.realvnc.com/en/connect/download/viewer/
から VNC Viewerをダウンロード。
Windowsを選択してStandalone EXE x64(またはx86)を選択、ダウンロードボタンをクリック。
インストールは不要でダウンロードしたファイルを実行したら、あとは良きにはからえ。
VNC経由だと、日本語キーボードの設定しなくても日本語キーボードが使えるらしい。
日本語化の手順はこちらを参考に。 http://俺の技術メモ.net/raspbian-jessie-startup-conf/#i-2
シリアルコンソールを使用する場合、コンソールサイズがあってなくてイライラするので、シリアルコンソールの設定用スクリプトを以下の手順で取得。
cd ~
wget https://gist.githubusercontent.com/ippei8jp/8179edb10867faf98e233a52965a9e53/raw/c397ae5cd29948a940117ab7baf1b4c6a664b33e/resize.py
chmod +x resize.py
~/.bashrcを必要に応じて修正。
例えば、以下を追記。
# プロンプトの設定
PS1="\w\$ "
# キーバインドの設定
bind '"\C-n": history-search-forward'
bind '"\C-p": history-search-backward'
# ディレクトリスタックの表示改善
function pushd() {
command pushd $* > /dev/null
command dirs -v
}
function popd() {
command popd $* > /dev/null
command dirs -v
}
function dirs() {
command dirs -v
}
# 表示色変更
export LS_COLORS='di=01;32:ln=01;36:ex=01;31:'
export GREP_COLORS='mt=01;31:ml=:cx=:fn=01;32:ln=32:bn=32:se=36'
# lessのオプション
export LESS="-iMR"
# reset console size
case "$TERM" in
vt220) ~/resize.py ;;
esac
# pyenv 設定
export PYENV_ROOT=/proj/.pyenv
if [ -e $PYENV_ROOT ]; then
export PATH=$PYENV_ROOT/bin:$PATH
# Raspbian向け対策(numpyでundefined symbol: PyFPE_jbuf)
export PYTHON_CONFIGURE_OPTS="--enable-ipv6\
--enable-unicode=ucs4\
--enable-shared\
--with-dbmliborder=bdb:gdbm\
--with-system-expat\
--with-system-ffi\
--with-fpectl"
eval "$(pyenv init --path)" # pyenv 2.0以降で必要
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
# nodenv 設定
export NODENV_ROOT=/proj/.nodenv
if [ -e $NODENV_ROOT ]; then
export PATH=$NODENV_ROOT/bin:$PATH
eval "$(nodenv init -)"
fi
お好みでマシン名を変更(対応する部分を変更各1カ所)
sudo vi /etc/hostname
sudo vi /etc/hosts
HDMI接続で使わないなら設定不要
参考: https://qiita.com/Pseudonym/items/12e447557a5234bb265b
/etc/default/keyboardファイルの以下の部分を修正
XKBOPTIONS=""
↓
# XKBOPTIONS="ctrl:nocaps" # CapsLock --> Ctrl
XKBOPTIONS="ctrl:swapcaps" # CapsLock <-> Ctrl
[!WARNING] これでできるハズなんだけど、なんかうまく行かない。。。
VNCしか使わないから、ま、いっか。
まずはワークディレクトリの作成
sudo mkdir /work
sudo mkdir /proj
sudo chown `whoami`:`whoami` /work /proj
sambaのインストールと設定
sudo apt install samba
sudo smbpasswd -a `whoami`
パスワードを設定
設定変更のため、/etc/samba/smb.conf を編集
[global] の下に以下を追加
map archive = no
[homes] の下の以下を修正
read only = no
[!NOTE] home は一旦log inしないと見えない
最後に以下を追加
[work]
path = /work
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = <ユーザ名>
force create mode = 0664
[proj]
path = /proj
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = <ユーザ名>
force create mode = 0664
サービスの再起動
sudo service smbd reload
sudo service smbd restart
ウィンドウをクリックしないとフォーカスが移動しないのはイライラするので x-mouse相当の設定をする。
/etc/xdg/openbox/lxde-pi-rc.xmlの以下の部分をnoからyesに変更。
<followMouse>yes</followMouse>
IPv6を無効化したい場合は以下を設定。
/etc/sysctl.confに以下を追加する
# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
sudo sysctl -p