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

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

9.1. 起動処理

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

  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.1.1. inittab

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

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

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

::respawn:/sbin/getty -L 115200 ttySC2 vt102

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

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


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

id:runlevel:action:process

図9.2 inittabの書式


Armadillo-810の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.1.2. /etc/init.d/rc

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

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

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

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

スクリプト初期化内容
S01mtdフラッシュメモリのパーティション名に従ってMTDのデバイスファイルへのシンボリックリンクを作成します
S03flatfsdflatfsdを使いコンフィグ領域(/etc/config/)を復元します
S05udevdudevdを起動し、Linuxカーネルから発行されたueventをハンドリングします
S06mountdevsubfsudevd起動後にマウントする必要のあるファイルシステムをマウントします
S20checkrootシステム関連のファイルのパーミッション設定や、オーナーを設定します
S21checkftpFTPが利用するファイルやライブラリの配置、パーミッションの設定をします
S30syslogd, S31klogdログデーモンを起動します
S40mountその他のファイルシステムをマウントします
S45module-init-tools/etc/modulesに記載されたカーネルモジュールをロードします
S50hostnamehostnameを設定します
S55firewall, S56networking, S57inetdネットワーク関連の初期化を行い、インターネットスーパーサーバー(inetd)を起動します
S60avahi, S60lighttpd, S60sshdネットワークデーモンを起動します
S90rc.localコンフィグ領域(/etc/config/)に保存されたrc.localを実行します

9.1.4. /etc/config/rc.local

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

Armadillo-810では、システム起動時に自動的にuvc-gadgetアプリケーションを起動させるために利用しています。カメラデバイス(/dev/video1)を他のアプリケーションで利用する場合などに、uvc-gadgetを自動起動させないように設定することができます。

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

#!/bin/sh

. /etc/init.d/functions

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

#
# for USB Gadget "UVC Composite with ACM and RNDIS"
#   - activate UVC
#
USB_GADGET_IS_UVC_COMPOSITE=y 1
if [ "${USB_GADGET_IS_UVC_COMPOSITE}" = "y" ]; then
   /etc/init.d/uvc-gadget
fi

1

"y"から"n"に設定を変更しコンフィグ領域を保存すると、次回起動時にuvc-gadgetが自動起動されないようになります

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


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

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

  • /bin

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

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

    acpid              fsck.msdos         mkdosfs            route 
    adjtimex           fsck.vfat          mke2fs             runlevel 
    arp                getty              mkfs.ext2          setconsole 
    avahi-daemon       halt               mkfs.minix         slattach 
    blkid              hdparm             mkfs.msdos         sshd 
    blockdev           hwclock            mkfs.vfat          start-stop-daemon 
    bootchartd         ifconfig           mkswap             sulogin 
    chat               ifdown             modinfo            swapoff 
    depmod             ifenslave          modprobe           swapon 
    devmem             ifup               nameif             switch_root 
    dosfsck            init               nanddump           sysctl 
    dosfslabel         insmod             nandwrite          syslogd 
    fbsplash           iwconfig           nftl_format        tunctl 
    fdisk              iwlist             nftldump           tune2fs 
    findfs             iwpriv             pivot_root         udevcontrol 
    flash_erase        klogd              poweroff           udevd 
    flash_eraseall     loadkmap           pppd               udevsettle 
    flash_info         logread            pppdump            udevtrigger 
    flash_lock         losetup            pppoe-discovery    udhcpc 
    flash_unlock       lsmod              pppstats           vconfig 
    freeramdisk        makedevs           raidautorun        watchdog 
    fsck               man                reboot             zcip 
    fsck.minix         mdev               rmmod 
  • /usr/sbin

    brctl                i2cset               setfont 
    chpasswd             inetd                setlogcons 
    chroot               lighttpd             svlogd 
    crond                loadfont             telnetd 
    dhcprelay            lpd                  ubiattach 
    dnsd                 nanddump             ubidetach 
    fakeidentd           nandwrite            ubimkvol 
    fbset                nbd-client           ubirmvol 
    ftpd                 ntpd                 ubirsvol 
    get-board-info-a810  popmaildir           ubiupdatevol 
    httpd                rdate                udevmonitor 
    i2cdetect            rdev                 udhcpd 
    i2cdump              readprofile          uvc-gadget 
    i2cget               sendmail             visudo