從
s3c2410_recover\lib
•或 /usr/local/arm/3.4.1/arm-linux/lib
•或/opt/eldk/arm/lib copy 過(guò)來(lái),再裁減lib 庫(kù)
•目錄 proc
•------->空著但必須有這目錄
•4.2.etc/下文件內(nèi)容修改
•4.2.1 etc/rc.d/rc.sysinit
•這里你還可以按自己的要求修改
•4.2.2 etc/rc.d/rc.local
•以后要啟動(dòng)的程序你可以加在這里
•=============================================================
•#!/bin/sh
•#
•# This script will be executed *after* all the other init scripts.
•# You can put your own initialization stuff in here if you don't
•# want to do the full Sys V style init stuff.
•#touch /var/lock/subsys/local
•=======================================
•4.2.3 etc/inittab
•init啟動(dòng)后會(huì)首先執(zhí)行這個(gè)文件
•===========================================================•#
•# inittab This file describes how the INIT process should set up
•# the system in a certain run-level.
•# Default runlevel. The runlevels used by RHS are:
•# 0 - halt (Do NOT set initdefault to this)
•# 1 - Single user mode
•# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
•# 3 - Full multiuser mode
•# 4 - unused
•# 5 - X11
•# 6 - reboot (Do NOT set initdefault to this)
•#
【1】文件系統(tǒng)
掛載文件系統(tǒng)
mount -t vfat /dev/mmcblk1p1 /mnt
掛載 指定需要掛載的文件系統(tǒng)的類型 設(shè)備節(jié)點(diǎn)(文件) 掛載點(diǎn)(文件系統(tǒng)掛載到rootfs的地方)
【2】?jī)?nèi)核調(diào)試
1)點(diǎn)燈是用 GPIO 作為輸出,觀察程序運(yùn)行階段和狀態(tài)的方法
2)printk
內(nèi)核解壓后
信息輸出顯示是在 console 初始化之后
printascii
console初始化前
printk打印級(jí)別:數(shù)字越低,級(jí)別越高
-
#define KERN_EMERG "<0>" /* system is unusable */
-
#define LERT "<1>” /* action must be taken immediately */
-
#define KERN_CKERN_ARIT "<2>" /* critical conditions */
-
#define KERN_ERR "<3>" /* error conditions */
-
#define KERN_WARNING "<4>" /* warning conditions */
-
#define KERN_NOTICE "<5>" /* normal but significant condition */
-
#define KERN_INFO "<6>" /* informational */
-
#define KERN_DEBUG "<7>" /* debug-level messages
ubuntu系統(tǒng):
通過(guò)proc在運(yùn)行時(shí)查看和修改日志級(jí)別
cat /proc/sys/kernel/printk
4 4 1 7
echo “7 4 1 7” >/proc/sys/kernel/printk
cat /proc/sys/kernel/printk
7 4 1 7
3)OOPS
pc寄存器保存內(nèi)核崩潰時(shí),運(yùn)行的地址
定位 系統(tǒng)崩潰時(shí)的地址
linux@ubuntu:~/work/day_2/linux-3.14-fs4412$ arm-none-linux-gnueabi-addr2line 0xc0278e1c
-e vmlinux -f
指定定位鏡像文件 指定出錯(cuò)的文件以及行號(hào)
dm9000_probe
/home/linux/work/day_2/linux-3.14-fs4412/drivers/net/ethernet/davicom/dm9000.c:1414
4)調(diào)試信息
調(diào)試信息一般顯示在兩個(gè)地方 :終端、log日志
klogd進(jìn)程:執(zhí)行系統(tǒng)調(diào)用,去訪問(wèn)內(nèi)核的打印消息
syslog進(jìn)程:記錄非內(nèi)核打印的消息
void openlog(const char *ident, int option, int facility);
功能:打開日志
參數(shù):ident 日志的標(biāo)志
option LOG_PID Include PID with each message. 打印的消息附加上進(jìn)程ID
LOG_CONS Write directly to system console if there is an error while sending to system logger.
把消息顯示到log日志
facility 表示的是消息出自于什么類型的進(jìn)程
LOG_DAEMON system daemons without separate facility value
void syslog(int priority, const char *format, ...);
功能:將消息顯示到日志中
參數(shù):priority 級(jí)別
LOG_WARNING warning conditio
LOG_NOTICE normal, but significant, condition
LOG_INFO informational message
LOG_DEBUG debug-level message
void closelog(void);
功能:關(guān)閉日志
查看日志消息: var/log/syslog日志
【3】文件系統(tǒng)
文件系統(tǒng):文件存儲(chǔ)的格式
文件系統(tǒng)的類型:
磁盤文件系統(tǒng):駐留在磁盤上的文件系統(tǒng)
FAT16、FAT32、NTFS、EXT2、EXT3、EXT4
網(wǎng)絡(luò)文件系統(tǒng):可以遠(yuǎn)程訪問(wèn)的文件系統(tǒng)
nfs(network filesystem)
內(nèi)存文件系統(tǒng):存在內(nèi)存上的文件系統(tǒng)
tmpfs
只讀文件系統(tǒng):
cramfs
根文件系統(tǒng)(root filesystem)是存放運(yùn)行、維護(hù)系統(tǒng)所必須的各種工具軟件、庫(kù)文件、腳本、
配置文件和其他特殊文件的地方,也可以安裝各種軟件包。
根文件系統(tǒng)是內(nèi)核運(yùn)行之后,加載的第一個(gè)文件系統(tǒng),是其他文件系統(tǒng)的根,可用來(lái)掛載其他類型的文件系統(tǒng),也可視其為特殊的文件系統(tǒng)
必須存在,不存在內(nèi)核無(wú)法運(yùn)行
文件系統(tǒng)的目錄結(jié)構(gòu):
/etc 存放內(nèi)核所需要的配置文件(啟動(dòng)文件)
====================================================================
/bin: 普通用戶和root用戶都能執(zhí)行的基本程序
ping, mknod, mount, tar, grep, gzip, etc
/sbin: root用戶能執(zhí)行的基本程序
int, insmod, route, mkfs, rmmod, ifconfig
====================================================================
/usr/bin: 更多非必須的用戶程序
autorun, bibtex, latex, biff, ftp, wc, whereis, whoami
/usr/sbin: 更多非必須的root工具程序
automount, httpd, in.telnetd, in.talkd, sendmail
====================================================================
/proc 掛載proc文件系統(tǒng),記錄進(jìn)程的信息
/sys 掛載sysfs文件系統(tǒng),記錄內(nèi)核所需的特殊文件,設(shè)備,總線等信息
/mnt 臨時(shí)掛載點(diǎn),掛載其他文件系統(tǒng)使用
/tmp 臨時(shí)掛載點(diǎn),掛載其他文件系統(tǒng)使用
====================================================================
/dev 設(shè)備節(jié)點(diǎn)(文件)
【4】根文件系統(tǒng)的制作
1)make
生成bin sbin usr/bin usr/sbin linuxrc
2)mkdir dev etc mnt proc var tmp sys root
3)/etc
inittab fstab init.d/rcS profile
inittab
|
|
fstab
|
|
init.d ---- rcS
|
|
profile
1)initab 內(nèi)核在加載rootfs的時(shí)候,解析該文件
-
::sysinit:/etc/init.d/rcS 文件系統(tǒng)中運(yùn)行第一個(gè)腳本
-
:askfirst:-/bin/sh 指定腳本的類型
-
::restart:/sbin/init 文件系統(tǒng)運(yùn)行的第一個(gè)進(jìn)程(sbin/init) init=/linuxrc 守護(hù)進(jìn)程
-
開啟當(dāng)前的shell環(huán)境,服務(wù)其他進(jìn)程,打開其他進(jìn)程
-
::ctrlaltdel:/sbin/reboot reboot系統(tǒng)重啟
2)init.d/rcS
-
#!/bin/sh
-
# This is the first script called by init process
-
/bin/mount -a 執(zhí)行掛載,與之匹配的是fstab中設(shè)置好的掛載點(diǎn)
-
echo /sbin/mdev > /proc/sys/kernel/hotplug 生效熱插拔機(jī)制
-
/sbin/mdev -s
3)fstab 設(shè)置不同的文件系統(tǒng)的掛載點(diǎn)
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
4)申明庫(kù)文件,以及進(jìn)程的路徑
export HOSTNAME=farsight
export USER=root
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH