2013年3月29日金曜日

Raspberry Pi に Arch Linux を インストール する(ロボット開発用)

2015/12/27
久しぶりの変更です。
もう、2年もたつのですね。。。
そもそも、Raspberry Piでは、ArchLinuxがサポートされなくなりました。
理由は、わかりませんが、、、
で、こちらを見ていただいて、インスールしてください。

http://robot009.blogspot.jp/2015/12/an-installation-of-archlinux-on.html

2013/10/01
HTTP Server を、Monkeyからlighttpdに変更。
lighttpdが、より高性能なため。
2013/08/4 
archlinux-hf-2013-07-22.img パッケージは、これまでと異なるファイルシステム構成となっています。従って、1.2のSDカード拡張の方法が使えません。
本稿の1.2に関しては、下記のポストを参照して実施してください。
1.3項以下は、変更はありません。
http://robot009.blogspot.jp/2013/08/an-installation-arch-linux-arm-on.html


インストール 方法の特徴
 私は、数十台のロボット開発にRaspberry Piを使っています。その為にRaspberry Piの能力をそのまま使いたいので、Arch Linuxを使い、かつ最小限のソフトしかインストールしません。同じ用途としては、サーバ用途があると思います。
 サーバ用途と言えば、去年の7月から、ほとんど電源をきらずに使っているRaspberry Piがありますが、問題なく動いています。Raspberry Piは、結構タフなヤツです。
 ロボット間通信は、HTTPをベースにしています。HTTP Server には、組込み機器用に開発されたMonkeyを使っています。Apacheと同じ考え方で設定可能です。
install package : archlinux-hf-2013-02-11.img
 インストール手順を、汎用的に 詳しく説明した投稿 ーー>こちら

・Raspberry Piをネットに接続して、リモートからインストール
・無線LANと有線LANの二つに固定アドレスを設定する。dhcpcdを使わない。
・systemdで、サービスを管理する
・HTTP ServerにMonkeyを使って、HTTP通信処理速度を高めている
・ロボット開発用ソフト環境の構築
・/boot/config.txt 変更

インストールは、次の2つの手順で行います
・1. SDカード全容量を利用するArch Linux 基本インストール、ネットワーク設定
・2. ロボット開発用ソフトウェアのインストールと環境設定

 Arch Linuxは、最初の起動からSSHが動きます。従って、この投稿の説明ではリモート操作で行います。操作側のコンピュータには、SHH接続可能なターミナルエミュレータとファイル転送プログラムが必要です。予め準備して下さい。
・Windows        Tera Term, PuTTY, WinSCPなど
・OSX               FileZillaなど
 SDカードは、Class10 8GB以上を使って下さい。
また、全ての操作はrootで行います。システム関連のファイルを操作しない様に、充分注意して下さい。
 ユーザ作成、LEDXインストールは、こちらの4.3以降を参照して下さい。
 以下のインストール作業時間は、約2時間です。

 Raspberry Piは、5V700mAh 以上の電源が必要です。それを、確認してから以下の手順を実行して下さい。

1. Arch Linuxと、ロボット開発環境のインストール
1.1 Raspberry Pi起動用SDカード作成
 Raspberry Piのホームページ>Downloadsより、Arch Linux ARMをPCなどにダウンロードして解凍して下さい。
1.1.1 windows OS環境で、Boot用SDカードを作る
 下記から、書き込み用プログラム(Win32DiskImager)をダウンロードして使います。
https://launchpad.net/win32-image-writer/+download
ダウンロードしいた圧縮ファイルを解凍して、ダブルクリックすれば起動します。
その後、メッセージに従って、ダウンロードしたファイル、および書き込み先を指定するればOKです。


1.1.2 OS X V10.8
で、Boot用SDカードを作る (私は、この方法で作成しています)
 download したファイルを解凍します。それを下記のコマンドで書き込みます。raw diskとして書き込む必要があるので、umountしています。その後、SDカードに書き込んでいますデバイス名は、自分の環境に合わせて変更して下さい。df -h で確認できます。
sudo diskutil unmount /dev/disk2s2
sudo dd bs=1m if=~/Downloads/archlinux-hf-2013-02-11.img of=/dev/rdisk2
1.2 Arch Linux の起動とSDカード拡張
 上記のSDカードをRaspberry Piに挿入後、電源を入れて起動して下さい。起動できなければ、再度SDカード作成を行って下さい。
 作業は、全てrootで行います。パスワードはrootです。
