あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

iPhone 5Sを売ってiPad mini 4を買った

春にiPhone SEに買い換えた時からずっと放置プレイだったiPhone 5Sを売って、そのお金(と言うかポイント)でiPad mini 4 シルバー64GBを買いました。

f:id:Akkiesoft:20160807202206j:plain

iPhone5S(au/64GB)は町田のソフマップで買取査定を出して、上限16,000円のところ、キズありと液晶劣化で減額されて12,800円に。ポイントカードに買取額をつけてもらうやつを使って10%増額でしたので、14,080ポイントが入りました。元からあったポイントを足して1.5万ポイントに。

iPad miniは、たぶん16GBでも事足りる使用内容(ローカルになんか置こうみたいなプランはない)ですが、足りなくなって後悔するのも嫌なので64GBを選択。すでに持ってた初代iPad miniとだいたい似たような感じでお風呂のフタのブルーと、背面のクリアカバーを合わせて買って合計6.6万ほど。で、ポイントを使用して5.1万弱で購入となりました。

iPhoneカメラのホワイトバランスが変な気がするけど比較。新しいフタの色もいいですね。

f:id:Akkiesoft:20160807203157j:plain

使用感は言わずもがな快適。Retinaディスプレイは見やすいし、Touch IDが付いてるのでロック解除が楽です。初代iPadはCPUと言うかメモリがだいぶ厳しくなっていましたが、そのへんももちろん解消されています。最高。

初代iPad miniはしゃちょうのお下がりなので、カバー類以外は返す感じです。いや、カバー類だけ残ってもしゃあないな…?まあなんとかしよう。

今回のiPhone買い取りで買い取り増額クーポンが出てきたので、iPadの使用感が良ければiPod touch 5th(64GB)もこれを機に売ってしまう予定。

Raspberry Pi 3でPXEネットワークブート

昨日・今日と、raspberrypi.orgのブログでRaspberry Pi3のCPUの機能を利用したSDカード以外のブートについて紹介されています。いずれもベータのようですが、今日はPXEの話題がでていたのでこれはとおもい試してみました。

最近はラズピッピの話題はraspi.jpに書くようにしていますが、自宅固有の環境が出るのでこちらに書くことにしました。

raspberrypi.orgのブログの記事はこちら。

www.raspberrypi.org

昨日のはこちら→ Pi 3 booting part I: USB mass storage boot beta - Raspberry Pi

参考にする手順はブログ中にもリンクがありますが以下です。

環境

参考の手順はDHCPサーバー・NFSサーバーともにRaspberry Piを使用しているみたいですが、うちの場合はもうdnsmasqによるDHCP/DNS/PXEサーバーがVMware仮想マシンで稼働していて、NFSサーバーも同様に仮想マシンですでに存在しているので、これらを流用します。

関係ないですけど、ふつうのご家庭でもPXEインストール環境くらい整備されてますよね?

というわけでうちの環境は以下のとおりです。OSはいずれもUbuntu Server 14.04。

Raspberry Pi 3の用意

これはClient configurationの手順を読めばOKです。まあ、最新の環境にして、rpi-updateを実行するだけです。

sudo BRANCH=next rpi-update

次に/boot/config.txtにprogram_usb_boot_mode=1の1行を足して再起動。以下のコマンドを実行して実行結果が同じだったら足した1行を削除してシャットダウンします。この時点でCPU?何か書き込んでいるのか、単に確認なのかはまだ不明です。

$ vcgencmd otp_dump | grep 17:
17:3020000a
(program_usb_boot_mode=1をする前は17:1020000aらしい)

(DHCPサーバーで作業)dnsmasqの設定

参考ページではDHCPサーバーを動かすに当たってのネットワークアドレス設定も含まれているので長ったらしいですが、すでにその辺がすんでいるウチでは、設定のキモは/etc/dnsmasq.confの以下の行です。tftpの設定を足して、pxe-serviceを記述するのですが、前者も設定済みなので、追記したのは後者の1行だけとなりました。

