Raspberry Pi Tips
Pi4以前のモデルは、SDカードの速度が22MB/s程度で頭打ちになる。
よって、早いSDカードを使っても恩恵は無い。
Pi4からはSDカードインタフェースが高速化され、さらに32GBを超えるSDXCも使用できるようになったらしい。
https://www.raspberrypi.org/downloads/raspbian/
いずれも全ポート合計の給電能力を示す。
max_usb_current=1
/boot/config.txt
# Enable UART (without Bluetooth) enable_uart=1 dtoverlay=pi3-disable-bt
/boot/config.txt
# Enable UART enable_uart=1 dtoverlay=pi3-miniuart-bt
BtとUARTを同時に使用する場合はMiniUART機能を使う。制約があるので注意。
詳細はこちら→ RasPi_uart
デフォルトではSSHが無効になっているので、有効化しないといろいろ大変です。
/boot(FATパーティション)に「ssh」という空ファイルを置けば良い。
イメージ焼いた直後にやってしまうと良いでしょう。
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="BWT_Net" psk="PASSWORD" key_mgmt=WPA-PSK priority=0 } network={ ssid="BWT_Net_mobile" psk="PASSWORD" key_mgmt=WPA-PSK priority=1 }
/etc/dhcpcd.conf
# Fixed address interface wlan0 static ip_address=192.168.1.52/24 static routers=192.168.1.254 static domain_name_servers=192.168.1.1
ntpをインストール
$ sudo apt install ntp
/etc/ntp.confを編集
#pool 0.debian.pool.ntp.org iburst #pool 1.debian.pool.ntp.org iburst #pool 2.debian.pool.ntp.org iburst #pool 3.debian.pool.ntp.org iburst pool ntp.nict.jp iburst
サービスを再起動
$ sudo service ntp restart
状態を確認
$ ntpq -p
chkconfigをインストール
sudo apt install chkconfig
サービスを停止
$ sudo chkconfig triggerhappy off $ sudo chkconfig plymouth off $ sudo chkconfig alsa-utils off
配布用SDカードイメージを作成後に、一部のファイルだけを差し替えたくなった時に活用できる。
特にパーティションサイズを変更して配布イメージサイズを小さくしている場合に便利。
通常の考え方だと、一度イメージをSDカードに書き出してから編集。その後、再度イメージファイルを作成する手順となる。
この手順であれば、SDカードを介在せずに目的を達成できる。
$ fdisk -l -u 2017-04-10-raspbian-jessie-lite.img ディスク 2017-04-10-raspbian-jessie-lite.img: 1297 MB, 1297862656 バイト ヘッド 255, セクタ 63, シリンダ 157, 合計 2534888 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x84fa8189 デバイス ブート 始点 終点 ブロック Id システム 2017-04-10-raspbian-jessie-lite.img1 8192 92159 41984 c W95 FAT32 (LBA) 2017-04-10-raspbian-jessie-lite.img2 92160 2534887 1221364 83 Linux
第2パーティションの開始セクタは92160なので、セクタサイズ512をかけて「92160×512=47185920」になる。
# mkdir /mnt/RasPi # mount -t ext4 -o loop,offset=47185920 2017-04-10-raspbian-jessie-lite.img /mnt/RasPi
#!/bin/sh echo "MIDI Connect : EWI-USB to UMONE" aconnect `aconnect -i | awk '/client.*EWI-USB/{print $2}'`0 `aconnect -o | awk '/client.*UMONE/{print $2}'`0
#!/bin/sh echo "MIDI Connect : nanoPad2 to EWI-5000" aconnect `aconnect -i | awk '/client.*nanoPAD2/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
#!/bin/sh echo "MIDI Connect : UM-ONE to EWI-5000" aconnect `aconnect -i | awk '/client.*UMONE/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
#!/bin/sh echo "MIDI Connect : USB Uno to EWI-5000" aconnect `aconnect -i | awk '/client.*USB Uno/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
この機種はPROGRAM CHANGEだけでなくBANK情報も送ってしまいます。
したがって、EWI-5000で使用するとFACTORY PRESET(赤LED)の方になってしまい、USER PRESET(緑LED)が使えません。
これに対応するために、MIDI FILTERを導入します。
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install mididings $ sudo reboot
使い方はこちら
http://das.nasophon.de/mididings/
$ mididings "Filter(PROGRAM)" &
$ aaconnect `aconnect -i | awk '/client.*UM-ONE/{print $2}'`0 `aconnect -o | awk '/client.*mididings/{print $2}'`0 $ aconnect `aconnect -i | awk '/client.*mididings/{print $2}'`1 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
UM-ONE→mididings(FILTER)mididings→EWI-5000
#!/bin/sh echo "MIDI Connect : UM-ONE to EWI-5000" aconnect -x mididings "Filter(PROGRAM)" & sleep 1 aconnect `aconnect -i | awk '/client.*UM-ONE/{print $2}'`0 `aconnect -o | awk '/client.*mididings/{print $2}'`0 aconnect `aconnect -i | awk '/client.*mididings/{print $2}'`1 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
pi@raspberrypi:~$ sudo bash root@raspberrypi:/home/pi#
root@raspberrypi:/home/pi# cd /usr/share/initramfs-tools
root@raspberrypi:/usr/share/initramfs-tools# nano hook-functions
497行目付近にoverlayを追加する
下記の例では4行目の末尾。
for arg in "$@" ; do case "$arg" in base) modules="$modules btrfs ext2 ext3 ext4 ext4dev overlay" modules="$modules isofs jfs reiserfs udf xfs"
root@raspberrypi:/usr/share/initramfs-tools# cd scripts root@raspberrypi:/usr/share/initramfs-tools/scripts#
# cp local overlay # cp -rp local-premount overlay-premount # cp -rp local-bottom overlay-bottom
root@raspberrypi:/usr/share/initramfs-tools/scripts# nano overlay
ファイル中の local_mount_root() という関数定義の中を変更する。
local_premount # if [ "${readonly}" = "y" ]; then roflag=-r # else # roflag=-w # fi # FIXME This has no error checking modprobe ${FSTYPE} checkfs ${ROOT} root # FIXME This has no error checking # Mount root mkdir /upper /lower if [ "${FSTYPE}" != "unknown" ]; then mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /lower else mount ${roflag} ${ROOTFLAGS} ${ROOT} /lower fi modprobe overlay mount -t tmpfs tmpfs /upper mkdir /upper/data /upper/work mount -t overlay \ -olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \ overlay ${rootmnt} }
コメントアウト4カ所。
「checkfs ${ROOT} root」の追加。
「mkdir /upper /lower」の追加。
「/lower」の追加2カ所。
modprobe overlay mount -t tmpfs tmpfs /upper mkdir /upper/data /upper/work mount -t overlay \ -olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \ overlay ${rootmnt}
以上の追加。
# uname -r
バージョンにv7が含まれているかどうかが重要。
含まれていなければ以下の記述で7を削除して編集を行う。
# update-initramfs -c -k $(uname -r) # cd /boot # mv initrd.img-$(uname -r) initrd7.img
# update-initramfs -c -k $(uname -r) # cd /boot # mv initrd.img-$(uname -r) initrd.img
kernel=kernel7.img initramfs initrd7.img
kernel=kernel.img initramfs initrd.img
boot=overlay dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
頭に「boot=overlay」追加と、途中の「root=/dev/mmcblk0p2」を書き換える。
$ mount | fgrep ' / '
こう出たら成功
overlay on / type overlay (rw,noatime,lowerdir=/lower,upperdir=/upper/data,workdir=/upper/work)
こう出たら失敗
/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)
ip-up/if-downコマンドは無くなりました。
ifconfig eth0 down~ ifconfig wlan0 up