mieki256's diary



2017/11/20(月) [n年前の日記]

#1 [raspberrypi] Raspberry Pi Zero Wの無線LANが使えなくなって困ったり

Raspberry Pi Zero W + raspbian jessie で sudo rpi-update をしたら、再起動後に無線LANが使えなくなった。困った。

ググったら以下のページが。

_Rapberry piの起動時に無線LAN接続ができなくなった. - Atelier d' OFCOURSE

sudo ifup wlan0 と打ったら無線LANが有効になった。ということは、使えるけど起動時に有効になってない状態、ということかな…。

/etc/network/interface を編集。
sudo vi /etc/network/interface
allow-hotplug wlan0 の前に auto wlan0 を追加してから再起動。無線LANが使えるようになった。助かった…。

#2 [raspberrypi][love2d] Raspberry Pi Zero W + raspbian jessie でlove2dを使えるようにする手順をメモ

前にもメモした記憶があるけど、今回 raspbian jessie をクリーンインストールしたので、再度メモ。

SDL2(OpenGL無効版)をビルドしてインストール。 :

SDL2は、画像の描画や音声ファイルの再生等をしてくれるライブラリ、という説明でいいのかな…。

公式リポジトリにある、OpenGLが有効になったSDL2をインストールしたい場合は、以下だけで済む。
sudo aptitude install libsdl2-dev

が、今回は OpenGL無効(にすることで OpenGL ESが有効になる)版をインストールしたいのでビルドする。以下を参考に作業。

_Golang と SDL2 でゲームを作る - KaoriYa
_SDL2-2.0.6 on Raspberry Pi - ChoccyHobNob

ビルドに必要なパッケージをインストール。
sudo aptitude install automake build-essential mercurial qt5-default libtool libasound2-dev libaudio-dev libesd0-dev libsndfile1-dev libmodplug-dev libopenal-dev libfontconfig1-dev libpango1.0-dev freeglut3-dev libfreeimage-dev libjpeg-dev libtiff5-dev libwebp-dev libxcursor-dev libxi-dev libxrandr-dev libxss-dev libudev-dev libsmpeg-dev libxinerama-dev

ソースをDLして解凍して configure。
mkdir ~/sdl2
cd ~/sdl2
wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz
tar xzf SDL2-2.0.5.tar.gz
cd SDL2-2.0.5
mkdir build && cd build

../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

結果は以下。Raspberry Pi1 / Zero系の場合、--host=arm-raspberry-linux-gnueabihf をつけて configure しないと、Video driver に rpi が出てこないので、指定は必須。
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO

--host=arm-raspberry-linux-gnueabihf をつけない場合は以下になる。video driver に rpi が無い。
../configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : dummy opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO

makeしてインストール。1〜2時間ぐらいかかる。
make
sudo make install
共有ライブラリを一応更新。
sudo ldconfig
$ sudo ldconfig -p | grep SDL2

        libSDL2-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2-2.0.so.0
/usr/local/lib/ 以下にインストールされた。

love2dをビルドしてインストール。 :

以下を参考にして作業。

_Building LOVE (日本語) - LOVE
_pilove/build-love2d.sh at master - skarbat/pilove

必要なパッケージをインストール。
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev
sudo aptitude install autotools-dev automake libtool libdevil-dev libogg-dev libflac-dev libflac++-dev libmng-dev
sudo aptitude install libturbojpeg1-dev
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev
sudo aptitude install devscripts git-core debhelper dh-autoreconf libasound2-dev libudev0 libudev-dev libdbus-1-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev libxss-dev libxt-dev libxxf86vm-dev libgl1-mesa-dev libibus-1.0-dev libraspberrypi-dev

ちなみに、raspbian jessie ではなく raspbian stretch の場合は、libturbojpeg1-dev ではなく libturbojpeg0-dev をインストールするっぽい?
sudo aptitude install libturbojpeg0-dev

love2dのLinux用のソースをDLして解凍して configure してビルドしてインストール。1時間半かかった。
mkdir ~/love2d
cd ~/love2d
wget https://bitbucket.org/rude/love/downloads/love-0.10.2-linux-src.tar.gz
tar zxf love-0.10.2-linux-src.tar.gz
cd love-0.10.2
./configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

$ which love
/usr/bin/love
/usr/bin/以下に、love がインストールされた。

動作確認。 :

love で実行。例の画面が出た。

love2dに、サウンドを鳴らすソースを与えてみた。以下のような警告が表示されたものの、音が鳴った。
AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"

音が鳴らない場合は、pulseaudio --start をしてから pulseaudio --kill をしてから試すと音が鳴ったりした。

