ホーム  |  製品 & サービス   |  サポート & ダウンロード  |  開発者向け情報  |  お問い合わせ

rootFS構築の続き -1 では、inittab の設定をしました。ここでは/etc/init.d の設定と、/etc/passwd の追加を行います。

 

/etc/init.d/ の追加

init によって実行されるスクリプト類を追加します。

例によってlinux4sam の提供している /etc/init.d/ 以下のファイルを参考にします。

linux4sam の rootFS では以下のスクリプトをシステム起動時に実行します:

S10udev
S13portmap
S20urandom
S40network
S49ntp
S50dropbear
S50proftpd

これらのスクリプトは/etc/init.d/rcSより実行されます。

まずは/etc/init.d/rcSを作ります。

#!/bin/sh
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
        *.sh)
            # Source shell script for speed.
            (
                trap - INT QUIT TSTP
                set start
                . $i
            )
            ;;
        *)
            # No sh extension, so fork subprocess.
            $i start
            ;;
    esac
done

S**で始まるファイルを読み込んで、実行するスクリプトです。

 

S**で始まるスクリプトはいくつかありましたが、このうち、S40networkだけをとりあえず追加してみます。

ネットワークの設定方法はこのページでは取り上げてませんが、11月号のInterfaceに載る予定です。のちのちこのページにも追加していきますが、とりあえずここではスクリプトについてだけ書きます。

/etc/init.d/S40network の中身は以下のとおりです:

#!/bin/sh
#
# Start the network....
#
 
start() {
        echo "Starting network..."
        /sbin/ifup -a
}

stop() {
        echo -n "Stopping network..."
        /sbin/ifdown -a
}

restart() {
        stop
        start
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
 
exit $?

 

こ れで、システムの起動時にネットワークへ自動接続するようになります。

 

/etc/passwd, /etc/shadow の追加

最後に /etc/passwdファイルを作ります。これがないと、ログインすることが出来ません。

最低限、rootでログインするためには以下のファイルが必要です:

 

/etc/passwd:

root:x:0:0:root:/root:/bin/msh

 

パスワードを保存するためのファイル、/etc/shadow も追加します。 (':'で区切られたフィールドの2番目は、暗号化されたパスワードが入りますが、空にしています)

 

/etc/shadow:

root::10933:0:99999:7:::

 

linuxを再起動

これでrootFSの構築はいったん終了です。BLANCA ARMの nor flash にrootFSを焼きなおして、再起動します。 

起動したところ:

Start AT91Bootstrap...
Uncompressing Linux.....<中略>....done, booting the kernel.
Linux version 2.6.27 (hal@ubuntu-vm) (gcc version 4.2.0 20070413 (prerelease)
      (CodeSourcery Sourcery G++ Lite 2007q1-10)) #1 Fri Aug 7 21:04:39 JST 2009
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200
                                   mtdparts=physmap-flash.0:2m(kernel),5m(user)
                                   root=/dev/mtdblock1 init=/sbin/init
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 61748KB available (2768K code, 220K data, 120K init)
Calibrating delay loop... 99.12 BogoMIPS (lpj=495616)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 288 bytes
NET: Registered protocol family 16
AT91: Power Management
AT91: Starting after general reset
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) (SUMMARY)  息 2001-2006 Red Hat, Inc.
msgmni has been set to 120
io scheduler noop registered
io scheduler anticipatory registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
ssc ssc.0: Atmel SSC device at 0xc4870000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (12:34:56:78:9a:bc)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:06, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
physmap platform flash device: 00800000 at 10000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
2 cmdlinepart partitions found on MTD device physmap-flash.0
Creating 2 MTD partitions on "physmap-flash.0":
0x00000000-0x00200000 : "kernel"
0x00200000-0x00700000 : "user"
atmel_spi atmel_spi.1: Atmel SPI Controller at 0xfffcc000 (irq 13)
usbmon: debugfs is not available
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.17.
at73c213 spi1.0: at73c213: supported bitrate is 48500 (64 divider)
ALSA device list:
  #0: AT91SAM9260-EK external DAC on irq 14
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 120K
Starting network...
ip: RTNETLINK answers: File exists

(none) login:

 

現状のカーネルと rootFS

zImage

rootFS