dhcp-range=192.168.29.120,192.168.29.149,255.255.255.0,2h
enable-tftp
tftp-root=/tftpboot
pxe-service=0,"Raspberry Pi Boot"  ←追記したのはこれだけ

既存のX86のPXEは書き方を変えることで両対応にできました。

(前) dhcp-boot=install/pxelinux.0
(今) pxe-service=X86PC,"PXE", install/pxelinux

書き換えたらdnsmasqサービスを再起動します。X86PC環境でPXEブートするとこんな感じでプロンプトがでるようになります。

f:id:Akkiesoft:20160805235439p:plain

(DHCPサーバーで作業)/tftpbootにRaspberry Pi用ファイルを用意

/tftpboot以下にRaspberry Pi用のブートファイルを置きます。参考ページには「bootcode.binとstart.elfが必要」と書きつつ/bootをまるごと/tftpbootにコピーしていますが、/tftpboot直下に必要なのはbootcode.binのみで、その他のファイルはRaspberry Pi 3のCPUのシリアル番号から左の0を削った名前でディレクトリを掘って格納すれば/tftpboot以下をスッキリした状態にできます。

ちなみにラズピッピのCPUの確認は適当に起動した後cat /proc/cpuinfoを実行します。

$ cat /proc/cpuinfo
Hardware	: BCM2709
Revision	: a02082
Serial		: 0000000012345678

そして/tftpboot以下の構成。/boot以下の中身はどれを使えと言う指示がないので、先のRaspberry Pi3で用意した最新のものを利用しなくても大丈夫なはずですが、私の場合は最新のものを配置しました。

/tftpboot/install
         /12345678/start.elf
                    :
                  (bootcode.bin以外の/boot以下のファイル全部)
                    :
         /bootcode.bin

起動した後のNFSの位置を指示するのはcmdline.txtでやります。

$ sudo vi /tftpboot/12345678/cmdline.txt

root=/dev/nfs nfsroot=192.168.29.11:/3tb/rpi-netboot rw ip=dhcp rootwait elevator=deadline

(NFSサーバーで作業)NFSサーバーの設定

NFSサーバーのインストールは割愛します。/etc/exportsでエクスポート設定を書きます。

/3tb    *(rw,no_root_squash)

/3tb/rpi-netbootにはRaspbianで言うところのmmcblk0p2(/root)の中身を置きます。参考ページではサーバーにするRaspbianの中身をコピーしていましたが、ウチの場合はUbuntu Serverなので、ディスクイメージからmmcblk0p2の中身をコピーすることにしました。

手順は以下のとおりです。Raspbian Jessie LITEを利用していますが、通常版でも良いと思います。

(ディレクトリを掘る)
$ mkdir /3tb/rpi-netboot

(ディスクイメージをマウントする)
$ sudo losetup -f
/dev/loop3  ←/dev/loop3が作成される
$ sudo losetup /dev/loop3 /3tb/2016-05-27-raspbian-jessie-lite.img

(/dev/loop3p2を/mntにマウント)
$ sudo mount /dev/loop3p2 /mnt

(/mntの中身をrsyncでコピー)
$ sudo rsync -xa /mnt/ /3tb/rpi-netboot

(/mntをアンマウント)
$ sudo umount /mnt

(/dev/loop3を片付ける)
$ sudo losetup -d /dev/loop3

(片付けの確認)
$ sudo losetup -a

losetupの部分の参考ページ: イメージファイルをmountしてごにょごにょする手順 - mir the developer

コピーしたRaspbianの中身を少し書き換えます。参考ページではSSHのホスト鍵再生成をしていますが、私の手順では生成される前のディスクイメージの中身を用意したので不要です。/3tb/rpi-netboot/etc/fstabだけ編集します。

$ sudo vi /3tb/rpi-netboot/etc/fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2 ←この行を消す
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1 ←この行を消す

起動してみる

以上で作業はおわりなので、Raspberry Pi 3のネットワークブートを試してみます。Raspberry Pi 3からSDカードを抜いて、LANケーブルだけ挿した状態から電源を投入します。

DHCPサーバーでdnsmasqのログを見ながらブートの様子を見守ってみましょう。

