構建文件系統
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