最初の作業は、SDカードの全容量を使用可能にする設定です。
16GBのSDカードを例に説明します。
また、説明は、実際のコマンド入力と、Raspberry Piからのメッセージを合わせて記述します。

緑の文字...........コマンドプロンプト
黒字ボールド.....キーボード入力
水色に文字........プログラムからの表示(エラーが発生していなか、確認の為)
赤色の文字........説明、留意点、確認事項

 上記で作成したSDカード起動したArch Linuxは、dhcpサーバ(ルータ)からIPアドレスを取得します。Raspberry PiのIPアドレスは、ルータの管理画面などで確認して下さい。ホスト名は、alarmpi です。
 下記の例は、ホスト名Macminiから 192.168.11.3 (Raspberry Pi) にsshでリモートログインしている例です。

Macmini:~ nao$ ssh root@192.168.11.3  ホストIDは自分の環境に置き換える
root@192.168.11.3's password:                    root  を入力する

[root@alarmpi ~]# fdisk /dev/mmcblk0      このまま入力  パーテション変更
Welcome to fdisk (util-linux 2.21.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p            このまま入力 現在の設定を表示
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes
4 heads, 16 sectors/track, 486192 cylinders, total 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c21e5
Device Boot  Start       End      Blocks   Id  System 現在2GBの使用である事が分かる
/dev/mmcblk0p1   *    2048      194559       96256    c  W95 FAT32 (LBA)
/dev/mmcblk0p2      194560   386252   1833984   83  Linux
Command (m for help): d         このまま入力 パーテションの削除
Partition number (1-4): 2         このまま入力 2番目を指定
Partition 2 is deleted
Command (m for help): n           このまま入力 新しいパーテション設定
Partition type:
  p   primary (1 primary, 0 extended, 3 free)
  e   extended
Select (default p):                                             enter キー押下 default設定
Using default response p
Partition number (1-4, default 2):                     enter キー押下 default設定
Using default value 2
First sector (194560-31116287, default 194560): enter キー押下 default設定
Using default value 194560
Last sector, +sectors or +size{K,M,G} (194560-31116287, default 31116287):
Using default value 31116287                                              enter キー押下 default設定
Partition 2 of type Linux and of size 14.8 GiB is set
Command (m for help): w          このまま入力 設定値の書込み
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@alarmpi ~]# reboot         再起動

[root@alarmpi ~]# resize2fs /dev/mmcblk0p2 このまま入力 拡張処理(2分位)
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mmcblk0p2 to 3865216 (4k) blocks.
The filesystem on /dev/mmcblk0p2 is now 3865216 blocks long.
[root@alarmpi ~]# df -h             このまま入力 変更結果の確認
Filesystem      Size  Used Avail Use% Mounted on
rootfs           15G  405M   14G   3% /      15Gに増えています
/dev/root     15G  405M   14G   3% /
devtmpfs         92M     0   92M   0% /dev
tmpfs            92M     0   92M   0% /dev/shm
tmpfs            92M  256K   92M   1% /run
tmpfs            92M     0   92M   0% /sys/fs/cgroup
tmpfs            92M     0   92M   0% /tmp
/dev/mmcblk0p1   94M   37M   58M  39% /boot

 ここまでの作業で、SDカードの全容量が使える様になります

1.3 Swapファイル作成
[root@alarmpi ~]# dd if=/dev/zero of=/swapfile.img bs=1M count=512
512+0 records in         Swap file 作成 512MBのファイル (1分)
512+0 records out
536870912 bytes (537 MB) copied, 28.2801 s, 19.0 MB/s
[root@alarmpi ~]# mkswap /swapfile.img                        このまま入力
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=456776ef-d759-4e1e-92ec-65daa5fdc3c2
[root@alarmpi ~]# swapon /swapfile.img                            このまま入力

[root@alarmpi ~]# cat /proc/swaps                             swap file の確認
Filename    Type  Size Used Priority
/swapfile.img                     file  524284 0 -1

[root@alarmpi ~]# vi /etc/fstab  
        起動時にmountする為に/etc/fstabの最後に次の1行追加
                                       /swapfile.img none swap sw 0 0