$ tail -f /var/log/syslog

Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 available DHCP range: 192.168.29.120 -- 192.168.29.149
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 vendor class: PXEClient:Arch:00000:UNDI:002001
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 DHCPDISCOVER(eth0) b8:27:eb:xx:xx:xx 
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 tags: known, eth0
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 DHCPOFFER(eth0) 192.168.29.83 b8:27:eb:xx:xx:xx 
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 requested options: 43:vendor-encap, 60:vendor-class, 67:bootfile-name, 
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 requested options: 128, 129, 130, 131, 132, 133, 134, 135, 66:tftp-server
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 next server: 192.168.29.39
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  1 option: 53 message-type  2
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  4 option: 54 server-identifier  192.168.29.39
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  4 option: 51 lease-time  infinite
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  4 option:  1 netmask  255.255.255.0
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  4 option: 28 broadcast  192.168.29.255
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size: 17 option: 97 client-machine-id  00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Aug  5 23:34:39 miku dnsmasq-dhcp[24705]: 653460281 sent size: 47 option: 43 vendor-encap  06:01:03:0a:04:ff:50:58:45:08:07:80:00:01...
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: sent /tftpboot/bootcode.bin to 192.168.29.83
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: file /tftpboot/bootsig.bin not found
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/autoboot.txt not found
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: error 0 Early terminate received from 192.168.29.83
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: failed sending /tftpboot/83ca2283/start.elf to 192.168.29.83
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/config.txt to 192.168.29.83
Aug  5 23:34:44 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery.elf not found
Aug  5 23:34:45 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/start.elf to 192.168.29.83
Aug  5 23:34:45 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/fixup.dat to 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery.elf not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/config.txt to 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/dt-blob.bin not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery.elf not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/config.txt to 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/bootcfg.txt not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/cmdline.txt to 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery8.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery8-32.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery7.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/recovery.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/kernel8.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/kernel8-32.img not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/armstub8.bin not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: error 0 Early terminate received from 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: failed sending /tftpboot/83ca2283/kernel7.img to 192.168.29.83
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/armstub8-32.bin not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/armstub7.bin not found
Aug  5 23:34:46 miku dnsmasq-tftp[24705]: file /tftpboot/83ca2283/armstub.bin not found
Aug  5 23:34:48 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/kernel7.img to 192.168.29.83
Aug  5 23:34:48 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/bcm2710-rpi-3-b.dtb to 192.168.29.83
Aug  5 23:34:48 miku dnsmasq-tftp[24705]: sent /tftpboot/83ca2283/config.txt to 192.168.29.83

一通り転送が終わると、Raspberry Pi 3からいつものRaspbianのブート画面が表示されます。

まとめ

ベータとは言いつつもとくに問題なくPXEブートができました。

コンピューター教室とかのような、作っては壊し…みたいな環境では、一度作りこんでしまえばセットアップの手間がだいぶ削減できそうな気がします。使い終えたらNFSサーバーに置いたファイルをもとに戻すだけですし(/bootは書き換えできないのでそのまま)。

なんかこれはちょっと使えそうですね〜。

追記

空のMicroSDカードを刺して起動してもPXEブートしました。しかも起動したRaspbianから普通に見えて、マウントして読み書きもイケるっぽいです。なるほどね。

コミック

だいぶ書き溜めてしまった。そして気づいたら終わったタイトルが多い。3タイトルも終わってしまった。最近はなかなか新しいのに手をつけていないので一旦終わったものとそうでないものを整理しないとイカンなあ……。

あと、今日買ってまだ読んでないのもあるのでそれはまた後日

彼とカレット(4・完)

カレットさんも気づいたら終わってた。長かったなあ。最初に何で知ったかも忘れた。多分週アスの紙面だったような気もするけど、やっぱWebだったかしら。

彼とカレット。 (4)

彼とカレット。 (4)

キルミーベイベー (8)

うふ…うふふ、ふっ、うーふふふ…って感じで読むコミックですよねこれ(伝われ)。

キルミーベイベー (8) (まんがタイムKRコミックス)

