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.imgをddしました。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にしようと買ってきたのが下記の部品です。
- マザーボード: ASUS Prime X470-Pro。HDMIとDPIのコネクタが付いてるやつ。
- CPU: AMD Ryzen 5 2600 YD2600BBAFBOX Wraith Stealth Cooler付きです。
- メモリ: Ballistix Sport LT 16GB Kit (8GBx2) DDR4 3200 MT/s (PC4-25600) CL16 SR x8 DIMM 288-Pin Memory BLS2K8G4D32AESBK Amazonに勧められるままに。
- SSDをちゃんとケースにとりつけつためにCorsair Dual SSD Mounting Bracket 3.5" CSSD-BRKT2
- 手持ちのディスプレイはHDMIとVGAしか受け付けないのでAmazonBasics CL2 Rated HDMI Input to VGA DVI Output Adapter Cable - 6 Feet
BIOSでインストールしたOSはモダンなマザーボードに起動してもらえるのか、わくわくしながら電源を入れたらですね、画面まっくろなまま、「ピー、ピ、ピ、ピ」との警告音。マニュアルによると、「NO VGA DETECTED」とのこと。調べてみたら最近のAMDのCPUはオンボードのグラフィックインターフェースはCPUに同梱されてAPUと呼ばれるんですね。型名の最後にGが付いているものがAPU、手元のには付いていない。しかたがない。グラフィックカードを買い足します。
よく見るとカードの端に見たことのないコネクタが付いていますが気にせず組み込んで電源を入れます。「NO VGA DETECTED」。コネクタのそばのLEDが赤く点灯しています。もしかしたら補助電源が必要なんですね。変換ケーブルで許して。
- 4ピン電源コネクタ2つから8ピン電源コネクタへの変換ケーブル: Cable Matters 2-Pack 8-Pin PCIe to Molex (2X) Power Cable 4 Inches
というわけで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 mipselとericpruitt/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してきたものにしたら閲覧できるようになりました。やったー!!
> zunda [ツッコミのテストですと]