So-net無料ブログ作成

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"

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0