创建一个目录,用于存放各种文件,这里以/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/HOSTNAMEifconfig 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