Raspbian Buster with desktopのインストールと初期設定。
ダウンロードはこちら。https://www.raspberrypi.org/downloads/raspbian/
「Raspbian Buster Lite」 の 「DownloadZIP」でダウンロードする。
以下の手順は、RaspberryPi Zero W、「Version: July 2019」 で確認。
ブートの前にSDカードのFATパーティションのファイルをいじっておく。
UARTをコンソールとして使用するためにconfig.txt
に以下を追加
# enable uart
enable_uart=1
ついでにディスプレイ出力の解像度を変更するためにconfig.txt
に以下も追加。
framebuffer_XXX
は表示したいサイズに合わせる。1920と1080とか、1280と720とか。
hdmi_force_hotplug
を1に設定することで、ホットプラグを無効にし、常に接続状態となる。
これはHDMIを後から接続したら表示が出ないのを防ぐため。
# display resolution force setting
framebuffer_width=1280
framebuffer_height=720
hdmi_force_hotplug=1
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を使うとき、デフォルトパスワードの変更は言わずもがなですが、
できればユーザ名も変更しておきましょう。
追加してもいいけど、今あるユーザをリネームした方がなにかと便利。
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
を<新ユーザ名>に変更する。新ユーザ名>
# アップデート実行
sudo apt update
sudo apt upgrade
# リブート
sudo reboot
sudo rpi-update
は前は実行してたけど、なんか「通常は実行するな」と言われるのでやめておこう。
日本語表示や時刻を日本時間に設定するための設定を行う。
sudo raspi-config
4 Localisation Options
I1 Change Locale
[ ] ja_JP.UTF-8 UTF-8 でスペースを押して[*] にする
TABを押して<Ok>を選んでリターン
Default locale for~ と聞かれるので、
ja_JP.UTF-8 を選択
TABを押して<Ok>を選んでリターン
4 Localisation Options
I2 Change Timezon
Asia
Tokyo
<Finish>
設定変更を有効にするにはrebootが必要。
シリアルコンソールを使用する場合、コンソールサイズがあってなくてイライラするので、シリアルコンソールの設定用スクリプトを以下の手順で取得。
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'
# reset console size
case "$TERM" in
vt220) ~/resize.py ;;
esac
# pyenv 設定
# export PYENV_ROOT=/proj/.pyenv
# export PATH=$PYENV_ROOT/bin:$PATH
# eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
# nodenv 設定
# export NODENV_ROOT=/proj/.nodenv
# export PATH=$NODENV_ROOT/bin:$PATH
# eval "$(nodenv init -)"
お好みでマシン名を変更(対応する部分を変更各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] これでできるハズなんだけど、なんかうまく行かない。。。
SSHなら関係ないから、ま、いっか。
まずはワークディレクトリの作成
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
デフォルトのままだと、HDMIコンソールは日本語の入力はおろか、表示もできない。
そこで、日本語入力&表示環境を整備する。
HDMIコンソールで日本語を使わないなら本章は設定不要。
フォントをインストールしないと表示できないのでまずはフォントのインストール。
sudo apt install fonts-noto-cjk
デフォルトのターミナルは日本語を表示できないので、日本語対応のターミナルエミュレータを使う。
ネット上にはjfbtermを使用する記事が多いが、jfbtermはイマイチらしいのでfbtermを使う。
sudo apt install fbterm
日本語入力のためのプログラム。Windowsで言うところのMS-IMEやATOKに相当するもの。
sudo apt install uim-fep uim-anthy
fbtermの設定は、 ~/.fbtermrc で行う。
HDMIコンソールから fbtermを一度起動すると ~/.fbtermrc ができるので、設定変更するときはこれを書き換える。
例えばこんな感じ。
font-size=18
fbtermを起動したときに[input] can’t change kernel keymap table ~
と表示されるときは以下を実行すると良い。(表示されるだけで実害はないらしい)
sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm
または、以下でも良い。
sudo chmod u+s /usr/bin/fbterm
uimでCTRL+SPACEでFEPの切り替えの設定。
~/.uim に以下の内容を記述(なければ新規作成)。
参考: https://qiita.com/tukiyo3/items/376e3a2895a71ff9bfc7
(define default-im-name 'anthy)
(define-key generic-on-key? '("<Control> " "`"))
(define-key generic-off-key? '("<Control> " "`"))
[!NOTE] 各行のシングルクォーテーションは1個だけ。文字列として区切っている訳ではない。
余計なシングルクォーテーションを入れると動かなくなるので注意!!
起動時にfbtermを起動するには以下を ~/.profile 、 ~/.bashrc に追加
最後に以下の内容を追加
if [ "$TERM" = "linux" ]
then
# FBTERM=1 exec fbterm -- uim-fep
FBTERM=1 fbterm -- uim-fep
exit
fi
本当はコメントアウトされてる方の exec を使うようにしないといけないが、現状うまく動かないらしい。
(Strechでは動いていたと思う)
仕方ないので、fbtermをbashの子プロセスとして実行するようにしてある。
これだとうまく動いている(当然、メモリ消費量は増えるけど)。
また、ログアウトの際にCTRL+Dを2回入力しないといけなくなる(fbtermからのexitとbashからのexit)のを回避するため、 fbterm終了時にexitコマンドを実行している。
最後に(でなくてもいいけど)、以下を追加
case "$TERM" in
linux)
[ -n "$FBTERM" ] && export TERM=fbterm
;;
fbterm)
# 何もしない
;;
*)
# 何もしない
;;
esac