先日PCで暗号化FSを設定したHDDですが,
SBCのRaspberry Piに接続してマウントしようとしたところ失敗しました.
$ sudo cryptsetup open -S0 /dev/sda crypthdd Enter passphrase for /dev/sda: Warning: keyslot operation could fail as it requires more than available memory. Killed
先日PCで暗号化FSを設定したHDDですが,
SBCのRaspberry Piに接続してマウントしようとしたところ失敗しました.
$ sudo cryptsetup open -S0 /dev/sda crypthdd Enter passphrase for /dev/sda: Warning: keyslot operation could fail as it requires more than available memory. Killed
Raspberry Pi OS bullseye がリリースされていたので手元のRaspberry Pi 3 model B のOS をbuster からbullseye にアップグレードしてみました.
Raspberry Pi OS armhfに libwidevinecdm0
パッケージが入ったようです.Raspberry Pi 3 Model Bでも動作したのでメモしておきます.
libwidevinecdm0
パッケージはWidevineというDRM付きコンテンツを閲覧するためのパッケージです.
Widevineは結構あちこちで見かけます.siteには以下のようなサービスが載っていました.
まずWidevineに非対応な状態でNetflixのコンテンツを閲覧しようとするとこのようなエラーになります.
Note
|
Netflixの会員じゃなくても次で試せます. TV番組・ドラマを無料で視聴 | Netflix お試し無料配信 |
ここで libwidevinecdm0
パッケージを導入してChromiumを起動しなおせばOKなはずですがうまく行きません.
chrome://components/
を見ても Widevine
が出てきません.
https://bitmovin.com/demos/drm にアクセスしてみると, Detected , using No DRM
と表示されDRMが使えないようです.
Raspberry Pi 4 Model B/400以外の事例が見当たらないのでもしかして何らかの要件が足りなくてRaspberry Pi 4 より前のバージョンでは動かないのかな?とか思ったのですが,もう少し調べるとRaspberry Pi OSのChromiumには chromium
と chromium-browser
の2つのパッケージがあるようです.
$ apt show chromium
Package: chromium
Version: 88.0.4324.146-1~deb10u1
Priority: optional
Section: web
Maintainer: Debian Chromium Team <chromium@packages.debian.org>
Installed-Size: 114 MB
Provides: gnome-www-browser, www-browser
Depends: libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatomic1 (>= 4.8), libatspi2.0-0 (>= 2.9.90), libavcode
c58 (>= 7:4.0), libavformat58 (>= 7:4.1), libavutil56 (>= 7:4.0), libc6 (>= 2.28), libcairo2 (>= 1.6.0), libcups2 (>= 1.7.0), libdbus-1-3 (>= 1.9
.14), libdrm2 (>= 2.4.38), libevent-2.1-6 (>= 2.1.8-stable), libexpat1 (>= 2.0.1), libflac8 (>= 1.3.0), libfontconfig1 (>= 2.12.6), libfreetype6
(>= 2.3.9), libgbm1 (>= 17.1.0~rc2), libgcc1 (>= 1:4.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.39.4), libgtk-3-0 (>= 3.19.12), libha
rfbuzz0b (>= 2.2.0), libicu63 (>= 63.1-1~), libjpeg62-turbo (>= 1.5.0), libjsoncpp1 (>= 1.7.4), liblcms2-2 (>= 2.2+git20110628), libminizip1 (>=
1.1), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libopenjp2-7 (>= 2.2.0), libopus0 (>= 1.1), libpango-1.0-0 (>= 1.14.0), libpng16-16 (>= 1.6.2-
1), libpulse0 (>= 0.99.1), libre2-5 (>= 20160901), libsnappy1v5, libstdc++6 (>= 7), libvpx5 (>= 1.6.0), libwebp6 (>= 0.5.1), libwebpdemux2 (>= 0.
5.1), libwebpmux3 (>= 0.6.1-2), libx11-6 (>= 2:1.4.99.1), libxcb1 (>= 1.9.2), libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libx
fixes3, libxml2 (>= 2.7.4), libxrandr2, libxslt1.1 (>= 1.1.25), zlib1g (>= 1:1.2.2), chromium-common (= 88.0.4324.146-1~deb10u1)
Recommends: chromium-sandbox
Suggests: chromium-l10n, chromium-shell, chromium-driver
Conflicts: libgl1-mesa-swx11, libnettle4, libsecret-1-0 (<< 0.18)
Breaks: chromium-lwn4chrome (<= 1.0-2), chromium-tt-rss-notifier (<= 0.5.2-2)
Homepage: http://www.chromium.org/Home
Download-Size: 48.9 MB
APT-Sources: http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
Description: web browser
Web browser that aims to build a safer, faster, and more stable internet
browsing experience.
.
This package contains the web browser component.
$ apt show chromium-browser
Package: chromium-browser
Version: 88.0.4324.187-rpt1
Priority: optional
Section: web
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 329 MB
Provides: chromium, chromium-browser-inspector, www-browser
Pre-Depends: dpkg (>= 1.15.6)
Depends: libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.18), libcairo2 (>=
1.6.0), libcups2 (>= 1.7.0), libdbus-1-3 (>= 1.9.14), libdrm2 (>= 2.4.38), libexpat1 (>= 2.0.1), libgbm1 (>= 17.1.0~rc2), libgcc1 (>= 1:4.3), li
bgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.39.4), libgtk-3-0 (>= 3.21.5), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1
.14.0), libx11-6 (>= 2:1.4.99.1), libxcb1 (>= 1.9.2), libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxkbcommon0 (>
= 0.5.0), libxrandr2, libxtst6, bash (>= 4), xdg-utils, chromium-codecs-ffmpeg-extra (= 88.0.4324.187-rpt1) | chromium-codecs-ffmpeg (= 88.0.4324
.187-rpt1), libraspberrypi0, libgl1-mesa-dri
Recommends: chromium-browser-l10n
Suggests: webaccounts-chromium-extension, unity-chromium-extension, adobe-flashplugin
Conflicts: chromium, chromium-browser-inspector
Replaces: chromium, chromium-browser-inspector
Homepage: https://chromium.googlesource.com/chromium/src/
Download-Size: 103 MB
APT-Manual-Installed: no
APT-Sources: http://archive.raspberrypi.org/debian buster/main armhf Packages
Description: Chromium web browser, open-source version of Chrome
An open-source browser project that aims to build a safer, faster, and more
stable way for all Internet users to experience the web.
そしてうまく行かなかったのは chromium
でした.
chromium-browser
を入れて(排他なので chromim
パッケージは削除される)再度試すと,chrome://components/
に Widevine
が現れて,
https://bitmovin.com/demos/drm にアクセスしてみると, Detected , using widevine
と表示されるようになりNetflixのコンテンツも閲覧できました.
Note
|
攻殻機動隊 SAC_2045 より.なんだかOPがPortal感 |
ということで,Raspberry Pi 3 Model B + Raspberry Pi OS armhf でも libwidevinecdm0
パッケージと chromium-browser
パッケージを導入することでWidevineのDRMコンテンツが観られるようになりました :)
(DRMなしで閲覧できたほうが嬉しいですが)
$ sudo apt update
$ sudo apt install chromium-browser libwidevinecdm0
$ chromium-browser &
$ dpkg-query -W chromium-browser* libwidevinecdm0
chromium-browser 88.0.4324.187-rpt1
chromium-browser-inspector
chromium-browser-l10n 88.0.4324.187-rpt1
libwidevinecdm0 4.10.1679.0-1
$ lsb_release -dr
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
$ uname -m
armv7l
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
この記事は日本Androidの会秋葉原支部ロボット部 Advent Calendar 2020 の12/07分の記事です.
内容は 日本Androidの会秋葉原支部ロボット部 第96回勉強会 で発表した内容を加筆修正したものです.
Raspberry Pi という英国発の教育向けとして2012年に発売された安価なシングルボードコンピュータがあります.教育向けとして発売されましたが趣味にもよく使われています.OSは標準ではLinux(DebianベースのRaspberry Pi OS)が採用されています.
私はもっぱら省電力のLinuxマシンとして使うことが多いです.
今夏空調のない部屋の自宅サーバの横でRaspberry Pi 3 model B + Raspberry Pi OS arm64(β)で計算をさせていたのですが,しばらく動かしていると固まるようになりました.
再起動すればしばらく動きますがしばらくするとやはり固まります.これをどうにか出来ないかと調べてみました.
まずはログを録ってみます.
* * * * * printf "`date +\%s`,`cat /sys/class/thermal/thermal_zone0/temp`,`echo "obase=2; ibase=16; \`vcgencmd get_throttled | cut -f2 -dx\`" | bc`,`vcgencmd measure_clock arm|cut -f2 -d=`\n" >> ~/.temp.log
内容はこんな感じです.(外気温度も録ればよかった)
date +%s
/sys/class/thermal/thermal_zone0/temp
vcgencmd get_throttled
vcgencmd measure_clock arm
ログがファイルに書かれる間にフリーズしてデータが失われるのを防ぐために /etc/fstab
のマウントオプションに sync
オプションも付けておきます.(再起動かremountで反映)
ログを取得している状態で負荷を掛けます.今回は /dev/urandom
をcatすることで計算させました.今回のRaspberry Pi 3 model Bは4coreあるので4つ動かしています.
$ cat /dev/urandom > /dev/null & $ cat /dev/urandom > /dev/null & $ cat /dev/urandom > /dev/null & $ cat /dev/urandom > /dev/null &
しばらく動かしてRaspberry Piが固まった後にログを確認してみます.
SoCの温度が85度を何度か記録した後に固まっているようです.
85度というのはRaspberry Pi OSでの標準のSoC制限温度のようです.この温度の5度前(標準では80度)からサーマルスロットリングが始まるようです.
サーマルスロットリングでクロックが下がって温度が下がれば問題無さそうだけど80度からクロックが下がっても85度を超えて固まってしまっているようです.
ベータ版のRaspberry Pi OS amd64を使っているせいかもしれないと思い,標準のRaspberry Pi OS armhf(32bit)版に変更して同様に試してみましたが同様の動きのようです.
正攻法としてはヒートシンク,ファンの増設や空調を入れるとよさそうですが,金欠なのでとりあえずソフトだけでどうにか出来ないかと試しました.
まずSoCの制限温度ですが,公式フォーラムで70度以下にしたほうがいいという書き込みを見かけました.逆に100度でも大丈夫という人も居るのですが安全側の70度にしてみます.
この設定は /boot/config.txt
でパラメータを設定できます.以下は70度に設定たときの例です.この状態で再起動すると反映されます.
temp_limit=70
再起動後以下のコマンドで設定が反映されているか確認が出来ます.
$ vcgencmd get_config int | grep ^temp_limit= temp_limit=70
この状態で負荷を掛けると70度を越えるくらいで固まりました.やはり制限温度を越えると固まってい舞うようです.
Raspberry Pi 3 model B のSoCは最大周波数1.2GHzです.これを下げてみます.
/boot/config.txt
の arm_freq=
で設定できます.以下は800MHzに設定したときの例です.再起動で反映されます.
arm_freq=800
再起動後に設定が反映されているか確認します.
$ vcgencmd get_config int | grep ^arm_freq= arm_freq=800
この状態で負荷を掛けるとやはり固まります.まあサーマルスロットリングが効いても固まるので仕方がない感じです.
次にSoC最小周波数を下げてみます.既定値は600MHzで,サーマルスロットリングでもここまで下がっているのでこれを更に下げると温度が下がりそうな気がします.
/boot/config.txt
の arm_freq_min=
で設定できます.以下は400MHzに設定したときの例です.再起動で反映されます.
arm_freq_min=400
しかし再起動後に確認してみると600MHzより下には設定できないみたいで600MHzになってしまいます.
$ vcgencmd get_config int | grep ^arm_freq_min= arm_freq_min=600
この状態で負荷を掛けるとやはり600Mhzまでしか下がらず固まります.
残念ながらRaspberry Pi のスロットリングでは無理そうです.
Linuxのブートパラメータで maxcpus
を指定することでコアを制限できます.Raspberry Pi の場合は /boot/cmdline.txt
で設定できます.
設定後以下のコマンドで確認できます.
$ grep -o -E 'maxcpus=.{0,9} ' /proc/cmdline maxcpus=1 $ grep ^processor /proc/cpuinfo | wc -l 1
これでCPU core1津で動作しています.しかし最大周波数を600MHzかつ1coreでも同様にフリーズしてしまいました.
IntelCPUのNotePCなどではcoufreqを使ってこのあたりの制御をするのですが,これでも600mHzより下には下げられないようで駄目でした.
LimitCPUは指定プロセスを監視し,CPU利用率や%で制限するプログラムです.Linux, MacOS, *BSDなどのUNIX-Likesystemで利用できます.
Raspberry Pi OSではcpulimitパッケージとしてパッケージングされており,コマンドもcoulimitです.
$ sudo apt install cpulimit
cpulimitコマンドに制限したいプロセスIDやプロセス名と制限を指定することで動作します.
cat
からはじまるプロセスを50%に制限$ pgrep ^cat | xargs -n1 -I{} sh -c "cpulimit -p {} -l 50 -v &"
cpulimitで50%に制限してみたt頃温度が下がるのを確認できました.数日動かしても固まらなくなったようです.
定期的にSoCの温度を確認して制限を変更していくと良さそうでうs.
LimitCPUはCPUlimitの開発が止まった後のフォークですが,その後CPUlimitが新しく開発が始まっているようです.詳細は以下のページを参照してください.
LimitCPUが効いたので恐らくcgroupでのCPUリソース制限でも大丈夫そうです.(未確認)
現在は気温も下がり制限などしなくても問題ありません.でもきっと来夏にまた起こると思うのでそこでまた確認するつもりです.
しかし,今回の解決方法はCPUのリソースを制限して温度を下げて居るので計算量は減っています.空調を入れたりCPUファンを導入するのが正攻法になるのかなと思います.
CPUファンはサードパーティーから各種発売されているのでそれらを使うかDIYする感じになると思います.
そういえば最近Raspberry Pi OSの設定コマンドの raspi-config
の中に Set behaviour of GPIO fan
というメニューが出来たり,Raspberry Pi 4には公式のCPUファンが発売されているのでこれらを使うのが良さそうです.
Raspberry Pi 4 Model Bの8GB RAM版が発表.同時に発売され,日本も同時発売になったようです.
日本だと今はこのあたりでしょうか.
RAM が8GB あるとデスクトップ用途がRAM を気にせず使えるようになりそうですね.後は例えばビデオミーティングアプリのJitsi Meet をRaspberry Pi でホストしている人がいたりしますが,現在は設定を少し変えて省エネ設定で動かしていますが規定値の設定で動きそうです.
そして8GBもあると気になるのが標準OSのRaspbianがarmhf(32bit)にしか対応していないところ.
別のディストリビューションを使えばarm64(b4bit)は利用できますが標準OSが非対応なのはちょっと悲しいです.
私はDebian をよく使います.
これも今回発表がありました.64bit版のベータがリリースされました.
Not to be left out, today we’ve released an early beta of our own 64-bit operating system image.
Raspbianの名前も変わり,Raspberry Pi OS
と改められるようです.
Both our 32-bit and 64-bit operating system images have a new name: Raspberry Pi OS.
新しい64bitの Raspberry Pi OS
は以下から入手できます.
ダウンロードサイトのディレクトリもraspiosが出来ています.これまでの32bitは raspios_armhf
になるようです.
$ w3m -dump https://downloads.raspberrypi.org/ | grep -E 'raspbian|raspios' [DIR] raspbian/ 2020-02-25 16:50 - [DIR] raspbian_full/ 2020-02-14 13:52 - [DIR] raspbian_lite/ 2020-02-14 13:49 - [DIR] raspios_arm64/ 2020-05-28 04:38 - [DIR] raspios_armhf/ 2020-05-28 05:27 - [DIR] raspios_full_armhf/ 2020-05-28 05:28 - [DIR] raspios_lite_armhf/ 2020-05-28 05:27 - [ ] wp-slice-raspbian 2020-05-28 07:46 1.0K
armhfのリリースノートを観るとこれまでのものに今回のバージョンが追記されていました.(64biには未だ存在しない)
$ w3m -dump https://downloads.raspberrypi.org/raspios_armhf/release_notes.txt | grep ^2020-05-27:$ -A 33 2020-05-27: * Added Bookshelf application * Added Raspberry Pi Diagnostics application * Added magnifier plugin to taskbar - needs magnifier application installed from Recommended Software to enable * Added Magnifier application to Recommended Software * Added marketing questionnaire as initial Chromium tab * Version 0.25 of Scratch 2 included - uses external application to access IMU on SenseHAT * Version 1.0.5 of Scratch 3 included - uses external application to access IMU on SenseHAT * Version 32.0.0.371 of Flash player included * Version 1.0.6 of Node-RED included * Version 6.7.1 of VNC Server included * Version 6.20.113 of VNC Client included * Internal audio outputs enabled as separate ALSA devices * MagPi preinstall removed and replaced with Beginner’s Guide * MagPi weblink removed from main menu * Chromium made default application for PDF files * Common icon loading code for lxpanel plugins used * Italian translations added * Initial move of mouse pointer to menu button disabled * Padding at left of menu button removed * Focus behaviour changed so that focus moves to desktop if no windows are opened - improves reliability of Orca screen reader * Bug fix - focus bug in volume plugin * Bug fix - keyboard repeat interval bug in Mouse & Keyboard Settings * Bug fix - battery detection bug in battery plugin * Bug fix - spurious active areas on taskbar when plugins are hidden * Bug fix - occasional crash in file manager on file selection * Disk ID is now regenerated on first boot * Updated udev rules - Remove unused argon rule - Add vcsm-cma to video group - Add pwm to gpio group * i2cprobe: More flexible I2C/SPI alias mapping * Raspberry Pi firmware 21e1fe3477ffb708a5736ed61a924fd650031136 * Linux kernel 4.19.118
Raspberry Pi の Download ページを観るとここもアップデートされていました.
Raspberry Pi OS (previously called Raspbian) is our official operating system for all models of the Raspberry Pi.
この64bit beta版はRaspberry Pi 3 と 4 で動作するようです.(2 v1.2でも多分動く)
Note, the 64bit OS is only install-able on the Pi 3 and Pi 4 devices
ということでRaspberry Pi 3 なら持ってる!ということでダウンロードしてみました.
$ wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip.sha256 https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip.sig
$ sha256sum -c 2020-05-27-raspios-buster-arm64.zip.sha256
2020-05-27-raspios-buster-arm64.zip: OK
$ gpg --verify ./2020-05-27-raspios-buster-arm64.zip.sig
gpg: assuming signed data in './2020-05-27-raspios-buster-arm64.zip'
gpg: Signature made Thu 28 May 2020 01:05:10 PM JST
gpg: using RSA key 54C3DD610D9D1B4AF82A37758738CD6B956F460C
gpg: Good signature from "Raspberry Pi Downloads Signing Key" [expired]
gpg: Note: This key has expired!
Primary key fingerprint: 54C3 DD61 0D9D 1B4A F82A 3775 8738 CD6B 956F 460C
署名の確認をすると期限切れのようです.新しい鍵を貰ってきてインポートして再度署名確認します.(ダウンロードページあたりにリンクして欲しい)
$ wget https://www.raspberrypi.org/raspberrypi_downloads.gpg.key
$ gpg ./raspberrypi_downloads.gpg.key
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa2048 2017-04-10 [SC] [expires: 2021-04-21]
54C3DD610D9D1B4AF82A37758738CD6B956F460C
uid Raspberry Pi Downloads Signing Key
sub rsa2048 2017-04-10 [E] [expires: 2021-04-21]
$ gpg --import ./raspberrypi_downloads.gpg.key
gpg: key 8738CD6B956F460C: 1 signature not checked due to a missing key
gpg: key 8738CD6B956F460C: "Raspberry Pi Downloads Signing Key" 3 new signatures
gpg: Total number processed: 1
gpg: new signatures: 3
:
$ gpg --verify ./2020-05-27-raspios-buster-arm64.zip.sig
gpg: assuming signed data in './2020-05-27-raspios-buster-arm64.zip'
gpg: Signature made Thu 28 May 2020 01:05:10 PM JST
gpg: using RSA key 54C3DD610D9D1B4AF82A37758738CD6B956F460C
gpg: Good signature from "Raspberry Pi Downloads Signing Key" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
とりあえず良さそうです.
sd card等に書き込みます.今回dd で書きましたが,公式のRaspberry Pi Imager を使ったほうがいいかもですね.
$ time zcat ./2020-05-27-raspios-buster-arm64.zip | pv | sudo dd of=/dev/sdz bs=16M conv=fdatasync
3.46GiB 0:02:34 [22.9MiB/s] [ <=> ]
0+92723 records in
0+92723 records out
3711959040 bytes (3.7 GB, 3.5 GiB) copied, 212.594 s, 17.5 MB/s
real 3m32.613s
user 0m30.584s
sys 2m12.420s
$ sync
これを使って起動してみると普通に起動します.
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
$ uname -a
Linux raspberrypi 5.4.42-v8+ #1319 SMP PREEMPT Wed May 20 14:18:56 BST 2020 aarch64 GNU/Linux
$ LC_ALL=C dpkg-architecture --print-set
DEB_BUILD_ARCH=arm64; DEB_BUILD_ARCH_ABI=base; DEB_BUILD_ARCH_BITS=64; DEB_BUILD_ARCH_CPU=arm64; DEB_BUILD_ARCH_ENDIAN=little; DEB_BUILD_ARCH_LIBC=gnu; DEB_BUILD_ARCH_OS=linux;
DEB_BUILD_GNU_CPU=aarch64; DEB_BUILD_GNU_SYSTEM=linux-gnu; DEB_BUILD_GNU_TYPE=aarch64-linux-gnu; DEB_BUILD_MULTIARCH=aarch64-linux-gnu; DEB_HOST_ARCH=arm64; DEB_HOST_ARCH_ABI=ba
se; DEB_HOST_ARCH_BITS=64; DEB_HOST_ARCH_CPU=arm64; DEB_HOST_ARCH_ENDIAN=little; DEB_HOST_ARCH_LIBC=gnu; DEB_HOST_ARCH_OS=linux; DEB_HOST_GNU_CPU=aarch64; DEB_HOST_GNU_SYSTEM=li
nux-gnu; DEB_HOST_GNU_TYPE=aarch64-linux-gnu; DEB_HOST_MULTIARCH=aarch64-linux-gnu; DEB_TARGET_ARCH=arm64; DEB_TARGET_ARCH_ABI=base; DEB_TARGET_ARCH_BITS=64; DEB_TARGET_ARCH_CPU
=arm64; DEB_TARGET_ARCH_ENDIAN=little; DEB_TARGET_ARCH_LIBC=gnu; DEB_TARGET_ARCH_OS=linux; DEB_TARGET_GNU_CPU=aarch64; DEB_TARGET_GNU_SYSTEM=linux-gnu; DEB_TARGET_GNU_TYPE=aarch
64-linux-gnu; DEB_TARGET_MULTIARCH=aarch64-linux-gnu; export DEB_BUILD_ARCH DEB_BUILD_ARCH_ABI DEB_BUILD_ARCH_BITS DEB_BUILD_ARCH_CPU DEB_BUILD_ARCH_ENDIAN DEB_BUILD_ARCH_LIBC D
EB_BUILD_ARCH_OS DEB_BUILD_GNU_CPU DEB_BUILD_GNU_SYSTEM DEB_BUILD_GNU_TYPE DEB_BUILD_MULTIARCH DEB_HOST_ARCH DEB_HOST_ARCH_ABI DEB_HOST_ARCH_BITS DEB_HOST_ARCH_CPU DEB_HOST_ARCH
_ENDIAN DEB_HOST_ARCH_LIBC DEB_HOST_ARCH_OS DEB_HOST_GNU_CPU DEB_HOST_GNU_SYSTEM DEB_HOST_GNU_TYPE DEB_HOST_MULTIARCH DEB_TARGET_ARCH DEB_TARGET_ARCH_ABI DEB_TARGET_ARCH_BITS DE
B_TARGET_ARCH_CPU DEB_TARGET_ARCH_ENDIAN DEB_TARGET_ARCH_LIBC DEB_TARGET_ARCH_OS DEB_TARGET_GNU_CPU DEB_TARGET_GNU_SYSTEM DEB_TARGET_GNU_TYPE DEB_TARGET_MULTIARCH
$ dpkg-query -l|wc -l
1308
dpkg-query -l
)$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/root 29938 2840 25832 10% /
devtmpfs 329 0 329 0% /dev
tmpfs 457 0 457 0% /dev/shm
tmpfs 457 1 457 1% /run
tmpfs 5 1 5 1% /run/lock
tmpfs 457 0 457 0% /sys/fs/cgroup
/dev/mmcblk0p1 253 54 200 22% /boot
tmpfs 92 0 92 0% /run/user/1000
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:46:60:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.182/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 258810sec preferred_lft 226410sec
inet6 fe80::2979:45f7:e3bf:a4d9/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether b8:27:eb:13:35:46 brd ff:ff:ff:ff:ff:ff
$ bluetoothctl
Agent registered
[bluetooth]# list
Controller B8:27:EB:EC:CA:B9 raspberrypi [default]
[bluetooth]# quit
Raspberry Pi 3 Model B Rev 1.2 ┌─────────┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──────────┐ │ │ │ 1 Change User Password Change password for the 'pi' user │ │ 2 Network Options Configure network settings │ │ 3 Boot Options Configure options for start-up │ │ 4 Localisation Options Set up language and regional settings to match your │ │ 5 Interfacing Options Configure connections to peripherals │ │ 6 Overclock Configure overclocking for your Pi │ │ 7 Advanced Options Configure advanced settings │ │ 8 Update Update this tool to the latest version │ │ 9 About raspi-config Information about this configuration tool │ │ │ │ │ │ │ │ │ │ <Select> <Finish> │ │ │ └──────────────────────────────────────────────────────────────────────────────┘
$ pfetch/pfetch
_____ pi@raspberrypi
/ __ \ os Debian GNU/Linux 10 (buster)
| / | host Raspberry Pi 3 Model B Rev 1.2
| \___- kernel 5.4.42-v8+
-_ uptime 52m
--_ pkgs 1313
memory 203M / 913M
て感じで試し始めました.
しばらく使ってみようかと思います.
あ,余ったRaspberry Pi があったらください :p
もし問題が見つかったら以下を確認して報告すると直るかもしれません.
Debian の linux 4.8.0 以降で一般ユーザによる dmesg が無効化されたので,kernelパラメータの kernel.dmesg_restrict を修正して dmesg command を一般ユーザでも実行できるようにしましたがこれだと全ユーザで実行できてしまいます.sudo を設定してログの読める adm
ユーザだけが dmesg command を実行できるようにしてみました.
dmesgを実行したいユーザをadm
group に登録する(loginし直して反映しておく)
$ sudo addgroup matoken adm
$ exit
visudo
command で /etc/sudoers
を編集して adm
group は NOPASSWD で dmesg
command を実行できるようにする(念の為編集前にもう1枚端末を開いて sudo -s
しておいたり,at等で5分後に /etc/sudoers
を巻き戻すようにしておくとミスっても安心)
$ sudo visudo
$ sudo git diff /etc/sudoers
diff --git a/sudoers b/sudoers
index d4cc632..ac3bd77 100644
--- a/sudoers
+++ b/sudoers
@@ -21,6 +21,7 @@ root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
+%adm ALL=NOPASSWD: /usr/bin/dmesg
# See sudoers(5) for more information on "#include" directives:
adm group のユーザでdmesg コマンドが追加されているのを確認
$ sudo -l | grep dmesg
(root) NOPASSWD: /usr/bin/dmesg
adm
group のユーザが認証無しで sudo dmesg
が実行できるのを確認
$ id | grep -o adm
adm
$ sudo dmesg -H | tail -1
[ +0.015080] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
このとき kernel.dmesg_restrict = 1
で sudo を通さないと dmesg は実行できない
$ cat /proc/sys/kernel/dmesg_restrict
1
$ dmesg
dmesg: read kernel buffer failed: Operation not permitted
$ LC_MESSAGES=ja_JP.UTF-8 dmesg
dmesg: read kernel buffer failed: 許可されていない操作です
~/.profile
にalias を設定
$ echo 'alias dmesg="sudo dmesg"' | tee -a ~/.profile
alias dmesg="sudo dmesg"
$ source ~/.profile
$ dmesg -H | tail -1
[ +0.015080] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
環境
$ dpkg-query -W sudo util-linux linux-image-*
linux-image-4.19.0-2-arm64 4.19.16-1
linux-image-4.19.0-2-arm64-unsigned
linux-image-arm64 4.19+102
sudo 1.8.27-1
util-linux 2.33.1-0.1
$ lsb_release -dr
Description: Debian GNU/Linux buster/sid
Release: testing
$ uname -a
Linux rpi3 4.19.0-2-arm64 #1 SMP Debian 4.19.16-1 (2019-01-17) aarch64 GNU/Linux
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
※この方法だと全ユーザで dmesg
が実行できてしまうので sudo を使ってグループを制限する次の方法のほうがいいかもしれない.
Debian buster arm64 環境を作りました( Raspberry Pi 3 Model B の USB起動で Debian buster arm64 を動かす – matoken’s meme )が,dmesg でエラーとなります.sudo dmesg
は動く.
$ dmesg
dmesg: read kernel buffer failed: Operation not permitted
$ LC_MESSAGES=ja_JP.UTF-8 dmesg
dmesg: read kernel buffer failed: 許可されていない操作です
そういえば以前 Debian sid amd64 でも起こった現象です.
Debian では Linux 4.8.0 から仕様が変わってroot 以外ではdmesg が読めないようになっています.log file の読める adm group のユーザも駄目.
これは kernelパラメータの kernel.dmesg_restrict
で設定されていて以下のようなコマンドで確認できます.
$ sudo sysctl -a|grep dmesg
kernel.dmesg_restrict = 1
$ cat /proc/sys/kernel/dmesg_restrict
1
これを 1
から 0
に変更することで以前と同じ動作となります.sysctl コマンドや,
$ sudo sysctl -w kernel.dmesg_restrict=0
/proc/sys/kernel/dmesg_restrict
を直接書き換えることで一時的に変更できます.
echo 0 | sudo tee /proc/sys/kernel/dmesg_restrict
動きました.
$ id | grep -o adm
$ echo hello | sudo tee /dev/kmsg
hello
[ 562.152729] hello
$ dmesg -H | tail
[ +0.019933] brcmfmac mmc1:0001:1: firmware: failed to load brcm/brcmfmac43430-sdio.clm_blob (-2)
[ +0.020182] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
[ +0.020886] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ +0.021916] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ +0.026818] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f
[ +0.077925] systemd-udevd[376]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
[ +0.537137] EXT4-fs (sda2): re-mounted. Opts: (null)
[ +2.001639] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[ +1.563625] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[Mar 2 05:58] hello
再起動すると元に戻ってしまうので,/etc/sysctl.d/local.conf
などに設定を書いてくと次回起動時以降も反映されます.
$ sudo install -m 644 -o root -g root /dev/null /etc/sysctl.d/local.conf
$ echo 'kernel.dmesg_restrict = 0' | sudo tee -a /etc/sysctl.d/local.conf
kernel.dmesg_restrict = 0
試した環境
$ dmesg --version
dmesg from util-linux 2.33.1
$ dpkg-query -W util-linux linux-image-*
linux-image-4.19.0-2-arm64 4.19.16-1
linux-image-4.19.0-2-arm64-unsigned
linux-image-arm64 4.19+102
util-linux 2.33.1-0.1
$ lsb_release -dr
Description: Debian GNU/Linux buster/sid
Release: testing
$ uname -a
Linux rpi3 4.19.0-2-arm64 #1 SMP Debian 4.19.16-1 (2019-01-17) aarch64 GNU/Linux
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
最近入手した(遅) RaspberryPi 3 model B で USB メモリ起動の Debian buster aarch64 を設定してみたときのメモです.
ジモティー経由で Raspberry Pi 3 model B を入手しました.Raspberry Pi 3 model B + USB Wi-Fi + USB Bluetooth + ケースのセットが2,500円 + 送料手数料 500円と安いです.普通に新品で買うと 8,000円近くすると思います.今この記事を書いている時点で未だ在庫はあるようなので興味のある人は買うといいかもしれません.(6個同梱可能なのでそれだと1個あたりが少し安くなるので近所の友達と買うといいかも)
64bitになった Raspberry Pi は欲しいと思っていたので安く手に入って助かりました :)
(後継の Raspberry Pi 3 Model B+/A+ や,SoCが 3B と同じで無線機能のない 2B v1.2 とかも欲しいですね.)
Raspberry Pi 3 model B は 32bitだけでなく64bit も利用できるハードウェアです.せっかくなので 64bitで動かしたいけど今の時点では Raspbian は 32bitのみです.そこで Debian の arm64 を試すことにしました.
イメージは岩松さんの東京エリアDebian勉強会の資料を真似して作ろうと思っていたのですが,
DebianWiki の RaspberryPi3 の項目を見たら非公式だけどイメージがあったので今回はそれを利用しました.現在 testing の Buster のイメージが入手できます.
ストレージは通常 microSD を利用しますが,手持ちがないのと Raspberry Pi 3 B はUSB起動が可能なはずなのでUSBメモリを利用することにしました.USB 2.0接続の容量2GBのものを用意しました.
このような感じでイメージを入手してハッシュのチェックをした後USBメモリへ書き込みました.ここでは Linuxのddコマンドで書き込んでいますが,Etcherなどを利用すると色々な環境でGUIでの書き込みが可能です.
※イメージは最新のものを利用するようにしましょう.
$ wget -c https://people.debian.org/~gwolf/raspberrypi3/20190206/20190206-raspberry-pi-3-buster-PREVIEW.img.xz https://people.debian.org/~gwolf/raspberrypi3/20190206/20190206-raspberry-pi-3-buster-PREVIEW.img.xz.sha256
$ sha256sum -c ./20190206-raspberry-pi-3-buster-PREVIEW.img.xz.sha256
20190206-raspberry-pi-3-buster-PREVIEW.img.xz: 完了
$ xzcat 20190206-raspberry-pi-3-buster-PREVIEW.img.xz | pv | sudo dd of=/dev/sdb bs=1M oflag=dsync
注意:OTPの設定は1度しか出来ないし,元に戻すことも出来ないと思われます.起動時間が長くなるなどデメリットもあるので気をつけて設定してください.
このUSBメモリを Raspberry Pi に接続して電源を入れてみましたが起動しません.恐らく OTP(One Time Programmable)メモリの設定が USB起動に対応していないので以下のページを参考に設定します.(Raspberry Pi 3+ シリーズは標準でUSB起動可能なのでこの設定は不要なはずです.)
先ず Raspbian 2017-04-10 以降のイメージを書き込んだ microSD を用意して起動します.
( uart経由で繋ぎたい場合起動前に /boot/config.txt に enable_uart=1
を書いておきます. $ echo enable_uart=1 | tee -a /media/matoken/boot/config.txt
)
OTP を確認するとやはり有効になっていませんでした.
pi@raspberrypi:~$ vcgencmd otp_dump | grep ^17:
17:1020000a
以下のように /boot/config.txt
に program_usb_boot_mode=1
を追記して再起動すると反映されます.
$ echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
program_usb_boot_mode=1
pi@raspberrypi:~$ sudo reboot
17 が 3020000a に変わればOK
pi@raspberrypi:~$ vcgencmd otp_dump | grep ^17:
17:3020000a
詳細は以下を参照してください
17 – bootmode register
Bit 1: sets the oscillator frequency to 19.2MHz
Bit 3: enables pull ups on the SDIO pins
Bit 19: enables GPIO bootmode
Bit 20: sets the bank to check for GPIO bootmode
Bit 21: enables booting from SD card
Bit 22: sets the bank to boot from
Bit 28: enables USB device booting
Bit 29: enables USB host booting (ethernet and mass storage)
設定前が,1020000a
-> 0b010000001000000000000000001010
で設定後が,0x3020000a
-> 0b110000001000000000000000001010
てことで,Bit 29 が 0
から 1
になってネットワーク起動とUSB起動を試すようにります.この状態で microSD 起動を試すとこれも大丈夫でした.(優先度は microSD > USB,Networkは未確認)
この状態で shutdown し,microSD を取り出して Debian の導入した USB メモリを接続して起動で起動しました.(USB起動の場合なかなか起動が始まらず焦ったけど30秒ほど待つとUARTにログが出はじめる.HDMIの出力は未確認)
login は root:raspberry
ちゃんと 64bit です :)
root@rpi3:~# uname -a
Linux rpi3 4.19.0-2-arm64 #1 SMP Debian 4.19.16-1 (2019-01-17) aarch64 GNU/Linux
パッケージの更新
root@rpi3:~# apt update && apt upgrade
一般ユーザの追加
root@rpi3:~# useradd -m matoken
root@rpi3:~# passwd matoken
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@rpi3:~# chsh matoken -s /bin/bash
OpenSSH の設定変更
root@rpi3:~# diff -u /etc/ssh/sshd_config.old /etc/ssh/sshd_config
--- /etc/ssh/sshd_config.old 2019-02-06 15:15:46.940904823 +0000
+++ /etc/ssh/sshd_config 2019-02-16 13:17:17.076873278 +0000
@@ -29,7 +29,7 @@
# Authentication:
#LoginGraceTime 2m
-PermitRootLogin yes
+PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
@@ -53,7 +53,7 @@
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
-#PasswordAuthentication yes
+PasswordAuthentication no
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
@@ -119,3 +119,5 @@
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
+
+AllowGroups sshusers
sshusers
グループを作成して ssh login 出来るユーザを登録
root@rpi3:~# sudo groupadd sshusers
root@rpi3:~# sudo usermod -a -G sshusers matoken
短いmodulus を削除する
root@rpi3:~# awk '$5>=3071' /etc/ssh/moduli | tee /etc/ssh/moduli.tmp
root@rpi3:~# wc -l /etc/ssh/moduli /etc/ssh/moduli.tmp
427 /etc/ssh/moduli
368 /etc/ssh/moduli.tmp
795 total
root@rpi3:~# sudo mv /etc/ssh/moduli.tmp /etc/ssh/moduli
hostpcからssh公開鍵をcpしておく
$ ssh-copy-id -i ~/.ssh/id_ed25519_pi.pub matoken@rpi3
ssh鍵ペアを作っておく
root@rpi3:~# sudo -u matoken ssh-keygen -t ed25519
sshd の再起動
root@rpi3:~# systemctl restart ssh
ssh login時に通知を飛ばすようにしておく
root@rpi3:~# vi /etc/ssh/sshrc
root@rpi3:~# chmod +x /etc/ssh/sshrc
root@rpi3:~# cat /etc/ssh/sshrc
#!/bin/sh
/home/matoken/bin/telegram.sh sshrc:${USER}@`hostname`:${SSH_CONNECTION}
/home/matoken/bin/sms.sh sshrc:${USER}@`hostname`:${SSH_CONNECTION}
ssh でパスワードログインできず,鍵認証でログインが出来る&通知が飛ぶのを確認
root@rpi3:~# ssh root@localhost -o PasswordAuthentication=yes
root@rpi3:~# ssh matoken@localhost -o PasswordAuthentication=yes
root@rpi3:~# ssh matoken@localhost -i ~/.ssh/id_ed25519
自分のネットワークに合わせて /etc/iptables/rules.v4, /etc/iptables/rules.v6
を変更.
root@rpi3:~# grep -v ^# /etc/iptables/rules.v4
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 127.0.0.0/8 -m comment --comment "RFC3330 loopback" -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m comment --comment "RFC1918 reserved" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m comment --comment SSH -j REJECT --reject-with icmp-port-unreachable
COMMIT
root@rpi3:~# grep -v ^# /etc/iptables/rules.v6
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s ::1/128 -m comment --comment "RFC3513 loopback" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m comment --comment SSH -j REJECT --reject-with icmp6-port-unreachable
COMMIT
sudo を導入して設定
root@rpi3:~# apt install sudo
sudo groupにユーザを登録
root@rpi3:~# usermod -a -G sudo matoken
sudo が利用できるのを確認
matoken@rpi3:~$ sudo grep ^root: /etc/shadow
sudo: unable to resolve host rpi3: Name or service not known
root:!..VyaTFxP8kT6:17933:0:99999:7:::
rootユーザをロック
$ sudo passwd -l root
sudo: unable to resolve host rpi3: Name or service not known
passwd: password expiry information changed.
matoken@rpi3:~$ sudo passwd -S root
sudo: unable to resolve host rpi3: Name or service not known
root L 02/06/2019 0 99999 7 -1
sudo時などに「sudo: unable to resolve host rpi3: Name or service not known
」と言われるので hosts の localhost に rpi3 を追加
matoken@rpi3:~$ sudo vi /etc/hosts
127.0.0.1 localhost rpi3
ここで再起動すると rootfs が見つからないと言われ起動しない.
(initramfs) Gave up waiting for root file system device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mmcblk0p2 does not exist. Dropping to a shell!
BusyBox v1.27.2 (Debian 1:1.27.2-3) built-in shell (ash)
Enter 'help' for a list of built-in commands.
cmdline では /dev/mmcblkp2 から起動しようとしているが, /dev/sda2 から起動したい
(initramfs) ls /dev
block tty12 tty47
bsg tty13 tty48
bus tty14 tty49
char tty15 tty5
console tty16 tty50
core tty17 tty51
cpu_dma_latency tty18 tty52
disk tty19 tty53
fb0 tty2 tty54
fd tty20 tty55
full tty21 tty56
gpiochip0 tty22 tty57
gpiochip1 tty23 tty58
input tty24 tty59
kmsg tty25 tty6
kvm tty26 tty60
mem tty27 tty61
memory_bandwidth tty28 tty62
network_latency tty29 tty63
network_throughput tty3 tty7
null tty30 tty8
port tty31 tty9
psaux tty32 ttyAMA0
ptmx tty33 ttyS0
pts tty34 ttyS1
random tty35 ttyS2
sda tty36 ttyS3
sda1 tty37 urandom
sda2 tty38 vcs
snapshot tty39 vcs1
stderr tty4 vcsa
stdin tty40 vcsa1
stdout tty41 vcsu
tty tty42 vcsu1
tty0 tty43 vga_arbiter
tty1 tty44 zero
tty10 tty45
tty11 tty46
(initramfs) cat /proc/cmdline
bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 dma.dmachans=0x7f35 bcm2709.boardrev=0xa02082 bcm2709.serial=0xfaf144 bcm2709.uart_clock=48000000 smsc95xx.macaddr=B8:27:EB:FA:F1:44 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=tty0 console=ttyS1,115200 root=/dev/mmcblk0p2 rw elevator=deadline fsck.repair=yes net.ifnames=0 cma=64M rootwait
/boot を mount して書き換えようと思ったけどうまく mount 出来ない?
(initramfs) mkdir /tmp/boot
(initramfs) mount /dev/sda1 /tmp/boot
mount: mounting /dev/sda1 on /tmp/boot failed: Invalid argument
(initramfs) ls -la /dev/sda1 /tmp/boot
brw------- 1 0 0 8, 1 Jan 1 00:00 /dev/sda1
/tmp/boot:
total 0
drwxr-xr-x 2 0 0 0 Jan 1 00:10 .
drwxr-xr-x 3 0 0 0 Jan 1 00:10 ..
(initramfs) mount -t vfat /dev/sda1 /tmp/boot
mount: mounting /dev/sda1 on /tmp/boot failed: No such device
(initramfs) mkdir /tmp/root
(initramfs) modprobe ext4
(initramfs) mount /dev/sda2 /tmp/root
[ 2144.515323] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
(initramfs) find /tmp/root -name "vfat.ko"
/tmp/root/usr/lib/modules/4.19.0-2-arm64/kernel/fs/fat/vfat.ko
(initramfs) modprobe -v /tmp/root/usr/lib/modules/4.19.0-2-arm64/kernel/fs/fat/vfat.ko
(initramfs) lsmod|grep fat
(initramfs) mount -t vfat /dev/sda1 /tmp/boot
mount: mounting /dev/sda1 on /tmp/boot failed: No such device
(initramfs) lsmod|grep fat
一旦電源を切って /boot/cmdline.txt の root=/dev/mmcblk0p2 を root=/dev/sda2 に書き換えて起動するようになった.(LABEL指定に変えたほうがいいかな)
$ cat /boot/firmware/cmdline.txt
console=tty0 console=ttyS1,115200 root=/dev/sda2 rw elevator=deadline fsck.repair=yes net.ifnames=0 cma=64M rootwait
※raspi3-firmware あたりのアップデートが掛かると上書きされるよう.
systemd から sysvinit に変更(RAMが開くかと思ったけど数MB程度だった)
$ sudo apt install sysvinit-core sysvinit-utils
LANGを設定
en_US.UTF-8 UTF-8
, ja_JP.UTF-8 UTF-8
を有効にして,デフォルトロケールを ja_JP.UTF-8
にしたりした.
$ sudo dpkg-reconfigure locales
$ echo 'export LANG="ja_JP.UTF-8"
export LC_TIME="en_US.UTF-8"' | tee -a ~/.profile
$ source ~/.profile
$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME=en_US.UTF-8
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
Raspberry Pi には rtc がなくて再起動などで時計が初期化されてしまうので fake-hwclock を導入(電源断時などの時間はカウントされないので時間がずれるが時計が巻き戻らない)
$ sudo apt install fake-hwclock
ntpdate を導入して起動時の時計合わせをするようにする(systemdのままだとntpの面倒を見てくれるので必要ない)
$ sudo apt install ntpdate
$ sudo vi /etc/boot.d/ntpdate
$ cat /etc/boot.d/ntpdate
#!/bin/sh
ntpdate 1.jp.pool.ntp.org
$ sudo chmod +x /etc/boot.d/ntpdate
ntpdate iptables に合わせてこっちのほうがいいかも?(有線接続後に時計合わせする)
$ cat /etc/network/interfaces.d/eth0
auto eth0
# TODO: switch back to iptables-persistent once it re-enters testing
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables/rules.v4
pre-up ip6tables-restore < /etc/iptables/rules.v6
up ntpdate 1.jp.pool.ntp.org
uartでsetial接続するために /etc/inittab
に以下を設定(systemdだと設定済みなので不要)
T1:23:respawn:/sbin/getty -L ttyS1 115200 vt100
msmtpを導入してメールを飛ばせるように
$ sudo apt install msmtp
$ sudo vi /etc/msmtprc
$ grep -v ^# /etc/msmtprc|uniq
defaults
syslog on
aliases /etc/aliases
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
syslog LOG_MAIL
account gmail
host smtp.gmail.com
port 587
from matohara@gmail.com
user matohara
password throjfeekdewxeib
account default : gmail
$ sudo vi /etc/aliases
$ grep -v ^# /etc/aliases
mailer-daemon:hoge@example.com
postmaster:hoge@example.com
nobody:hoge@example.com
hostmaster:hoge@example.com
usenet:hoge@example.com
news:hoge@example.com
webmaster:hoge@example.com
www:hoge@example.com
ftp:hoge@example.com
abuse:hoge@example.com
noc:hoge@example.com
security:hoge@example.com
root: hoge@example.com
default: hoge@example.com
$ echo 'hello' | msmtp matoken@ya.ru
$ sudo apt install msmtp-mta
$ echo 'hello' | /usr/sbin/sendmail matoken@ya.ru
無線を無効にするために /boot/firmware/config.txt
に以下を追記……再起動しても反映されない?要確認
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
apticron を導入して更新をメールで通知する
$ sudo apt install apticron
$ sudo cp -p /usr/lib/apticron/apticron.conf /etc/apticron/
$ grep ^EMAIL= /etc/apticron/apticron.conf #必要なら宛先を書き換えたり
EMAIL="root"
deborphan でみなしごパッケージを通知するようにする
$ sudo apt install deborphan
$ sudo crontab -e
$ sudo crontab -l | grep deborphan | grep -v ^#
7 4 * * * deborphan && printf "\nsudo apt --autoremove purge $( deborpha)'
てことでとりあえず動くようになったけど昔もらったノベルティのUSBメモリなのでこのまま運用すると多分すぐ壊れてしまうと思います.
最近秋葉原でセールになっている様な安い SSD とか欲しいですね.
こちらは起動終了のUARTのメッセージ
祝4周年!
そして新しいRaspberry Pi 3 Bが発売になりました.
4年あっという間でしたね当初はなかなか入手出来ませんでしたが今は大分改善されて買いやすくなっていいですね.
そしてRaspberry Pi 3 BRaspberry Pi 3 B.(A+の基板で無線内蔵も出たら良さそう).新たにWi-Fi/Bluetoothが内蔵されました.CPUもARM64になったのでそっちを試してみたい場合も良さそうです.ケースは流用できそうですがLED位置が変更になってるので LEDが見えなくなる場合もありそう.無線があるってことで日本では技適が通ってなくて使えない……と良くなるのですが,未だ通ってないけど近日中に取れるみたいです!
新発表されたラズパイ3の技適につきまして取得できる見込みでございます。今しばらくお待ち願います。https://t.co/tXjTuBDbnt
— RSJapanMK (@RSJapanMK) 2016年2月29日
しかし電源が2.5Aというのがかなりきつい気がします.家にある一番大きな電流を流せるmicroUSB B Cableでも2.4Aですから…….
私はとりあえず手持ちに5V 3AのACアダプタがあったのでこれをGPIO経由で流し込むようにしたら行けそうかなと思っています.通販サイトを見ると2.5A対応のACアダプタも併売されているのでそれを買ったほうが無難そうですね.
こういう組み合わせでどうにか pic.twitter.com/GLb6fNVYXt
— (「ΦωΦ)「 (@matoken) 2016年2月29日
なお,技適は通る見込みだから英国などから次回に買おうという人向けに注意が.
忘れてましたが、Pimoroniとかで買う場合、電源は日本の電力安全法の対象となりますからRSさんより電源だけは購入ください #RaspberryPi3
— おおたまさふみ (@masafumi_ohta) 2016年2月29日
ということで国外で買った電源は電力安全法の検査通ってないので電源は国内で買いましょう.PSEマークの付いたものを.
ところでUSB電源の規格ですが,多分こんな感じです.
Raspberry Pi 3 Bの5V 2.5Aは範囲外な感じがします.USB PDは3AまであるけどUSB Cの規格みたいですし.火を噴いたりしないかちょっと不安です.
OSの方ですが,Rasbian jessie/Ubuntu MATEが新しくなっているようです.(既存環境はupgradeするだけでok)そしてちょっと前からRasbian wheezyが居なくなっています(ftp siteにはアーカイブが残っていますけど).wheezyはjessieより軽いので初代を使うときとか用途によってはいいんですけどね.Raspberry Pi 3 Bでwheezyが動かせるかも気になります.
#そういえばRabianのサポートはどうなっているんだろう?Debianと同じならいいけどこの感じだともっと速くに打ち切られそうで怖い.
しかし久々に新製品を追いかける楽しみを味わいました.
あ,Raspberry Pi古いのが余っちゃったよって方はください.