2020/04/28(火)Nexus 5 に Android 10.0/crDroid を入れる
Nexus 5/Hammerhead に Android 10.0 を入れた記録。簡単でしたが、自己責任でお願いします。
2020/08/04 crDroid 6.8対応に更新しました。
Nexus 5/Hammerhead に Android 10.0 を入れた記録。簡単でしたが、自己責任でお願いします。
2020/08/04 crDroid 6.8対応に更新しました。
さくらVPSのv5がリリースされ、さくらVPS v3が機器老朽化メンテナンスで物理層が入れ替わったので、まとめてテストしてみました。
計測コマンドは「./Run -i 5 -c 2」(2コアで計測)。
項目 | 自宅サーバ | 512 v1 | 1G v3 | 1G v3' | 2G v4 | 1G v5 | 1G v3X |
---|---|---|---|---|---|---|---|
Dhrystone 2 | 4853.8 | 4412.1 | 3724.8 | 3837.2 | 4916.6 | 6313.4 | 6194.3 |
Whetstone | 1508.9 | 1148.0 | 1037.6 | 1199.2 | 1625.2 | 1861.8 | 1866.3 |
Execl Throughput | 1321.7 | 1592.5 | 1764.5 | 1288.5 | 1310.5 | 2461.4 | 2037.8 |
File Copy 1024 | 2058.6 | 1063.4 | 1705.6 | 2014.1 | 1867.0 | 2794.9 | 2549.9 |
File Copy 256 | 1391.3 | 747.3 | 1255.5 | 1183.6 | 1214.5 | 1779.8 | 1605.3 |
File Copy 4096 | 3560.2 | 1631.2 | 3501.6 | 2669.0 | 3665.4 | 6356.1 | 5756.8 |
Pipe Throughput | 1070.5 | - | - | 1087.0 | 896.5 | 3006.4 | 3066.7 |
Context Switching | 505.2 | - | - | 692.4 | 128.6 | 1727.2 | 1693.4 |
Process Creation | 1168.9 | - | - | 809.8 | 613.8 | 1788.3 | 1632.1 |
Shell Scripts (1) | 3304.0 | - | - | 1920.8 | 2897.0 | 3936.2 | 3623.5 |
Shell Scripts (8) | 3318.1 | - | - | 2472.1 | 3343.1 | 4357.9 | 3994.2 |
SysCall Overhead | 653.8 | - | - | 639.2 | 443.9 | 2200.6 | 2337.6 |
トータルindex | 1662.9 | - | - | 1424.4 | 1313.9 | 2876.3 | 2713.3 |
hdparm -t /dev/vda4 dd if=/dev/vda4 of=/dev/null bs=1M count=2048 iflag=nocache dd if=/dev/zero of=/tmp/test bs=1M count=2048 oflag=direct
単位 MB/s | 家サーバ | 1G v3 | 2G v4 | 1G v5 | 1G v3X |
---|---|---|---|---|---|
haparm | 260 | 480-600 | 200 | 200 | 200 |
dd 2G read | 271 | 200-500 | 210 | 210 | 210 |
dd 2G write | 247 | 100 | 210 | 210 | 210 |
「v3」と「v5」が同じ物なのに値段が高いのをどうにかしてほしい。「v5」のほうが安いじゃん!
長く使うなら面倒でも乗り換えたほうがよさそう。石狩DCはネットワーク遅延から少しだけ不利なんたけども、色々あって石狩継続しようかな。
Raspbian や Volumio などの設定済システムを、なるべく小さくディスクイメージ化するメモ。
# fdisk -l /dev/mmcblk0 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA) /dev/mmcblk0p2 532480 15554559 15022080 7.2G 83 Linux
8GB SD に Raspbian を入れた場合こんんな感じになります。下のパーティションが root ファイルシステムです。これを縮小します。
オンラインだと面倒なので、Linuxマシンを別に用意し、そこにラズパイ用のSDを入れて編集します。
# e2fsck -f /dev/sdd2 # resize2fs -P /dev/sdd resize2fs 1.44.5 (15-Dec-2018) Estimated minimum size of the filesystem: 470543
ブロックサイズは4KBですので、470543ブロック×4KB=1.9GB程度まで縮小できることがわかりました。キリの良いところで2GBに縮小します。
# resize2fs -P /dev/sdd 2G resize2fs 1.44.5 (15-Dec-2018) Resizing the filesystem on /dev/sdd2 to 524288 (4k) blocks. The filesystem on /dev/sdd2 is now 524288 (4k) blocks long.
resize2fs は 1.5GB といった指定はできません。1536Mと指定する必要があります。
ファイルシステムを縮小したらパーティションを縮小します。fdiskでパーティションを削除してから、スタートブロックを揃えてパーティションを再生成します。
# fdisk /dev/sdd Command (m for help): d Partition number (1,2, default 2): 2 Command (m for help): n Select (default p): p Partition number (2-4, default 2): 2 First sector (2048-15554559, default 2048): 532480 Last sector, +/-sectors or +/-size{K,M,G,T,P}: +2G Created a new partition 2 of type 'Linux' and of size 2 GiB. Partition #2 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: n Command (m for help): p Device Boot Start End Sectors Size Id Type /dev/sdd1 8192 532479 524288 256M c W95 FAT32 (LBA) /dev/sdd2 532480 4726783 4194304 2G 83 Linux
1セクタは512byteですので、「512×4194304 = 2147483648」と resize2fs の結果「524288×4096 = 2147483648」が等しいことを確認します。確認して問題なければ、最後に書き込んで終了です。
Command (m for help): w
これで縮小されたシステムがSDに構築されました。
最後にこのSDイメージ化すれば完成です。このときは、2つめのパーティションのEndの値「4726783」に注目します。先頭からこのセクタまで保存すれば良いので、「(4726783+1)×512 = 2308MB」を保存します。
dd if=/dev/sdd of=./img.file bs=1M count=2308 status=progress
これでイメージが完成しました。
お手軽で良いのですが、ひとつ問題点がありまして、この手順では極限まで小さくしたイメージを作ることができません。出来上がったらイメージからRaspberry Piを起動するとこうなります。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 2.0G 1.3G 644M 66% / /dev/mmcblk0p1 253M 52M 201M 21% /boot
このように800MBほど空いている領域があるわけです。またパーティションのスタートブロックも、8192から2048に減らすことで容量を削減できます。
mkdosfs -F32 -nBOOT /dev/sdd1 mkfs -t ext4 /dev/sdd2
「-nBOOT」はディスクラベルをBOOTにする設定です。DOS領域(vfat)のラベル名をBOOTにしないとラズパイが起動しません。後から変更する場合は、dosfslabelコマンドを使用します。
dosfslabel /dev/sdd1 BOOT
これで作業完了です。SDラズパイに挿入して起動することを確認します。問題なければ、上と同様の手順でイメージ化します。
DOS領域のディスクラベルを「BOOT」にすることと、「Disk identifier」の値を保つことです。
fstabやカーネル起動オプションでは「PARTUUID」によってデバイスを指定しています。PARTUUIDはファイルシステムのUUIDではなく、パーティションにつけられたUUIDです。DOSパーティションテーブル(MBR)には存在せず、gptパーティションテーブルが持つものです。
DOSパーティションにはPARTUUIDの概念はないのですが、「(Disk identifier)-(パーティション番号)」をPARTUUIDの代わりとして使用するようになっています。ですから「Disk identifier」を維持する必要があります。
/boot領域(Windowsから見える領域)の「cmdline.txt」に「init=/usr/lib/raspi-config/init_resize.sh」をつけることで、初回起動時のパーティションの拡張を実行できます。
しかしこれだけだと、パーティションは拡張されますが、ファイルシステムは未拡張のままです。ファイルシステムの拡張は /etc/init.d/resize2fs_once というファイルで行われています。
#!/bin/sh ### BEGIN INIT INFO # Provides: resize2fs_once # Required-Start: # Required-Stop: # Default-Start: 3 # Default-Stop: # Short-Description: Resize the root filesystem to fill partition # Description: ### END INIT INFO . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting resize2fs_once" ROOT_DEV=$(findmnt / -o source -n) && resize2fs $ROOT_DEV && update-rc.d resize2fs_once remove && rm /etc/init.d/resize2fs_once && log_end_msg $? ;; *) echo "Usage: $0 start" >&2 exit 3 ;; esac
このファイルを作成し、実行権限をつけます。そして /etc/rc3.d/S01resize2fs_once からリンクを貼ります。
vi /etc/init.d/resize2fs_once chmod +x /etc/init.d/resize2fs_once cd /etc/rc3.d/ ln -s ../init.d/resize2fs_once S01resize2fs_once
これで初回起動時のパーティション&ファイルシステム自動拡張が有効になります。
/bootは、SDをWindowsから開いたときに見える中身と同一。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="SSID" psk="PASSWORD" }
apt-get install git cmake libjpeg-dev imagemagick git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental make sudo make install mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -fps 60"
Apache + php-fpm 環境で Debian 9(jessie) から 10(buster) にアップデートしたら動かなくなったので、メモ。
Debian付属のmod_phpはスレッドセーフではないため、Apacheを event_mpm や worker_mpm で運用している場合は使用できません(prefork専用)。
そもそも今どきmod_phpで動作させるのはナンセンスなので、FastCGIデーモンによるPHP環境 PHP-FPM を使用します。
apt-get install php-fpm libapache2-mod-fcgid
php-fpmをインストールすることで自動的に「php-fpm7.3」サービスが起動します。
/etc/apache2/conf-available 以下に php7.3-fpm.conf が作られるので、これを有効にします。
cd /etc/apache2/conf-enabled ln -s ../conf-available/php7.3-fpm.conf
proxy_fcgi_moduleが必要なのでこれも有効にします。
cd /etc/apache2/mods-enabled ln -s ../mods-available/proxy_fcgi.load
この状態で、Apacheを再起動すれば有効になっているはずです。ついでに、OPcacheも最初から有効になっています。
# Redirect to local php-fpm if mod_php is not available <IfModule !mod_php7.c> <IfModule proxy_fcgi_module> # Enable http authorization headers <IfModule setenvif_module> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </IfModule> <FilesMatch ".+\.php$"> SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost" </FilesMatch> <FilesMatch ".+\.phps$"> Require all denied </FilesMatch> <FilesMatch "^\.ph(ar|p|ps|tml)$"> Require all denied </FilesMatch> </IfModule> </IfModule>
Debian 9(jessie)でも全く同じ設定で動作するのですが、以前は古い設定を使っていました。その設定を書いておきます。
Apache2の libapache2-mod-fastcgi(libapache2-mod-fcgidではダメ)を有効化してから、sites-available/000-default.conf 等に以下の設定を行います。
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi AddHandler php7.0-fcgi .php Action php7.0-fcgi /usr/sbin/php-fpm7.0 FastCgiExternalServer /usr/sbin/php-fpm7.0 -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization FastCgiConfig -maxClassProcesses 100 <Directory /usr/sbin> <Files php-fpm7.0> Require all granted </Files> </Directory> </IfModule>
外部プログラムを呼び出して、そこから php-fpm サーバに接続するという形式が無効になったようです。上に書いた古い設定は多くの新しいLinuxディストリビューションで無効になっているようです。
この古い設定を行った場合、エラーログ等はなく「404 Not Found」と言われ白紙のページが出るだけなので混乱します。
現在は Apache に直接組み込んだ FastCGIのProxyのモジュール(proxy_fcgi_module)から、直接php-fpmに接続するようになりました。このほうが遥かに効率的です。
ジャパンネットバンク銀行(JNB)が発行しているカード型トークン(セキュリティキー)を分解してみました。
ネットバンクの操作に必要なワンタイムパスワードを表示する機械で、今では一般的になりましたけど、JNBが最初だったんんじゃないかな。他行では乱数表が一般的だったと思います。
厚さなんと0.8mm。上にシート(約0.15mm)がついているのでこれを慎重に剥がします。
結構しっかりと融着されているので剥がすのは大変です。個体によるのかもしれませんが、特に左上(「電池」の赤字があるところ)は強固に融着されていました。剥がしたあとの厚みはたったの0.65mm。このサイズに回路が入っていて、しかも10年持つというのは驚きです。
分解したものは壊れたトークンです。壊れた場合、電話しなくてもWebから再発行を依頼できたらしい。カードに電話番号しか書いてないので、電話必須だと思ってしまった……。
ちなみに故障の症状は以下のものでした。参考にしてください。