ネットワーク設定
SH3向けFedora 7ではデフォルトの設定ではネットワークを起動するようになっていません。追加でネットワーク設定をしなければなりません。今回はまずネットワークを設定し、
IP指定
IPアドレスを直接指定する場合は、
DEVICE=eth0
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes
BOOTPROTO=static
DNSを利用する場合は、
search sh7706lsr.co.jp
nameserver 192.168.1.1
DHCP
DHCPサーバにより自動でネットワーク設定をする場合も /etc/
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
共通設定
/etc/
HOSTNAME=shlinux
IPv6を使わない場合は、
コマンドで個別にネットワークの起動をするには以下のようにします。
# /etc/init.d/network start
コマンドで個別にネットワークを停止させるには以下のようにします。
# /etc/init.d/network stop
コマンドで個別にネットワークの再起動をするには以下のようにします。
# /etc/init.d/network restart
システム起動時に自動的にネットワーク設定をするには以下のようにします。
# chkconfig network on
もし、
# chkconfig --del network
システム起動時におけるサービス起動リストを得るには以下のようにします。
# chkconfig --list
Webサーバ
デフォルトの状態ではApacheを起動するだけでWebサーバが起動するようになっています。ただし、
# groupadd -g 48 apache # useradd -u 48 -g apache -s /sbin/nologin -d /var/www apache
ここでは適当に48番を使いましたが、
PHPを使えるようにする
SH3版Fedora 7のApacheは、
具体的には、
gmp-4.1.4-7.sh3.rpm
gmp-devel-4.1.4-7.sh3.rpm
libgcc-4.1.1-30.sh3.rpm
libstdc++-4.1.1-30.sh3.rpm
libstdc++-devel-4.1.1-30.sh3.rpm
また、
# rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch aspel*.rpm # rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch gmp-4.1.4-7.sh3.rpm # rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch gmp-devel-4.1.4-7.sh3.rpm # rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch libgcc-4.1.1-30.sh3.rpm # rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch libstdc++-4.1.1-30.sh3.rpm # rpm --root [SDカードのフォルダ] -ivh --nodeps --ignorearch libstdc++-devel-4.1.1-30.sh3.rpm
ApacheでPHPを使えるようにするには、
まずLoadModuleが記述されているあたりに
LoadModule php5_module modules/libphp5.so
を追加します。
次に、
Include conf.d/*.conf
以下のようにコメントにして無効にします。
#Include conf.d/*.conf
“ServerName”
ServerName [サーバー名]:80
最後に適当な箇所に以下の記述を追加します。
<IfModule mod_dir.c>
DirectoryIndex index.html index.php index.cgi
</IfModule>
AddType application/x-httpd-php .php
Apacheの起動と自動起動
コマンドで個別にApacheを起動するには以下のようにします、
# /sbin/service httpd start
コマンドで個別にApacheを停止させるには以下のようにします、
# /sbin/service httpd stop
コマンドで個別にApacheの再起動をするには以下のようにします、
# /sbin/service httpd restart
システム起動時に自動的にApache起動させるには以下のようにします。
# chkconfig httpd on
もし、
# chkconfig --del httpd
システム起動時におけるサービス起動リストを得るには以下のようにします。
# chkconfig --list
ApacheとPHPの確認
コンテンツは/var/
<html>
<head>
<title>Test</title>
</head>
<body>
<p>T-SH7706LSR</p>
</body>
</html>
PHPの動作は/var/
リスト6 PHP動作確認用のinfo.<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>

Webサーバによるコンピュータ制御
T-SH7706LSRは制御ボードなので、
LED制御のコマンド
ユーザプログラムによるLEDの点滅制御についてはすでに解説済みです。そのLEDの自動点滅処理を引数による点滅指定に変更を加えた内容がリスト7となります。
1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4 #include <unistd.h>
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include <sys/mman.h>
9 #include <asm/page.h>
10
11 #define SCPDR 0x136
12 #define LED 0x10
13
14 int main(int argc, char **argv) {
15 volatile unsigned char *mmaped, scpdr;
16 int fd, i;
17
18 if(argc != 2) return 0;
19
20 fd = open("/dev/mem",O_RDWR);
21 if(fd < 0) {
22 fprintf(stderr,"cannot open /dev/mem\n");
23 return 1;
24 }
25 mmaped = (volatile unsigned char*)mmap(0, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xa4000000);
26 close(fd);
27 if(mmaped == MAP_FAILED) {
28 fprintf(stderr,"cannot mmap\n");
29 return 1;
30 }
31
32 if(argv[1][1] == 'N') {
33 mmaped[SCPDR] |= LED;
34 printf("LED is ON\n");
35 }
36 if(argv[1][1] == 'F') {
37 mmaped[SCPDR] &= ~LED;
38 printf("LED is OFF\n");
39 }
40
41 munmap((char*)mmaped, PAGE_SIZE);
42 return 0;
43 }
リスト7のプログラムはPC上で以下のようにクロスコンパイルします。
$ sh3-linux-gcc -o led led.c
できあがった実行ファイルを/var/
# chmod +s /var/www/html/led
コマンドラインからのLEDの点灯は以下のようにします。
$ /var/www/html/led ON LED is ON
コマンドラインからのLEDの消灯は以下のようにします。
$ /var/www/html/led OFF LED is OFF
LED制御のスクリプト
今回はPHP言語でフォームとLED制御のスクリプトをリスト8のように記述し、
1 <html>
2 <head>
3 <title>Control</title>
4 </head>
5 <body>
6 <?php
7 $op = htmlspecialchars($_POST['led']);
8 if($op != 'ON') {
9 $op = 'OFF';
10 }
11 $cmd = "./led $op";
12 exec($cmd);
13 ?></p>
14 <form action="led.php" method="post">
15 LED: <input type="checkbox" name="led" value="ON" />
16 <input type="submit" />
17 </form>
18 </body>
19 </html>

もし、
1 <html>
2 <head>
3 <title>Control</title>
4 </head>
5 <body>
6 <?php
7 $op = htmlspecialchars($_POST['led']);
8 if($op != 'ON') {
9 $op = 'OFF';
10 }
11 $cmd = "./led $op";
12 system($cmd);
13 ?></p>
14 <form action="led.php" method="post">
15 LED: <input type="checkbox" name="led" value="ON" />
16 <input type="submit" />
17 </form>
18 </body>
19 </html>

次回は
次回は雑多なFedora 7の設定について解説します。