am335x 700根文件加载过程分析

1./sbin/init加载过程分析

1.1 /etc/inittab

# see busybox-1.00rc2/examples/inittab for more examples

::sysinit:/etc/rc.d/rcS

::respawn:/sbin/getty -n -l /sbin/autologin ttyO0 115200 vt100  

/*启动自动密码登录,进入串口交互*/

::ctrlaltdel:/sbin/reboot

::shutdown:/etc/rc.d/rcS stop

::restart:/sbin/init

 

 

1.2 /etc/rc.d/rcS 

#! /bin/sh

# load the configuration information

. /etc/rc.d/rc.conf

mode=${1:-start}

if [ $mode = "start" ]; then

    services=$cfg_services

else

    services=$cfg_services_r

fi

cfg_services=${2:-$services}

# run the configured sequence

for i in $cfg_services

do

    if [ -x /etc/rc.d/init.d/$i ]; then                                                                        

        /etc/rc.d/init.d/$i $mode  /*启动14个服务*/

    fi

done

if [ $mode = "start" ]; then

echo 6 > /proc/sys/kernel/printk

/sys_data/bin/ltc4155_test -w 0x00 0x0E

fi

udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R---15003G/4G功能时加入该语句,路由器分配地址给监控器。

usbplug.sh $mode  /*/usr/bin目录中,挂载/usb_disk */

MonitorBox $mode  /*/usr/bin目录中,profile设置环境变量并启动应用MonitorBox*/

1.3 /etc/rc.d/rc.conf

cfg_services="mount-proc-sys  mdev  hostname  depmod  modules  filesystems  mount_sysdata  mount_usrdata  syslog inetd  can  eth  wlan bmp_config"

cfg_services_r="wlan eth can inetd syslog mount_usrdata mount_sysdata filesystems modules depmod hostname mdev mount-proc-sys bmp_config"

 

export NTP_SERVER=""

export MODLIST=""

export RAMDIRS=""

export TMPFS="tmpfs"

export TMPFS_SIZE="512k"

export READONLY_FS=""

export INETD_ARGS=""

export BOA_ARGS=""

export SMBD_ARGS=""

export NMBD_ARGS=""

export DHCP_ARG=""

export DEPLOYMENT_STYLE="RAMDISK"

export SYSCFG_DHCPC_CMD="udhcpc -b -i "

export DROPBEAR_ARGS=""

 

/etc/rc.d/init.d/mount-proc-sys

#!/bin/sh

if [ "$1" = "start" -o "$1" = "restart" ]

then

    echo "Mounting /proc and /sys "    

mount -n -t proc proc /proc

    mount -n -t sysfs sys /sys    /*挂载procsys,按理说fstab里面就可以了*/

fi

 

 

/etc/rc.d/init.d/hostname

#!/bin/sh

if test -f /etc/hostname

then

hostname -F /etc/hostname  /*设置主机名称*/

fi

/etc/hostname

MonitorBox

 


/etc/rc.d/init.d/mdev

#!/bin/sh

if [ ! -x /sbin/mdev ]

then

    exit 0

fi

case "$1" in

    start)

        echo /sbin/mdev > /proc/sys/kernel/hotplug

        

        # put /dev in a tmpfs

        mount -n -o mode=0755 -t tmpfs mdev /dev  /*挂载dev可以放在fstab*/

 

        # Create static device nodes in /dev

        mknod /dev/console c 5 1  /*说明/sbin/init启动阶段中sysinit字段执行前还没有涉及到consolenull设备???*/

        chmod 600 /dev/console

        mknod /dev/null c 1 3

        chmod 666 /dev/null

 

        # make and mount devpts

        mkdir /dev/pts

        mount -n -t devpts devpts /dev/pts

 

        echo "Starting the hotplug events dispatcher mdev"

        /sbin/mdev -s

 

        mkdir /dev/shm

        ;;

    stop)

        ;;

    *)

        echo "Usage: /etc/rc.d/init.d/mdev {start|stop}"

        exit 1

        ;;

esac

exit 0

 


/etc/rc.d/init.d/depmod

#!/bin/sh

 

if [ ! -x /sbin/depmod ]

then

    exit 0

fi

 

