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を初期セットアップする
企業。