各パッケージのインストール時にリストアップされたパッケージをメモ。 :

一応、各パッケージのインストール時にリストアップされたパッケージもメモ。環境は、Raspberry Pi Zero W + raspbian jessie。

$ sudo aptitude install automake build-essential mercurial qt5-default libtool libasound2-dev libaudio-dev libesd0-dev libsndfile1-dev libmodplug-dev libopenal-dev libfontconfig1-dev libpango1.0-dev freeglut3-dev libfreeimage-dev libjpeg-dev libtiff5-dev libwebp-dev libxcursor-dev libxi-dev libxrandr-dev libxss-dev libudev-dev libsmpeg-dev libxinerama-dev

以下の新規パッケージがインストールされます:
  autoconf{a} automake autopoint{a} autotools-dev{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a}
  freeglut3{a} freeglut3-dev gettext{a} intltool-debian{a} libarchive-zip-perl{a} libasound2-dev libasprintf-dev{a}
  libaudio-dev libaudiofile-dev{a} libavahi-client-dev{a} libavahi-common-dev{a} libcaca-dev{a}
  libcairo-script-interpreter2{a} libcairo2-dev{a} libdbus-1-dev{a} libdirectfb-dev{a} libdirectfb-extra{a}
  libdrm-dev{a} libdrm-exynos1{a} libdrm-omap1{a} libdrm-tegra0{a} libegl1-mesa-dev{a} libesd0-dev
  libfile-stripnondeterminism-perl{a} libflac-dev{a} libfontconfig1-dev libfreeimage-dev libfreeimage3{a}
  libgettextpo-dev{a} libgettextpo0{a} libgl1-mesa-dev{a} libgles2-mesa-dev{a} libglib2.0-dev{a}
  libglu1-mesa-dev{a} libharfbuzz-dev{a} libharfbuzz-gobject0{a} libice-dev{a} libjbig-dev{a} libjpeg-dev
  libjpeg62-turbo-dev{a} libjs-excanvas{a} libltdl-dev{a} liblzma-dev{a} libmail-sendmail-perl{a} libmodplug-dev
  libogg-dev{a} libopenal-dev libpango1.0-dev libpcre3-dev{a} libpcrecpp0{a} libpixman-1-dev{a}
  libpthread-stubs0-dev{a} libpulse-dev{a} libpulse-mainloop-glib0{a} libqt5opengl5-dev{a} libqt5sql5{a}
  libqt5sql5-sqlite{a} libqt5test5{a} libqt5xml5{a} libsdl1.2-dev{a} libslang2-dev{a} libsm-dev{a} libsmpeg-dev
  libsmpeg0{a} libsndfile1-dev libsys-hostname-long-perl{a} libtiff5-dev libtiffxx5{a} libtool libudev-dev
  libunistring0{a} libvorbis-dev{a} libwayland-bin{a} libwayland-dev{a} libwebp-dev libx11-dev{a} libx11-doc{a}
  libx11-xcb-dev{a} libxau-dev{a} libxcb-dri2-0-dev{a} libxcb-dri3-dev{a} libxcb-glx0-dev{a} libxcb-present-dev{a}
  libxcb-randr0-dev{a} libxcb-render0-dev{a} libxcb-shape0-dev{a} libxcb-shm0-dev{a} libxcb-sync-dev{a}
  libxcb-xfixes0-dev{a} libxcb1-dev{a} libxcursor-dev libxdamage-dev{a} libxdmcp-dev{a} libxext-dev{a}
  libxfixes-dev{a} libxft-dev{a} libxi-dev libxinerama-dev libxrandr-dev libxrender-dev{a} libxshmfence-dev{a}
  libxss-dev libxt-dev{a} libxxf86vm-dev{a} m4{a} mercurial mercurial-common{a} mesa-common-dev{a} po-debconf{a}
  qt5-default qt5-qmake{a} qtbase5-dev{a} qtbase5-dev-tools{a} x11proto-core-dev{a} x11proto-damage-dev{a}
  x11proto-dri2-dev{a} x11proto-fixes-dev{a} x11proto-gl-dev{a} x11proto-input-dev{a} x11proto-kb-dev{a}
  x11proto-randr-dev{a} x11proto-render-dev{a} x11proto-scrnsaver-dev{a} x11proto-xext-dev{a}
  x11proto-xf86vidmode-dev{a} x11proto-xinerama-dev{a} xorg-sgml-doctools{a} xtrans-dev{a}
更新: 0 個、新規インストール: 135 個、削除: 0 個、保留: 0 個。

$ sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev
以下の新規パッケージがインストールされます:
  libluajit-5.1-2{a} libluajit-5.1-dev libmpg123-dev libphysfs-dev libphysfs1{a} libtheora-dev

$ sudo aptitude install autotools-dev automake libtool libdevil-dev libogg-dev libflac-dev libflac++-dev libmng-dev
以下の新規パッケージがインストールされます:
  liballegro4.4{a} libdevil-dev libdevil1c2{a} libflac++-dev libflac++6{a} liblcms2-dev{a} libmng-dev

$ sudo aptitude install libturbojpeg1-dev
以下の新規パッケージがインストールされます:
  libturbojpeg1{a} libturbojpeg1-dev

$ sudo aptitude install devscripts git-core debhelper dh-autoreconf libasound2-dev libudev0 libudev-dev libdbus-1-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev libxss-dev libxt-dev libxxf86vm-dev libgl1-mesa-dev libibus-1.0-dev libraspberrypi-dev
以下の新規パッケージがインストールされます:
  at{a} bsd-mailx{a} dctrl-tools{a} debian-keyring{a} devscripts diffstat{a} distro-info-data{a} dput{a} equivs{a}
  exim4-base{a} exim4-config{a} exim4-daemon-light{a} gir1.2-ibus-1.0{a} git-core hardening-includes{a}
  libapt-pkg-perl{a} libclass-accessor-perl{a} libclass-inspector-perl{a} libclone-perl{a} libcommon-sense-perl{a}
  libconvert-binhex-perl{a} libcrypt-ssleay-perl{a} libdigest-hmac-perl{a} libdistro-info-perl{a}
  libemail-valid-perl{a} libexporter-lite-perl{a} libfile-basedir-perl{a} libibus-1.0-5{a} libibus-1.0-dev
  libio-pty-perl{a} libio-sessiondata-perl{a} libio-socket-inet6-perl{a} libio-string-perl{a} libio-stringy-perl{a}
  libipc-run-perl{a} libjson-perl{a} libjson-xs-perl{a} libmime-tools-perl{a} libnet-dns-perl{a}
  libnet-domain-tld-perl{a} libnet-ip-perl{a} libossp-uuid-perl{a} libossp-uuid16{a} libparse-debcontrol-perl{a}
  libparse-debianchangelog-perl{a} libperlio-gzip-perl{a} libsoap-lite-perl{a} libsocket6-perl{a}
  libsub-name-perl{a} libtask-weaken-perl{a} libtext-levenshtein-perl{a} libtie-ixhash-perl{a}
  libxml-parser-perl{a} libxmlrpc-lite-perl{a} lintian{a} patchutils{a} python3-magic{a} t1utils{a} wdiff{a}

pulseaudioについてメモ。 :

pulseaudio関係をインストールしたい場合は、以下も打つけど…。
sudo aptitude install pulseaudio libpulse-dev

raspbian jessie をクリーンインストールした直後は以下のような状態で既にアレコレ入ってたので、わざわざインストールを指定しなくてもよいのではないかな…。
$ sudo aptitude search pulse | grep -E '^i'

i A libpulse-dev                    - PulseAudio client development headers and
i A libpulse-mainloop-glib0         - PulseAudio client libraries (glib support)
i A libpulse0                       - PulseAudio client libraries
i A libpulsedsp                     - PulseAudio OSS pre-load library
i A pulseaudio                      - PulseAudio sound server
i   pulseaudio-module-bluetooth     - Bluetooth module for PulseAudio sound serv
i A pulseaudio-module-x11           - X11 module for PulseAudio sound server
i A pulseaudio-utils                - Command line tools for the PulseAudio soun

#3 [linux] 自宅サーバの時計がおかしくて悩んだり

自宅サーバが、2017/11/20 01:30頃に何故か勝手に再起動していて首を捻ったのだけど、それはさておき。

どうも自宅サーバの時計がおかしい…。ハードウェアクロックが、異様にずれてる。

ちなみに環境は Vine Linux 6.5。
# cat /etc/vine-release
Vine Linux 6.5 (Poupille)

時刻を確認。
# date
2017年 11月 20日 月曜日 07:55:46 JST

# hwclock -r --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511128259 秒時点で行なわれました
直前の調整は 1969 年以降 1511128259 秒時点で行なわれました
ハードウェア時計はローカル時刻です
ハードウェア時計ローカル時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/19 22:55:52
ハードウェア時計時刻 : 2017/11/19 22:55:52 = 1969 年以来 1511099752 秒
2017年11月19日 22時55分52秒  -0.203008 秒
ハードウェアクロックが、ちょうど9時間ずれてる。おかしい。UTC絡みなのだろうか…?