if [ "$1" = "start"  -a ! -s /lib/modules/`uname -r`/modules.dep ]

then

    echo Running depmod

    /sbin/depmod -a  /*检测可载入模块的相依性,建立modules.dep后续提供给modprobe使用提供解决 module 载入相依的问题*/

fi

 

/etc/rc.d/init.d/modules

#!/bin/sh

 

if [ "$1" = "start" -a -x /sbin/modprobe -a "$MODLIST" ]

then

    for i in $MODLIST

    do

        echo Loading module $i

        modprobe $i  /*加载驱动模块*/

    done

fi

 

 


/etc/rc.d/init.d/filesystems

#!/bin/sh

if [ "$1" = "stop" ]

then

    echo Unmounting filesystems

    umount -a -r

    mount -o remount -r %root% /

    [ -x /sbin/swapoff ] && swapoff -a

fi

if [ "$1" = "start" ]

then

    echo Mounting filesystems

    if [ "$TMPFS" = "tmpfs" ]

    then

        mount -n -t $TMPFS shm /dev/shm

    fi

    if [ "$READONLY_FS" != "y" ]

    then

        mount -n -o remount -w %root% /

        NFSBOOT="`cat /proc/cmdline | grep -q /dev/nfs ; echo $?`"

        if [ "$NFSBOOT" == "0"  -a  -n "$RAMDIRS" ]

        then

            echo "Booted NFS, not relocating: $RAMDIRS"

            RAMDIRS=""

        fi

    else

        # initramfs, ramdisks, others? come up read/write by default

        mount -n -o remount -r %root% /

        RAMDIRS="$RAMDIRS /tmp /etc /var"

    fi

    ln -s /proc/mounts /etc/mtab /*mount/umount会动态更新mtab文件,fdiskdf必读取mtab文件,mtab表示系统已经装载的文件系统*/

    if [ ! -d /dev/pts ]

    then

        mkdir /dev/pts

    fi

    mount -a /*自动挂载 /etc/fstab 里面的东西,系统准备装载的文件系统*/

fi

 

/etc/fstab

# /etc/fstab: static file system information.

# file system   mount       type    options           dump    pass

proc            /proc       proc    defaults          0       0

sysfs           /sys        sysfs   defaults          0       0

/dev/mmcblk0p1  /usb_disk   vfat    defaults          0       0

/dev/mtdblock9  /usr_data   ext2    defaults          0       0

 

/etc/rc.d/init.d/mount_sysdata

#!/bin/sh

 

if [ "$1" = "stop" ] ; then        

umount /sys_data

sleep 2s

ubidetach /dev/ubi_ctrl -m 8

fi

if [ "$1" = "restart" ] ; then        

umount /sys_data

sleep 2s

ubidetach /dev/ubi_ctrl -m 8

fi

 

if [ "$1" = "start" -o "$1" = "restart" ] ; then

if [ ! -d /sys_data ]; then

mkdir -m 777 /sys_data

fi

ubiattach /dev/ubi_ctrl -m 8 -O 2048

mount -t ubifs ubi1:sys_data /sys_data

exit 0

fi

 


/etc/rc.d/init.d/mount_usrdata

#!/bin/sh

 

if [ "$1" = "start" ]; then

if [ -f /usr_data/ready ]; then

echo "User's data is initialized"

