RAMDISK文件系统的制作

来源:互联网 发布:放置江湖武功数据图 编辑:程序博客网 时间:2024/05/04 19:11

 

一、准备工作

创建一个目录,用于存放各种文件,这里以/home/test/root为例。

二、添加文件

1. 拷贝busybox文件

busybox文件生成后,拷贝busybox中_install目录下的文件到root文件夹

2. 生成设备节点(这部分摘抄至易の部落阁的《基于AT91RM9200的linux移植小结》一文)

# mknod console c 5 1

# mknod full c 1 7

# mknod kmem c 1 2

# mknod mem c 1 1

# mknod null c 1 3

# mknod port c 1 4

# mknod random c 1 8

# mknod urandom c 1 9

# mknod zero c 1 5

# for i in `seq 0 7`; do (特别注意,不是单引号,而是TAB健上边那个,下同)

# mknod loop$i b 7 $i

# done

# for i in `seq 0 9`; do

# mknod ram$i b 1 $i

# done

# ln -s ram1 ram

# mknod tty c 5 0

# for i in `seq 0 9`; do

# mknod tty$i c 4 $i

# done

# for i in `seq 0 9`; do

# mknod vcs$i b 7 $i

# done

# ln -s vcs0 vcs

# for i in `seq 0 9`; do

# mknod vcsa$i b 7 $i

# done

# ln -s vcsa0 vcsa

3. 拷贝库文件

在/home/test/root位置创建lib目录,

将交叉编译环境中的库文件拷贝到lib目录,例如

cp -f /home/test/toolchain/arm/arm-2010q1/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /home/test/root/lib -a

4. linuxrc

创建并编辑linuxrc文件

#!/bin/sh

exec /sbin/init

5. fstab

在etc目录下创建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

6. group

在etc目录下创建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:
test:x:1000:

7. inittab

在etc目录创建inittab文件

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
tty0::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

8. passwd

在etc目录创建passwd文件

root::0:0:root:/root:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
test:$1$A./4lIYO$8uvUujp05ZwVwuvfPmrdG0:1000:1000:Linux User,,,:/home/test:/bin/sh

上面的$1$A./4lIYO$8uvUujp05ZwVwuvfPmrdG0是加密后的用户密码,可以在从主机上的passwd文件拷贝,则密码为主机上的密码。

/home/test为用户主目录

9. mdev.conf

同样是etc目录

# /etc/profile: system-wide .profile file for the Bourne shells

USER="'id -un'"
LOGNAME=$USER
PS1='[\u@\h \W]#'
PATH=$PATH

HOSTNAME='hostname'
export USER LOGNAME PS1 PATH
echo "Hello Linux!"

10. resolv.conf

还是etc目录,这个是设置DNS服务器的IP。

nameserver 61.139.2.69

11. HOSTNAME

创建/etc/sysconfig/HOSTNAME,这个是设置主机名

testlinux

这个可以自己随便设。

12. rcS文件

创建/etc/init.d/rcS

! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

/bin/mount -a
mkdir /dev/pts
/bin/mount -t devpts devpts /dev/pts
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s

mkdir -p /var/lock

mkdir -p /lib/modules/$(uname -r)

/bin/hostname -F /etc/sysconfig/HOSTNAME

ifconfig eth0 down
ifconfig eth0 add 192.168.1.71 netmask 255.255.255.0
ifconfig eth0 up
route add default gw 192.168.1.1

后面的命令是设置静态IP,可以根据环境自己设。

13. 创建用户目录

这个目录要与passwd文件中的一致,

mkdir /home/test/root/home/test

14. 创建其他目录

mnt

mnt/sd

mnt/udisk

opt

proc

root

sys

tmp

var

三、生成镜像文件

首先将当前目录设为/home/test

若生成ext2格式的文件系统,则如下操作

dd if=/dev/zero of=ramdisk.img bs=1k count=8192

mkfs.ext2 -F ramdisk.img

mount -o loop ramdisk.img /mnt/initrd

cp -r root/* /mnt/initrd

umount /mnt/initrd

gzip -c -v9 ramdisk.img > ramdisk.img.gz

若生成yaffs文件系统,则需要mkyaffsimge这样的执行程序,

操作如下:

mkyaffsimage_2 root yaffs_root.bin