Linux根文件系统搭建二

构建文件系统

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

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章