cp -v /sys_data/system/* /usr_data/system

echo "User's data is ok"

else

echo "Initialize usr's data"

umount /usr_data

mkfs.ext2 /dev/mtdblock9

mount -t ext2 /dev/mtdblock9 /usr_data

mkdir /usr_data/system

cp -v /sys_data/system/* /usr_data/system

echo "cp usr's data ok"

touch /usr_data/ready

fi

  sync

fi

 

 


/etc/rc.d/init.d/syslog

#! /bin/sh

#

# syslog init.d script for busybox syslogd/klogd

# Written by Robert Griebl

#               Configuration file added by

set -e

 

if [ -f /etc/syslog ] ; then

. /etc/syslog

LOG_LOCAL=0

LOG_REMOTE=0

for D in $DESTINATION; do

if [ "$D" = "buffer" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -C$BUFFERSIZE"

LOG_LOCAL=1

elif [ "$D" = "file" ] ; then

if [ -n "$LOGFILE" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -O $LOGFILE"

fi

if [ -n "$ROTATESIZE" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -s $ROTATESIZE"

fi

if [ -n "$ROTATEGENS" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -b $ROTATEGENS"

fi

LOCAL=0

elif [ "$D" = "remote" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -R $REMOTE"

LOG_REMOTE=1

fi

done

if [ "$LOG_LOCAL" = "1" -a "$LOG_REMOTE" = "1" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -L"

fi

if [ -n "$MARKINT" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -m $MARKINT"

fi

if [ "$REDUCE" = "yes" ] ; then

SYSLOG_ARGS="$SYSLOG_ARGS -S"

fi

else

# default: log to 16K shm circular buffer

SYSLOG_ARGS="-C"

fi

 

case "$1" in

  start)

echo -n "Starting syslogd/klogd: "

start-stop-daemon -S -b -n syslogd -a /sbin/syslogd -- -n $SYSLOG_ARGS

start-stop-daemon -S -b -n klogd -a /sbin/klogd -- -n

echo "done"

;;

  stop)

echo -n "Stopping syslogd/klogd: "

start-stop-daemon -K -n syslogd

start-stop-daemon -K -n klogd

echo "done"

;;

  restart)

   $0 stop

$0 start

;;

  *)

echo "Usage: syslog { start | stop | restart }" >&2

exit 1

;;

esac

 

exit 0

 

 


/etc/syslog

DESTINATION="buffer" # log destinations (buffer file remote)

MARKINT=20 # interval between --mark-- entries [min]

REDUCE=no # reduced-size logging

BUFFERSIZE=64 # buffer: size of circular buffer [kByte]

LOGFILE=/var/log/messages # file: where to log

ROTATESIZE=32 # file: rotate log if grown beyond X [kByte] (busybox 1.2+)

ROTATEGENS=1 # file: keep X generations of rotated logs (busybox 1.2+)

REMOTE=loghost:514 # remote: where to log

FOREGROUND=no # run in foreground (don't use!)


/etc/rc.d/init.d/inetd

#!/bin/sh

 

if [ ! -x /usr/sbin/inetd ]

then

    exit 0

fi

 

if [ "$1" = "stop" -o "$1" = "restart" ]

then                                                                            

    echo "Stopping inetd: "

    killall inetd

fi

 

if [ "$1" = "start" -o "$1" = "restart" ]

then

    echo "Starting inetd: "

    /usr/sbin/inetd $INETD_ARGS

fi

 

/*

 inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它会检查 /etc/inetd.conf 以确定提供哪些服务检查/etc/services以确定对哪个端口监视在 inetd.conf 中列出的服务、端口号与协议名称,协议的每个条目必须在 /etc/protocols 文件中有一个与之匹配的条目。*/

/*

 /etc/inetd.conf文件保存了系统提供internet服务的数据库允许inetd在启动时决定自己将代表哪些服务等待服务请求。如果一种服务的守护进程没有包含在inetd.conf文件中,那么当inetd接收到该服务的请求时,会把该请求丢弃。*/

 

/etc/inetd.conf

# /etc/inetd.conf:  see inetd(8) for further informations.

echo     stream  tcp nowait root internal

echo     dgram   udp wait root internal

daytime  stream  tcp nowait root internal

daytime  dgram   udp wait root internal

time     stream  tcp nowait root internal

time     dgram   udp wait root internal

 

# These are standard services.

#

ftp stream tcp nowait root /usr/sbin/ftpd /usr/sbin/ftpd

telnet stream tcp nowait root /usr/sbin/telnetd /usr/sbin/telnetd -i

 

 

/etc/protocols

# /etc/protocols:

# $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $

#

# Internet (IP) protocols

#

# from: @(#)protocols 5.1 (Berkeley) 4/17/89

#

# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).

ip 0 IP # internet protocol, pseudo protocol number

icmp 1 ICMP # internet control message protocol

igmp 2 IGMP # Internet Group Management

ggp 3 GGP # gateway-gateway protocol

ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')

st 5 ST # ST datagram mode

tcp 6 TCP # transmission control protocol

egp 8 EGP # exterior gateway protocol

