2021年3月15日月曜日

Lichee Pi Zeroのソフト開発環境構築5

SWupdateを使ってみる(整理2)

結局まだ試行錯誤になっているが、段々と形になってきた。気がする。

ルートパーティションの拡張

ルートパーティションの拡張を、raspiなどを参考にして、初回起動時にいい感じに実施するようにしたい。
https://github.com/Squonk42/buildroot-licheepi-zero-old/wiki/Fresh-image-–-Expand-the-root-partition-and-filesystem
http://nahitafu.cocolog-nifty.com/nahitafu/2019/08/post-2df6c8.html

cat S01resize2fs_once
#!/bin/sh

function get_current_root_device
{
	for i in `cat /proc/cmdline`; do
		if [ ${i:0:5} = "root=" ]; then
			CURRENT_ROOT="${i:5}"
            # /dev/mmcblk0p3
		fi
	done
}

case "$1" in
    start)
        echo "Starting resize2fs_once"
        get_current_root_device
        resize2fs $CURRENT_ROOT &&
        rm /etc/init.d/S01resize2fs_once
        ;;
    *)
        echo "Usage: $0 start" >&2
        exit 3
        ;;
esac

これをex_licheepizerodock/board/rootfs-overlay/etc/init.d/に保存した

usb0のネットワークインターフェースを起動時に有効にする

起動時に固定IPでusb0を有効にしておきたい

cat interfaces
auto lo
iface lo inet loopback

auto usb0
iface usb0 inet static
    address 192.168.100.1
    netmask 255.255.255.0

これをex_licheepizerodock/board/rootfs-overlay/etc/network/に保存した

dhcpサーバーを有効にする

どうしようか悩んだけど、usb刺すたびにPC側でIPアドレスの設定をするのも大変だし
なぜか、毎回違うインターフェースとして認識されるみたいだし。
MACアドレスが毎回ランダムで生成されているみたいだからか。。
このあたりは、まだ興味の対象外なので、hdcpサーバーを入れてしまって楽をしようと思う。

BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
BR2_PACKAGE_DHCP
BR2_PACKAGE_DHCP_SERVER

また、設定ファイルとして

cat dhcpd.conf
option subnet-mask 255.255.255.0;
option routers 192.168.100.1;
subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.10 192.168.100.250;
}

をex_licheepizerodock/board/rootfs-overlay/etc/dhcp/に保存した

これで、PCとusbつなぐとネットワークが有効化されるようになった

$ ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.246 ms

avahi

まだ、ちゃんと試していないけど、avahiを入れると、host名でアクセスできたり
はたまた、dhcpサーバー建てなくてもローカルリンクアドレスで通信できるようになるみたい。

avahi
IPv4LL network address configuration daemon
mDNS/DNS-SD daemon
libdns_sd compatibility (Bonjour)

IPv4LLがローカルリンクアドレス
mDNSが「host名.local」でのアクセスを可能にする
うーん。どうしようかな。
今は、こういう仕組みがあるという理解だけしておこう。

swupdateのwebサーバーを自動起動させる

init.dにスタートアップはすでにあったので、それを参考に修正する。

/etc/init.d/S80swupdate

にて

/usr/lib/swupdate/swupdate.sh

が呼び出されて、その中で

/etc/swupdate/conf.d and /usr/lib/swupdate/conf.d/

内のファイルを読み込んでいる
なので、/etc/swupdate/conf.d/swupdate.confみたいなファイルを用意しておく

mkdir /swutmp
export TMPDIR=/swutmp
SWUPDATE_ARGS="-p 'reboot'"
SWUPDATE_WEBSERVER_ARGS="--document-root /var/www/swupdate"

これで、起動時からswupdateのwebサービスが動いている
もしも、自動起動させたくないときは、S80swupdateを削除or空ファイルで上書いてしまおうかな。

0 件のコメント:

コメントを投稿