1.4 最初のUpgrade
 ホスト名は、例です。ホスト名は、ご自分でお決めください。
[root@alarmpi ~]# pacman -Syu       最初のupgrade (20分位)
[root@alarmpi ~]# hostnamectl set-hostname rcmp-sv01 ホスト名変更
[root@alarmpi ~]# reboot

 これで、SD cardの全領域を使った、最新のArch Linux だけ の環境が、構築できました。次は、ロボット開発・運用環境のインストールです。

1.5 無線LAN設定
 筆者は、価格重視で、BUFFALO WLI-UC-GNMを使っています。これは、Ralink RT8070 チップを使っています。現在のインストールイメージには、Ralink RT8070のfirmware, driverとも入っていますので容易に使えます。wifi設定の方法や、使うコマンドは、他にもいろいろあります。このやり方だけが、全てではありません。
wifi 子機を、USB接続して下さい。

(1) wifi パッケージのインストール
[root@rcmp-sv01 ~]# pacman -S   wpa_supplicant wireless_tools

(2) wifi 設定ファイルの編集
 下の例は、家のLANとPockect Wifiの2つの設定です。priorityで同じ環境にあった場合の優先順位を決めています。優先順位は、家が高いです。このように、記述しておくと、自動的に切り替わります。その他は、標準的なWPAPA2-PSKの設定方法であり、ssidとpskの部分を変更すれば、そのまま使えます。
[root@rcmp-sv01 ~]# vi /etc/wpa_supplicant/wpa_supplicant.conf
[root@rcmp-sv01 ~]# cat /etc/wpa_supplicant/wpa_supplicant.conf
# ----- add my block 19/08/2012 ----------
network={
ssid="家のESSID"
proto=RSN
priority=1
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="家用のKEY"
}
network={
ssid="Pocket WifiのESSID"
proto=RSN
priority=10
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="Pocket Wifi用のKEY"
}

(3) 手動起動
 ifconfigを使っていますが、/sbin/ip link set dev wlan0 up でも同じです。お好みで。。。
[root@rcmp-sv01 ~]# /sbin/ifconfig wlan0 up
[root@rcmp-sv01 ~]# /usr/sbin/wpa_supplicant -B -Dwext -iwlan0
                               -c/etc/wpa_supplicant/wpa_supplicant.conf
[root@rcmp-sv01 ~]# /usr/sbin/dhcpcd wlan0


