Armadillo-400シリーズのAtmark Distで標準でインストールされるbusyboxのバージョンは [ 1.00-rc3 ] です。 このbusyboxを [ 1.20.2 ] に上げてみた際の、作業メモです。
バージョンのあげ方
以下のようにmake menuconfigで変更が可能です。
atmark@atde5:~/atmark-dist$ make menuconfig Userland Configuration BusyBox ---> [*] BusyBox (v1.20.2) Version Configuration menu ---> ←選択してデフォルト設定のままとしてください
新しいユーザーランドで起動してみた結果
1. mount に失敗する
起動ログで以下のように mount に失敗しているメッセージが出ています。
Remounting root rw: mount: can't read '/proc/mounts': No such file or directory Remounting root rw: mount: can't read '/proc/mounts': No such file or directory
これは、/etc/init.d/rc の以下の2つのコマンドで出ているメッセージのようです。
############################################################################### # fsck ############################################################################### echo "Starting fsck for root filesystem." mount -n -o remount,ro / (中略) ############################################################################### # remount / ############################################################################### echo -n "Remounting root rw: " mount -n -o remount,rw /
busybox-1.20.2のmount.cを見ると、remountオプションをつけた際には、/proc/mountsをopenする 仕様となっていますが、現状の/etc/init.d/rcでは、この[fsck][remout]の後に /procをマウントするため、 今回のエラーが出ているようです。
ATDE3上で 以下のように/procのマウントを fsckの前にもってくることで、このエラーは解消されました。
atmark@atde3:~/atmark-dist$ vi romfs/etc/init.d/rc ############################################################################### # mount proc ############################################################################### echo -n "Mounting proc: " mount -n proc check_status ############################################################################### # fsck ############################################################################### echo "Starting fsck for root filesystem." atmark@atde3:~/atmark-dist$ make image
(*) 上の例はromfs配下のrcを直接修正していますが、atmarkdist/vendors/AtmarkTechno/Armadillo-4**/etc/init.d/rc を修正して、make romfs、make imageする方法でもよいでしょう。
Armadillo-4**の部分は、Armadillo-420など製品に合わせて読み替えてください。
2. inetdが起動しない
こちらのMLにもありますが、inetdが自動起動になっていません。
(起動スクリプトが /etc/rc.d配下にいない)
http://lists.atmark-techno.com/pipermail/armadillo/2013-May/008835.html
[root@armadillo440-0 (ttymxc1) ~]# ls /etc/rc.d/ S03udevd@ S25module-init-tools@ S71avahi@ S04flatfsd@ S30firewall@ S80xfbdev@ S05checkroot@ S30hostname@ S99misc@ S06checkftp@ S40networking@ S99rc.local@ S10syslogd@ S70at-cgi@ S20klogd@ S70lighttpd@
これは、atmark-dist/config/.configに busyboxのコンフィギュレーション情報が保存されていないため、 CONFIG_USER_BUSYBOX_INETDが有効になっていないと判断されているためのようです。
今回は暫定対処で、ベタでinetdを自動起動するようにします。 Armadillo-4**の部分は、Armadillo-420など製品に合わせて読み替えてください。
atmark@atde3:~/atmark-dist$ vi vendors/AtmarkTechno/Armadillo-4**/Makefile # [ "$(CONFIG_USER_INETD_INETD)" != "y" ] && \ ←コメントアウト # [ "$(CONFIG_USER_BUSYBOX_INETD)" != "y" ] || \ ←コメントアウト # $(ROMFSINST) -s /etc/init.d/inetd /etc/rc.d/S60inetd ←コメントアウト $(ROMFSINST) -s /etc/init.d/inetd /etc/rc.d/S60inetd ← 追加 atmark@atde3:~/atmark-dist$ make romfs atmark@atde3:~/atmark-dist$ make image
3. at-cgiでsyslogが参照できない
at-cgiは以下を参照して下さい。
https://manual.atmark-techno.com/armadillo-4x0/armadillo-440_startup_guide_ja-1.1.9/ch06.html#sec-at-cgi
これも 2 と同様に、CONFIG_USER_BUSYBOX_SYSLODが有効になっていないと 判断され、atmark-dist/user/at-cgi/Makefileの以下のCFLAGSが適用されていないためです。
ifdef CONFIG_USER_BUSYBOX_SYSLOGD CFLAGS += -DSYSLOGD endif
こちらも暫定ですが、以下のように必ずCFLAGSにDSYSLOGDが渡るようにします。
#ifdef CONFIG_USER_BUSYBOX_SYSLOGD CFLAGS += -DSYSLOGD #endif