构建文件系统
dev 目录
init 进程需要用到“/dev/console”和“/dev/null”这两个设备文件,所以,需要在制作文件系统时静态创建这两个设备文件
mknod console c 5 1
mknod null c 1 3
etc 目录
fstab :指明需要挂载的文件系统
group:用户组
inittab:init进程的配置文件
shadow :使用passwd命令创建密码时需要该文件的参与
passwd:密码文件
profile:用户环境配置文件
mdev.conf:因为2.6.18版本开始Linux放弃使用devfs而采用udev(mdev是udev的简化版本),这里的mdev.conf
文件可以是空,也可以按照一定规则来编写,这里添加了自动挂载和卸载SD卡和U盘的脚本文件在其中
resolv.conf:存放DNS信息的文件,访问外网时需要DNS的信息
init.d 目录:启动文件目录,该目录下面有个 rcS的文件里面存放了系统启动时配置以及自动加载的进程等
sysconfig目录:存放HOSTNAME的文件,
rc.d目录用来存放一些自启动所要调用的脚本等
完整文件系统内容呢如下
fstab
#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
var /dev tmpfs defaults 0 0
ramfs /dev ramfs defaults 0 0
group
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:lp
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:
500:x:500:sky
501:x:501:sky
inittab
# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
shadow
内容为空即可
说明:当使用passwd命令时需要该文件的参与
passwd
root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
lzc:$1$8GIZx6d9$L2ctqdXbYDzkbxNURpE4z/:502:502:Linux User,,,:/home/lzc:/bin/sh
注意:lzc:$1$8GIZx6d9$L2ctqdXbYDzkbxNURpE4z/:502:502:Linux User,,,:/home/lzc:/bin/sh 密码是不可逆的编码,获取方法
使用passwd lzc命令然后设定密码,再打开这个文件时就存在密码信息了,然后将密码复制到pc中的文件系统即可
profile
# Ash profile
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
#export set HOME=/root
#export set QTDIR=/opt/PDA
#export set QPEDIR=/opt/PDA
#export set QWS_DISPLAY="LinuxFB:/dev/fb0"
#export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
#export set QWS_KEYBOARD="TTY:/dev/tty1"
#if [ -f /sys/devices/virtual/input/input1/uevent ] ; then
# export set TSLIB_TSDEVICE=/dev/event1
# export set TSLIB_CALIBFILE=/etc/pointercal
# export set TSLIB_CONFFILE=/etc/ts.conf
# export set TSLIB_PLUGINDIR=/lib/ts
# export set QWS_MOUSE_PROTO="TSLIB:/dev/event1 MouseMan:/dev/mice"
#else
# export set QWS_MOUSE_PROTO="MouseMan:/dev/mice"
#fi
#export set QT_PLUGIN_PATH=$QTDIR/plugins/
#export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
#export set PATH=$QPEDIR/bin:$PATH
#export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
mdev.conf
sd[a-z]*[0-9] 0:0 0660 @(mount -t vfat -o iocharset=cp936 /dev/$MDEV /udisk)
sd[a-z]*[0-9] 0:0 0660 *(umount /udisk)
mmcblk[0-9]*p[0-9] 0:0 0660 @(mount -t vfat -o iocharset=cp936 /dev/$MDEV /sddisk)
mmcblk[0-9]*p[0-9] 0:0 0660 *(umount /sddisk)
dsp 0:0 0660 =sound/
resolv.conf
nameserver 202.96.128.86
nameserver 202.96.134.133
init.d/rcS
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
mount -n -t usbfs none /proc/bus/usb
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
#hwclock -s
#EmbedSky_wdg &
#pda &
#insmod /lib/input-polldev.ko
#insmod /lib/mac80211.ko
#TL-WN321G+
#insmod /lib/rt2x00lib.ko
#insmod /lib/rt2x00usb.ko
#insmod /lib/rt73usb.ko
#TL-WN322G+
#insmod /lib/zd1211rw.ko
#insmod /lib/ov9650.ko
#insmod /lib/camera.ko
#modprobe zd1211rw
#modprobe rt73usb
#modprobe rt5370sta
#ifconfig lo 127.0.0.1
#net_set &
#/etc/rc.d/init.d/leds start
#/etc/rc.d/init.d/netd start
#/etc/rc.d/init.d/httpd start
/bin/hostname -F /etc/sysconfig/HOSTNAME
home目录
建立一个名为"lzc"的文件夹和前面的passwd对上
lib目录
用来存放常用的库文件
cp -f /arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so* lib -a
rm -f lib/libwv* lib/libuniconf*
大概8M
https://github.com/liuzhanchun/rootfs