キルミーベイベー (8) (まんがタイムKRコミックス)

hshsさせろ!!(3・完)

ロリコン&老い専の凸凹マンガ完結。元親の過去を知った結菜がでた行動からラストまでがけっこう好き。そして表紙の何なのこのエロさ。いいぞ!

魔法陣グルグル2 (6)

デキルコが相変わらずいいキャラをしていて好き。そして安定のギャグセンス。

うつらうららか-えれっと ART WORKS-

えれっとさんの画集。商業からの掲載が主みたいでしたが眼福眼福。えれっとさんはあれだ、自分のオタク人生(あれ、わたしオタクなんでしたっけ?)の中でも最初の方に知った同人作家の一人かもしれない。

うつらうららか -えれっと ART WORKS-

うつらうららか -えれっと ART WORKS-

NEW GAME! (4)(5)

NEW GAME!がなんと4・5同時発売。気合い入りすぎやろ……。

4は本編の続き。5は青葉の高校3年の時のお話で独立した1巻にまとまってます。5巻は特に本編と繋がるところも多々あるので読み返したくなる感じ。どちらも良かった、買うべき(粉蜜柑)。

ゆーて良いのよ粉蜜柑で。ここに詳細なの書き始めたらネタバレになるし(そして減りゆく語彙)。

事件記者トトコ! (4・完)

トトコも終わってしまった。けどなんだろ、普通に続けられそうな感じで終わっているので、最後のネタばらしを忘れて続けようと思えば続けられるな?

Micro Dot pHAT

PimoroniからMicro Dot pHATというかっこよさげなドットマトリクスボードキットが出てきたので早速ポチったのが今日届きました。惜しくもOSC2016 Kyotoに間に合わず。

https://shop.pimoroni.com/products/microdot-phat

f:id:Akkiesoft:20160801150751j:plain

ついでにゼロピッピもポチりました。OSC2016 Kyotoでラズピッピセミナーを聞いていた人に1枚譲って減った分が早速補充された格好です。そのOSC会期中にまた別の買い物をしたついでにまたゼロピッピをポチったので、順調に増えています。

ゼロピッピはさておき、Micro Dot pHATはこんな感じです。

f:id:Akkiesoft:20160801150803j:plain

ベースボードとGPIOピンとマトリクスボードはバラバラなので自分で組み立てる必要があります。フルキットなので、13*6+40で118回のハンダ付けが必要になりそうです。このハンダ付け量はたぶんGert VGA 666以来ですね。はげしい。

金魚

金魚の定点監視カメラを設置しました。

f:id:Akkiesoft:20160723221037j:plain

完全に見覚えのあるインターフェースです。本当にありがとうございました。

http://shrimp.marokun.net/kingyo/

そんなに頻繁に撮ってもしょうがないかなと思い、今回から撮影頻度を1時間に1回にしました。一方、先日購入したBlinkt!を水槽のフタにつけて、撮影用の照明にしました。深夜でも1時間ごとに鮮明な金魚の映像が配信されます。Blinkt!がOSCデモに使えなくなるけど、まあいいか。

f:id:Akkiesoft:20160723221607j:plain

さーてあとはエサやりシステムの構築だな……!と思ったところで、アクシデントが発生しまして、水槽が2つになりました。

f:id:Akkiesoft:20160723221910j:plain

購入当初から2匹にサイズの差があって、大きい方が気性の荒い子らしく、暇さえあれば小さい方を追い回していたんですが、1週間たってもあまり変わらないので、見かねて分離してみました……。両方監視するのは難しいので、左の水槽のみ監視になります。

空気ポンプの分岐とチューブ・ストーンまでは以前の資材があったので流用して、砂利も余っていたものを利用しました。8年くらい前のメダカの資材……!水質改善系液体を入れてるので濁ってますがたぶんそのうち透明になるはず?

右の新しい水槽(前に米びつとして使ってたやつ)には大きい方を投入。名前は決めかねてたけど、こいつもうジャイアンでいいな?小さいのはもう少し考えよう。

ああ……エサやりシステムマジでどうしよ……(◞‸◟)