- 龙芯板卡ramdisk、yaffs、cramfs、jffs2 文件系统制作与启动
一、ramdisk 文件系统启动内核
使用ramdisk文件系统启动内核后,会在内存中形成一个根文件系统,这需要在编译内核时,告诉内核根文件系统所在的目录,把根文件系统编译到内核中。
下面的步骤是如何把根文件系统编译到内核中:
1、内核源码目录下执行 make menuconfg ARCH=mips
(执行该命令启动图形化配置界面,并用上下键选择General setup —>,执行过上述操作后)
蓝色停留在上图位置按 Enter 键进入该选项,并用上下键按照下图所示选择:
黑色选中为[*],蓝色停留在上图位置,单击 Enter 键,输入文件系统的绝对路径,假设文件系统的绝对路径为/home/rootfs/,执行上述步骤后,如下图所示:
然后保存退出,并通过命令 make vmlinux ARCH=mips CROSS_COMPILE=mipsel-
linux 编译内核。
2、通过网络或U盘加载内核
a、通过网路加载内核
把编译好的内核镜像拷贝到 tftp 服务器目录中假设 tftp 服务器目录为:/home/tftpboot/
cp vmlinux /home/tftpboot/
板卡上电,启动到pmon命令行下,执行以下指令
ifconfig syn0 192.168.1.1
load tftp://192.168.1.100/vmlinux
g console=ttyS0,115200 rdinit=/sbin/init
b、通过U盘加载
把编译好的内核镜像拷贝到U盘里
cp vmlinux /media/U
板卡上电,启动到pmon命令行下,执行以下指令
load /dev/fs/fat@usb0/vmlinux
g console=ttyS0,115200 rdinit=/sbin/init
二、启动 yaffs、cramfs、jffs2 文件系统
启动 yaffs、cramfs、jffs2 文件系统时,需要确定内核配置了该文件系统,并
且配置不启动 ramfs 文件系统,这里介绍配置不启动 ramfs 文件系统的步骤:
内核源码目录下执行make menuconfg ARCH=mips
蓝色停留在上图位置按 Enter 键进入该选项,并用上下键按照下图所示选择:
确保上图中蓝色部分前面的[]中,没有任何内容,按 Esc 键,并保存配置,重新编译内核既可(make vmlinux ARCH=mips CROSS_COMPILE=mipsel-linux-)
yaffs 文件系统的制作及启动
cp vmlinux /home/tftpboot/
./mkfs.yaffs2 rootfs rootfs.img
备注:rootfs 为文件系统的名字 rootfs.img 为制作的 yaffs 文件格式的文件系统
cp rootfs.img /home/tftpboot/
chmod 777 /home/tftpboot/rootfs.img
板卡上电,启动到pmon命令行下,执行以下指令
ifconfig syn0 192.168.1.1
向开发板上的 nand 烧写文件系统的命令
devcp tftp://192.168.1.100/rootfs.img /dev/mtd1y
备注:烧写到 nand 的分区 1,若烧到分区 0,改为 mtd0y,做好烧写到分区 1
load tftp://192.168.1.100/vmlinux
g console=ttyS0,115200 init=/linuxrc rootfstype=yaffs2 rw root=/dev/mtdblock1
cramfs 文件系统的制作和启动
cp vmlinux /home/tftpboot/
mkfs.cramfs -b 16384 rootfs cramfs.imgs
备注:-b 参数,大小与 PAGE_SIZE(linux 内核的配置)一样,具体-b 的实际意义
通过 man mkfs.cramfs 查看
cp cramfs.imgs /home/tftpboot/
chmod 777 /home/tftpboot/cramfs.imgs
板卡上电,启动到pmon命令行下,执行以下指令
ifconfig syn0 192.168.1.1
devcp tftp://192.168.1.100/cramfs.imgs /dev/mtd1
load tftp://192.168.1.100/vmlinux
g console=ttyS0,115200 init=/linuxrc rootfstype=cramfs rw root=/dev/mtdblock1
jffs2 文件系统的制作和启动
cp vmlinux /home/tftpboot/
mkfs.jffs2 -r rootfs -o rootfs.jffs2 -e 0x10000 -s 0x100
备注:-r:指定要生成 image 的目录名。
-o:指定输出 image 的文件名。
-e:每一块要擦除的 block size,不同的 flash, block size 会不一样。这里为 64KB。
-s:节点页大小 这里为256字节
通过 man mkfs.jffs2查看
cp rootfs.jffs2 /home/tftpboot/
chmod 777 /home/tftpboot/rootfs.jffs2
板卡上电,启动到pmon命令行下,执行以下指令
ifconfig syn0 192.168.1.1
mtd_erase /dev/mtd1 -j
devcp tftp://192.168.1.100/rootfs.jffs2 /dev/mtd1
load tftp://192.168.1.100/vmlinux
g console=ttyS0,115200 init=/linuxrc rootfstype=jffs2 rw root=/dev/mtdblock1
三、更新内核和initrd 到nand 上的方法步骤
1. 确认分区情况,pmon下用mtdparts 看,内核下 cat /proc/mtd , 确保分区一致
2. pmon 命令行下擦除分区
mtd_erase /dev/mtd0y
mtd_erase /dev/mtd1y
3. pmon下设置环境变量:
set al1 ‘/dev/fs/yaffs2@mtd0/vmlinuz’
set rd ‘/dev/fs/yaffs2@mtd1/initrd-2k.gz’
set append ‘console=tty console=ttyS0,115200’
4. pmon下加载内核(文件系统ramdisk )
load tftp://IP/vmlinux-ramdisk
g console=ttyS0,115200 rdinit=/sbin/init
5. 进入命令行 mount /dev/mtdblock0 /mnt, 将内核拷贝进去, umont /mnt
6. 同上拷贝initrd-2k.gz 文件到mtdblock1 中
7. 关机重启