pup 12 PUP # PARC universal packet protocol

udp 17 UDP # user datagram protocol

hmp 20 HMP # host monitoring protocol

xns-idp 22 XNS-IDP # Xerox NS IDP

rdp 27 RDP # "reliable datagram" protocol

iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4

xtp 36 XTP # Xpress Tranfer Protocol

ddp 37 DDP # Datagram Delivery Protocol

idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport

ipv6 41 IPv6 # IPv6

ipv6-route 43 IPv6-Route # Routing Header for IPv6

ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6

idrp 45 IDRP # Inter-Domain Routing Protocol

rsvp 46 RSVP # Reservation Protocol

gre 47 GRE # General Routing Encapsulation

esp 50 ESP # Encap Security Payload for IPv6

ah 51 AH # Authentication Header for IPv6

skip 57 SKIP # SKIP

ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6

ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6

ipv6-opts 60 IPv6-Opts # Destination Options for IPv6

rspf 73 RSPF # Radio Shortest Path First.

vmtp 81 VMTP # Versatile Message Transport

ospf 89 OSPFIGP # Open Shortest Path First IGP

ipip 94 IPIP # IP-within-IP Encapsulation Protocol

encap 98 ENCAP # Yet Another IP encapsulation

pim 103 PIM # Protocol Independent Multicast


/etc/rc.d/init.d/can

#!/bin/sh

 

if [ "$1" = "stop" -o "$1" = "restart" ]; then        

    echo "Stopping can: "

    ip link set can0 down nmea2000 off

    sleep 1s

fi

 

if [ "$1" = "start" -o "$1" = "restart" ]; then

    source /usr_data/system/can-name  /*导入CAN名称*/

echo "Starting can"

ip link set can0 type can bitrate 250000 restart-ms 100 triple-sampling on

ip link set can0 up nmea2000 on

echo "Setting the can name to $CAN_NAME"

ip addr add nmea2000 name $CAN_NAME dev can0

fi

 

注意:学习ip命令对比ifconfig命令的区别

 

 

 


/etc/rc.d/init.d/eth

#!/bin/sh

 

ETH0_INFO=`ifconfig eth0 | grep "inet addr"`

 

if [ "$1" = "start" ]; then

if [ ! -n "$ETH0_INFO" ]; then  

/*从网络启动则eth0有配置,从nand启动则eth0为空执行该分支*/

/usr_data/system/eth0

else

echo "Eth0 is ready..."

fi

fi

 

/usr_data/system/eth0

#!/bin/sh

 

ifconfig eth0 up

ifconfig eth0 192.168.1.24 netmask 255.255.255.0

route add default gw 192.168.1.1

 


/etc/rc.d/init.d/wlan

#!/bin/sh

 

if [ "$1" = "start" -o "$1" = "restart" ]; then

if [ -f /usr_data/system/hostapd ]; then

/ sys_data /system/hostapd    /*下载相应的开源库*/

echo "hostap up"

else

echo "hostap not found"

fi

fi

 

/sys_data/system/hostapd

#!/bin/sh

# Install driver of wl12xx SDIO Card

insmod /sys_data/lib/wifi/compat.ko

insmod /sys_data/lib/wifi/cfg80211.ko

insmod /sys_data/lib/wifi/mac80211.ko

insmod /sys_data/lib/wifi/wl12xx.ko

insmod /sys_data/lib/wifi/wl12xx_sdio.ko

 

# Configure wlan0

ifconfig wlan0 down

ifconfig wlan0 hw ether 00:D2:48:43:9F:FE

ifconfig wlan0 192.168.40.1 netmask 255.255.255.0

ifconfig wlan0 up

 

# Start DHCP service       /*启动udhcpd服务功能*/

start-stop-daemon -S -x /usr/sbin/udhcpd -- /usr_data/system/udhcpd.conf -S

/*DHCPDynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、 Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。*/

# Start FTP service on eth0

echo "Starting FTP"       /*启动FTP服务功能*/

tcpsvd -vE 0 21 ftpd -w /sys_data/system & exit 0

/* start-stop-daemon命令: 

启动和停止系统一个守护程序,并传递参数给它。*/


/etc/rc.d/init.d/bmp_config

#!/bin/sh

 

