第9章 ユーザーランド仕様

本章では、工場出荷状態のArmadillo-Box WS1のユーザーランドの基本的な仕様について説明します。

9.1. ルートファイルシステム

Armadillo-Box WS1の標準ルートファイルシステムは、Atmark Distで作成されたinitrdです。PCなどで動作する Linux システムでは、initrd は HDD などにあるルートファイルシステムをマウントする前に一時的に使用する「ミニ」ルートファイルシステムとして使用されます。Armadillo-Box WS1 では、initrd をそのままルートファイルシステムとして使用します。

initrdはメモリ上に配置されるため、ファイルに加えた変更は再起動すると全て元に戻ってしまいます。例外として/etc/config/ディレクトリ以下のファイルは、flatfsdコマンドを利用してフラッシュメモリに保存することができます。このフラッシュメモリ領域をコンフィグ領域と呼びます。

コンフィグ領域を利用することで、設定ファイルなどへの変更を再起動後も保持することができるようになっています。コンフィグ領域のより詳細な情報については7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。

9.2. 起動処理

Armadillo-Box WS1のユーザーランドの起動処理について説明します。ユーザーランドの起動処理は大きく分けて次の手順で初期化が行われています。

  1. Linuxカーネルが/sbin/initを実行し/etc/inittabのsysinitに登録されている/etc/init.d/rcスクリプトを実行

  2. rcスクリプトの中で、「/etc/rc.d/」ディレクトリの起動スクリプトを順次実行

  3. ローカル起動スクリプト(/etc/config/rc.local)を実行

  4. /etc/inittabのrespawnタブに登録されたものを実行

9.2.1. inittab

Linuxカーネルは、ルートファイルシステムをマウントすると、/sbin/initを実行します。initプロセスは、コンソールの初期化を行い/etc/inittabに記載された設定に従ってコマンドを実行します。

デフォルト状態のArmadillo-Box WS1の/etc/inittabは次のように設定されています。

::sysinit:/etc/init.d/rc

::respawn:/sbin/getty -L 115200 ttymxc1 vt102
#::respawn:/sbin/getty 38400 tty1 linux

::shutdown:/etc/init.d/reboot
::ctrlaltdel:/sbin/reboot

図9.1 デフォルト状態の/etc/inittab


inittabの書式は、次のようになっています。

id:runlevel:action:process

図9.2 inittabの書式


Armadillo-Box WS1のinitでは、"id"フィールドに起動されるプロセスが使用するコンソールを指定することができます。省略した場合は、システムコンソールが使用されます。"runlevel"フィールドは未対応のため利用できません。

"action"フィールド及び"process"フィールドは、どのような状態(action)のときに何(process)を実行するかを設定することができます。actionフィールドに指定可能な値を表9.1「inittabのactionフィールドに設定可能な値」に示します。

表9.1 inittabのactionフィールドに設定可能な値

processを実行するタイミング
sysinitinitプロセス起動時
respawnsysinit終了後。このアクションで起動されたプロセスが終了すると、再度processを実行する
shutdownシャットダウンする時
ctrlaltdelCtrl-Alt-Deleteキーの組み合わせが入力された時

9.2.2. /etc/init.d/rc

rcスクリプトでは、システムの基礎となるファイルシステムをマウントしたり、「/etc/rc.d/」ディレクトリ以下にあるSから始まるスクリプト(初期化スクリプト)が実行できる環境を構築します。その後、初期化スクリプトを実行していきます。初期化スクリプトは、Sの後に続く2桁の番号の順番で実行します。

9.2.3. /etc/rc.d/Sスクリプト(初期化スクリプト)

初期化スクリプトでは、システムの環境を構築するもの、デーモン(サーバー)を起動するものの2つの種類があります。Armadillo-Box WS1のデフォルト状態で登録されている初期化スクリプトを表9.2「/etc/rc.dディレクトリに登録された初期化スクリプト」に示します。

表9.2 /etc/rc.dディレクトリに登録された初期化スクリプト

スクリプト初期化内容
S03udevudevdを起動し、Linuxカーネルから発行されたueventをハンドリングします
S04flatfsdflatfsdを使いコンフィグ領域(/etc/config/)を復元します
S05checkrootシステム関連のファイルのパーミッション設定や、オーナーを設定します
S06mountdevsubfsudevd起動後にマウントする必要のあるファイルシステムをマウントします
S10syslogd, S20klogdログデーモンを起動します
S25module-init-tools/etc/modulesに記載されたカーネルモジュールをロードします
S30firewallファイヤーウォールの設定を行います
S30hostnamehostnameを設定します
S40networkingネットワーク関連の初期化を行い、インターネットスーパーサーバー(inetd)を起動します
S71avahiネットワークデーモンを起動します
S99rc.localコンフィグ領域(/etc/config/)に保存されたrc.localを実行します

9.2.4. /etc/config/rc.local

コンフィグ領域に保存されたrc.localは、ユーザーランドイメージを変更することなく、起動時に特定の処理を行うことができるようになっています。

Armadillo-Box WS1では、システム起動時に呼び出されはしますが、特に何もしていません。

デフォルト状態の/etc/config/rc.localは次のように記載されています。