(4) 接続状態の確認
[root@rcmp-sv01 system]# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.11.4  netmask 255.255.255.0  broadcast 192.168.11.255
       inet6 fe80::xxxx:xxxx:xxxx:95f4  prefixlen 64  scopeid 0x20<link>
       ether xx:xx:xx:xx:95:f4  txqueuelen 1000  (Ethernet)
       RX packets 304  bytes 36770 (35.9 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 21  bytes 2096 (2.0 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1.6  IP アドレスの固定(無線、有線)
 ロボット開発・運用環境は、固定IPアドレスで行います。自分のネット環境に合わせて、Raspberry Piに割当てるIPアドレスを決めて下さい。このインストール説明では、無線LANを192.168.11.70、有線LANを192.168.11.71として説明します。ルータは、192.168.11.1です。
(1) /etc/conf.d/network作成
[root@rcmp-sv01 ~]# mkdir /etc/conf.d
[root@rcmp-sv01 ~]# vi /etc/conf.d/network
[root@rcmp-sv01 ~]# cat /etc/conf.d/network
interfacew=wlan0
interface=eth0
addressw=192.168.11.70
address=192.168.11.71
netmask=24
broadcast=192.168.11.255
gateway=192.168.11.1

(2) /etc/systemd/system/network.service作成
 この設定は、無線LAN子機を優先して設定し、有線LANを補助として使う設定方法です。従って、起動時に無線LAN子機が取り外れている時には、エラーになります。そのような運用に問題がある場合には、serviceをそれぞれ作る事が必要です。
[root@rcmp-sv01 ~]# vi /etc/systemd/system/network.service
[root@rcmp-sv01 ~]# cat /etc/systemd/system/network.service
[Unit]
Description=Network Connectivity (Static IP wlan0 eth0)
Wants=network.target
Before=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/usr/bin/ip link set dev ${interfacew} up
ExecStart=/usr/bin/ip link set dev ${interface} up
ExecStart=/usr/bin/wpa_supplicant -B -D wext -i ${interfacew} -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/usr/bin/ip addr add ${addressw}/${netmask} broadcast ${broadcast} dev ${interfacew}
ExecStart=/usr/bin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev ${interface}
ExecStart=/usr/bin/ip route add default via ${gateway}
ExecStop=/usr/bin/ip addr flush dev ${interfacew}
ExecStop=/usr/bin/ip addr flush dev ${interface}
ExecStop=/usr/bin/ip link set dev ${interfacew} down
ExecStop=/usr/bin/ip link set dev ${interface} down
[Install]
WantedBy=multi-user.target

(3) systemcrlによる設定
[root@rcmp-sv01 ~]# systemctl disable dhcpcd@eth0.service
rm '/etc/systemd/system/multi-user.target.wants/dhcpcd@eth0.service'
[root@rcmp-sv01 ~]# systemctl disable dhcpcd
rm '/etc/systemd/system/multi-user.target.wants/dhcpcd.service'
[root@rcmp-sv01 ~]# systemctl enable network.service
ln -s '/etc/systemd/system/network.service' '/etc/systemd/system/multi-user.target.wants/network.service'

(4) /etc/resolv.confの修正と再起動
 固定アドレスを設定した場合には、/etc/resolv.confにDNS Serverを設定します。下記の例は、 ルータとGoogle's primary DNS(8.8.8.8)を設定しています。通常は、ルータだけで大丈夫です。

[root@rcmp-sv01 ~]# ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=46.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=50.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=46 time=50.2 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 46.446/48.952/50.259/1.791 ms
[root@rcmp-sv01 ~]# vi /etc/resolv.conf
[root@rcmp-sv01 ~]# cat /etc/resolv.conf
# Generated by dhcpcd
# /etc/resolv.conf.head can replace this line
# /etc/resolv.conf.tail can replace this line
nameserver 192.168.11.1                # your DNS
nameserver 8.8.8.8                            # 8.8.8.8 ping OK
nameserver 8.8.8.4

[root@rcmp-sv01 ~]# reboot

 reboot後に、/etc/resolv.confが変わっていない場合があります。再起動後、確認して下さい。変更できていない場合には、dhcpcdが停止している事を確認した上で、再度、編集してrebootして下さい。dhcpcdが停止時に書き換えるようです。

(5) 確認
 dmesgは、エラーが無いか確認する為ですが、気にしないで下さい。
大切なのは、 ip addr の内容です。所定のアドレスになっているか確認して下さい。
[root@rcmp-sv01 ~]# dmesg | grep eth0
[    2.326344] smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx
USB 2.0 Ethernet, b8:27:eb:7a:da:c6
[   17.464573] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   18.971807] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   18.974373] smsc95xx 1-1.1:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[root@rcmp-sv01 ~]# dmesg | grep wlan0
[   17.471293] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   20.137110] wlan0: authenticate with xx:xx:xx:xx:44:74
[   20.282721] wlan0: send auth to xx:xx:xx:xx:44:74 (try 1/3)
[   20.284445] wlan0: authenticated
[   20.361233] wlan0: associate with xx:xx:xx:xx:44:74 (try 1/3)
[   20.365241] wlan0: RX AssocResp from xx:xx:xx:xx:44:74 (capab=0x431 status=0 aid=7)
[   20.381284] wlan0: associated
[   20.381465] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[root@rcmp-sv01 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host valid_lft forever preferred_lft forever
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether xx:xx:xx:xx:da:c6 brd ff:ff:ff:ff:ff:ff
   inet 192.168.11.71/24 brd 192.168.11.255 scope global eth0
   inet6 fe80::ba27:ebff:fe7a:dac6/64 scope link valid_lft forever preferred_lft forever
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 100
   link/ether xx:xx:xx:xx:95:f4 brd ff:ff:ff:ff:ff:ff
   inet 192.168.11.70/24 brd 192.168.11.255 scope global wlan0
   inet6 fe80::126f:3fff:fe5b:95f4/64 scope link valid_lft forever preferred_lft forever

1.7 timezoneの変更
[root@rcmp-sv01 ~]# timedatectl set-timezone Japan       or
[root@rcmp-sv01 ~]# timedatectl set-timezone Asia/Tokyo

以上で、基本的なArch Linuxのインストールは終了です。
ユーザ作成、LEDXインストールをする場合は、こちらの4.3以降を参照して下さい。

以下は、私のロボット用の環境構築です。ご興味があれば、ご一読を。。。
ロボットに関しては、http://www.futureagri.com/ 
2013年4月1日から公開予定です。

2 ロボット開発用ソフトウェア

2.1  ソフトウェアインストール
 主に、ロボットの認識機能を開発する為のソフトです。最後は、HTTP Serverです。
[root@rcmp-sv01 ~]# pacman -S gcc make cmake pkg-config
[root@rcmp-sv01 ~]# pacman -S libtool
[root@rcmp-sv01 ~]# pacman -S git
[root@rcmp-sv01 ~]# pacman -S python2
[root@rcmp-sv01 ~]# pacman -S glut
[root@rcmp-sv01 ~]# pacman -S doxygen graphviz
[root@rcmp-sv01 ~]# pacman -S opencv
[root@rcmp-sv01 ~]# pacman -S ttf-bitstream-vera ttf-dejavu
[root@rcmp-sv01 ~]# pacman -S fswebcam
[root@rcmp-sv01 ~]# pacman -S unzip

or

[root@rcmp-sv01 ~]# pacman -S gcc make cmake pkg-config libtool git python2 glut doxygen graphviz opencv ttf-bitstream-vera ttf-dejavu fswebcam unzip php opencv-samples eigen2 python2-numpy

2.2  /boot/config.txt 変更
 上記の起動ファイルに次の変更をします。
overclockの設定と、メモリーをGPUに割当てるサイズの設定です。
ロボット開発では、デスクトップ環境を使いません。主メモリー512MBから、割当てられるGPU用のメモリーサイズを16MBの最小値に設定しています。デフォルトは、64MBです。
#uncomment to overclock the arm. 700 MHz is the default. arm_freq=800 gpu_mem=16
gpu_mem_512=64 旧gpu_mem にoverrideされる。
           48以上の数値にしないと、起動時にエラーになる
gpu_mem_xxxは、Raspi 256M, Raspi 512M
Raspi camera

##Modest arm_freq=800 core_freq=300 sdram_freq=400 over_voltage=0

gpu_mem_512=64

## added for camera #gpu_mem=128 start_file=start_x.elf fixup_file=fixup_x.dat

2.3  HTTP Server 環境設定
 ロボット間通信、ロボット制御システム通信は、HTTPプロトコルをベースに構築しています。その為に、HTTP Server のインストールを行います。
[root@rcmp-sv01 ~]# pacman -S lighttpd lua51
[root@rcmp-sv01 ~]# vi /etc/lighttpd/lighttpd.conf
[root@rcmp-sv01 ~]# cat /etc/lighttpd/lighttpd.conf
# This is a minimal example config # See /usr/share/doc/lighttpd # and http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions server.port = 80 server.username = "http" server.groupname = "http" server.document-root = "/srv/http" server.errorlog = "/var/log/lighttpd/error.log" dir-listing.activate = "enable" index-file.names = ( "index.html" ) mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", "" => "application/octet-stream" ) server.modules += ( "mod_cgi" ) ## ## Plain old CGI handling ## ## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini. ## cgi.assign = ( "bin" => "", ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".sh" => "/usr/bin/bash", ".rb" => "/usr/bin/ruby", ".erb" => "/usr/bin/eruby", ".py" => "/usr/bin/python" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".rb" )
[root@rcmp-sv01 ~]# systemctl enable lighttpd
[root@rcmp-sv01 ~]# systemctl start lighttpd

/srv/http 以下に環境を構築します。user & groupは、http & httpです。
この設定は、あらかじめ設定されています。

2.4  LXDE インストール

必要であれば、インストールします。
詳しくは、このページ-> Click
[root@rcmp-sv01 ~]# pacman -Syu
[root@rcmp-sv01 ~]# pacman -S lxde xorg-xinit xf86-video-fbdev leafpad obconf gpicview gedit
[root@rcmp-sv01 ~]# mkdir ~/.config
[root@rcmp-sv01 ~]# mkdir ~/.config/openbox
[root@rcmp-sv01 ~]# cp /etc/xdg/openbox/menu.xml /etc/xdg/openbox/rc.xml /etc/xdg/openbox/autostart ~/.config/openbox
[root@rcmp-sv01 ~]# xinit /usr/bin/lxsession run

他のXserverからアクセスできるように、/etc/ssh/sshd_config の下記の項目を enable にします。

AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes


これで、全ての処理が終わりました。
以下monkey の installです。削除するのがもったいないので、残してあります。


組込み用機器での利用も意識して開発されたMonkeyを使っています。Monkeyは、Apacheと同じ考えかたで設定可能です。
 HTTP Serverは、ApacheをHTTPで使うのが一般的です。しかし、Raspberry Piには、重すぎるし、そもそも、Apacheのフル機能が必要ならRaspberry Piを使うべきではありません。
 Nginxも検証しましたが、あくまでも参照用のサーバ用と判断しました。また、実際のパフォーマンスもMonkeyには、及びませんでした。

 Monkey自体の問題ではありませんが、注意点が一つあります。pacmanでアップグレードすると設定ファイルが上書きされます。必ず、/etc/monkeyの設定はコピーしておいて下さい。ただし、upgradeにより設定方法の変更があるかもしれませんので、上書きされた内容の確認は必要です。(投稿時点)

(1) 起動設定ファイルの編集
[root@rcmp-sv01 ~]# vi /etc/monkey/monkey.conf
 "User nobody"    to    "User root"          change   your root group user


[root@rcmp-sv01 ~]# vi /etc/monkey/plugins.load
# CGI
 ===
# This plugin enable the CGI support in Monkey. CGI is an old
# interface and not recommended for production enviroments, due
# to it nature, it lack of performance.
#
Load /usr/lib/monkey/monkey-cgi.so                           enable


[root@rcmp-sv01 ~]# vi /etc/monkey/sites/default
[HOST]
    # DocumentRoot :
   DocumentRoot /var/http                                         enable & set
[CGI]                                                                             enable
   # Per-vhost CGI matching, same rules as with the global match
   Match /cgi-bin/.*\.cgi                                               enable  
[root@rcmp-sv01 ~]# vi /etc/monkey/plugins/cgi/cgi.conf
[CGI]
    Match /cgi-bin/.*\.cgi .*\.sh .*\.pl                            add extensions  


(2) ファイル作成をアクセス権の変更
[root@rcmp-sv01 ~]# touch /var/log/monkey/access.log
[root@rcmp-sv01 ~]# touch /var/log/monkey/error.log
[root@rcmp-sv01 ~]# chmod +w /var/log/monkey/access.log
[root@rcmp-sv01 ~]# chmod +w /var/log/monkey/error.log
[root@rcmp-sv01 ~]# mv /srv/http /var
[root@rcmp-sv01 ~]# mkdir /var/http/cgi-bin
[root@rcmp-sv01 ~]# rm -r /srv


(3) 手動起動による確認
[root@rcmp-r03 ~]# monkey -D
Monkey HTTP Daemon 1.1.1
Built : Dec 14 2012 14:16:18 (gcc 4.7.2)
Home  : http://monkey-project.com
* Process ID is 1677
* Server socket listening on Port 80
* 5 threads, 101 client connections per thread, total 505
* Transport layer by liana in http mode
[2013/01/22 12:55:33] [   Info] HTTP Server started


(4) 自動起動登録
[root@rcmp-r03 ~]# vi /etc/systemd/system/monkey.service
[root@rcmp-r03 ~]# cat /etc/systemd/system/monkey.service
[Unit]
Description=Monkey http server deamon
Required=network.target
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/monkey -D
ExecStop=/bin/kill $MAINPID
ExecReload=/bin/kill $MAINPID ; /usr/bin/monkey -D
PIDFile=/var/run/monkey.pid.80
[Install]
WantedBy=multi-user.target
[root@rcmp-r03 ~]# systemctl enable monkey.service
ln -s '/etc/systemd/system/monkey.service' '/etc/systemd/system/multi-user.target.wants/monkey.service'
[root@rcmp-r03 ~]# reboot


 再起動後に、HTTP Serverにアクセスし下記画面が表示されればOKです。
peace!