ntpの状態は以下のような感じ。
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-ntp1.plala.or.j 202.234.233.109  4 u  140  256  377   19.093   -4.844   0.514
-ntp2.plala.or.j 202.234.233.109  4 u  203  256  377   12.973   -3.774   0.957
+ntp1.jst.mfeed. 133.243.236.17   2 u  204  256  377   20.810   -1.036   0.505
*ntp2.jst.mfeed. 133.243.236.17   2 u  196  256  377   21.901   -0.961   0.599
+ntp3.jst.mfeed. 133.243.236.17   2 u   91  256  377   18.489   -0.653   0.717
LOCAL(0)        .LOCL.          10 l  59m   64    0    0.000    0.000   0.000

ハードウェアクロックに、現在時刻を設定してみる。
# date
2017年 11月 20日 月曜日 08:28:08 JST

# hwclock --systohc --localtime --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511132257 秒時点で行なわれました
直前の調整は 1969 年以降 1511132257 秒時点で行なわれました
ハードウェア時計はローカル時刻です
ハードウェア時計ローカル時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/19 23:28:23
ハードウェア時計時刻 : 2017/11/19 23:28:23 = 1969 年以来 1511101703 秒
Time elapsed since reference time has been 0.004853 seconds.
Delaying further to reach the new time.
ハードウェア時計を 08:28:23 に設定 = 1969 年以来 1511134103 秒
ioctl(RTC_SET_TIME) に成功しました。
前回の調整以来、少なくとも一日経過しないと、ずれを修正できません。

# hwclock --show ; date
2017年11月20日 08時29分18秒  -0.351335 秒
2017年 11月 20日 月曜日 08:29:18 JST
設定できたように見えるけど、しばらくするとまた時間がずれる。何故。

関係ありそうなファイルを確認。 :

# strings /etc/localtime
TZif2
        JCST
TZif2
JCST
JST-9

# cat /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
ARC=false

# cat /etc/adjtime
0.018596 1511134103 0.000000
1511134103
LOCAL

指定がおかしいようには見えないのだけどなあ…。

そもそも、一体何が、一定時間毎にハードウェアクロックを上書き設定してしまうのだろう?

「11分モード」なるものがあるらしい。 :

以下のページを眺めてたら、「11 minute mode(11分モード)」なるものがあると知った。11分毎にハードウェアクロックを再設定してしまう機能がカーネルにあるらしく、ソレを利用してntpサーバがハードウェアクロックを設定してしまう時があるそうで。

_日時を設定して再起動すると標準時刻に戻ってしまう | アットマークテクノ ユーザーズサイト
_hardware clockがずれる件と 11 minute mode - (ひ)メモ
_Man page of HWCLOCK - (カーネルによるハードウェアクロックの自動合わせ、の項を参照)
_RHEL6のtickless kernel - とあるSIerの憂鬱
_設定ファイル
_パソコンの時計 ハードウェアクロックとシステムクロック

状態を確認してみる。
# ntptime | grep status
  status 0x2001 (PLL,NANO),
UNSYNC の表記が無いので、11 minute mode(11分モード)が有効になっているらしい。つまりウチの自宅サーバは、ntpd だかカーネルだか分からんけど、11分毎にハードウェアクロックが上書きされてしまう模様。

/etc/adjtime の3行目が、LOCAL か UTC かで、ハードウェアクロックから時刻を読み取る際の処理が変わってくるらしい。試しに UTC にしてみた。
vi /etc/adjtime
3行目をUTCに

vi /etc/sysconfig/clock
UTC=true に

hwclock --systohc --utc --debug

# hwclock -r --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511139353 秒時点で行なわれました
直前の調整は 1969 年以降 1511139353 秒時点で行なわれました
ハードウェア時計はUTC時刻です
ハードウェア時計UTC時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/20 00:59:18
ハードウェア時計時刻 : 2017/11/20 00:59:18 = 1969 年以来 1511139558 秒
2017年11月20日 09時59分18秒  -0.768737 秒

そもそもLinuxのシステムクロックはUTCで、ハードウェアクロックもUTCを前提にしている場合が多い、という話も見かけた。

どうせ Linux しか動かさない環境なのだから、これで様子を見てみよう…。

hwclockについて。 :

  • hwclock -w と hwclock --systohc は同じ。ハードウェアクロックを設定する。
  • hwclock -r と hwclock --show は同じ。ハードウェアクロックを読み出す。
  • --debug をつけると、詳細を表示してくれる。
  • --utc をつけると UTC として扱い、--localtime をつけるとローカルタイムとして扱う。

以上、1 日分です。

過去ログ表示

Prev - 2017/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project