Raspberry Pi OS(64bit)(Jan 28th 2022)のインストールと初期設定。
Raspberry Pi OSページの
「Manually install an operating system image」の「See all download options」をクリック、
「Raspberry Pi OS (64-bit)」の「Raspberry Pi OS with desktop」の「Download」をクリックしてダウンロード
試したのは Release date: January 28th 2022
[!NOTE] 「Archive」リンクから過去のリリースも入手できる
なんか見るたびにページ構成変わるよなぁ….😩💨
ブートの前にSDカードのFATパーティションのファイルをいじっておく。
UARTをコンソールとして使用するためにconfig.txt
の 最後の [all]
の行の下に以下を追加
# enable uart
enable_uart=1
[!WARNING] シリアルコンソールの送信改行コードはCRにしておくこと。
そうしないと、ビミョーに悲しいことが起こる場合がある。
ついでにディスプレイ出力の解像度を変更するためにconfig.txt
の 最後の [all]
の行の下に以下も追加。
hdmi_group
とhdmi_mode
については使用するモニタに合わせる。
hdmi_group=2
はモニタ種別でDMT(一般的にモニタディスプレイ)、
hdmi_mode=82
が 1920x1080 60Hz(1080p)を示している。
設定値の内容については、HDMI Modeを参照。
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までしか設定できなくなるので注意。
このバージョンではHDMIディスプレイを繋いでいない状態でVNCで接続すると表示がとても遅くなる問題がある。
回避するには、cmdline.txt
に以下追記する。
1920x1080@60D
の部分は上記のhdmi_mode
やframebuffer_XXX
の設定値に合わせる。
video=HDMI-A-1:1920x1080@60D
具体的にはこんな感じ。
console=serial0,115200 console=tty1 root=PARTUUID=b635b4ec-02 rootfstype=ext4 fsck.repair=yes video=HDMI-A-1:1920x1080@60D rootwait
参考URL:Re: Bullseye vncserver is very slow without display
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
コマンドで作成できる。
[!NOTE] [メモ] (らずぱい)Windows上から固定IP設定 (Raspberry Pi Static IP) にWindows版の
wpa_passphrase.exe
へのリンクがある。
ワタシはUbuntuや別のRasberryPiで作ったから使ってないけど…
wpa_passphrase "SSID名" "暗号化キー"
↓ 実行結果
network={
ssid="SSID名"
#psk="暗号化キー"
psk=ほにゃらら~~~ほにゃらら~~~
}
この実行結果をwpa_supplicant.conf
の該当部分に転記すればよい。
ちなみに、#psk="暗号化キー"
の部分は削除しておくのが良い。(そうでないと何のために暗号化したのか分からなくなる。
そのままでもコメントとして扱われるので実動作に影響はないが。)
また、既に接続済みのシステムがある場合は、そのシステムの/etc/wpa_supplicant/wpa_supplicant.conf
をコピーして使用しても良い。
SSH接続を有効にするために
SDカードのFATパーティションに ssh
(または ssh.txt
) という名前の空ファイルを作成する。
[!NOTE] 起動後、公開鍵ファイルの設置を行うには、
ubuntuにSSHサーバをセットアップする
の「秘密鍵と公開鍵の生成と公開鍵ファイルの設置」の部分を参照。
(ページはUbuntuについて書いてあるけど、サーバがセットアップ済みなことを除けばRaspberry Pi OSでも同じ)
ここまでPCでの作業。
作成したSDカードをRaspberryPiに挿入し、起動。
起動ログはHDMI、シリアルコンソール両方に表示される。(SplashScreenをOFFしていた場合:後述)
# アップデート実行
sudo apt update
sudo apt upgrade
# リブート
sudo reboot
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
を実行したユーザに設定される。なので、ちゃんと変更したユーザで実行しないとダメです。
シリアルコンソールを使用する場合、コンソールサイズがあってなくてイライラするので、シリアルコンソールの設定用スクリプトを以下の手順で取得。
cd ~
wget https://gist.githubusercontent.com/ippei8jp/8179edb10867faf98e233a52965a9e53/raw/4f39afbcd8471426421944b597f3a5f2963984c6/resize.py
chmod +x resize.py
[!NOTE] resize.pyは以前python2ベースで作ってあったが、
このバージョンからpython2がデフォルトでインストールされなくなったので、
python3ベースに修正したのでURLが変更されています。
~/.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
物理キーボード接続で使わないなら設定不要
参考: https://qiita.com/Pseudonym/items/12e447557a5234bb265b
/etc/default/keyboard
ファイルの以下の部分を修正
XKBOPTIONS=""
↓
# XKBOPTIONS="ctrl:nocaps" # CapsLock --> Ctrl
XKBOPTIONS="ctrl:swapcaps" # CapsLock <-> Ctrl
[!WARNING]
これでできるハズなんだけど、なんかうまく行かない。。。
VNCしか使わないから、ま、いっか。
bashでクリップボードからペーストするとペーストした文字が選択状態になったり、改行がその場で入力されなかったりするようになった。
こればbash 5.1からブラケットペーストモード というのがデフォルトで有効になったためらしい。
(余計なことをしてくれる…😩💨)
これを回避するには/etc/inputrc
の最後に以下を追記する。
# disable bracked-paste mode
set enable-bracketed-paste off
起動済みのbashには効かないが、設定以降に起動したbashでは有効になる(システムの再起動は不要)。
参考: シェル - bash - ブラケットペーストモード(Bracketed Paste Mode)
まずはワークディレクトリの作成
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
お好みでマシン名を変更(対応する部分を変更各1カ所)
sudo vi /etc/hostname
sudo vi /etc/hosts
リモートデスクトップを使うために、VNCサーバのインストールと有効化を行う。
s``udo apt install realvnc-vnc-server # インストール済みみたいだけど、念のため。
sudo raspi-config
3 Interfacing Options
I3 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
SDカードイメージのバックアップを取るならこちら。
Raspbian SDカードイメージファイルの作成(改訂版)