おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2019年07月07日(Sun) 七夕の日曜日 [同日]

Raspberry Pi Zero Wが来た

Raspberry Pi 4の発表の少し前に発注してあったRaspberry Pi Zero Wにsshできるようになったのでまとめておきます。購入したのは、Argon Forty Raspberry Pi Zero W Barebones Kit。キットにはヒートシンクも入っていました。外部記憶装置としてはSanDiskのmicroSDXCカードを購入。パッケージにドロイドくんがいます。

SDカードには、Raspbianより2019-06-20-raspbian-buster-lite.imgddしました。2つのマイクロUSBポートのうち端っこのものは電源にしか使えないので、キーボードは内側のものに接続します。ディスプレイもつないで電源をつなぐと、Raspbianが起動してくる。むふふ。Raspberry Pi 4だけじゃなくてRaspberry Pi Zero Wも起動できるんだねえ!/boot内のたくさんのファイルでいろんなアーキテクチャに対応しているようです。ルートファイルシステムはカードいっぱいに広げられてる。初回のブート時に何か処理が走るんだろうな。そのうちくわしく。

$ uname -srm
Linux 4.19.50+ armv6l
$ df -hT / /boot
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/root      ext4   59G  1.2G   55G   3% /
/dev/mmcblk0p1 vfat  253M   40M  213M  16% /boot
$ ls /boot
bcm2708-rpi-b.dtb         bcm2711-rpi-4-b.dtb  fixup_cd.dat      overlays
bcm2708-rpi-b-plus.dtb    bootcode.bin         fixup.dat         start4cd.elf
bcm2708-rpi-cm.dtb        cmdline.txt          fixup_db.dat      start4db.elf
bcm2708-rpi-zero.dtb      config.txt           fixup_x.dat       start4.elf
bcm2708-rpi-zero-w.dtb    COPYING.linux        issue.txt         start4x.elf
bcm2709-rpi-2-b.dtb       fixup4cd.dat         kernel7.img       start_cd.elf
bcm2710-rpi-3-b.dtb       fixup4.dat           kernel7l.img      start_db.elf
bcm2710-rpi-3-b-plus.dtb  fixup4db.dat         kernel.img        start.elf
bcm2710-rpi-cm3.dtb       fixup4x.dat          LICENCE.broadcom  start_x.elf

とりあえず家の無線LANにつないで、sshできるようにします。

WPA2のパスフレーズの設定。

$ wpa_passphrase 家のSSID 家のパスフレーズ | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
	ssid="家のSSID"
	psk=****************************************************************
	key_mgmt=WPA-PSK
	proto=WPA2
	pairwise=CCMP
	group=CCMP
}

IPアドレスは固定にしておきます。家のLANはアクセスポイントが192.168.1.1にあります。Raspberry PiのIPアドレスは192.168.1.31にします。πなだけに。

$ sudo vi /etc/network/interfaces.d/wlan0
$ cat /etc/network/interfaces.d/wlan0 
auto wlan0
iface wlan0 inet static
  address 192.168.1.31
  netmask 255.255.255.0
  gateway 192.168.1.1

試行錯誤の最中はどのプロセスをどう再起動したものかわからなかったけれど再起動したらつながったので良しとします。

次にsshdの起動。

$ sudo systemctl enable ssh
$ sudo systemctl start ssh

これで家のLANの他のマシンからsshできるようになりました。

$ ssh pi@192.168.1.31
  :
pi@192.168.1.31's password: 
Linux raspberrypi 4.19.50+ #896 Thu Jun 20 16:09:52 BST 2019 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jun 20 19:43:57 2019

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $

あとは電源だけで作業を進めていけるのがうれしいよね。パスワードの変更から進めていきます。

Ryzenさんがやってきた

毛糸洗いにも安心なAthlon 64 X2 4200+の私用デスクトップが壊れてしまいました。グラフィックインターフェースに問題があるようです。CPUは以前のマシンからの流用、マザーボードはAsus M3A78-CMを2009年10月ごろから使っていたようです。

radeon 0000:01:05.0: ring 0 stalled for more than ...

下記は今回壊れたマシンから流用したもの。DVD-Rドライブと3.5インチフロッピードライブもありますが配線していません。

  • 2000年11月の検印が押されてるATXのケース
  • 何年か前に近所の文具店で買ってきた電源: Antec BASIC POWER 350WATT BP350
  • 2019年5月に近所の文具店で買ってきたSSD: Samsung SSD 860 EVO 250GB。以前のマシンでXubuntu 19.04を走らせていたものです。

せっかくだからRyzenにしようと買ってきたのが下記の部品です。

BIOSでインストールしたOSはモダンなマザーボードに起動してもらえるのか、わくわくしながら電源を入れたらですね、画面まっくろなまま、「ピー、ピ、ピ、ピ」との警告音。マニュアルによると、「NO VGA DETECTED」とのこと。調べてみたら最近のAMDのCPUはオンボードのグラフィックインターフェースはCPUに同梱されてAPUと呼ばれるんですね。型名の最後にGが付いているものがAPU、手元のには付いていない。しかたがない。グラフィックカードを買い足します。

よく見るとカードの端に見たことのないコネクタが付いていますが気にせず組み込んで電源を入れます。「NO VGA DETECTED」。コネクタのそばのLEDが赤く点灯しています。もしかしたら補助電源が必要なんですね。変換ケーブルで許して。