if [ "$1" = "start" ]; then

echo "bmp_config Running"

if [ -f /usr_data/system/bmp_conf ]; then

/usr_data/system/bmp_conf

echo "bmp configuration complete"

else

echo "bmp configuration fail"

fi

fi

 

 


1.4 /usr/bin/usbplug.sh 

#!/bin/sh

#USBDEVNAME="mtdblock9"

USBDEVNAME="mmcblk0p1"

USBFLASHMOUNT="/usb_disk"

 

if [ "$1" = "start" ] ; then

modprobe g_mass_storage file=/dev/$USBDEVNAME luns="1" stall="0" removable="1"  /*该命令实现mmcblk0p1(SD)设备即/usb_disk作为PC机的一个USB接口外设设备*/

fi

 


1.5 /usr/bin/APM

#!/bin/sh

 

if [ ! -x /sys_data/app/MonitorBox ]; then

echo "Have not find app,try to updata"

exit 1

fi

 

if [ "$1" = "stop" ]; then        

    echo "Stopping APP: "

    killall -9 MonitorBox

if [ $? = 0 ]

then

exit 0

fi

exit 1

fi

if [ "$1" = "restart" ]; then        

    echo "restart APP: "

    killall -9 MonitorBox

fi

 

if [ "$1" = "start" -o "$1" = "restart" ]; then

. /etc/profile

    echo "Starting APP: "

cd /sys_data/app

./MonitorBox &

exit 0

fi

 


1.6 /etc/profile

alias ll='ls -l'

alias la='ll -a'

 

export PS1='\u@\h \w$ '

export PS2='> '

 

#alsa mixer

export TERM=vt100

export TERMINFO=/usr/share/terminfo

 

export SYSDATA=/sys_data

 

#tslib settings

export TSPREFIX=$SYSDATA/lib/tslib

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event1

export TSLIB_CALIBFILE=/usr_data/system/pointercal

export TSLIB_CONFFILE=$TSPREFIX/etc/ts.conf

export TSLIB_PLUGINDIR=$TSPREFIX/lib/ts

 

#global running settings

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSPREFIX/lib:/lib:$SYSDATA/lib/arm-alsa/lib:$SYSDATA/lib/libmad-arm/lib:$SYSDATA/lib/lib-sysfunc

export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$TSPREFIX/bin:$SYSDATA/lib/arm-alsa/bin:$SYSDATA/bin

export TMPDIR=/tmp

 

 

 

 

 

 

 


2.sys_data目录

---app目录:存放应用程序

---bin目录:自己编写的测试用例

---system目录:存放应用程序使用的配置文件等信息

---lib目录:应用库

---arm-alsa目录:高级Linux音频架构,提供了音频和MIDI(音乐设备数字化接口)的支持,又是声音子系统

---libMAD目录:MPEG音频解码库(支持MP3解码)

---tslib目录:触摸屏驱动的适配层(提供滤波、去抖、校准等功能)

---wifi目录:WiFi驱动.ko

 

 

3.usr目录

---/usr/share/Terminfo目录:

Unix被设计成使用终端来访问主机系统的时候,Unix的开发人员需要解决的一个重要问题就是每种类型的终端都有自己的特征,并使用自己的命令集,并且这些命令的名称不尽相同.解决方法就是,将所有不同类型终端的描述收集到一个数据库中,当程序希望向终端发送命令时,它可以通过使用数据库中的信息以一种标准化的方式完成.

 

---/usr/share/zoneinfo目录:

/usr/share/zoneinfo  在这个路径下有所有时区
如果要看在各时区下的时间,可以这样:
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date

zoneinfo文件中的内容,在运行date命令时使用。

 

---/usr/share/udhcpc目录:

一个default.script文件

 

---/usr/local目录:空目录

 

 


4./etc中未分析到的文件

4.1 /etc/securetty

/etc/securetty 文件允许你规定“root”用户可以从哪个tty设备登录。登录程序(通常是/bin/login)需要读取/etc/securetty文件

它的格式:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许root登录的。

 

4.2 /etc/passwdshadow

登录程序(通常是/bin/login)需要读取/etc/passwd和shadow文件。

 

4.3 /etc/hosts

