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

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

9.1. 起動処理

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

  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-840の/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-840の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-840のデフォルト状態で登録されている初期化スクリプトを表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を設定します
S50pvrsrvPowerVR SGX540の初期化を行います
S55firewall, S56networking, S57inetdネットワーク関連の初期化を行い、インターネットスーパーサーバー(inetd)を起動します
S60avahi, S60lighttpd, S60sshdネットワークデーモンを起動します
S90rc.localコンフィグ領域(/etc/config/)に保存されたrc.localを実行します

9.1.4. /etc/config/rc.local

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

Armadillo-840では、システム起動時に自動的にQtサンプルアプリケーションのphotoviewerを起動させるために利用しています。photoviewerは自動起動させないように設定することができます。

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

#!/bin/sh

. /etc/init.d/functions

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

# First read /etc/profile
test -f /etc/profile && . /etc/profile

#
# Starting a default application
#
START_PHOTOVIEWER_WITH_QMLSCENE=y 1
if [ "${START_PHOTOVIEWER_WITH_QMLSCENE}" = "y" ]; then
        echo -n "Starting photoviewer: "
        qmlscene /usr/share/qt5/photoviewer/photoviewer.qml >/dev/null 2>&1 &
        check_status
fi

1

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

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


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

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

  • /bin

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

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