#!/bin/sh

. /etc/init.d/functions

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#
# Add your temporary commands to run at boot time
#

図9.3 デフォルト状態の/etc/config/rc.local


9.3. プリインストールアプリケーション

デフォルトのユーザーランドにインストールされているアプリケーションを一覧します。

  • /bin

    addgroup       e2fsck         ipaddr         mount          setarch
    adduser        echo           ipcalc         mountpoint     setserial
    ash            ed             iplink         mpstat         sh
    base64         egrep          iproute        mt             sleep
    busybox        ethtool        iprule         mv             stat
    cat            evtest         iptunnel       netflash       stty
    catv           false          java           nice           su
    chattr         fdflush        keytool        ntpclient      sync
    chgrp          fgrep          kill           pidof          tar
    chmod          flatfsd        linux32        ping           tip
    chown          fsck           linux64        pipe_progress  touch
    conspy         fsck.ext2      ln             powertop       true
    cp             fsync          login          printenv       tune2fs
    cpio           getopt         ls             ps             umount
    cttyhack       grep           lsattr         pwd            uname
    date           gunzip         lzop           reformime      usleep
    dd             gzip           mail           rev            vi
    delgroup       hostname       makemime       rm             watch
    deluser        hush           mkdir          rmdir          zcat
    df             hwclock        mke2fs         rpm
    dmesg          ionice         mknod          run-parts
    dnsdomainname  iostat         mktemp         scriptreplay
    dumpkmap       ip             more           sed
  • /usr/bin

    [             dirname       ipcs          openvt        sha1sum       unexpand
    [[            dos2unix      iptables-xml  passwd        sha256sum     uniq
    add-shell     du            joe           patch         sha512sum     unix2dos
    ar            dumpleases    kbd_mode      pgrep         showkey       unlzma
    arping        eject         killall       pkill         smemcap       unlzop
    awk           env           killall5      pmap          softlimit     unxz
    basename      envdir        last          printf        sort          unzip
    beep          envuidgid     less          pscan         split         uptime
    bunzip2       ether-wake    logger        pstree        strings       users
    bzcat         expand        logname       pwdx          sudo          uudecode
    bzip2         expr          lpq           readahead     sudoedit      uuencode
    cal           fdformat      lpr           readlink      sum           vi
    chat          fgconsole     lsof          realpath      sv            vlock
    chpst         find          lspci         remove-shell  tac           volname
    chrt          flock         lsusb         renice        tail          wall
    chvt          fold          lzcat         reset         tcpsvd        wc
    cksum         free          lzma          resize        tee           which
    clear         fuser         lzopcat       rpm2cpio      test          who
    cmp           groups        md5sum        rtcwake       time          whoami
    comm          hd            mesg          runsv         timeout       whois
    crontab       head          microcom      runsvdir      top           xargs
    cryptpw       hexdump       mkfifo        rx            tr            xz
    curl          hostid        mkpasswd      script        traceroute    xzcat
    cut           id            nmeter        seq           traceroute6   yes
    dc            ifplugd       nohup         setkeycodes   tty
    deallocvt     install       nslookup      setsid        ttysize
    diff          ipcrm         od            setuidgid     udpsvd
  • /sbin

    acpid              flash_unlock       losetup            route
    adjtimex           freeramdisk        lsmod              runlevel
    arp                fsck.minix         makedevs           setconsole
    avahi-daemon       fsck.msdos         man                slattach
    blkid              fsck.vfat          mdev               start-stop-daemon
    blockdev           getty              mkdosfs            sulogin
    bootchartd         halt               mkfs.minix         swapoff
    depmod             hdparm             mkfs.msdos         swapon
    devmem             ifconfig           mkfs.vfat          switch_root
    dosfsck            ifdown             mkswap             sysctl
    fbsplash           ifenslave          modinfo            syslogd
    fdisk              ifup               modprobe           tunctl
    findfs             init               pivot_root         udevadm
    flash_erase        insmod             poweroff           udevd
    flash_eraseall     klogd              raidautorun        udhcpc
    flash_info         loadkmap           reboot             vconfig
    flash_lock         logread            rmmod              watchdog
  • /usr/sbin

    brctl                 iptables              setlogcons
    chpasswd              iptables-restore      svlogd
    chroot                iptables-save         ubiattach
    crond                 loadfont              ubidetach
    dhcprelay             lpd                   ubimkvol
    fakeidentd            popmaildir            ubirmvol
    get-board-info        rdate                 ubirsvol
    get-board-info-abws1  rdev                  ubiupdatevol
    ip6tables             readprofile           udhcpd
    ip6tables-restore     sendmail              visudo
    ip6tables-save        setfont               xtables-multi

9.4. 有用なアプリケーションについて

デフォルトのユーザーランドにインストールされているアプリケーションの中から、いくつかをピックアップし概要を説明します。

表9.3 アプリケーション概要説明

アプリケーション概要
Javaオブジェクト指向プログラミング言語です。Armadillo-Box WS1ではOracle Javaが使用可能です。
cURLファイルを送信または受信するコマンドラインツールです。幅広いインターネットプロトコルをサポートします。Armadillo-Box WS1では、curlコマンドにて実行が可能です。