SSブログ

Linuxのコンパイル3 [電子工作]

rootfs-overlayにコンパイルしてイメージに格納するファイルを上書きするものを格納します。
root@kuro:~/work/buildroot-2017.05# ls -R rootfs-overlay/
rootfs-overlay/:
etc  lib  var

rootfs-overlay/etc:
asound.conf  default  init.d  mdev.conf

rootfs-overlay/etc/default:

rootfs-overlay/etc/init.d:
S11setup  S90tools  S96ympd

rootfs-overlay/lib:
lsb

rootfs-overlay/lib/lsb:
init-functions

rootfs-overlay/var:
lib

rootfs-overlay/var/lib:
mpd

rootfs-overlay/var/lib/mpd:
music  state

rootfs-overlay/var/lib/mpd/music:

前にも出てきましたがasound.confファイルです。
pcm.!default  {
 type hw card 0
}
ctl.!default {
 type hw card 0
}
mdev.confはoutput/target/etcにあるコピーしてきてethernetの設定を追加します。
(eth.*)         root:netdev 660 >net/%1 @/sbin/ifup $INTERFACE
rootfs-overlay/etc/init.dディレクトリには、起動時に実行してほしい実行ファイルを格納します。 S11setupは、SDカードからファイルをコピーします。S90toolsはコピーした実行ファイルを起動させます。S96ympdはympdをコンパイル対象にした場合に使います。それぞれchmod 755で実行権を付けます。
S11setupは以下の通りです。SDカードをマウントしてファイルをコピーしてアンマウントしているだけです。
#!/bin/sh

start() {
        printf "Starting setup tool"
        mount -t vfat /dev/mmcblk0p1 /mnt
        cp -r /mnt/root/* /
        umount /mnt
}

stop() {
        printf "Stopping setup tool"
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart|reload)
                stop
                sleep 1
                start
                ;;
        *)
                echo "Usage $0 {start|stop|restart}"
                exit 1
esac
S90toolsファイルはコピーした実行ファイルを実行します。/etc/init.dに直接コピーしてもinit.dが起動した後のため、実行されません。そこで、実行ファイルを/root/binディレクトリにコピーしてそのファイルを実行するS90toolsを準備します。
#!/bin/sh

start() {
        printf "Starting tools"
        chmod 755 /root/bin/S*
        list=`ls /root/bin/S*`
        for i in $list
        do
                eval $i start
        done
}

stop() {
        printf "Stopping tools"
        list=`ls -r /root/bin/S*`
        for i in $list
        do
                eval $i stop
        done
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart|reload)
                stop
                sleep 1
                start
                ;;
        *)
                echo "Usage $0 {start|stop|restart}"
                exit 1
esac
S96ympdファイルは、output/build/ympd-v1.2.3/contrib/init.debianをコピーして作成します。
S96ympdで必要なinit-functionsファイルを作成します。このファイルもchmod 755で実行権を付けます。
#!/bin/sh

log_daemon_msg() { logger "$@"; }
log_end_msg() { [ $1 -eq 0 ] && RES=OK; logger ${RES:=FAIL}; }
stateファイルは、touchコマンドで作成し、chmod 666で読み書き権限を付与します。
つぎにSDカードに格納するファイルを作成します。
root@kuro:~/work/config# ls -R root/
root/:
etc  root

root/etc:
init.d  mpd.conf

root/etc/init.d:

root/root:
bin

root/root/bin:
S90mount
S90mountは、自宅のsambaサーバのフォルダをマウントするのに用意しました。root/binフォルダに置かれるファイルは先ほどの/etc/init.d/S90toolsファイルから起動されます。NASの/shareを/mntにマウントします。
#!/bin/sh

start() {
        printf "Starting mount smb"
        mount -t cifs //[NASのIPアドレス]/share /mnt -o username=[ユーザ名],password=[パスワード],iocharset=utf8
}

stop() {
        printf "Stopping mount smb"
        umount /mnt
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart|reload)
                stop
                sleep 1
                start
                ;;
        *)
                echo "Usage $0 {start|stop|restart}"
                exit 1
esac
mpd.confファイルはマウントしたNASにある音楽ファイルを指定するようにします。必要に応じてNAS上にファイルやディレクトリを作成してください。
music_directory         "/mnt/Music"

playlist_directory      "/mnt/mpd/var/lib/mpd"

db_file                 "/mnt/mpd/var/lib/mpd/database"

log_file                "/mnt/mpd/var/log/mpd.log"

pid_file                "/var/run/mpd.pid"

state_file              "/var/lib/mpd/state"

#user                   "nobody"

bind_to_address         "any"

bind_to_address         "/var/lib/mpd/socket"

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。