VNCからRPI4B Raspbian Busterをセットアップする
スワップやミラーサーバ等。
3B+のときのセットアップ方法
手順
- スワップ拡張
- RAMディスク設定
- aptのソースを日本サーバに設定
- ログ出力の抑制
- .bashrcに自作スクリプト呼出を追記
- システム更新
- 日本語フォント+日本語入力のインストール
- アプリのインストール
1. スワップ拡張
現状確認。
free -h
total used free shared buff/cache available Mem: 3.6Gi 171Mi 3.2Gi 24Mi 253Mi 3.3Gi Swap: 99Mi 0B 99Mi
メインメモリ4GiB、スワップ99MiB。
以下の手順にてスワップ容量を変更する。
sudo vi /etc/dphys-swapfile
CONF_SWAPSIZE=4096 CONF_MAXSWAP=8196
設定を有効化する。
sudo systemctl stop dphys-swapfile sudo systemctl start dphys-swapfile
確認する。
free -h total used free shared buff/cache available Mem: 3.6Gi 173Mi 3.2Gi 24Mi 255Mi 3.3Gi Swap: 4.0Gi 0B 4.0Gi
スワップが4GiBになった。
2. RAMディスク
sudo mousepad /etc/fstab
標準テキストエディタがleafpadでなくmousepadに改名されていた。
/etc/fstab
tmpfs /tmp tmpfs defaults,size=2048m,noatime,mode=1777 0 0 tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0 tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0 tmpfs /home/pi/.cache/chromium/Default/ tmpfs defaults,size=2048m,noatime,mode=1777 0 0 tmpfs /home/pi/.cache/lxsession/LXDE-pi tmpfs defaults,size=1m,noatime,mode=1777 0 0
パスに含まれる半角スペースは\040で表す。Chromiumの自作プロファイルはスペースが含まれるクソ仕様なのでそこで使う。
tmpfs /home/pi/.cache/chromium/Profile\0401/ tmpfs defaults,size=2048m,noatime,mode=1777 0 0 tmpfs /home/pi/.cache/chromium/Profile\0402/ tmpfs defaults,size=2048m,noatime,mode=1777 0 0 tmpfs /home/pi/.cache/chromium/Profile\0403/ tmpfs defaults,size=2048m,noatime,mode=1777 0 0 tmpfs /home/pi/.cache/chromium/Profile\0404/ tmpfs defaults,size=2048m,noatime,mode=1777 0 0
再起動してdf -hで確認できると思う。
reboot
df -h
3. システム更新ミラー
sudo vi /etc/apt/sources.list
先頭に日本のミラーを追記する。
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi # Uncomment line below then 'apt-get update' to enable 'apt-get source' #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
4. ログ出力の抑制
以下ファイルで任意の箇所をコメントアウトする。
sudo vi /etc/rsyslog.conf
コメントアウト箇所の抜粋
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
#
# Some "catch-all" log files.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
今回は*.emerg以外、行頭に#を追記してコメントアウトした。が、ログ出力したほうがいい場合もあるため任意。デフォルトは上記。
5. システム更新
5-1. ミラーサイト設定
まずはミラーサイトを日本にすることでダウンロードを高速化する。
sudo vi /etc/apt/sources.list
先頭行に以下のように日本のミラーサイトを追記して上書き終了する。
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi
確認する。
cat /etc/apt/sources.list
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi # Uncomment line below then 'apt-get update' to enable 'apt-get source' #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
5-2. システム更新する
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md
time sudo apt update -y time sudo apt full-upgrade -y time sudo apt install rpi-eeprom -y
full-upgradeは保留されたパッケージをアップグレードするrpi-eepromはPi4Bのブートローダを最新に更新してくれるツール
ログ
$ time sudo apt update -y ... 26.5 MB を 36秒 で取得しました (730 kB/s) ... アップグレードできるパッケージが 127 個あります。表示するには 'apt list --upgradable' を実行してください。 ... real 0m41.644s user 0m14.759s sys 0m2.996s
$ time sudo apt full-upgrade -y ... 以下のパッケージが自動でインストールされましたが、もう必要とされていません: point-rpi これを削除するには 'sudo apt autoremove' を利用してください。 以下のパッケージが新たにインストールされます: bubblewrap eject xdg-dbus-proxy 以下のパッケージはアップグレードされます: arandr base-files cron dhcpcd5 distro-info-data e2fsprogs file firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek freetype2-doc gldriver-test gtk2-engines-pixflat libarchive13 libcom-err2 libegl-mesa0 libext2fs2 libfm-data libfm-extra4 libfm-gtk-data libfm-gtk4 libfm-modules libfm4 libfreetype6 libfreetype6-dev libfribidi0 libgbm1 libgl1-mesa-dri libglapi-mesa libgles2-mesa libglib2.0-0 libglib2.0-bin libglib2.0-data libglx-mesa0 libgs9 libgs9-common libjavascriptcoregtk-4.0-18 libmagic-mgc libmagic1 libmp3lame0 libmtdev1 libncurses6 libncursesw5 libncursesw6 libobrender32v5 libobt2v5 libogg0 libpam-systemd libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 libraw1394-11 libsord-0-0 libspeex1 libspeexdsp1 libss2 libssl1.1 libsystemd0 libtinfo5 libtinfo6 libudev1 libvpx5 libwebkit2gtk-4.0-37 libxaw7 libxcb-util0 libxdamage1 libxml2 libxmu6 libxmuu1 libxslt1.1 libxt6 lxpanel lxpanel-data lxplug-bluetooth lxplug-ejecter lxplug-ptbatt lxplug-volume mesa-va-drivers mesa-vdpau-drivers ncurses-base ncurses-bin ncurses-term obconf openbox openssh-client openssh-server openssh-sftp-server openssl pcmanfm pi-bluetooth piclone pipanel piwiz python-cryptography python-piglow python-werkzeug python2.7 python2.7-dev python2.7-minimal python3-cryptography python3-piglow python3-werkzeug raspberrypi-bootloader raspberrypi-kernel raspberrypi-sys-mods raspberrypi-ui-mods raspi-config raspi-gpio rc-gui rp-prefapps rpcbind rpi-chromium-mods rpi-eeprom rpi-eeprom-images ssh sudo systemd systemd-sysv udev wpasupplicant アップグレード: 127 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 226 MB のアーカイブを取得する必要があります。 この操作後に追加で 3,639 kB のディスク容量が消費されます。 ... real 23m24.909s user 2m46.569s sys 1m13.038s
$ time sudo apt install rpi-eeprom -y ... rpi-eeprom はすでに最新バージョン (2.4-1) です。 ...
6. 日本語化する
- 日本語フォント
- IME(キーボード入力で日本語変換できるソフト)
sudo apt install -y fonts-vlgothic fonts-ipafont fonts-ipaexfont sudo apt install -y fcitx-mozc
ログ抜粋
... 18.5 MB のアーカイブを取得する必要があります。 この操作後に追加で 51.1 MB のディスク容量が消費されます。 ... 43.6 MB のアーカイブを取得する必要があります。 この操作後に追加で 97.4 MB のディスク容量が消費されます。 ...
有効化するには以下。
- 再起動する
- デスクトップのタスクバー右上にIMEアイコン?(キーボードっぽい奴)があるのでクリックする
Mozcのアイコンになるはず(丸いオレンジ色のあと書いている奴)
Mozcの細かい設定は以下。別にデフォルトでも使える。
- システムメニュー
設定Mozc の設定
動作テスト。
- システムメニュー
アクセサリText Editor- 適当に入力してひらがなが入力できることを確認する
- スペースキーで漢字への変換候補が出ることを確認する
7. アプリ
sudo apt install -y gimp sudo apt install -y libreoffice sudo apt install -y libreoffice-help-ja sudo apt install -y libreoffice-l10n-ja
この操作後に追加で 122 MB のディスク容量が消費されます。 この操作後に追加で 649 MB のディスク容量が消費されます。
8. ブラウザの初期設定
メニューの設定からダウンロードパスを/tmpに変更する。
UIはコロコロ変わるので説明できない。頑張って探せ。設定できるCLIコマンドもないため自動化できない。
3B+のときに書いた手順
- スワップ拡張
- RAMディスク設定
- aptのソースを日本サーバに設定
- ログ出力の抑制
- .bashrcに自作スクリプト呼出を追記
- システム更新
- 日本語フォント+日本語入力のインストール
- アプリのインストール
raspbian_first_setup.sh
#!/bin/bash
# ===================================================
# 題名: Raspbian stretch 初期セットアップ自動化バッチ
# 対象OS: Raspbian buster 10.0 2019-09-26
# 作成日: 2019-12-04
# 作成者: ytyaru
# セットアップ概要:
# * スワップ(拡張 or 停止)
# * RAMディスク設定
# * aptのソースを日本サーバに設定
# * ログ出力の抑制
# * .bashrcに自作スクリプト呼出を追記
# * システム更新
# * 日本語フォント+日本語入力のインストール
# * アプリのインストール
# 実行タイミング:
# SDカードにRaspbianをインストールし、
# 初回ブートし、
# ダイアログに従ってセットアップ
# した後に1度だけ実行する。
# なお、システム更新はダイアログの時点ではスキップし、このバッチで行うほうが高速に完了するはず。
# ===================================================
# コマンドをsudo権限で実行する
# $1: some linux command.
run_sudo() {
sudo sh -c "${1}"
}
# 指定したテキストを指定したファイルに追記する
# $1: text: new line text.
# $2: file: target file path.
# http://yut.hatenablog.com/entry/20111013/1318436872
# https://qiita.com/b4b4r07/items/e56a8e3471fb45df2f59
# http://wannabe-jellyfish.hatenablog.com/entry/2015/01/10/004554
# http://pooh.gr.jp/?p=6311
write_line() {
for i in "${1}"; do
local command="echo '${i}'"
sudo sh -c "${command} >> \"${2}\""
done
}
# 指定ファイルのうち先頭が指定テキストの場合、先頭に#を付与する
# $1: file: target file path.
# $2: text: target text(ヒアドキュメントで複数行指定されることを想定)
#http://linux-bash.com/archives/3745148.html
write_sharp() {
#IFS_backup=IFS
#IFS=$'\n'
for i in ${2}; do
# 末尾の改行を除去(しないと次のエラーが出る。"sed: -e expression #1, char 2: アドレスregexが終了していません")
local line=`echo ${i} | sed -e "s/[\r\n]\+//g"`
local sed_script="/^${line}/s/^/#/"
local sed_cmd="sed -e \"${sed_script}\" -i.bak \"${1}\""
run_sudo "${sed_cmd}"
done
#IFS=IFS_backup
}
# スワップ停止(SDカード書込上限対策)
stop_swap() {
sudo swapoff --all
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
}
# スワップのサイズを100MBから2GBに変更する
setup_swap() {
local SwapFilePath=/etc/dphys-swapfile
write_sharp "${SwapFilePath}" "CONF_SWAPSIZE=100"
write_line "CONF_SWAPSIZE=2048" "${SwapFilePath}"
sudo systemctl stop dphys-swapfile
sudo systemctl start dphys-swapfile
}
# RAMディスク作成(SDカード書込上限対策)
write_fstab() {
text='
tmpfs /tmp tmpfs defaults,size=768m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0
tmpfs /home/pi/.cache/chromium/Default/ tmpfs defaults,size=768m,noatime,mode=1777 0 0
tmpfs /home/pi/.cache/lxsession/LXDE-pi tmpfs defaults,size=1m,noatime,mode=1777 0 0
'
write_line "${text}" "/etc/fstab"
}
# システム更新の高速化(日本用)
write_apt_sources_list() {
text='
deb http://ftp.jaist.ac.jp/raspbian/ stretch main contrib non-free rpi
deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/ stretch main contrib non-free rpi
deb http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/ stretch main contrib non-free rpi
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
# firmwar update
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
'
write_line "${text}" "/etc/apt/sources.list"
}
# ログ出力を抑制する(SDカード書込上限対策)
#http://linux-bash.com/archives/3745148.html
#http://momijiame.tumblr.com/post/92049916671/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%89%B9%E5%AE%9A%E8%A1%8C%E3%82%92-sed-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%A2%E3%82%A6%E3%83%88%E3%81%99%E3%82%8B
#/etc/rsyslog.conf
comment_out_rsyslog_conf() {
text='
auth,authpriv.*
*.*;auth,authpriv.none
cron.*
daemon.*
kern.*
lpr.*
mail.*
user.*
mail.info
mail.warn
mail.err
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
'
write_sharp "/etc/rsyslog.conf" "${text}"
}
# .bashrcに自作スクリプト呼出を追記
append_bashrc() {
timestamp=`date +"%Y-%m-%d %H:%M:%S"`
# text='
## ${timestamp} 自作スクリプト呼出
#. "$HOME/root/script/sh/_called/bash/bashrc.sh"
#'
text=$(cat <<EOS
# ${timestamp} 自作スクリプト呼出
. "$HOME/root/script/sh/_called/bash/bashrc.sh"
EOS
)
write_line "${text}" "/etc/apt/sources.list"
}
# システム&ファームウェア更新
update_system() {
sudo apt update -y
sudo apt upgrade -y
sudo apt dist-upgrade -y
}
# 日本語化
japanese() {
sudo apt install -y fonts-vlgothic fonts-ipafont fonts-ipaexfont
sudo apt install -y fcitx-mozc
}
# アプリケーションのインストール
install_apps() {
install_general
install_sdk
}
# 汎用系アプリケーションインストール
install_general() {
sudo apt install -y pluma
sudo apt install -y gimp
# install_libreoffice
}
install_libreoffice() {
sudo apt install libreoffice
sudo apt install libreoffice-help-ja
}
# 開発系アプリケーションインストール
install_sdk() {
install_sdk_mono
install_sdk_monodevelop
}
install_sdk_mono() {
time sudo apt install -y apt-transport-https dirmngr
time sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
time sudo apt install -y mono-devel
}
install_sdk_monodevelop() {
time sudo apt install -y monodevelop
# MonoDevelop拡張機能のインストール
# https://github.com/picoe/Eto/releases
}
# ブラウザの設定
# * 起動時:`前回開いていたページを開く`
# * ダウンロード 保存先:`/tmp`
# ブラウザ拡張機能のインストール
# [ublock-origin](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=ja)|広告ブロック
# [stylus](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne)|ユーザスタイルシート
# [authenticator](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai?hl=ja)|二段階認証アプリ
# 実行する
#stop_swap
setup_swap
write_fstab
write_apt_sources_list
comment_out_rsyslog_conf
append_bashrc
update_system
japanese
install_apps
# 再起動する
reboot
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- C# dotnet 3.0.100 ※
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
ハード。
- Raspberry Pi 4B (4GB) を2個予約した(KSY先行予約販売)
- Raspberry Pi 4B 届いた! 開封の儀
- Raspberry Pi 4B ヒートシンク取付
- Raspberry Pi 4B ケース装着
- HDMIまちがえて買ってた……(type A, C, D の罠)
ソフト。
- RPI4B Raspbian Buster USB boot 未対応……
- Raspbian Buster 2019-09-26 インストール
- Raspbian Buster 2019-09-26 ダウンロード
- Raspbian Buster 2019-09-26 HDMI設定について調べた
- Raspbian Buster 2019-09-26 インストール前の設定(Wi-Fi)
設定。
- Raspbian Buster ヘッドレス 初期設定 できないか調べた
- Raspberry Pi 4B でSSHログインできた
- Raspberry Pi 4B 初期設定(ヘッドレス)
- Raspberry Pi 4B SDブート+USBルート(≒USB boot)に成功
- VNCからRaspbian Busterへログインする方法を調べる
- VNCからRPI4B Raspbian Busterを初期セットアップする
企業。