AKI-H8/3069FでuClinuxを動作させる方法(中編)
概要
AKI-H8ボード/3069Fの動作確認では、H8上で動作するファームウェアを書き込み、マザーボード上のLEDやLCDの動作確認をした。
ここでは、AKI-H8/3069Fに小型CPUで動作可能なuClinuxを載せ、実際に動作させる。
まず、uCLinuxを載せるには、下図の構成を覚えておく。
AKI-H8/3069F上でuClinuxが動作して、コマンド入力を行えるシェルが起動したとしても、キーボードやディスプレイは接続できない。
つまり、AKI-H8/3069F単体では入出力等ができないため、必ず、Linux PCが必要になる。
Linux PC上に、AKI-H8/3069F上のuClinuxの起動に必要なカーネル等のファイルを置くことによって、OSの起動を実現できる。
ここでは、以下の問題を解決していく。
この辺りの問題が、組み込み機器の取り扱いを難しくさせている要因であり、幅広い知識が要求される。
- BIOSに代わるプログラムは何か。
- カーネルはどこから起動されるのか。
- HDD / SSDは無いが、ファイルシステムのマウント先はどうするのか。
RedBootの動作確認
Linux PCとAKI-H8/3069FをUSB-シリアル変換ケーブルで接続して、シリアル通信の接続を確認する。
更に、Linux PCとAKI-H8/3069FをLANケーブル(クロスケーブル)で接続する。
そして、下図のようにAKI-H8/3069FのSW1を通常モードにして起動する。
Red Bootは正常に動作している場合、下記のメッセージが表示される。
+**Warning** FLASH configuration checksum error or invalid key Use 'fconfig -i' to [re]initialize database DP83902A - eeprom ESA: 00:02:cb:01:86:c2 ←AKI-H8/3069FのMACアドレス ... waiting for BOOTP information Ethernet eth0: MAC address 00:02:cb:01:86:c2 Can't get BOOTP info for device! RedBoot(tm) bootstrap and debug environment [ROM] Non-certified release, version UNKNOWN - built 14:54:02, Dec 21 2006 Platform: Akizuki H8/3068 Network micom (H8/300H) Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. RAM: 0x00400000-0x005f4000, [0x00400000-0x005e1000] available FLASH: 0x00000000 - 0x80000, 8 blocks of 0x00010000 bytes each. RedBoot>
tftpのインストールと設定
uClinuxのカーネルをロードするためには、Linux PCからAKI-H8/3069FへuCLinuxカーネルを転送しなければならない。
ここでは、接続認証が不要のtftpを使用して転送する。(セキュリティの問題は残る)
tftpのインストール
まず、tftp(クライアント)とtftp-server、xinetdをインストールする。
# CentOS 7 sudo yum install tftp tftp-server* xinetd* # SUSE sudp zypper install tftp yast2-tftp-server xinetd*
tftpの設定
インストールの完了後、/etc/xinetd.d/tftpファイルが作成されるので、以下のように編集する。
(クライアントからtftpサーバにファイルをアップロードする場合、disableをnoに設定して、server_argsに-cオプションを追加する)
# /etc/xinetd.d/tftpファイル service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -c -s /home/ユーザ名/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
上記の設定ファイルでは、初期設定のtftpルートディレクトリは、/tftpbootに設定される。
したがって、tftpサーバを起動する前に作成する必要があるため、以下のコマンドを実行する。
sudo mkdir ~/tftpboot sudo chmod -R 777 ~/tftpboot
tftpとxinetdを有効にするため、以下のコマンドを実行する。
# tftpとxinetdの起動 sudo systemctl start xinetd && sudo systemctl start tftp # tftpとxinetdの自動起動 sudo systemctl enable xinetd && sudo systemctl enable tftp
ファイアーウォールのtftpのポート解放とpublicゾーンの登録を行う。
# UDP 69番ポートの解放 sudo firewall-cmd --add-port=69/udp --permanent # publicゾーンの登録 sudo firewall-cmd --zone=public --add-service=tftp --parmanent sudo firewall-cmd --reload
Linux PCにCentOSを使用している場合、SELinuxの設定を行う。
初期設定では、SELinuxは変更を受け入れない強制ポリシーを使用しているため、tftpの読み書きを許可する必要がある。
SELinuxに変更を加えるには、/etc/selinux/configファイルを変更して、ポリシーを許容に変更する。
tftpの読み書きを許可する場合、以下のようにsetseboolコマンドを実行する。
sudo setsebool -P tftp_anon_write 1 sudo setsebool -P tftp_home_dir 1
getsebool -a | grep tftp
# SELinuxにおけるtftpの権限(変更前) tftp_anon_write --> off tftp_home_dir --> off # ELinuxにおけるtftpの権限(変更後) tftp_anon_write --> on tftp_home_dir --> on
tftpの動作確認
Linux PCとAKI-H8/3069Fは、1対1で接続するので、Linux PCは静的IPアドレスに設定する。(例 : 192.168.1.10)
一般的に、tftpを用いてファイルを送信するには、上記で作成した~/tftpbootディレクトリにファイルを配置して転送する。
ここでは、test.txtファイルを転送する。
echo "The Embedded" > ~/tftpboot/test.txt
次に、/tmpディレクトリに移動してファイルが正常に転送されるか確認する。
cd /tmp tftp 192.168.1.10 tftp> get ~/tftpboot/test.txt tftp> quit
~/tftpbootディレクトリ下に作成したtest.txtファイルが、tftpを通じて、/tmpディレクトリ下に転送されていることが分かる。
もし、転送されない場合は、/etc/xinetd.d/tftpファイルの設定およびtftpの起動時に実行するgetコマンドの文法を確認する。