记录一些IP和域名的对应关系

localhost 127.0.0.1

 

4.4 /etc/host.conf

order hosts,bind

解析器查询顺序配置文件

 

4.5 /etc/mdev.conf

mdev 可选配置文件,以控制设备节点的 所有者和权限。

文件的格式如下:

:

内容:

# system all-writable devices

full 0:0 0666

null 0:0 0666

ptmx 0:0 0666

random 0:0 0666

tty 0:0 0666

zero 0:0 0666

 

# console devices

tty[0-9]* 0:5 0660

 

# loop devices

loop[0-9]* 0:0 0660 =loop/

 

# i2c devices

#i2c-0 0:0 0666 =i2c/0

#i2c-1 0:0 0666 =i2c/1

 

# frame buffer devices

fb[0-9] 0:0 0666 >screen

 

# input devices

mice 0:0 0660 =input/

event.* 0:0 0660 =input/

ts.* 0:0 0660 =input/

 

# rtc devices

rtc0 0:0 0644 >rtc

rtc[1-9] 0:0 0644

 

# misc devices

 

# alsa sound devices and audio stuff

pcm.* 0:0 0660 =snd/

control.* 0:0 0660 =snd/

midi.* 0:0 0660 =snd/

seq 0:0 0660 =snd/

timer 0:0 0660 =snd/

 

adsp 0:0 0660 >sound/

audio 0:0 0660 >sound/

dsp 0:0 0660 >sound/

mixer 0:0 0660 >sound/

sequencer.* 0:0 0660 >sound/

 

4.6 /etc/group

/etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。

 

4.7 /etc/fw_env.config ???

# NAND example

#/dev/mtd0 0x4000 0x4000 0x20000 2

/dev/mtd5 0x0000 0x2000 0x20000 1

 

4.8 /etc/modprobe.conf ??

install ide-cs /sbin/modprobe --ignore-install ide_cs && /sbin/modprobe ide_disk

 

4.9 /etc/watchdog.conf ??

#ping = 172.31.14.1

#ping = 172.26.1.255

#interface = eth0

file = /var/log/messages

#change = 1407

 

# Uncomment to enable test. Setting one of these values to '0' disables it.

# These values will hopefully never reboot your machine during normal use

# (if your machine is really hung, the loadavg will go much higher than 25)

#max-load-1 = 24

#max-load-5 = 18

#max-load-15 = 12

 

# Note that this is the number of pages!

# To get the real size, check how large the pagesize is on your machine.

#min-memory = 1

 

#repair-binary = /usr/sbin/repair

#repair-timeout =

#test-binary =

#test-timeout =

 

watchdog-device = /dev/watchdog

#watchdog-timeout = 4

# Defaults compiled into the binary

#temperature-device =

#max-temperature = 120

 

# Defaults compiled into the binary

#admin = root

#interval = 1

#logtick                = 1

#log-dir = /var/log/watchdog

 

# This greatly decreases the chance that watchdog won't be scheduled before

# your machine is really loaded

realtime = yes

priority = 1

 

# Check if syslogd is still running by enabling the following line

pidfile = /var/run/syslogd.pid   

 

5.要点总结

通过上面分析可知:

1. 挂载procsys

2. 设置主机名称

3. 创建consolenull设备,启用mdev功能

4. 检测驱动模块相依性并加载模块

5. 挂载fstab中的文件系统(/usb_disk目录,vfat文件系统等)

6. 挂载/sys_dataubi文件系统

7. 挂载/usr_dataext2文件系统(备份重要设置文件功能)

8. 设置syslog

9. 启动inet进程,监视一些网络请求

10. 设置CAN通讯接口功能

11. 设置eth以太网接口功能

12. 设置wlan无线网接口功能(加载WiFi驱动,设置wlan0

13. 启动udhcpd服务功能(与udhcpc区别)

14. 启动FTP服务功能

15. 板卡上SD卡作为PC机外设存储功能

16. 设置环境变量profile文件,链接库函数的路径

17. 应用库:高级Linux音频架构ALSA

18. 应用库:MPEG音频解码库libMAD

19. 应用库:触摸屏驱动适配层

你可能感兴趣的:(Linux,驱动开发,文件系统,boot总结)