というわけで3度の配送待ちでやっとこ私用マシンが復活しました。起動が速くてありがたい!! 何かの互換モードでBIOS用のgrubを起動してくれてるようです。


2018年07月10日(Tue) ちょっと焦げ臭い [同日]

[vim] スタティックリンクされたvimをマルチバイト対応でビルドする (失敗編)

昨日の続き。 configureのオプションに--with-features=multi_byteを足したら、 たぶんリンクオプションに-lnslが加わって、 そこからgethostbyname(3)への参照ができていまいましたよ。

gcc   -static -L/usr/local/lib -Wl,--as-needed 	-o vim objects/arabic.o objects/beval.o objects/buffer.o objects/blowfish.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/pty.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/terminal.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o             objects/channel.o  objects/charset.o objects/json.o objects/main.o objects/memfile.o objects/message.o        -lm -ltinfo -lnsl  -ldl           
objects/channel.o: In function `channel_open':
channel.c:(.text+0x4c7c): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

configureのオプションに--with-features=multi_byteを足さない場合はこちら。

gcc   -static -L/usr/local/lib -Wl,--as-needed 	-o vim objects/arabic.o objects/beval.o objects/buffer.o objects/blowfish.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/pty.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/terminal.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o               objects/charset.o objects/json.o objects/main.o objects/memfile.o objects/message.o        -lm -ltinfo  -ldl           

2018年07月09日(Mon) いい感じに曇り [同日]

[vim] スタティックリンクされたvimをビルドする

気軽にコピーしてきて起動できるvimが欲しくなった。

Statically (cross) compiled vim for x86, x86-64 and mipselericpruitt/static-glibc-vimを参考にさせてもらう。 後者によると、いくつかの関数はautoconfにまかせておくとglibcに依存してしまうのだそうで、ここでは下記のように、生成されたconfig.hを変更することでリストされている関数が依存しないようにしてみた。

まずソースコードをいただいてくる。執筆時点では、パッチは173まで進んでいた。

$ git clone https://github.com/vim/vim.git

Configureとビルド。LDFLAGS-staticにすることでスタティックリンクできるようだ。

$ cd vim
$ export LDFLAGS="-static"
$ export MAKEFLAGS="-j4"
$ export CFLAGS=""
$ ./configure --with-compiledby='zunda <zunda@freeshell.org>'  \
--with-features=small --with-x=no --disable-gui  --disable-netbeans \
--disable-pythoninterp  --disable-python3interp  --disable-rubyinterp \
--disable-luainterp
$ cat << UNDEFS >> src/auto/config.h
/* We don't want to use functions in glibc */
#undef HAVE_GETPWNAM
#undef HAVE_GETPWUID
#undef HAVE_GETPWENT
#undef HAVE_DLOPEN
UNDEFS
$ make

デバッグシンボルはいらないだろう。できあがったものを確認する。

$ strip src/vim
$ ls -lh src/vim
-rwxrwxr-x 1 zunda zunda 1.9M Jul  9 22:37 src/vim
$ src/vim --version | head -3
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jul  9 2018 20:58:05)
Included patches: 1-173
Compiled by zunda <zunda@freeshell.org>
$ file ./src/vim
file ./src/vim
./src/vim: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=3bbc73f8afb52166c44901c7cf6f2b2a37a5f61b, stripped
$ ldd !$
ldd ./src/vim
	not a dynamic executable

うまくいったようだ。下記の環境でASCII文字を編集できるのを確認した。NetBSDでも走るんだよ!

  • Cedar-10
  • Cedar-14
  • Heroku-16
  • NetBSD 8.0_RC1 amd64

下記の環境ではエラーが出た。まあしょうがない。

  • macOS 10.13.5: vim: cannot execute binary file

2018年07月01日(Sun) 火山ガスの匂いが少し [同日]

[tDiary] 最新に追随

やっとこ、testやdevelopment用のGemを入れなければネイティブなGemのビルドを避けられると気づいたのでした。

$ git clone git@github.com:zunda/tdiary-core.git
$ cd tdiary-core
$ git remote add upstream https://github.com/tdiary/tdiary-core.git
$ git fetch upstream
$ git rebase upstream/master
$ bundle23 install --path=vendor/bundle --without='test development'
$ git checkout zunda-local
$ git merge master

Gemfile.lockのコンフリクトを修正してGemfile.localを下記のように作成して

gem 'tdiary-style-emptdiary'

もういちどbundle install…するとtDiary 5.0.9がgemで入っちゃうな。

$ bundle23 install --path=vendor/bundle --without='test development'

tdiary-style-emptdiaryのことは一旦置いておいて、git commitしよう。

さて。tdiary/tdiary-style-emptdiaryはforkしてきてsymlinkしてみる。

$ git clone git@github.com:zunda/tdiary-style-emptdiary.git
$ cd tdiary-core/lib/tdiary/style
$ ln -s ../../../../tdiary-style-emptdiary/lib/tdiary/style/emptdiary.rb .

これでtdiary.rbのロード元を変更すれば日記が見えるはずだろうか。

えいっ! (このエントリが見えますように)

…というわけで、gitの管理外のtdiary.confでプラグインの参照先もcloneしてきたものにしたら閲覧できるようになりました。やったー!!

本日のツッコミ(全1件) [ツッコミを入れる]

> zunda [ツッコミのテストですと]


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>